springboot+vue项目实战2024第四集修改文章信息

1.添加文章信息

    @PostMappingpublic Result add(@RequestBody @Validated Article article){articleService.add(article);return Result.success();}void add(Article article);
@Override
public void add(Article article) {article.setCreateTime(LocalDateTime.now());article.setUpdateTime(LocalDateTime.now());Map<String,Object> map = ThreadLocalUtil.get();Integer id =(Integer) map.get("id");article.setUserId(id);articleMapper.add(article);}@Insert("insert into article(title,content,cover_img,state,cate_id," +"create_time,update_time,user_id)" +" values (#{title},#{content},#{coverImg},#{state},#{cateId}," +"#{createTime},#{updateTime},#{userId})")void add(Article article);

2.查询文章信息

@GetMappingpublic Result<PageBean<Article>> list(Integer pageNum,Integer pageSize,@RequestParam(required = false) Integer cateId,@RequestParam(required = false) String state){PageBean<Article> pb=articleService.list(pageNum,pageSize,cateId,state);return Result.success(pb);}PageBean<Article> list(Integer pageNum, Integer pageSize, Integer cateId, String state);@Overridepublic PageBean<Article> list(Integer pageNum, Integer pageSize, Integer cateId, String state) {PageBean<Article> pageBean = new PageBean<>();PageHelper.startPage(pageNum,pageSize);Map<String,Object> map = ThreadLocalUtil.get();Integer id = (Integer) map.get("id");List<Article> as=articleMapper.list(id,cateId,state);Page<Article> p=(Page<Article>) as;pageBean.setTotal(p.getTotal());pageBean.setItems(p.getResult());return pageBean;}List<Article> list(Integer userId, Integer cateId, String state);@Datapublic class Article {private Integer id;@NotEmpty@Pattern(regexp = "^\\S{1,10}$")private String title;@NotEmptyprivate String content;@NotEmpty@URLprivate String coverImg;@Stateprivate String state;private Integer userId;@NotNullprivate Integer cateId;private LocalDateTime createTime;private LocalDateTime updateTime;}@Data@NoArgsConstructor@AllArgsConstructorpublic class PageBean <T>{private Long total;private List<T> items;}@Documented@Constraint(validatedBy = {StateValidation.class})@Target({ ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface State {String message() default "state参数的值只能是已经发布或者草稿";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};}public class StateValidation implements ConstraintValidator<State,String> {@Overridepublic boolean isValid(String var1, ConstraintValidatorContext var2){if(var1==null)return false;if(var1.equals("已发布")||var1.equals("草稿"))return true;return false;}}

3.配置分页

   <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version></dependency>

4.redis使用存储token

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/big_eventusername: rootpassword: rootdata:redis:host: localhostport: 6379
@PatchMapping("/updatePwd")public Result updatePwd(@RequestBody Map<String,String> params,@RequestHeader("Authorization")String token){String oldPwd = params.get("old_pwd");String newPwd = params.get("new_pwd");String rePwd = params.get("re_pwd");if(!StringUtils.hasLength(oldPwd) ||!StringUtils.hasLength(newPwd)||!StringUtils.hasLength(rePwd)){return Result.error("缺少必要参数");}Map<String,Object> map = ThreadLocalUtil.get();String username = (String) map.get("username");User user = userService.findByUserName(username);if(!user.getPassword().equals(Md5Utils.encrypt3ToMd5(oldPwd))){return Result.error("原密码填写不正确");}if(!rePwd.equals(newPwd)){return Result.error("两次填写的密码不一致");}userService.updatePwd(newPwd);ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();operations.getOperations().delete(token);return Result.success();}@PostMapping("/login")public Result<String> login(@Pattern(regexp = "^\\S{4,16}$") String username,@Pattern(regexp = "^\\S{5,16}$") String password){User loginUser = userService.findByUserName(username);if(loginUser==null){return Result.error("用户名错误");}if(Md5Utils.encrypt3ToMd5(password).equals(loginUser.getPassword())){Map<String, Object> map = new HashMap<>();map.put("id",loginUser.getId());map.put("username",loginUser.getUsername());String s = JwtUtil.genToken(map);ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();operations.set(s,s,1, TimeUnit.HOURS);return Result.success(s);}return Result.error("密码错误");}@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String token = request.getHeader("Authorization");try {ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();String s = operations.get(token);if(s==null){throw new RuntimeException();}Map<String, Object> map = JwtUtil.parseToken(token);ThreadLocalUtil.set(map);return true;}catch (Exception e){response.setStatus(401);return false;}}

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

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

相关文章

openssl等库降级到系统原生安装镜像版本

在安装开发库时&#xff0c;看到curl glib2 libcurl openssl库被更新了&#xff0c;这不是我想要的。如下所示&#xff1a; Verifying : curl-8.4.0-5.oe2403.x86_64 29/38 Verifying : curl-8.4.0-3.oe2403.x86_64 …

如何将Docker镜像源更改为阿里云的镜像加速地址

在使用Docker时&#xff0c;尤其是在国内环境下&#xff0c;由于网络原因&#xff0c;从Docker Hub拉取镜像可能会遇到速度较慢的问题。为了提高拉取速度&#xff0c;我们可以将Docker的镜像源更改为阿里云等国内镜像源。下面详细介绍如何获取并配置阿里云的Docker镜像加速地址…

MES系统在装备制造行业核心应用场景介绍

MES软件在企业中有着广泛的应用场景&#xff0c;主要包括生产计划排程、生产过程监控、质量管理、设备管理、库存管理、数据分析等领域。 通过实时监控生产过程、收集数据、进行分析&#xff0c;MES软件可以帮助企业实现生产过程可视化、透明化&#xff0c;提高生产效率&#…

同三维T80006EH2-4K30编码器视频使用操作说明书:高清HDMI编码器,高清SDI编码器,4K超清HDMI编码器,双路4K超高清编码器

同三维T80006EH2-4K30编码器视频使用操作说明书&#xff1a;高清HDMI编码器&#xff0c;高清SDI编码器&#xff0c;4K超清HDMI编码器&#xff0c;双路4K超高清编码器 T80006EH2-4K30编码器 同三维&#xff0c;十多年老品牌&#xff0c;我们一直专注&#xff1a;视频采集卡、视频…

一二三应用开发平台应用开发示例(7)——文档功能实现示例

概述 在完成文件夹配置工作后&#xff0c;接下来配置文档管理系统最核心的管理对象“文档”。 依旧是使用平台低代码配置工作来配置&#xff0c;配置流程跟文件夹的配置是相同的&#xff0c;以下简要说明&#xff0c;重点是新涉及到的功能或注意点。 创建实体 配置模型属性 …

HashMap第7讲——get方法源码分析

HashMap最后一篇啦&#xff0c;下篇就进入ConcurrentHashMap的学习和总结了。 一、简要步骤 HashMap的get方法也比较简单&#xff0c;下面是它的大致步骤&#xff1a; 首先计算key的hash值&#xff0c;并通过hash值定位到在数据中的索引位置。 如果该位置为空&#xff0c;说…

【力扣 73】矩阵置零 C++题解 空间复杂度为O(1)的解决方案(向量+循环+矩阵)

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 示例 2&#xff1a; 输入&…

每个账号设置独立的cookie

如果需要为每个账号设置独立的Cookie&#xff0c;可以在Cookie中包含一个与用户账号相关的唯一标识符。这样&#xff0c;即使在同一台电脑上&#xff0c;不同的账号登录时也会设置不同的Cookie&#xff0c;从而区分不同的用户。以下是实现这一功能的示例代码&#xff1a; // 假…

AT32单片机踩坑记录

最近做个新项目打算使用AT32单片机&#xff08;AT32F403AVGT7&#xff09;&#xff0c;主要是和stm32极度相似&#xff0c;相关开发工具也逐渐完善&#xff0c;想着用个小项目练练手&#xff0c;当然踩坑也是必不可少的。 1.官方是带图形配置软件和IDE的&#xff0c;使用图形配…

开源项目有哪些机遇与挑战?

开源项目在软件开发领域具有许多机遇和挑战&#xff0c;让我们一起来看看&#xff1a; 机遇&#xff1a; 协作与共享&#xff1a; 开源项目鼓励开发者和组织之间的协作与共享&#xff0c;促进了知识和经验的传播。开发者可以通过参与开源项目来学习和提升技能&#xff0c;建立…

Databricks 收购 Tabular 的意义:数据开放框架的胜利

Databricks 宣布收购 Tabular&#xff0c;这是一个由 Apache Iceberg 的原始创建者开发的数据平台&#xff0c;在数据分析行业引发了涟漪。此次收购凸显了开放框架在数据领域日益增长的重要性&#xff0c;预示着数据管理、分析和 AI/ML 计划领域的创新、协作和可访问性的新时代…

数据库的学习(6)

题目&#xff1a; 数据准备创建两张表:部门(dept)和员工(emp)&#xff0c;并插入数据&#xff0c;代码如下create table dept(dept_id int primary key auto_increment comment 部门编号,dept_name char(20)comment部门名称 ); insert into dept (dept_name) values(销售部),(财…

音视频入门基础:H.264专题(11)——计算视频分辨率的公式

一、引言 通过FFmpeg命令可以获取到H.264裸流文件的视频分辨率&#xff1a; 在vlc中也可以获取到视频分辨率&#xff08;vlc底层也使用了FFmpeg进行解码&#xff09;&#xff1a; 所以FFmpeg和vlc是怎样获取到H.264编码的视频的分辨率呢&#xff1f;它们其实是通过SPS中的属性…

深入理解Java并发、线程与等待通知机制

目录 一、基础概念 进程和线程 进程 线程 Java 线程的无处不在 进程间的通信 进程间通信有几种方式&#xff1f; CPU 核心数和线程数的关系 上下文切换&#xff08;Context switch&#xff09; 并行和并发 二、认识 Java 里的线程 Java 程序天生就是多线程的 线程…

华为机考真题 -- 密码解密

题目描述&#xff1a; 给定一段"密文"字符串 s, 其中字符都是经过"密码本"映射的&#xff0c;现需要将"密文"解密并且输出映射的规则 &#xff08;a - i)分别用(1 - 9)表示&#xff1b;(j - z)分别用(10* - 26*)表示约束&#xff1a;映射始终唯…

STM32学习和实践笔记(39):I2C EEPROM实验

1.I2C总线介绍 I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。 它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I…

一套基于 Ant Design 和 Blazor 的开源企业级组件库

前言 今天大姚给大家分享一套基于Ant Design和Blazor的开源&#xff08;MIT License&#xff09;、免费的企业级组件库&#xff08;喜欢Ant Design风格的同学推荐使用&#xff09;&#xff1a;Ant Design Blazor。 项目特性 提炼自企业级中后台产品的交互语言和视觉风格。 开…

Java核心技术【二十二】Java的I/O流处理:深入文件读写操作、缓冲流、序列化与NIO

Java的I/O流处理&#xff1a;深入文件读写操作、缓冲流、序列化 在Java编程中&#xff0c;I/O流是处理输入输出操作的基础&#xff0c;特别是在文件读写、网络通信等领域。本文将在前文的基础上&#xff0c;进一步探讨缓冲流、序列化以及NIO&#xff08;New I/O&#xff09;在…

大数据开发者如何快速熟悉新公司业务

作为一名大数据开发工程师,进入一家新公司后快速熟悉业务是至关重要的。 目录 1. 了解产品形态故事1:电商平台的数据分析故事2:金融科技的风控系统故事3:社交媒体的推荐算法 2. 了解业务流程故事1:物流配送系统的优化故事2:医疗保险的理赔流程故事3:银行的贷款审批流程 3. 走…

通过 tomcat 让手机访问到电脑写的 html 网页

之前实现的 html 小项目只能在自己的电脑上展示&#xff0c;如果要在其他电脑或者在手机上就看不到网页了 想要在手机上访问自己写的网页&#xff0c;我们可以借助 tomcat 首先我们可以从官网下载 tomcat 官网链接&#xff1a;apache官网 我们拉到最底部&#xff0c;找到 a…