mitao
2024-04-22 a3251c2650bfffa5a7027c874ea5cbc45b378414
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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") || code.equals("111111")){
            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 "";
    }
 
}