package com.yuanchu.tms.controller;
|
|
import com.yuanchu.tms.pojo.User;
|
import com.yuanchu.tms.service.UserService;
|
import com.yuanchu.tms.utils.JackSonUtil;
|
import com.yuanchu.tms.utils.Jwt;
|
import com.yuanchu.tms.utils.RedisUtil;
|
import com.yuanchu.tms.vo.Result;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.beans.factory.annotation.Autowired;
|
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"));
|
}
|
|
}
|