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

黑马头条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);

业务层实现类:

  @Overridepublic 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数据库)

 @Overridepublic 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,"操作成功");}@Overridepublic 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);@Overridepublic 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);@Overridepublic 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,"删除失败");}}@Overridepublic 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.mzph.cn/bicheng/54967.shtml

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

相关文章

Spring Cloud 教程(二) | 搭建SpringCloudAlibaba

Spring Cloud 教程&#xff08;二&#xff09; | 搭建SpringCloudAlibaba 前言一、SpringBoot 与 SpringCloud 版本对应关系&#xff1a;二、SpringCloud 与 SpringCloudAlibaba版本对应关系&#xff1a;三、SpringCloudAlibaba版本 与 组件版本 对应关系&#xff1a;四、搭建S…

【Redis】主从复制(上)

文章目录 1.主从复制的基本概念基本概念主从复制的作用 2.在一个服务器上建立一个主从结构的redis集群建立主从关系断开主从关系redis中重要配置安全性只读传输延迟 3.主从关系--拓扑结构一主一从一主多从树形主从结构 1.主从复制的基本概念 基本概念 Redis 的主从复制&#…

AI驱动TDSQL-C Serverless 数据库技术实战营-融合智能体与TDSQL-C技术,高效实现二手房数据查询与分析应用

文章目录 什么是TDSQL-C技术创新算力服务器与数据库服务器申请与部署购买 TDSQL-C Mysql Serverless 实例购买HAI高算力服务器 准备工作准备数据下载依赖 案例研发创建数据库写入数据智能体与TDSQL-C 的结合应用第一步配置llama3.1第二步代码开发运行应用测试应用 总结 什么是T…

文献笔记 - Ground effect on rotorcraft unmanned aerial vehicles: a review

这篇博文是自己看文章顺手做的笔记 只是简单翻译和整理 仅做个人参考学习和分享 如果作者看到觉得内容不妥请联系我 我会及时处理 本人非文章作者&#xff0c;文献的引用格式如下&#xff0c;原文更有价值 摘要—— 收集和讨论小型多旋翼无人机受地面效应的影响&#xff0c;…

WEB攻防-JavaWweb项目JWT身份攻击组件安全访问控制

知识点&#xff1a; 1、JavaWeb常见安全及代码逻辑&#xff1b; 2、目录遍历&身份验证&逻辑&JWT&#xff1b; 3、访问控制&安全组件&越权&三方组件&#xff1b; 演示案例&#xff1a; JavaWeb-WebGoat8靶场搭建使用 安全问题-目录遍历&身份认…

第一个maven web工程(eclipse)

1、点击file--》new--》Maven Project&#xff0c;如下&#xff1a; 2、直接next&#xff0c;如下 3、搜索web原型&#xff0c;如下 4、填写项目的坐标&#xff0c;如下 5、创建完成后&#xff0c;需要自己补一个文件夹&#xff0c;名称为java&#xff0c;如下&#xff1a; …

C++进阶|多态知识点详解及经典面试题总结

&#x1f36c; mooridy-CSDN博客 &#x1f9c1;C专栏&#xff08;更新中&#xff01;&#xff09; 目录 1. 多态的概念 2. 多态的定义及实现 2.1 多态的构成条件 2.2 虚函数的重写/覆盖 2.3 虚函数重写的⼀些其他问题 2.4 override 和 final关键字 2.5 重载/重写/隐藏的…

IDEA全局搜索快捷键ctrl+shift+f失效问题解决

目录 一、搜狗输入法 二、windows输入法 其实就是与输入法快捷键冲突了&#xff0c;一般用的最多的就是windows自带输入法和搜狗输入法&#xff0c;我们只需要把两个输入法的快捷键取消即可解决。 一、搜狗输入法 二、windows输入法 “设置”-“日期和时间”&#xff0c;选择…

Elasticsearch——介绍、安装与初步使用

目录 1.初识 Elasticsearch1.1.了解 ES1.1.1.Elasticsearch 的作用1.1.2.ELK技术栈1.1.3.Elasticsearch 和 Lucene1.1.4.为什么不是其他搜索技术&#xff1f;1.1.5.总结 1.2.倒排索引1.2.1.正向索引1.2.2.倒排索引1.2.3.正向和倒排 1.3.Elasticsearch 的一些概念1.3.1.文档和字…

【中级通信工程师】终端与业务(三):电信业务

【零基础3天通关中级通信工程师】 终端与业务(三)&#xff1a;电信业务 本文是中级通信工程师考试《终端与业务》科目第三章《电信业务》的复习资料和真题汇总。终端与业务是通信考试里最简单的科目&#xff0c;有效复习通过率可达90%以上&#xff0c;本文结合了高频考点和近几…

SQL 性能调优

什么是 SQL 性能调优 SQL 性能调优是优化 SQL 查询以尽可能高效地运行的过程&#xff0c;从而减少数据库负载并提高整体系统性能。这是通过各种技术实现的&#xff0c;例如分析查询执行计划、优化索引和重写查询以确保最佳执行路径。目标是最大限度地减少执行查询所需的时间和…

Windows安装openssl开发库

1 下载openssl安装包并安装 下载网址&#xff1a; https://slproweb.com/products/Win32OpenSSL.html 下载对应的安装版本。 双击安装包&#xff0c;一路下一步完成安装。注意&#xff1a;1.安装路径不要有空格&#xff1b; 2. 建议不要把DLL拷贝到系统路径。 2 编辑代码 …

什么是Node.js?

为什么JavaScript可以在浏览器中被执行&#xff1f; 在浏览器中我们加载了一些待执行JS代码&#xff0c;这些字符串要当中一个代码去执行&#xff0c;是因为浏览器中有JavaScript的解析引擎&#xff0c;它的存在我们的代码才能被执行。 不同的浏览器使用不同的javaScript解析引…

数据结构之链表(1),单链表

目录 前言 一、什么是链表 二、链表的分类 三、单链表 四、单链表的实现 五、SList.c文件完整代码 六、使用演示 总结 前言 本文讲述了什么是链表&#xff0c;以及实现了完整的单链表。 ❤️感谢支持&#xff0c;点赞关注不迷路❤️ 一、什么是链表 1.概念 概念&#xff1a;链…

19、网络安全合规复盘

数据来源&#xff1a;5.网络安全合规复盘_哔哩哔哩_bilibili

精密制造的革新:光谱共焦传感器与工业视觉相机的融合

在现代精密制造领域&#xff0c;对微小尺寸、高精度产品的检测需求日益迫切。光谱共焦传感器凭借其非接触、高精度测量特性脱颖而出&#xff0c;而工业视觉相机则以其高分辨率、实时成像能力著称。两者的融合&#xff0c;不仅解决了传统检测方式在微米级别测量上的局限&#xf…

【C++】入门基础知识-1

&#x1f36c;个人主页&#xff1a;Yanni.— &#x1f308;数据结构&#xff1a;Data Structure.​​​​​​ &#x1f382;C语言笔记&#xff1a;C Language Notes &#x1f3c0;OJ题分享&#xff1a; Topic Sharing 目录 前言&#xff1a; C关键字 命名空间 命名空间介…

使用 Llama-index 实现的 Agentic RAG-Router Query Engine

前言 你是否也厌倦了我在博文中经常提到的老式 RAG(Retrieval Augmented Generation | 检索增强生成) 系统&#xff1f;反正我是对此感到厌倦了。但我们可以做一些有趣的事情&#xff0c;让它更上一层楼。接下来就跟我一起将 agents 概念引入传统的 RAG 工作流&#xff0c;重新…

凌晨1点开播!Meta Connect 2024开发者大会,聚焦Llama新场景和AR眼镜

作者&#xff1a;十九 编辑&#xff1a;李宝珠 北京时间 9 月 26 日凌晨 1 点&#xff0c;Meta Connect 2024 开发者大会即将举行&#xff0c;马克扎克伯格将聚焦 AI 和元宇宙&#xff0c;向大家分享 Llama 模型的更多潜在应用&#xff0c;并介绍 Meta 最新产品 AR 眼镜和 Meta…

OceanBase云数据库战略实施两年,受零售、支付、制造行业青睐

2022年OceanBase推出云数据库产品OB Cloud,正式启动云数据库战略。两年来OB Cloud发展情况如何&#xff0c;9月26日&#xff0c;OceanBase公有云事业部总经理尹博学向记者作了介绍。 尹博学表示&#xff0c;OB Cloud推出两年以来&#xff0c;已服务超过700家客户&#xff0c;客…