黑马头条day3-3自媒体接口作业

news2024/9/30 15:31:09

黑马头条day3-3自媒体接口作业

1)素材管理

1.1)图片删除

接口描述

说明
接口路径/api/v1/material/del_picture/{id}
请求方式GET
参数Integer id
响应结果ResponseResult

返回结果实例:

image-20210719002352845

实现思路

image-20240923224510868

感觉删除比较难写 因为需要判断图片是不是和文章挂钩了

gpt帮了很多 有四种情况需要处理 其中 只是自己的理解

1 数据不存在 就是库里边没有

2 参数失效就是 有链接但url不存在

3 删除失败是已经在其他文章里边引用了 (等删除掉所有相关的文章之后 这个图片才可以删除

4 最后就是操作成功

红框的就是在一个mapper里边去引用另外的表格的mapper的写法

这个程序写的很杂 有mp 还有xml

具体实现

Controller(注意一定要加@PathVariable(“id”)注解 不然传过来id为null)

@GetMapping("/del_picture/{id}")
    public ResponseResult delPicture(@PathVariable("id") Integer id){
        return wmMaterialService.delPicture(id);
    }

mapper

无 不用改

业务层:新增这一个代码

public ResponseResult delPicture(Integer id);

业务层实现类:

  @Override
    public ResponseResult delPicture(Integer id) {

        System.out.println(id);
        WmMaterial wmMaterial = getById(id);
        if(wmMaterial == null){
            return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST);
        }
        //判断是否被引用
//        if(wmMaterial.getIsCollection() == 1){
//            return ResponseResult.errorResult(AppHttpCodeEnum.MATERIAL_REFERENCE);
//        }
        if(wmMaterial.getUrl() == null){
            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
        }
        WmNewsMaterial wmNewsMaterial = new WmNewsMaterial();
        wmNewsMaterial.setMaterialId(id);
        //查询wm_news_material表里边是否有包含该id


            // 创建查询条件
        QueryWrapper<WmNewsMaterial> queryWrapper = new QueryWrapper<>();

            // 假设你想根据某个字段进行过滤
            queryWrapper.eq("material_id", id);

            // 调用 selectCount 方法
            int count = wmNewsMaterialMapper.selectCount(queryWrapper);

        if(count > 0){
            return ResponseResult.errorResult(501,"文件删除失败" );
        }
        fileStorageService.delete(wmMaterial.getUrl());
        removeById(id);

        return ResponseResult.okResult(200,"操作成功");

    }

测试

启动自媒体微服务和自媒体网关,使用前端项目进行测试

1.2)收藏与取消

接口描述

取消收藏

说明
接口路径/api/v1/material/cancel_collect/{id}
请求方式GET
参数Integer id
响应结果ResponseResult

收藏

说明
接口路径/api/v1/material/collect/{id}
请求方式GET
参数Integer id
响应结果ResponseResult

返回结果实例:

image-20210719002621046

具体实现

Controller(注意一定要加@PathVariable(“id”)注解 不然传过来id为null)

       @GetMapping("/cancel_collect/{id}")
    public ResponseResult cancelCollect(@PathVariable("id") Integer id){
        return wmMaterialService.cancelCollect(id);
    }
    @GetMapping("/collect/{id}")
    public ResponseResult collect1(@PathVariable("id") Integer id){
        return wmMaterialService.collect1(id);
    }


mapper

无 不用改

业务层:新增这一个代码


    ResponseResult cancelCollect(Integer id);


    ResponseResult collect1(Integer id);

业务层实现类:(注意修改完vmMaterial 之后不要忘记加上update数据库)

 @Override
    public ResponseResult cancelCollect(Integer id) {
        WmMaterial wmMaterial = getById(id);
        if(wmMaterial.getIsCollection() == 0){
            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
        }
        wmMaterial.setIsCollection((short)0);
        updateById(wmMaterial);
        return ResponseResult.okResult(200,"操作成功");
    }

    @Override
    public ResponseResult collect1(Integer id) {
        System.out.println(id);
        WmMaterial wmMaterial = getById(id);
        if(wmMaterial.getIsCollection() == 1){
            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
        }
        wmMaterial.setIsCollection((short)1);
        updateById(wmMaterial);
        return ResponseResult.okResult(200,"操作成功");
    }

测试

启动自媒体微服务和自媒体网关,使用前端项目进行测试

2)文章管理

2.1)查看详情

接口描述

说明
接口路径/api/v1/news/one/{id}
请求方式GET
参数文章id
响应结果ResponseResult

返回结果实例:

image-20210719002805621

实现思路

其实就是点击编辑之后 文章内容能够在编辑页面回显

image-20240925152353293
具体实现

controller

@GetMapping("/one/{id}")
    public ResponseResult findOne(@PathVariable("id") Integer id){
        return  wmNewsService.findOne(id);
    }

service和impl

 ResponseResult findOne(Integer id);

 @Override
    public ResponseResult findOne(Integer id) {
        WmNews wmNews = getById(id);
        if(wmNews != null){
            return ResponseResult.okResult(wmNews);
        }
        log.info("文章不存在,id:{}",id);
        return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST);
    }

2.2)文章删除

接口描述

说明
接口路径/api/v1/news/del_news/{id}
请求方式GET
参数文章id
响应结果ResponseResult

返回结果实例

image-20210719002907886

2.3)文章上下架

接口描述

说明
接口路径/api/v1/news/down_or_up
请求方式POST
参数WmNewsDto
响应结果ResponseResult

WmNewsDto

image-20210719003029361

返回结果实例

image-20210719003114332

实现思路(删除和上下架)

状态码情况考虑的不全 也没有涉及后边的异步

同时感觉提交的时候有个bug 存为草稿的话 直接提交成功

但是如果想要把草稿编辑上架的话 就一直卡在这个循环了 目前没解决

image-20240925160448771

删除的话就是根据id 然后四个情况判断就好了 同时注意要删除掉关联表的信息 至于minio里边的要不要删除没涉及 不太清楚

上架下架也是需要考虑文章的状态 然后更改数据库的状态就可以了

具体实现

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

service和impl
  ResponseResult delNews(Integer id);
  ResponseResult downOrUp(WmNewsDto dto);

  @Override
    public ResponseResult delNews(Integer id) {
        WmNews wmNews = getById(id);
        if(wmNews == null){
            return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST,"文章不存在");
        }
        if(wmNews.getStatus().equals(WmNews.Status.SUBMIT.getCode())){
            //删除文章
            removeById(id);
            wmNewsMaterialMapper.delete(Wrappers.<WmNewsMaterial>lambdaQuery().eq(WmNewsMaterial::getNewsId, id));
            return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
        }else{
            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID,"删除失败");
        }
    }
    @Override
    public ResponseResult downOrUp(WmNewsDto dto) {
        WmNews wmNews = getById(dto.getId());
        if(wmNews == null){
            return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST,"文章不存在");
        }
        if(wmNews.getStatus().equals(WmNews.Status.PUBLISHED.getCode())){
            wmNews.setStatus(WmNews.Status.NORMAL.getCode());
        }else if(wmNews.getStatus().equals(WmNews.Status.NORMAL.getCode())){
            wmNews.setStatus(WmNews.Status.SUBMIT.getCode());
        }
         updateById(wmNews);
        return ResponseResult.okResult(wmNews);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2166755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python模拟真人鼠标轨迹算法

一.鼠标轨迹模拟简介 传统的鼠标轨迹模拟依赖于简单的数学模型&#xff0c;如直线或曲线路径。然而&#xff0c;这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现&#xff0c;能够通过深度学习技术&#xff0c;学习并模拟更自然的鼠标移动行为。 二.鼠标轨迹算法实…

利士策分享,动摇时刻的自我救赎

利士策分享&#xff0c;动摇时刻的自我救赎 在人生的长河中&#xff0c;我们每个人都会面临各种挑战与抉择&#xff0c; 那些让人心生动摇的瞬间&#xff0c;如同夜空中偶尔掠过的乌云&#xff0c;遮蔽了前行的星光。 但正是这些动摇&#xff0c;构成了我们成长的轨迹&#x…

idea 创建多模块项目

一、新建项目&#xff0c;创建父工程 新建项目&#xff0c;选择 spring initializr 填写相关信息后提交 删除不相关的目录&#xff0c;如下 修改打包方式为 pom&#xff0c;在 pom.xml 文件中新增一行&#xff0c;如下 二、创建子模块 新增子模块 三、修改 pom 文件 修…

<Rust>egui学习之部件(十二):如何添加右键菜单?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析&#xff0c;主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;egui、eframe 概述 本文是本专栏的第十二篇…

数据分析师之Excel学习

前言 excel作为职场人来说&#xff0c;已经是人人必备的技能了&#xff0c;所以还不知道这个的小伙伴&#xff0c;一定要抓紧时间学习&#xff0c;紧跟时代的步伐。 Excel 几个重要的版本 97-2003版本是国内最早流行的版本 .xlsx后缀的表格文件&#xff0c;基本是07版本及…

唯美古风短视频素材去哪找?古风唯美视频素材网站推荐

在现代社会&#xff0c;越来越多人向往古风的唯美与宁静。在制作短视频、宣传片或自媒体内容时&#xff0c;找到合适的唯美古风素材是成功的关键。本文将为您推荐一些优质素材网站&#xff0c;帮助您轻松获取心仪的短视频素材。 蛙学网 蛙学网是一个专注于分享各类视频素材的平…

SpringCloud无法注册Nacos和配置中心

今天升级SpringCloud版本&#xff0c;导致服务无法注册到nacos&#xff0c;使用nacos作为配置中心也无法刷新配置信息&#xff0c;后来发现是因为只更新了SpringCloud版本&#xff0c;SpringCloud-Alibaba没有更新导致的问题。 升级出现问题的版本是&#xff1a; <dependen…

高压电容器带电合闸时需要注意什么

在现代电力系统中&#xff0c;高压电容器被广泛应用于电力的储存和调节&#xff0c;其带电合闸操作对于维护电力系统的稳定性至关重要。然而&#xff0c;带电合闸的过程涉及高度的电气安全风险&#xff0c;必须遵循一系列严格的安全措施。 高压电容器带电合闸时需要注意以下几…

【自学笔记】支持向量机(4)——支持向量回归SVR

引入 SVM解决了分类问题&#xff0c;而用类似方法解决回归问题的模型称为支持向量回归。目标是得到一个模型&#xff0c;使输出的 f ( x ⃗ ) f(\vec{x}) f(x )与 y y y尽可能接近。 传统的回归模型直接计算 f ( x ⃗ ) f(\vec{x}) f(x )与 y y y的差距作为损失&#xff0c;当两…

DS2756E+TR一款用于数据采集和信息存储器件 高精度电池电量计

DS2756ET&R高精度电池电量计是一款数据采集和信息存储器件&#xff0c;专为成本敏感且空间有限的单节Li/聚合物电池量身定做。提供了精确估计剩余容量所需的关键硬件资源&#xff0c;包括用于测量温度、电压、电流和累计电流的低功耗精密电路&#xff0c;以及非易失(NV)数据…

如何把PDF样本册转换为网址链接

​随着互联网的普及&#xff0c;将纸质或PDF格式的样本册转化为网址链接&#xff0c;以便于在线浏览和分享&#xff0c;变得越来越重要。本文将为您详细讲解如何将PDF样本册转换为网址链接&#xff0c;让您轻松实现线上展示和分享。 一、了解PDF样本册与网址链接 1. PDF样本册…

地表最强开源大模型!Llama 3.2,如何让你的手机变身私人智能助理

你有没有想过,为什么现在的手机越来越像小型电脑?无论是拍照、看视频,还是用各种APP,甚至是AI助手,手机的功能几乎无所不能。其实,这一切的背后有一个技术正在悄悄改变我们的生活,那就是Llama 3.2。它不仅仅是一款AI模型,它让智能手机变得更聪明,更高效。今天,我们就…

vivado中除法器ip核的使用

看了很多博客&#xff0c;都没写清楚&#xff0c;害 我要实现 reg [9:0] a; 被除数 reg [16:0] b; 除数 wire [39:0] res; 结果 wire [15:0] real_shan; 要实现a/b 则如下这么配置 选择经过几个周期出结果 wire [39:0] res; // dly5 div_gen_0 div_gen_0_inst (.aclk(clk), …

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024)

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024) Windows 11, version 23H2&#xff0c;企业版 arm64 x64 请访问原文链接&#xff1a;https://sysin.org/blog/windows-11/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者…

2024/9/26 英语每日一段

In part, that’s because it’s harder to empathize with someone who feels distant or unknown than a close loved one. “The more shared experiences you have with someone, the more of a rich, nuanced representation you can draw on,” Cameron says. But empath…

常见网络服务搭建之NFS服务搭建

在嵌入式Linux开发中&#xff0c;需要在Linux主机编写程序代码&#xff0c;然后编译程序&#xff0c;生成的二进制程序文件要传输到目标机上才能调试、运行。那么如何更快、更便捷地传输文件&#xff0c;提高开发工作的效率呢&#xff1f;NFS无疑是最好的选择。通过NFS服务&…

排序算法的分析和应用

自己设计一个长度不小于10的乱序数组&#xff0c;用希尔排序&#xff0c;自己设定希尔排序参数 画出每一轮希尔排序的状态 自己设计一个长度不小于10的乱序数组&#xff0c;用堆排序&#xff0c;最终要生成升序数组&#xff0c;画出建堆后的状态 画出每一轮堆排序的状态 自…

光耦知识分享:如何挑选合适的可控硅光耦型号

可控硅光耦是一种光电耦合器件&#xff0c;它结合了光敏元件&#xff08;通常是光敏二极管&#xff09;和可控硅器件&#xff08;如普通可控硅或三端可控硅&#xff09;的特性。它的工作原理是利用光信号控制可控硅的导通和截止&#xff0c;从而实现对电路的控制。 可控硅光耦…

创业者必备的7个AI工具

独立黑客和个体企业家通常需要利用技术来保持竞争力和效率。以下七种 AI 工具可帮助你简化运营、提高生产力和推动增长。 NSDT工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模…

R包:ggheatmap热图

加载R包 # devtools::install_github("XiaoLuo-boy/ggheatmap")library(ggheatmap) library(tidyr)数据 set.seed(123) df <- matrix(runif(225,0,10),ncol 15) colnames(df) <- paste("sample",1:15,sep "") rownames(df) <- sapp…