mirror of
https://gitee.com/likeadmin/likeadmin_java.git
synced 2026-06-06 11:40:45 +08:00
feat 解决短信发送问题
This commit is contained in:
@@ -4,9 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.mdd.common.aop.NotLogin;
|
||||
import com.mdd.common.core.AjaxResult;
|
||||
import com.mdd.common.entity.notice.NoticeRecord;
|
||||
import com.mdd.common.entity.smsLog.SmsLog;
|
||||
import com.mdd.common.enums.NoticeEnum;
|
||||
import com.mdd.common.enums.SmsEnum;
|
||||
import com.mdd.common.enums.YesNoEnum;
|
||||
import com.mdd.common.exception.OperateException;
|
||||
import com.mdd.common.mapper.notice.NoticeRecordMapper;
|
||||
import com.mdd.common.mapper.smsLog.SmsLogMapper;
|
||||
import com.mdd.common.plugin.notice.NoticeDriver;
|
||||
import com.mdd.common.plugin.notice.vo.NoticeSmsVo;
|
||||
import com.mdd.common.util.StringUtils;
|
||||
@@ -30,32 +34,38 @@ import java.util.Map;
|
||||
public class SmsController {
|
||||
|
||||
@Resource
|
||||
NoticeRecordMapper noticeRecordMapper;
|
||||
SmsLogMapper smsLogMapper;
|
||||
|
||||
@NotLogin
|
||||
@PostMapping("/sendCode")
|
||||
@ApiOperation(value="发送短信")
|
||||
public AjaxResult<Object> sendSms(@Validated @RequestBody SmsValidate smsValidate) {
|
||||
NoticeRecord noticeRecord = noticeRecordMapper.selectOne(new QueryWrapper<NoticeRecord>()
|
||||
.eq("account", smsValidate.getMobile())
|
||||
.eq("scene", smsValidate.getScene())
|
||||
.eq("status", Arrays.asList(NoticeEnum.STATUS_WAIT, NoticeEnum.STATUS_OK))
|
||||
.orderByDesc("id")
|
||||
.last("limit 1"));
|
||||
|
||||
if (StringUtils.isNotNull(noticeRecord)) {
|
||||
if (noticeRecord.getCreateTime() >= (System.currentTimeMillis() / 1000 - 60)){
|
||||
throw new OperateException("操作频繁,请稍后再试!");
|
||||
QueryWrapper smsLogQueryWrapper = new QueryWrapper<SmsLog>();
|
||||
smsLogQueryWrapper.eq("mobile", smsValidate.getMobile());
|
||||
smsLogQueryWrapper.eq("send_status", SmsEnum.SEND_SUCCESS.getCode());
|
||||
smsLogQueryWrapper.in("scene_id", NoticeEnum.getSmsScene());
|
||||
smsLogQueryWrapper.eq("is_verify", YesNoEnum.NO.getCode());
|
||||
if (StringUtils.isNotNull(smsValidate.getScene())) {
|
||||
smsLogQueryWrapper.eq("scene_id", NoticeEnum.getSceneByTag(smsValidate.getScene()));
|
||||
}
|
||||
smsLogQueryWrapper.orderByDesc("send_time");
|
||||
smsLogQueryWrapper.last("limit 1");
|
||||
SmsLog smsLog = smsLogMapper.selectOne(smsLogQueryWrapper);
|
||||
if (StringUtils.isNotNull(smsLog)) {
|
||||
if (smsLog.getSendTime() + 5 * 60 > System.currentTimeMillis() / 1000 ) {
|
||||
throw new OperateException("已有短信记录,请勿重复发送");
|
||||
}
|
||||
}
|
||||
|
||||
String code = ToolUtils.randomInt(4);
|
||||
NoticeSmsVo params = new NoticeSmsVo()
|
||||
.setScene(NoticeEnum.getSceneByTag(smsValidate.getScene()))
|
||||
.setMobile(smsValidate.getMobile())
|
||||
.setExpire(900)
|
||||
.setParams(new String[] {
|
||||
"code:" + ToolUtils.randomInt(4)
|
||||
});
|
||||
"code:" + code
|
||||
})
|
||||
.setCode(code);
|
||||
|
||||
NoticeDriver.handle(params);
|
||||
return AjaxResult.success();
|
||||
|
||||
Reference in New Issue
Block a user