一、素材管理
1.图片删除、收藏与取消
WmMaterialController:
//删除接口
@GetMapping("/del_picture/{id}")
public ResponseResult delPicture(@PathVariable("id") Integer id) {
return wmMaterialService.delPicture(id);
}
//收藏接口
@GetMapping("/collect/{id}")
public ResponseResult collect(@PathVariable("id") Integer id) {
return wmMaterialService.collectOrCancel(id);
}
//取消收藏接口
@GetMapping("/cancel_collect/{id}")
public ResponseResult cancelCollect(@PathVariable("id") Integer id) {
return wmMaterialService.collectOrCancel(id);
}
WmMaterialService:
/**
* 素材图片删除
* @param id
* @return
*/
ResponseResult delPicture(Integer id);
/**
* 收藏或取消收藏
* @param id
* @return
*/
ResponseResult collectOrCancel(Integer id);
WmMaterialServiceImpl:
/**
* 素材图片删除
* @param id
* @return
*/
@Override
public ResponseResult delPicture(Integer id) {
//参数校验
if (id == null) {
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
}
//判断素材是否存在
WmMaterial wmMaterial = wmMaterialMapper.selectById(id);
if (wmMaterial == null) {
return ResponseResult.errorResult(AppHttpCodeEnum.AP_USER_DATA_NOT_EXIST);
}
//判断该素材是否被引用,如果是,则返回删除失败
List<WmNewsMaterial> wmNewsMaterials = wmNewsMaterialMapper.selectList(Wrappers.<WmNewsMaterial>lambdaQuery()
.eq(WmNewsMaterial::getMaterialId, id));
if (wmNewsMaterials != null && wmNewsMaterials.size() != 0) {
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID,"文件删除失败");
}
//成功删除 同时删除minio中的文件
fileStorageService.delete(wmMaterial.getUrl());
removeById(id);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}
/**
* 收藏或取消收藏
* @param id
* @return
*/
@Override
public ResponseResult collectOrCancel(Integer id) {
if (id == null) {
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
}
WmMaterial wmMaterial = wmMaterialMapper.selectById(id);
if (wmMaterial == null) {
return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST);
}
if (wmMaterial.getIsCollection() == (short)1) {
//等于1,说明已经收藏,则取消收藏
wmMaterial.setIsCollection((short)0);
updateById(wmMaterial);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}
//走到这里说明wmMaterial 不为空 且 idCollection == 0
wmMaterial.setIsCollection((short)1);
updateById(wmMaterial);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}
二、文章管理
1.查看详情、文章删除、文章上下架
注意!!!!!:
在文章上下架中,老师原来的代码,在WmNewsDto实体类中没有enable属性,需要我们自己加上:private Short enable; (文章上下架接口可以在knife4j中测试)
wmNewsService:
//查看详情
@GetMapping("/one/{id}")
public ResponseResult<WmNews> detail(@PathVariable("id") Integer id) {
return wmNewsService.detail(id);
}
//删除
@GetMapping("/del_news/{id}")
public ResponseResult delNews(@PathVariable("id") Integer id) {
return wmNewsService.delNews(id);
}
//文章上下架
@PostMapping("/down_or_up")
public ResponseResult downOrUp(@RequestBody WmNewsDto dto) {
return wmNewsService.downOrUp(dto);
}
WmNewsService:
/**
* 查询文章详情
* @param id
* @return
*/
ResponseResult<WmNews> detail(Integer id);
/**
* 删除文章
* @param id
* @return
*/
ResponseResult delNews(Integer id);
/**
* 文章上下架
* @param dto
* @return
*/
ResponseResult downOrUp(WmNewsDto dto);
WmNewsServiceImpl:
/**
* 根据id查询文章
* @param id
* @return
*/
@Override
public ResponseResult detail(Integer id) {
if (id == null) {
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
}
WmNews wmNews = wmNewsMapper.selectById(id);
if (wmNews == null) {
return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST,"文章不存在");
}
return ResponseResult.okResult(wmNews);
}
/**
* 删除文章
* @param id
* @return
*/
@Override
public ResponseResult delNews(Integer id) {
if (id == null) {
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID,"文章id不可缺少");
}
WmNews wmNews = wmNewsMapper.selectById(id);
if (wmNews == null) {
return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST,"文章不存在");
}
if (wmNews.getStatus().equals(WmNews.Status.PUBLISHED.getCode())) {
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID,"文章已发布不能删除");
}
//删除wm_news表的数据
wmNewsMapper.deleteById(id);
//判断在news_material中是否有关联数据
LambdaQueryWrapper<WmNewsMaterial> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(WmNewsMaterial::getNewsId,id);
Integer count = wmNewsMaterialMapper.selectCount(queryWrapper);
if (count > 0) {
//有则一并删除
wmNewsMaterialMapper.delete(queryWrapper);
}
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}
/**
* 文章上下架
* @param dto
* @return
*/
@Override
public ResponseResult downOrUp(WmNewsDto dto) {
//判断id
if (dto.getId() == null) {
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID,"文章id不可缺少");
}
//判断有无数据
WmNews wmNewsDB = wmNewsMapper.selectById(dto.getId());
if (wmNewsDB == null) {
return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST,"文章不存在");
}
//判断是否已发布
if (wmNewsDB.getStatus() != WmNews.Status.PUBLISHED.getCode()) {
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID,"文章未发布不能上架");
}
//判断是上架还是下架 -> 0:下 1:上
if (wmNewsDB.getEnable() == 0) {
wmNewsDB.setEnable((short)1);
} else if (wmNewsDB.getEnable() == 1) {
wmNewsDB.setEnable((short)0);
}
updateById(wmNewsDB);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}
这是我写的代码,希望对个位小伙伴能有所帮助,有可以改进的地方欢迎在评论区留言哦。最后希望喜欢的小伙伴可以点点赞和关注支持一下吧,十分感谢。