SmsCodeServiceImpl.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package com.template.services.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  4. import com.template.config.MySecurity;
  5. import com.template.model.pojo.SmsCode;
  6. import com.template.mapper.SmsCodeMapper;
  7. import com.template.model.pojo.SystemUser;
  8. import com.template.model.result.CommonResult;
  9. import com.template.services.SmsCodeService;
  10. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  11. import com.template.services.SystemUserService;
  12. import com.template.common.utils.EncryptionUtil;
  13. import com.template.common.utils.RSAUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import java.util.Date;
  17. import java.util.HashMap;
  18. import java.util.Map;
  19. /**
  20. * <p>
  21. * 服务实现类
  22. * </p>
  23. *
  24. * @author ceshi
  25. * @since 2023-04-20
  26. */
  27. @Service
  28. public class SmsCodeServiceImpl extends ServiceImpl<SmsCodeMapper, SmsCode> implements SmsCodeService {
  29. @Autowired
  30. SystemUserService systemUserService;
  31. @Autowired
  32. MySecurity mySecurity;
  33. private static final int MAX_JSON_STRING = 40;
  34. @Override
  35. public CommonResult logIn(String phone, String code) {
  36. if (ObjectUtils.isEmpty(phone) || ObjectUtils.isEmpty(code)) {
  37. return CommonResult.fail("500", "参数为空");
  38. }
  39. // 获取私钥
  40. String privateKey = mySecurity.getPrivateKey();
  41. // postman传参会将+转换成空格
  42. phone = phone.replace(" ", "+");
  43. code = code.replace(" ", "+");
  44. String decryptPhone;
  45. String decryptCode;
  46. try {
  47. decryptPhone = RSAUtils.decrypt(phone, RSAUtils.getPrivateKey(privateKey));
  48. decryptCode = RSAUtils.decrypt(code, RSAUtils.getPrivateKey(privateKey));
  49. } catch (Exception e) {
  50. return CommonResult.fail("500", "解密失败");
  51. }
  52. phone = decryptPhone;
  53. code = decryptCode;
  54. LambdaQueryWrapper<SmsCode> wrapper = new LambdaQueryWrapper<>();
  55. wrapper.eq(SmsCode::getPhoneNumber, phone);
  56. wrapper.ge(SmsCode::getExpirationTime, new Date());
  57. wrapper.eq(SmsCode::getIsVerify, "0");
  58. SmsCode one = this.getOne(wrapper);
  59. if (ObjectUtils.isEmpty(one)) {
  60. return CommonResult.fail("500", "验证码已过期");
  61. }
  62. String code1 = one.getCode();
  63. // 验证
  64. if (!(code1.equals(code))) {
  65. return CommonResult.fail("500", "验证码错误");
  66. }
  67. // 登录成功,生成token
  68. LambdaQueryWrapper<SystemUser> wrapper2 = new LambdaQueryWrapper<>();
  69. wrapper2.eq(SystemUser::getPhoneNumber, phone);
  70. SystemUser one1 = systemUserService.getOne(wrapper2);
  71. // String token = JWTUtil.getToken(one1);
  72. // LoginVO loginVO = new LoginVO();
  73. // loginVO.setToken(token);
  74. // loginVO.setTokenTtl(JWTUtil.getExpired());
  75. // loginVO.setUserName(one1.getAccountName());
  76. // loginVO.setTelPhone(phone);
  77. // 将返回值转成json字符串并加密
  78. String s = "";//JSON.toJSONString(loginVO);
  79. Map<Object, Object> encryption = new HashMap<>();
  80. try {
  81. // 返回的加密字符串太长,无法解析,每次返回加密40长度的字符串
  82. EncryptionUtil encryptionUtil = new EncryptionUtil();
  83. encryption = encryptionUtil.encryption(s,mySecurity.getPublicKey());
  84. } catch (Exception e) {
  85. return CommonResult.fail("500", "加密失败");
  86. }
  87. // 将未验证更改为已验证
  88. // SmsCode smsCode = new SmsCode();
  89. // BeanUtils.copyProperties(one, smsCode);
  90. // smsCode.setIsVerify("1");
  91. // this.updateById(smsCode);
  92. return CommonResult.ok(encryption);
  93. }
  94. }