SmsCodeServiceImpl.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package com.template.services.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.template.config.MySecurity;
  8. import com.template.model.pojo.SmsCode;
  9. import com.template.mapper.SmsCodeMapper;
  10. import com.template.model.pojo.SystemUser;
  11. import com.template.model.result.CommonResult;
  12. import com.template.model.result.PageUtils;
  13. import com.template.services.SmsCodeService;
  14. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  15. import com.template.services.SystemUserService;
  16. import com.template.common.utils.EncryptionUtil;
  17. import com.template.common.utils.RSAUtils;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Service;
  20. import java.util.Date;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.Map;
  24. /**
  25. * <p>
  26. * 服务实现类
  27. * </p>
  28. *
  29. * @author ceshi
  30. * @since 2023-04-20
  31. */
  32. @Service
  33. public class SmsCodeServiceImpl extends ServiceImpl<SmsCodeMapper, SmsCode> implements SmsCodeService {
  34. @Autowired
  35. public SmsCodeMapper smsCodeMapper;
  36. @Autowired
  37. SystemUserService systemUserService;
  38. @Autowired
  39. MySecurity mySecurity;
  40. private static final int MAX_JSON_STRING = 40;
  41. @Override
  42. public int insertSmsCode(SmsCode sa) {
  43. int result = smsCodeMapper.insert(sa);
  44. return result;
  45. }
  46. @Override
  47. public int updateSmsCode(SmsCode sa) {
  48. int result = smsCodeMapper.updateById(sa);
  49. return result;
  50. }
  51. @Override
  52. public PageUtils<SmsCode> queryPageSmsCode(int currentPage, int pageCount, QueryWrapper<SmsCode> queryWrapper) {
  53. Page<SmsCode> page = new Page<>(currentPage, pageCount);
  54. IPage<SmsCode> result = smsCodeMapper.selectPage(page,queryWrapper);
  55. return new PageUtils<>(result);
  56. }
  57. @Override
  58. public int deleteSmsCodeById(int id) {
  59. int result = smsCodeMapper.deleteById(id);
  60. return result;
  61. }
  62. @Override
  63. public SmsCode getSmsCodeById(int id) {
  64. SmsCode result = smsCodeMapper.selectById(id);
  65. return result;
  66. }
  67. @Override
  68. public List<SmsCode> getSmsCodeList() {
  69. QueryWrapper<SmsCode> queryWrapper = new QueryWrapper<>();
  70. queryWrapper.eq("deleted", 0);
  71. List<SmsCode> result = smsCodeMapper.selectList(queryWrapper);
  72. return result;
  73. }
  74. @Override
  75. public List<SmsCode> getSmsCodeByKey(QueryWrapper<SmsCode> queryWrapper) {
  76. List<SmsCode> result = smsCodeMapper.selectList(queryWrapper);
  77. return result;
  78. }
  79. @Override
  80. public CommonResult logIn(String phone, String code) {
  81. if (ObjectUtils.isEmpty(phone) || ObjectUtils.isEmpty(code)) {
  82. return CommonResult.fail("500", "参数为空");
  83. }
  84. // 获取私钥
  85. String privateKey = mySecurity.getPrivateKey();
  86. // postman传参会将+转换成空格
  87. phone = phone.replace(" ", "+");
  88. code = code.replace(" ", "+");
  89. String decryptPhone;
  90. String decryptCode;
  91. try {
  92. decryptPhone = RSAUtils.decrypt(phone, RSAUtils.getPrivateKey(privateKey));
  93. decryptCode = RSAUtils.decrypt(code, RSAUtils.getPrivateKey(privateKey));
  94. } catch (Exception e) {
  95. return CommonResult.fail("500", "解密失败");
  96. }
  97. phone = decryptPhone;
  98. code = decryptCode;
  99. LambdaQueryWrapper<SmsCode> wrapper = new LambdaQueryWrapper<>();
  100. wrapper.eq(SmsCode::getPhoneNumber, phone);
  101. wrapper.ge(SmsCode::getExpirationTime, new Date());
  102. wrapper.eq(SmsCode::getIsVerify, "0");
  103. SmsCode one = this.getOne(wrapper);
  104. if (ObjectUtils.isEmpty(one)) {
  105. return CommonResult.fail("500", "验证码已过期");
  106. }
  107. String code1 = one.getCode();
  108. // 验证
  109. if (!(code1.equals(code))) {
  110. return CommonResult.fail("500", "验证码错误");
  111. }
  112. // 登录成功,生成token
  113. LambdaQueryWrapper<SystemUser> wrapper2 = new LambdaQueryWrapper<>();
  114. wrapper2.eq(SystemUser::getPhoneNumber, phone);
  115. SystemUser one1 = systemUserService.getOne(wrapper2);
  116. // String token = JWTUtil.getToken(one1);
  117. // LoginVO loginVO = new LoginVO();
  118. // loginVO.setToken(token);
  119. // loginVO.setTokenTtl(JWTUtil.getExpired());
  120. // loginVO.setUserName(one1.getAccountName());
  121. // loginVO.setTelPhone(phone);
  122. // 将返回值转成json字符串并加密
  123. String s = "";//JSON.toJSONString(loginVO);
  124. Map<Object, Object> encryption = new HashMap<>();
  125. try {
  126. // 返回的加密字符串太长,无法解析,每次返回加密40长度的字符串
  127. EncryptionUtil encryptionUtil = new EncryptionUtil();
  128. encryption = encryptionUtil.encryption(s,mySecurity.getPublicKey());
  129. } catch (Exception e) {
  130. return CommonResult.fail("500", "加密失败");
  131. }
  132. return CommonResult.ok(encryption);
  133. }
  134. }