李林
2023-12-23 ca4e829a60e74774f6ef87fc62d23094aadb9859
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package com.yuanchu.mom.controller;
 
import cn.hutool.json.JSON;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.UserPageDto;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.UserService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.utils.Jwt;
import com.yuanchu.mom.utils.RedisUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
 
import java.util.HashMap;
import java.util.Map;
 
@RequestMapping("/user")
@RestController
@Api(tags = "用户模块")
public class UserController {
 
    @Autowired
    UserService userService;
 
    @Autowired
    private Jwt jwt;
 
    @ApiOperation(value = "登录")
    @PostMapping("/enter")
    public Result login(String account, String password) {
        User user = userService.selectUserByPwd(account, password);
        if (user == null) return Result.fail("登录失败");
        String jwtToken = jwt.createJwt(user.getName(), user.getId(), 60);
        String jwtReToken = jwt.createJwt(user.getName(), user.getId(), 24 * 60);
        RedisUtil.set("" + user.getId(), jwtToken, 60);
        RedisUtil.set(user.getId() + "Re", jwtReToken, 24 * 60);
        Map<String, String> map = new HashMap<>();
        map.put("token", jwtToken);
        map.put("reToken", jwtReToken);
        map.put("name", user.getName());
        return Result.success("登录成功", map);
    }
 
    @ApiOperation(value = "token刷新")
    @PostMapping("/refresh")
    public Result refresh(String reToken) throws Exception {
        Map<String, String> map = new Jwt().readJWT(reToken);
        Map<String, String> maps = JackSonUtil.unmarshal(map.get("data"), Map.class);
        if (map.get("state").equals("0")) {
            String redisToken = String.valueOf(RedisUtil.get(maps.get("id") + "Re"));
            if (!redisToken.equals(reToken)) {
                return Result.success("不存在的token", "1");
            } else if (redisToken.equals(reToken)) {
                int id = Integer.parseInt(maps.get("id").replaceAll("\"", ""));
                String name = maps.get("name").replaceAll("\"", "");
                String jwtToken = jwt.createJwt(name, id, 60);
                String jwtReToken = jwt.createJwt(name, id, 24 * 60);
                RedisUtil.set("" + id, jwtToken, 60);
                RedisUtil.set(id + "Re", jwtReToken, 24 * 60);
                Map<String, String> map1 = new HashMap<>();
                map1.put("token", jwtToken);
                map1.put("reToken", jwtReToken);
                return Result.success("刷新成功", map1);
            }
        }
        return Result.fail(map.get("info"));
    }
 
    @ApiOperation(value = "获取用户列表")
    @PostMapping("/selectUserList")
    public Result selectUserList(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        UserPageDto user = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), UserPageDto.class);
        return Result.success(userService.selectUserList(page, user));
    }
 
    @ApiOperation(value = "修改用户信息")
    @PostMapping("/updateUser")
    public Result<?> updateUser(@RequestBody User user) {
        if ("".equals(user.getPassword())) user.setPassword(null);
        else user.setPassword(DigestUtils.md5DigestAsHex(user.getPassword().getBytes()));
        return Result.success(userService.updateUser(user));
    }
 
    @ApiOperation(value = "添加用户信息")
    @PostMapping("/addUser")
    public Result<?> addUser(@RequestBody User user) {
        if ("".equals(user.getPassword())) user.setPassword(null);
        else user.setPassword(DigestUtils.md5DigestAsHex(user.getPassword().getBytes()));
        return Result.success(userService.addUser(user));
    }
}