《黑马头条》day03作业

一、素材管理

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);
    }

这是我写的代码,希望对个位小伙伴能有所帮助,有可以改进的地方欢迎在评论区留言哦。最后希望喜欢的小伙伴可以点点赞和关注支持一下吧,十分感谢。

### 黑马头条 CentOS 下载与安装 对于CentOS系统而言,下载并安装黑马头条应用涉及多个步骤,包括但不限于配置必要的环境以及获取特定的应用程序包。然而,具体到黑马头条这一应用程序,官方文档或其他权威资源并未直接提及针对CentOS系统的专用安装包或详细的安装指南[^4]。 通常情况下,如果要部署基于Java的Web应用(假设黑马头条属于此类),可以考虑如下方式: #### 准备工作 确保服务器上已经正确设置了JDK环境,并且能够正常运行Java程序。此外,考虑到可能涉及到微服务架构下的组件通信和服务发现机制,Nacos作为注册中心被提及,表明该应用可能是分布式系统的一部分。 #### 获取源码或构建产物 由于没有公开提供的CentOS专属安装文件链接,最可行的方法是从项目的GitHub仓库或者其他代码托管平台拉取最新版源码自行编译打包,或者寻找由社区成员分享的预构建镜像/二进制文件来完成部署操作。 #### 使用Docker简化流程 鉴于容器化技术日益普及的趋势,利用Docker来进行开发测试环境的一键式搭建成为一种高效的选择。通过上述提到的方式更新本地YUM库至阿里云镜像站之后,可顺利安装Docker引擎;接着参照官方说明找到合适的Dockerfile定义脚本或是现成的Docker Hub上的image标签版本号,以此为基础快速启动包含所需全部依赖关系在内的完整运行实例[^2]。 ```bash sudo yum -y update && \ sudo yum -y remove docker* && \ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 && \ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && \ sudo yum makecache fast && \ sudo yum install docker-ce docker-ce-cli containerd.io -y && \ sudo systemctl start docker && \ sudo systemctl enable docker ``` 以上命令序列展示了如何在CentOS平台上准备一个适合于现代云计算场景下持续集成流水线作业所需的基础设施条件——即具备稳定可靠的容器支持能力。 #### 创建Conda虚拟环境 为了隔离不同项目之间的Python解释器及其第三方扩展库版本冲突问题,建议采用Anaconda家族产品所提供的解决方案之一Miniconda预先建立好独立的工作空间[^3]。 ```bash conda create --name leadnews python=3.8 source activate leadnews pip install -r requirements.txt # 假设存在需求清单文本描述了所有必需项 ``` 请注意实际执行过程中还需依据具体情况调整参数选项以满足个性化定制要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值