From d737a229856becf58cbc7b61b34426caf9056553 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 25 Apr 2023 15:27:25 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java |  109 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 90 insertions(+), 19 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 0660f43..ab170a7 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
@@ -3,13 +3,24 @@
 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.entity.SmsRequest;
 import cn.gistack.sm.sms.service.ISmsRecordService;
 import cn.gistack.sm.sms.util.SmsUtils;
+import cn.gistack.system.user.entity.User;
+import cn.gistack.system.user.feign.IUserClient;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 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 java.util.Arrays;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import static cn.gistack.common.cache.CacheNames.PHONE_KEY;
 
 /**
  * 短信发送控制层
@@ -24,31 +35,76 @@
 
 	private final ISmsRecordService smsRecordService;
 
-
 	private final BladeRedis bladeRedis;
+
+	private final IUserClient userClient;
+
+	@GetMapping("/test")
+	public void setRedis(){
+		saveCodeForRedis("super_admin","123456");
+	}
 
 	/**
 	 * 发送登录验证码
-	 * request 必须包含手机号(多个手机号以英文逗号分隔)
+	 * 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);
+		// 手机号码校验
+		if(validatePhone(request.getUserNumber())) {
+			//设置模板相关信息
+			String templateId = "2431012205498";
+			String randNumber = SmsUtils.getRandNumber();
+			String content = "您的登录验证码是" + randNumber + ",5分钟内有效,请勿泄漏,如非本人操作,请忽略此信息";
+			request.setMessageContent(content);
+			request.setTemplateId(templateId);
+			// 发送操作
+			String sendMsg = SmsUtils.sendMsg(request);
+			JSONObject jsonObject = JSON.parseObject(sendMsg);
+			// 记录发送记录操作
+			saveSendRecord(request, sendMsg);
+			// 保存验证码到 redis
+			saveCodeForRedis(request.getUserNumber(), randNumber);
+			// 返回发送信息
+			return R.data(jsonObject);
+		}
 		// 返回发送信息
-		return R.data(sendMsg);
+		return R.fail(400,"该手机号不存在!");
+	}
+
+	/**
+	 * 校验手机号码正确性
+	 * @param userNumber
+	 * @return
+	 */
+	private boolean validatePhone(String userNumber) {
+		// 校验手机号码正确性
+		if (validator(userNumber)){
+			// 校验该账户是否已注册,通过手机号查询用户是否存在,tenantId 暂时写死,未登陆情况 tenantId 获取不到
+			R<List<User>> list = userClient.userInfoByPhoneOrAccount("000000", userNumber);
+			if (list.getData().size()>0){
+				return true;
+			}
+			return false;
+		}
+		return false;
+	}
+
+	/**
+	 * 校验手机号码
+	 */
+	public static boolean validator(String phone) {
+		String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$";
+		if (phone.length() != 11) {
+			return false;
+		} else {
+			Pattern p = Pattern.compile(regex);
+			Matcher m = p.matcher(phone);
+			boolean isMatch = m.matches();
+			return isMatch;
+		}
 	}
 
 	/**
@@ -57,7 +113,7 @@
 	 * @param randNumber
 	 */
 	private void saveCodeForRedis(String userNumber, String randNumber) {
-		bladeRedis.setEx(userNumber,randNumber,5*60L);
+		bladeRedis.setEx(PHONE_KEY + userNumber,randNumber,5*60L);
 	}
 
 	/**
@@ -75,8 +131,23 @@
 		smsRecordService.save(smsRecord);
 	}
 
-	@PostMapping("/test1")
-	public R test1(@RequestBody DynSMSSendRequest request){
-		return R.data(SmsUtils.dynSendMethod(request));
+	/**
+	 * 发送邮件提醒
+	 * @param request
+	 * @return
+	 */
+	@PostMapping("/sendEmailMsg")
+	public R sendEmailMsg(@RequestBody SmsRequest request){
+		// 处理数据(可能是多个手机号情况)
+		List<String> list = Arrays.asList(request.getPhone().split(","));
+		// 遍历
+		for (String phone : list) {
+			DynSMSSendRequest dynSMSSendRequest = new DynSMSSendRequest();
+			dynSMSSendRequest.setTemplateId("2431012165350");
+			dynSMSSendRequest.setDynData(new String[][]{{"手机号码","标题"},{phone,request.getContent()}});
+			// 发送邮件短信
+			SmsUtils.dynSendMethod(dynSMSSendRequest);
+		}
+		return R.status(true);
 	}
 }

--
Gitblit v1.9.3