| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package com.template.services.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
- import com.tencentcloudapi.sms.v20210111.models.SendStatus;
- import com.template.config.MySecurity;
- import com.template.mapper.SystemUserMapper;
- import com.template.model.pojo.SmsCode;
- import com.template.model.pojo.SystemUser;
- import com.template.model.result.CommonResult;
- import com.template.services.SystemUserService;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.template.common.result.ResponseStatusEnum;
- import com.template.common.utils.SendSms;
- import com.template.common.utils.ValidateCode;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.Date;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author ceshi
- * @since 2023-03-30
- */
- @Service
- public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemUser> implements SystemUserService {
- @Autowired
- SmsCodeServiceImpl smsCodeService;
- /**
- * 密钥对象
- */
- @Autowired
- MySecurity mySecurity;
- /**
- * 判断手机号是否符合发送验证码的要求
- * @param phone
- * @return
- */
- @Override
- @Transactional(rollbackFor=Exception.class )
- public CommonResult verifyPhone(String phone) {
- // String privateKey = mySecurity.getPrivateKey();
- // postman传参会将+转换成空格
- // phone=phone.replace(" ","+");
- // String decrypt;
- // try {
- // decrypt = RSAUtils.decrypt(phone, RSAUtils.getPrivateKey(privateKey));
- // } catch (Exception e) {
- // return CommonResult.fail("500","解密失败");
- // }
- // phone=decrypt;
- if (ObjectUtils.isEmpty(phone) || 11 != phone.length()) {
- return CommonResult.resultValue(ResponseStatusEnum.SEND_PARAMS);
- }
- LambdaQueryWrapper<SystemUser> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(SystemUser::getPhoneNumber, phone);
- SystemUser one = this.getOne(wrapper);
- if (ObjectUtils.isEmpty(one)) {
- return CommonResult.resultValue(ResponseStatusEnum.SYSTEM_PHONE_ERROR);
- }
- LambdaQueryWrapper<SmsCode> wrappers=new LambdaQueryWrapper<>();
- wrappers.eq(SmsCode::getPhoneNumber,phone);
- wrappers.ge(SmsCode::getExpirationTime,new Date());
- wrappers.eq(SmsCode::getIsVerify,"0");
- int count = smsCodeService.count(wrappers);
- if (count>0) {
- return CommonResult.fail("500","请不要频繁操作");
- }
- // 随机验证码
- int vode= ValidateCode.generateValidateCode(6);
- String code=String.valueOf(vode);
- SmsCode smsCode = new SmsCode();
- smsCode.setPhoneNumber(phone);
- phone = "+86" + phone;
- // 发送短信
- SendStatus[] ret = SendSms.sendSms(phone,code);
- // 获取code
- String code1 = ret[0].getCode();
- // 判断短信是否发送成功
- if ("LimitExceeded.PhoneNumberDailyLimit".equals(code1)) {
- return CommonResult.fail("500","手机号已超过发送上限");
- }
- // 发送成功后存储到短信表
- smsCode.setCode(code);
- long time = new Date().getTime() + 60000L;
- smsCode.setExpirationTime(new Date(time));
- smsCode.setIsVerify("0");
- smsCode.setDeleted(0L);
- smsCodeService.save(smsCode);
- return CommonResult.ok();
- }
- }
|