init
This commit is contained in:
@@ -12,5 +12,7 @@ import com.ruoyi.cai.enums.CodeEnum;
|
||||
*/
|
||||
public interface SmsVerifyService extends IService<SmsVerify> {
|
||||
|
||||
boolean check(CodeEnum codeEnum, String mobile, String code);
|
||||
|
||||
void put(CodeEnum codeEnum, String mobile);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
package com.ruoyi.cai.service.impl;
|
||||
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.cai.domain.SmsVerify;
|
||||
import com.ruoyi.cai.domain.User;
|
||||
import com.ruoyi.cai.domain.UserInfo;
|
||||
import com.ruoyi.cai.enums.CodeEnum;
|
||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||
import com.ruoyi.cai.kit.AliSmsKit;
|
||||
import com.ruoyi.cai.manager.CodeManager;
|
||||
import com.ruoyi.cai.manager.SystemConfigManager;
|
||||
import com.ruoyi.cai.mapper.SmsVerifyMapper;
|
||||
import com.ruoyi.cai.service.SmsVerifyService;
|
||||
import com.ruoyi.cai.service.UserInfoService;
|
||||
import com.ruoyi.cai.service.UserService;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.utils.ServletUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -24,19 +35,85 @@ public class SmsVerifyServiceImpl extends ServiceImpl<SmsVerifyMapper,SmsVerify>
|
||||
|
||||
@Autowired
|
||||
private CodeManager codeManager;
|
||||
@Autowired
|
||||
private UserInfoService userInfoService;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private AliSmsKit aliSmsKit;
|
||||
@Autowired
|
||||
private SystemConfigManager systemConfigManager;
|
||||
|
||||
@Override
|
||||
public boolean check(CodeEnum codeEnum, String mobile, String code){
|
||||
String smsAdmin = systemConfigManager.getSystemConfig(SystemConfigEnum.SMS_CODE_ADMIN);
|
||||
if(StringUtils.isNotEmpty(smsAdmin) && smsAdmin.equals(code)){
|
||||
return true;
|
||||
}
|
||||
SmsVerify one = this.getOne(Wrappers.lambdaQuery(SmsVerify.class)
|
||||
.eq(SmsVerify::getType, codeEnum)
|
||||
.eq(SmsVerify::getReceivePhone, mobile)
|
||||
.eq(SmsVerify::getStatus, 1)
|
||||
.gt(SmsVerify::getOverTime, LocalDateTime.now())
|
||||
.orderByDesc(SmsVerify::getId)
|
||||
.last("limit 1"));
|
||||
if(one == null){
|
||||
return false;
|
||||
}
|
||||
if(one.getVerifyCode().equals(code)){
|
||||
return true;
|
||||
}
|
||||
// codeManager.check(codeEnum,mobile,code);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void put(CodeEnum codeEnum,String mobile){
|
||||
String code = codeManager.put(codeEnum, mobile);
|
||||
String clientIP = ServletUtils.getClientIP();
|
||||
if(codeEnum == CodeEnum.REGISTER){
|
||||
long count = userService.count(Wrappers.lambdaQuery(User.class)
|
||||
.eq(User::getMobile, mobile));
|
||||
if(count > 0){
|
||||
throw new ServiceException("手机号已经被注册使用!");
|
||||
}
|
||||
}else if(codeEnum == CodeEnum.RESET_PASSWORD){
|
||||
long count = userService.count(Wrappers.lambdaQuery(User.class)
|
||||
.eq(User::getMobile, mobile));
|
||||
if(count == 0){
|
||||
throw new ServiceException("手机号未注册!");
|
||||
}
|
||||
}
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
SmsVerify one = this.getOne(Wrappers.lambdaQuery(SmsVerify.class)
|
||||
.eq(SmsVerify::getType, codeEnum.name())
|
||||
.eq(SmsVerify::getReceivePhone, mobile)
|
||||
.eq(SmsVerify::getStatus, 1)
|
||||
.gt(SmsVerify::getOverTime, now)
|
||||
.last("limit 1"));
|
||||
if(one != null){
|
||||
long diff = now.until(one.getCreateTime(), ChronoUnit.SECONDS);
|
||||
if(diff < 60){
|
||||
throw new ServiceException("请"+diff+"秒之后再重试发送!");
|
||||
}
|
||||
}
|
||||
long count = userInfoService.count(Wrappers.lambdaQuery(UserInfo.class).eq(UserInfo::getRegIp, clientIP));
|
||||
if(count > 8){
|
||||
throw new ServiceException("验证码发送失败!2"+count);
|
||||
}
|
||||
String code = RandomUtil.randomNumbers(6);
|
||||
SmsVerify smsVerify = new SmsVerify();
|
||||
smsVerify.setType(codeEnum.name());
|
||||
smsVerify.setType(codeEnum.getName());
|
||||
smsVerify.setReceivePhone(mobile);
|
||||
smsVerify.setVerifyCode(code);
|
||||
smsVerify.setSendInterface("阿里云");
|
||||
smsVerify.setOperateIp(ServletUtils.getClientIP());
|
||||
smsVerify.setOverTime(LocalDateTime.now().plus(3, ChronoUnit.MINUTES));
|
||||
smsVerify.setOperateIp(clientIP);
|
||||
smsVerify.setOverTime(LocalDateTime.now().plus(1, ChronoUnit.MINUTES));
|
||||
this.save(smsVerify);
|
||||
boolean boo = aliSmsKit.sendMessage(mobile, codeEnum.getAliTemplate(), code, false);
|
||||
if(!boo){
|
||||
this.removeById(smsVerify);
|
||||
}
|
||||
// String code = codeManager.put(codeEnum, mobile);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user