LoginController.java 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package com.yunzhi.demo.controller;
  2. import com.yunzhi.demo.common.*;
  3. import com.yunzhi.demo.entity.SysLogin;
  4. import com.yunzhi.demo.entity.SysUser;
  5. import com.yunzhi.demo.service.ISysLoginService;
  6. import com.yunzhi.demo.service.ISysUserService;
  7. import com.yunzhi.demo.vo.ChangePassword;
  8. import com.yunzhi.demo.vo.LoginParam;
  9. import com.yunzhi.demo.vo.TokenParam;
  10. import io.swagger.annotations.Api;
  11. import io.swagger.annotations.ApiOperation;
  12. import io.swagger.annotations.ApiParam;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.web.bind.annotation.*;
  15. import java.util.HashMap;
  16. import java.util.Map;
  17. //import java.util.HashMap;
  18. @Api(tags = "登入/登出")
  19. @RestController
  20. public class LoginController extends BaseController {
  21. @Autowired
  22. ISysLoginService iSysLoginService;
  23. @Autowired
  24. ISysUserService iSysUserService;
  25. @PostMapping("/admin/login")
  26. @ApiOperation(value="登录", notes = "登录", httpMethod = "POST", response = ResponseBean.class)
  27. public ResponseBean login(@ApiParam("登录参数") @RequestBody LoginParam loginParam) throws Exception {
  28. if (null == loginParam) {
  29. return ResponseBean.error("账户或密码不能为空", ResponseBean.ERROR_ILLEGAL_PARAMS);
  30. }
  31. String userName = loginParam.getUserName();
  32. String password = loginParam.getPassword();
  33. if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(password)) {
  34. return ResponseBean.error("账户或密码不能为空", ResponseBean.ERROR_ILLEGAL_PARAMS);
  35. }
  36. SysLogin sysLogin = iSysLoginService.getByLoginName(userName);
  37. if (null == sysLogin) {
  38. return ResponseBean.error("账户或密码不正确", ResponseBean.ERROR_ILLEGAL_PARAMS);
  39. }
  40. SysUser sysUser = iSysUserService.getById(sysLogin.getUserId());
  41. if (null == sysUser) {
  42. return ResponseBean.error("账户或密码不正确", ResponseBean.ERROR_ILLEGAL_PARAMS);
  43. }
  44. if (!checkPassword(password, sysLogin.getPassword(), sysLogin.getUserId())) {
  45. return ResponseBean.error("账户或密码不正确", ResponseBean.ERROR_ILLEGAL_PARAMS);
  46. }
  47. if (!Constants.STATUS_NORMAL.equals(sysUser.getStatus())) {
  48. return ResponseBean.error("用户状态不正确, 请联系管理人员", ResponseBean.ERROR_UNAVAILABLE);
  49. }
  50. // 生成 token
  51. TokenParam tokenParam = new TokenParam()
  52. .setUserId(sysUser.getUserId())
  53. .setOrgId("0");
  54. String token = JWTUtils.encode(tokenParam.toMap());
  55. Map<String, Object> res = new HashMap<String, Object>() {{
  56. put("user", sysUser);
  57. put("token", token);
  58. }};
  59. return ResponseBean.success(res);
  60. }
  61. @PutMapping("/admin/change-password")
  62. @ApiOperation(value="修改密码", notes = "修改密码", httpMethod = "PUT", response = ResponseBean.class)
  63. public ResponseBean changePassword(@ApiParam("修改密码参数") @RequestBody ChangePassword param) throws Exception {
  64. if (StringUtils.isEmpty(param.getOriginPassword()) || StringUtils.isEmpty(param.getNewPassword())) {
  65. return ResponseBean.error("原始密码或新密码不能为空", ResponseBean.ERROR_ILLEGAL_PARAMS);
  66. }
  67. SysUser currentUser = getCurrentUser();
  68. SysLogin sysLogin = iSysLoginService.getByUser(currentUser.getUserId());
  69. if (!checkPassword(param.getOriginPassword(), sysLogin.getPassword(), currentUser.getUserId())) {
  70. return ResponseBean.error("原始密码不正确", ResponseBean.ERROR_ILLEGAL_PARAMS);
  71. }
  72. sysLogin.setPassword(EncryptUtils.md5(param.getNewPassword(), currentUser.getUserId()));
  73. iSysLoginService.updateById(sysLogin);
  74. return ResponseBean.success("密码修改成功");
  75. }
  76. @PutMapping("/admin/reset-password/{userId}")
  77. @ApiOperation(value="重置密码", notes = "重置密码", httpMethod = "PUT", response = ResponseBean.class)
  78. public ResponseBean resetPassword(@ApiParam("用户ID") @PathVariable String userId) throws Exception {
  79. SysLogin sysLogin = iSysLoginService.getByUser(userId);
  80. String newPassword = EncryptUtils.md5(EncryptUtils.md5(Constants.DEFAULT_PASSWORD), userId);
  81. sysLogin.setPassword(newPassword);
  82. iSysLoginService.updateById(sysLogin);
  83. return ResponseBean.success("重置密码成功");
  84. }
  85. private boolean checkPassword(String src, String targ, String salt) {
  86. return EncryptUtils.md5(src, salt).equals(targ);
  87. }
  88. }