TAdminController.java 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.szwl.controller;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.lang.UUID;
  4. import cn.hutool.core.util.IdUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import com.szwl.annotation.Audit;
  8. import com.szwl.constant.AuditEnum;
  9. import com.szwl.constant.ResponseCodesEnum;
  10. import com.szwl.exception.BizException;
  11. import com.szwl.manager.TokenManager;
  12. import com.szwl.model.bo.R;
  13. import com.szwl.model.bo.ResponseModel;
  14. import com.szwl.model.bo.UserDetailBO;
  15. import com.szwl.model.entity.TAdmin;
  16. import com.szwl.model.entity.TMessageCode;
  17. import com.szwl.service.TAdminService;
  18. import com.szwl.service.TMessageCodeService;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. import org.apache.commons.codec.digest.DigestUtils;
  22. import org.apache.commons.lang.StringUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.web.bind.annotation.*;
  25. import java.util.Date;
  26. import java.util.List;
  27. import java.util.Optional;
  28. /**
  29. * <p>
  30. * 短信验证码 前端控制器
  31. * </p>
  32. *
  33. * @author wuhs
  34. * @since 2022-04-14
  35. */
  36. @Api(value = "/tAdmin", tags = {"账户"})
  37. @RestController
  38. @RequestMapping("/tAdmin")
  39. public class TAdminController {
  40. @Autowired
  41. TokenManager tokenManager;
  42. @Autowired
  43. TAdminService tAdminService;
  44. @Autowired
  45. TMessageCodeService tMessageCodeService;
  46. @ApiOperation(value = "注册")
  47. @PostMapping("/save")
  48. public ResponseModel<?> save(@RequestBody TAdmin admin) {
  49. if(StringUtils.isEmpty(admin.getUsername())||StringUtils.isEmpty(admin.getName())||StringUtils.isEmpty(admin.getPassword())){
  50. return R.fail(ResponseCodesEnum.A0100,"数据有空!");
  51. }
  52. if(admin.getIfForeign().equals("0")){
  53. //国内用户注册
  54. if(StringUtils.isEmpty(admin.getPhone())){
  55. return R.fail(ResponseCodesEnum.A0100,"手机号为空!");
  56. }
  57. }else {
  58. //国外用户注册
  59. if(StringUtils.isEmpty(admin.getEmail())){
  60. return R.fail(ResponseCodesEnum.A0100,"邮箱为空!");
  61. }
  62. }
  63. if (StringUtils.isEmpty(admin.getCode())){
  64. return R.fail(ResponseCodesEnum.A0100,"验证码为空!");
  65. }
  66. //校验是否有重复的
  67. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  68. query.eq(TAdmin::getUsername,admin.getUsername());
  69. List<TAdmin> list = tAdminService.list(query);
  70. if(list.size()>0){
  71. return R.fail(ResponseCodesEnum.A0201,"用户登录名已存在");
  72. }
  73. LambdaQueryWrapper<TAdmin> query1 = Wrappers.lambdaQuery();
  74. if(admin.getIfForeign().equals("0")){
  75. query1.eq(TAdmin::getPhone,admin.getPhone());
  76. }else {
  77. query1.eq(TAdmin::getEmail,admin.getEmail());
  78. }
  79. List<TAdmin> list1 = tAdminService.list(query1);
  80. if(list1.size()>0){
  81. return R.fail(ResponseCodesEnum.A0203,"用户手机/邮箱已存在");
  82. }
  83. //校验验证码是否正确
  84. LambdaQueryWrapper<TMessageCode> query2 = Wrappers.lambdaQuery();
  85. if(admin.getIfForeign().equals("0")){
  86. query2.eq(TMessageCode::getPhone,admin.getPhone());
  87. }else {
  88. query2.eq(TMessageCode::getPhone,admin.getEmail());
  89. }
  90. query2.eq(TMessageCode::getType,"0");//0,代表注册验证码
  91. query2.eq(TMessageCode::getStatus,"0");
  92. List<TMessageCode> messageCodeList = tMessageCodeService.list(query2);
  93. if(messageCodeList.size()>0){
  94. TMessageCode tMessageCode = messageCodeList.get(messageCodeList.size() - 1);
  95. if(!tMessageCode.getCode().equals(admin.getCode())){
  96. return R.fail(ResponseCodesEnum.A0002,"验证码错误");
  97. }
  98. tMessageCode.setStatus("1");
  99. admin.setCreateDate(new Date());
  100. admin.setModifyDate(new Date());
  101. admin.setIsAdmined(false);
  102. admin.setIsEnabled(true);
  103. admin.setLoginFailureCount(0);
  104. admin.setIsLocked(false);
  105. admin.setPassword(DigestUtils.md5Hex(admin.getPassword()));
  106. boolean b = tAdminService.save(admin);
  107. tMessageCode.setModifyDate(new Date());
  108. tMessageCodeService.saveOrUpdate(tMessageCode);
  109. return R.ok(b);
  110. }else {
  111. return R.fail(ResponseCodesEnum.A0002,"没有找到验证码");
  112. }
  113. }
  114. @ApiOperation(value = "登录")
  115. @PostMapping("/login")
  116. @Audit(type = AuditEnum.LOGIN,content = "#username + '请求登录'")
  117. public ResponseModel<UserDetailBO> login(String username, String password) {
  118. if(StringUtils.isEmpty(username)||StringUtils.isEmpty(password)){
  119. return R.fail(ResponseCodesEnum.A0001,"参数有空");
  120. }
  121. //验证用户名登录
  122. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  123. // query.eq(TAdmin::getUsername,username);
  124. query.eq(TAdmin::getPassword,password);
  125. query.and(
  126. wrapper -> {
  127. wrapper.eq(TAdmin::getUsername,username)
  128. .or().eq(TAdmin::getPhone,username);
  129. }
  130. );
  131. TAdmin tAdmin = Optional.ofNullable(tAdminService.getOnly(query))
  132. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0002));
  133. UserDetailBO userDetailBO = BeanUtil.copyProperties(tAdmin,UserDetailBO.class);
  134. String token = IdUtil.simpleUUID();
  135. userDetailBO.setCurrentToken(token);
  136. // 保存到redis
  137. tokenManager.saveAuthentication(token,userDetailBO);
  138. return R.ok(userDetailBO);
  139. }
  140. @ApiOperation(value = "修改密码")
  141. @PostMapping("/updatePassword")
  142. public ResponseModel<?> updatePassword(String username,String password) {
  143. if(StringUtils.isEmpty(username)||StringUtils.isEmpty(password)){
  144. return R.fail(ResponseCodesEnum.A0001,"参数有空");
  145. }
  146. //查找用户名
  147. LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
  148. query.eq(TAdmin::getUsername,username);
  149. List<TAdmin> list = tAdminService.list(query);
  150. if(list.size()>0){
  151. TAdmin admin = list.get(0);
  152. admin.setPassword(password);
  153. boolean b = tAdminService.saveOrUpdate(admin);
  154. return R.ok(b);
  155. }
  156. return R.fail(ResponseCodesEnum.A0001,"修改失败");
  157. }
  158. }