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 implements SmsCodeService { @Autowired private ConfigService configService; @Override public SmsCode selectByPhone(String phone,Integer smsType) { return this.baseMapper.selectByPhone(phone,smsType); } @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,Long userId) { Config config = configService.selectConfigByCode("SMSNotification"); if (Cools.isEmpty(config) || !config.getValue().equals("true")) { return true; } String randomNum = param.code; SmsCode smsCode = new SmsCode(); smsCode.setPhone(phone); smsCode.setCode(randomNum); smsCode.setStatus(0); smsCode.setCreateTime(new Date()); smsCode.setUserId(userId); smsCode.setSmsType(param.id); 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,0); 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; } }