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

1.添加文章信息

    @PostMapping
    public 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 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.查询文章信息


 @GetMapping
    public Result> list(
            Integer pageNum,
            Integer pageSize,
            @RequestParam(required = false) Integer cateId,
            @RequestParam(required = false) String state

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

3.配置分页

   
          com.github.pagehelper
          pagehelper-spring-boot-starter
          1.4.6
      

4.redis使用存储token

    
          org.springframework.boot
          spring-boot-starter-data-redis
      
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/big_event
    username: root
    password: root
  data:
    redis:
      host: localhost
      port: 6379

    @PatchMapping("/updatePwd")
    public Result updatePwd(@RequestBody Map 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 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 operations = stringRedisTemplate.opsForValue();
        operations.getOperations().delete(token);
        return Result.success();
    }

    @PostMapping("/login")
    public Result 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 map = new HashMap<>();
            map.put("id",loginUser.getId());
            map.put("username",loginUser.getUsername());
            String s = JwtUtil.genToken(map);
            ValueOperations operations = stringRedisTemplate.opsForValue();
            operations.set(s,s,1, TimeUnit.HOURS);
            return Result.success(s);
            }
            return Result.error("密码错误");

            }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            String token = request.getHeader("Authorization");
            try {
            ValueOperations operations = stringRedisTemplate.opsForValue();
            String s = operations.get(token);
            if(s==null){
            throw new RuntimeException();
            }

            Map map = JwtUtil.parseToken(token);
            ThreadLocalUtil.set(map);
            return true;
            }catch (Exception e){
            response.setStatus(401);
            return false;
            }
            }

你可能感兴趣的:(java后端)