中扬CRM客户关系管理系统
#
LSH
2023-11-23 456f8b69675f9734efe19ed1842c9821ee080b1c
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.zy.crm.manager.service.impl;
 
import com.core.common.Cools;
import com.zy.crm.common.entity.PhoneCodeTypeParam;
import com.zy.crm.manager.mapper.SmsCodeMapper;
import com.zy.crm.manager.entity.SmsCode;
import com.zy.crm.manager.service.SmsCodeService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.crm.manager.utils.SmsUtils;
import com.zy.crm.system.entity.Config;
import com.zy.crm.system.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.Date;
 
@Service("smsCodeService")
public class SmsCodeServiceImpl extends ServiceImpl<SmsCodeMapper, SmsCode> implements SmsCodeService {
 
    @Autowired
    private ConfigService configService;
 
    @Override
    public SmsCode selectByPhone(String phone) {
        return this.baseMapper.selectByPhone(phone);
    }
 
    @Override
    public boolean sendSmsCode(String phone) {
        String randomNum = SmsUtils.getRandomNum(6);//获取六位随机数
        SmsCode smsCode = new SmsCode();
        smsCode.setPhone(phone);
        smsCode.setCode(randomNum);
        smsCode.setStatus(0);
        smsCode.setCreateTime(new Date());
        if (this.baseMapper.insert(smsCode) <= 0) {
            return false;
        }
 
        boolean sendSmsCode = SmsUtils.sendSmsCode(phone, smsCode.getCode());
        if (!sendSmsCode) {
            return false;
        }
 
        smsCode.setSendTime(new Date());
        smsCode.setStatus(1);
        this.baseMapper.updateById(smsCode);
        return true;
    }
 
//    @Override
//    public boolean sendSmsCodeText(String phone) {
//        String randomNum = "分配了新的规划申请单任务!" ;//获取六位随机数
//        SmsCode smsCode = new SmsCode();
//        smsCode.setPhone(phone);
//        smsCode.setCode(randomNum);
//        smsCode.setStatus(0);
//        smsCode.setCreateTime(new Date());
//        if (this.baseMapper.insert(smsCode) <= 0) {
//            return false;
//        }
//
//        boolean sendSmsCode = SmsUtils.sendSmsCodeText(phone, "");
//        if (!sendSmsCode) {
//            return false;
//        }
//
//        smsCode.setSendTime(new Date());
//        smsCode.setStatus(1);
//        this.baseMapper.updateById(smsCode);
//        return true;
//    }
 
    @Override
    public boolean sendSmsCodeText(String phone, PhoneCodeTypeParam param) {
        Config config = configService.selectConfigByCode("SMSNotification");
        if (Cools.isEmpty(config) || config.getValue().equals("false")) {
            return true;
        }
        String randomNum = param.code;
        SmsCode smsCode = new SmsCode();
        smsCode.setPhone(phone);
        smsCode.setCode(randomNum);
        smsCode.setStatus(0);
        smsCode.setCreateTime(new Date());
        if (this.baseMapper.insert(smsCode) <= 0) {
            return false;
        }
 
        boolean sendSmsCode = SmsUtils.sendSmsCodeText(phone, param);
        if (!sendSmsCode) {
            return false;
        }
 
        smsCode.setSendTime(new Date());
        smsCode.setStatus(1);
        this.baseMapper.updateById(smsCode);
        return true;
    }
 
    @Override
    public boolean verifySmsCode(String phone, String code) {
        SmsCode smsCode1 = this.baseMapper.selectByPhone(phone);
        if (smsCode1 == null) {
            return false;
        }
 
        if (!smsCode1.getCode().equals(code)) {
            return false;
        }
 
        long createTime = smsCode1.getCreateTime().getTime();
        long nowTime = new Date().getTime();
        long diff = nowTime - createTime;
        if (diff > (60000 * 10)) {//短信时间超过十分钟,已失效
            return false;
        }
 
        if (smsCode1.getStatus() == 2) {
            return false;//短信已被使用
        }
 
        smsCode1.setStatus(2);
        smsCode1.setUseTime(new Date());
        this.baseMapper.updateById(smsCode1);
        return true;
    }
}