package com.sinata.rest.modular.system.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.sinata.common.model.AccountCheckNumVo;
|
import com.sinata.rest.common.SpringUtil;
|
import com.sinata.rest.modular.auth.util.AccountCheckUtil;
|
import com.sinata.rest.modular.system.dao.SmsRecordMapper;
|
import com.sinata.rest.modular.system.model.SmsRecord;
|
import com.sinata.rest.modular.system.service.ISmsRecordService;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDateTime;
|
|
/**
|
* <p>
|
* 短信验证码记录 服务实现类
|
* </p>
|
*
|
* @author goku
|
* @since 2023-03-23
|
*/
|
@Service
|
public class SmsRecordServiceImpl extends ServiceImpl<SmsRecordMapper, SmsRecord> implements ISmsRecordService {
|
|
@Resource
|
private AccountCheckUtil accountCheckUtil;
|
|
@Override
|
@Transactional
|
public String verifyCode(Integer type, String phone, String code) {
|
//测试环境放过验证码验证
|
if("WXLOGIN".equals(code) || !SpringUtil.getActiveProfile().equals("prod")){
|
return "";
|
}
|
// 账号验证码-验证次数
|
AccountCheckNumVo chVo = accountCheckUtil.accountCheckCodeNum(phone);
|
if(chVo == null) {
|
return "验证码错误";
|
}
|
|
LambdaQueryWrapper<SmsRecord> wrapper = new LambdaQueryWrapper();
|
wrapper.eq(SmsRecord::getCodeType, type).eq(SmsRecord::getPhone, phone).eq(SmsRecord::getCode, code).eq(SmsRecord::getIsCheck, 0);
|
SmsRecord r = getOne(wrapper);
|
|
if(r != null) {
|
// 账号验证码-验证次数【重置次数】
|
accountCheckUtil.resetAccountCheckCodeNum(chVo);
|
}
|
|
if (r == null) {
|
return "验证码错误";
|
} else {
|
if (r.getCreateTime().plusMinutes(30).isBefore(LocalDateTime.now())) {
|
return "验证码已过期";
|
}
|
r.setIsCheck(1);
|
updateById(r);
|
}
|
return "";
|
}
|
|
@Override
|
public String justVerifyCode(Integer type, String phone, String code) {
|
// 账号验证码-验证次数
|
AccountCheckNumVo chVo = accountCheckUtil.accountCheckCodeNum(phone);
|
if(chVo == null) {
|
return "验证码错误";
|
}
|
|
LambdaQueryWrapper<SmsRecord> wrapper = new LambdaQueryWrapper();
|
wrapper.eq(SmsRecord::getCodeType, type).eq(SmsRecord::getPhone, phone).eq(SmsRecord::getCode, code).eq(SmsRecord::getIsCheck, 0);
|
SmsRecord r = getOne(wrapper);
|
|
if(r != null) {
|
// 账号验证码-验证次数【重置次数】
|
accountCheckUtil.resetAccountCheckCodeNum(chVo);
|
}
|
|
if (r == null) {
|
return "验证码错误";
|
} else {
|
if (r.getCreateTime().plusMinutes(30).isBefore(LocalDateTime.now())) {
|
return "验证码已过期";
|
}
|
}
|
return "";
|
}
|
|
}
|