1、运行WemediaApplication报错
运行时报错Caused by: java.lang.NoClassDefFoundError: com/heima/model/wemedia/dtos/WmLoginDto。
解决:maven中clean然后compile。不知道为什么我每次写完一个接口,运行应用类之前都几乎需要重新clean和compile,不然就会报错。
2、niginx配置
nginx配置的这个地址一定要与你放的前端代码位置相同。
3、管理端登录异常
重新clean,然后compile就行了
4、上传图片503
才发现是因为引入service没加@Autowired注解。
5、作业
参考:
WmMaterialController
/**
* 图片删除
* @param id
* @return
*/
@GetMapping("/del_picture/{id}")
public ResponseResult delPicture(@PathVariable Integer id){
return wmMaterialService.delPicture(id);
}
/**
* 取消收藏
* @param id
* @return
*/
@GetMapping("/cancel_collect/{id}")
public ResponseResult cancelCollectPicture(@PathVariable Integer id){
return wmMaterialService.cancelCollectPicture(id);
}
/**
* 收藏
* @param id
* @return
*/
@GetMapping("/collect/{id}")
public ResponseResult collectPicture(@PathVariable Integer id){
return wmMaterialService.collectPicture(id);
}
WmMaterialServiceImpl
/**
* 图片删除
*
* @param id
* @return
*/
@Override
public ResponseResult delPicture(Integer id) {
//1、检查参数
if(id==null){
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
}
WmMaterial wmMaterial=getById(id);
//检查素材是否存在
if (wmMaterial == null) {
return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST);
}
//2、检查是否被引用
//根据material的id获取newmaterial的关系,用mybitisPlus方法
LambdaQueryWrapper<WmNewsMaterial> lambdaQueryWrapper=new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(WmNewsMaterial::getMaterialId,id);
//一个素材可能对应多个文章
List<WmNewsMaterial> wmNewsMaterials = wmNewsMaterialMapper.selectList(lambdaQueryWrapper);
if (wmNewsMaterials.size()>0){
return ResponseResult.errorResult(AppHttpCodeEnum.MATERIAL_IS_REFERENCE);
}
//3.1删除minio中的数据
fileStorageService.delete(wmMaterial.getUrl());
//3.2删除数据库中的数据
removeById(id);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}
/**
* 取消收藏
*
* @param id
* @return
*/
@Override
public ResponseResult cancelCollectPicture(Integer id) {
//1、检查参数
if(id==null){
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
}
//2、设置是否收藏
WmMaterial wmMaterial = getById(id);
wmMaterial.setIsCollection(WemediaConstants.CANCEL_COLLECT_MATERIAL);
updateById(wmMaterial);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}
/**
* 收藏
*
* @param id
* @return
*/
@Override
public ResponseResult collectPicture(Integer id) {
//1、检查参数
if(id==null){
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
}
//2、设置是否收藏
WmMaterial wmMaterial = getById(id);
wmMaterial.setIsCollection(WemediaConstants.COLLECT_MATERIAL);
updateById(wmMaterial);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}
WmNewsController
/**
* 查看详情
* @param id
* @return
*/
@GetMapping("/one/{id}")
public ResponseResult selectNewsById(@PathVariable Integer id){
return wmNewsService.selectNewsById(id);
}
/**
* 删除文章
* @param id
* @return
*/
@GetMapping("/del_news/{id}")
public ResponseResult deleteNewsById(@PathVariable Integer id){
return wmNewsService.deleteNewsById(id);
}
/**
* 文章上下架
* @param dto
* @return
*/
@PostMapping("/down_or_up")
public ResponseResult newsDownOrUp(@RequestBody WmNewsDownOrUpDto dto){
return wmNewsService.newsDownOrUp(dto);
}
WmNewsServiceImpl
/**
* 查看详情
*
* @param id
* @return
*/
@Override
public ResponseResult selectNewsById(Integer id) {
//检查参数
if (id==null){
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
}
WmNews wmNews = getById(id);
return ResponseResult.okResult(wmNews);
}
/**
* 删除文章
* @param id
* @return
*/
@Override
public ResponseResult deleteNewsById(Integer id) {
//1、检查参数
if (id==null){
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
}
//2、检查文章是否存在
WmNews wmNews = getById(id);
if (wmNews==null){
return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST);
}
//3、检查文章是否发布
if (wmNews.getStatus().equals(WmNews.Status.PUBLISHED)){
//已经发布,不能删除
return ResponseResult.errorResult(AppHttpCodeEnum.MATERIAL_IS_PUBLISHED);
}
//未发布
//删除wm_news数据库
removeById(id);
//删除wm_news_material数据库
LambdaQueryWrapper<WmNewsMaterial> wmMaterialLambdaQueryWrapper=new LambdaQueryWrapper<>();
wmMaterialLambdaQueryWrapper.eq(WmNewsMaterial::getNewsId,id);
wmNewsMaterialMapper.delete(wmMaterialLambdaQueryWrapper);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}
/**
* 文章上下架
* @param dto
* @return
*/
@Override
public ResponseResult newsDownOrUp(WmNewsDownOrUpDto dto) {
//1、检查参数
if (dto==null){
return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
}
//2、检查文章是否存在
WmNews wmNews = getById(dto.getId());
if (wmNews==null){
return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST);
}
//3、检查是否处于发布状态
if(wmNews.getStatus().equals(WmNews.Status.PUBLISHED)){
//发布状态不能下架
return ResponseResult.errorResult(AppHttpCodeEnum.MATERIAL_IS_PUBLISHED);
}
//4、未发布 修改上下架状态,修改数据库
wmNews.setEnable(dto.getEnable());
updateById(wmNews);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}