发布文章做一个总结

这篇博客主要介绍了如何将内容保存到news表,并详细阐述了如何关联内容中的图片与文章的关系。通过三个关键方法,实现了内容图片与文章的存储以及封面图片的处理。涉及到了数据库操作、素材表中间表的管理和更新。同时,提供了插入接口的SQL示例,用于插入关联数据。
摘要由CSDN通过智能技术生成

保存内容到news表

111111111111111111111
在这里插入图片描述

 //新增
            save(wmNews);

2222222222222222222222222
在这里插入图片描述

/**
     * 第三个抽取方法,关联内容中的图片与文章的关系,操作中间表
     *
     * @param wmNews    文章实体
     * @param imageList 内容中抽取的图片集合,图片地址集合
     * @param type      引用类型,0表示内容引用 1表示封面引用
     */
    private void contentImageToNews(WmNews wmNews, List imageList, Short type) {

        saveNewsMaterial(wmNews, type, imageList);
    }

   /**
     * 第五个抽取方法
     *
     * @param wmNews
     * @param type
     * @param images
     */
    private void saveNewsMaterial(WmNews wmNews, short type, List<String> images) {
        //1.判断imageList是否有值
        if (images != null && images.size() > 0) {
            //根据地址集合去查询素材表
            List<WmMaterial> wmMaterials = wmMaterialMapper.selectList(Wrappers.<WmMaterial>lambdaQuery().in(WmMaterial::getUrl, images));
            //2.要从素材集合中只抽取出相对应的id集合
            List<Integer> materialIds = wmMaterials.stream().map(WmMaterial::getId).collect(Collectors.toList());

            /**
             * 参数1表示素材id集合
             * 参数2表示文章id
             * 参数3表示引用类型
             */
            wmNewsMaterialMapper.saveRelations(materialIds, wmNews.getId(), type);
        }
    }
=============================插入接口=======================================================
void saveRelations(@Param("materialIds") List<Integer> materialIds, @Param("newsId") Integer newsId, @Param("type")Short type);
--------------------------------------------------------------
<insert id="saveRelations">
        insert into wm_news_material (material_id,news_id,type,ord)
        values
        <foreach collection="materialIds" index="ord" item="mid" separator=",">
            (#{mid},#{newsId},#{type},#{ord})
        </foreach>
    </insert>

3333333333333333333

    /**
     * 抽取的第四个方法,关联封面图片与文章的关系,操作中间表
     * 如果封面类型是自动的话,从文章内容中图片进行操作
     * 如果文章内容图片个数大于1,小于3的话,则认为单图
     * 如果文章内容图片个数大于等于3的话,则认为多图
     * 如果文章内容图片个数,则认为是无图
     *
     * @param wmNews
     * @param type
     */
    private void fengmianImageToNews(WmNews wmNews, WmNewsDto dto, List imageList, short type) {
        //1.获取封面图片
        List<String> images = dto.getImages();

        //自动
        if (dto.getType() == null) {
            if (imageList.size() >= 1 && imageList.size() < 3) {
                //取出第一张图片作为封面
                images = (List<String>) imageList.stream().limit(1).collect(Collectors.toList());
                //单图设置类型
                wmNews.setType((short) 1);
            } else if (imageList.size() >= 3) {
                images = (List<String>) imageList.stream().limit(3).collect(Collectors.toList());
                //多图设置类型
                wmNews.setType((short) 3);
            } else {
                wmNews.setType((short) 0);
            }

            wmNews.setImages(StringUtils.join(images, ","));
            updateById(wmNews);
        }
        //否则,直接插入到中间表中
        saveNewsMaterial(wmNews, type, images);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值