保存内容到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);
}