From 90389c7d1ff29b39cc8224fbc070b675d918e0f6 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Mon, 24 Apr 2023 21:07:31 +0800
Subject: [PATCH] 手机验证码登录实现,登录认证相关逻辑调整

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java |   62 ++++++++++++++++++++++++++++++-
 1 files changed, 60 insertions(+), 2 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java
index 781717b..5fc83a9 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java
@@ -2,11 +2,16 @@
 
 import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest;
 import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
+import cn.gistack.sm.sms.entity.SmsRecord;
+import cn.gistack.sm.sms.service.ISmsRecordService;
 import cn.gistack.sm.sms.util.SmsUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
+
+import static cn.gistack.common.cache.CacheNames.PHONE_KEY;
 
 /**
  * 短信发送控制层
@@ -19,9 +24,62 @@
 @AllArgsConstructor
 public class SmsController {
 
+	private final ISmsRecordService smsRecordService;
+
+
+	private final BladeRedis bladeRedis;
+
 	@GetMapping("/test")
-	public R test(SMSSendRequest request){
-		return R.data(SmsUtils.sendMsg(request));
+	public void setRedis(){
+		saveCodeForRedis("super_admin","123456");
+	}
+
+	/**
+	 * 发送登录验证码
+	 * request 必须包含手机号(多个手机号以英文逗号分隔)
+	 * @param request
+	 * @return
+	 */
+	@PostMapping("/sendCode")
+	public R test(@RequestBody SMSSendRequest request){
+		//设置模板相关信息
+		String templateId = "2431012205498";
+		String randNumber = SmsUtils.getRandNumber();
+		String content = "您的登录验证码是" + randNumber + ",5分钟内有效,请勿泄漏,如非本人操作,请忽略此信息";
+		request.setMessageContent(content);
+		request.setTemplateId(templateId);
+		// 发送操作
+		String sendMsg = SmsUtils.sendMsg(request);
+		// 记录发送记录操作
+		saveSendRecord(request,sendMsg);
+		// 保存验证码到 redis
+		saveCodeForRedis(request.getUserNumber(),randNumber);
+		// 返回发送信息
+		return R.data(sendMsg);
+	}
+
+	/**
+	 * 保存验证码到 redis
+	 * @param userNumber
+	 * @param randNumber
+	 */
+	private void saveCodeForRedis(String userNumber, String randNumber) {
+		bladeRedis.setEx(PHONE_KEY + userNumber,randNumber,5*60L);
+	}
+
+	/**
+	 * 发送记录保存
+	 * @param request 发送信息
+	 * @param sendMsg 响应数据
+	 */
+	private void saveSendRecord(SMSSendRequest request, String sendMsg) {
+		SmsRecord smsRecord = new SmsRecord();
+		smsRecord.setPhone(request.getUserNumber());
+		smsRecord.setContent(request.getMessageContent());
+		smsRecord.setTemplateId(request.getTemplateId());
+		smsRecord.setResContent(sendMsg);
+		//插入记录
+		smsRecordService.save(smsRecord);
 	}
 
 	@PostMapping("/test1")

--
Gitblit v1.9.3