From 80a8d45a3e4c79c2dc3e290745ca477032998fae Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 30 May 2023 19:23:08 +0800
Subject: [PATCH] 新增 xx 变量和 具名变量通用发送接口

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java |  181 ++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 163 insertions(+), 18 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 c078fe1..65fa054 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
@@ -4,8 +4,12 @@
 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.entity.SmsResult;
 import cn.gistack.sm.sms.service.ISmsRecordService;
+import cn.gistack.sm.sms.service.ISmsResultService;
+import cn.gistack.sm.sms.service.SmsService;
 import cn.gistack.sm.sms.util.SmsUtils;
+import cn.gistack.sm.sms.vo.SmsRequestTemplate;
 import cn.gistack.system.user.entity.User;
 import cn.gistack.system.user.feign.IUserClient;
 import com.alibaba.fastjson.JSON;
@@ -35,6 +39,10 @@
 
 	private final ISmsRecordService smsRecordService;
 
+	private final ISmsResultService smsResultService;
+
+	private final SmsService smsService;
+
 	private final BladeRedis bladeRedis;
 
 	private final IUserClient userClient;
@@ -45,13 +53,87 @@
 	}
 
 	/**
+	 * 短信固定内容发送通用方法(仅支持 {xx} 模式的模板)
+	 * request 必须包含手机号,模板id,拼接好的内容
+	 * @param request
+	 * @return
+	 */
+	@PostMapping("/sendFixedContentByXXModel")
+	public R sendFixedContentByXXModel(@RequestBody SMSSendRequest request){
+		// 手机号码校验
+		if(validatePhone(request.getUserNumber())) {
+			// 发送操作
+			String sendMsg = JSON.toJSONString(SmsUtils.sendMsg(request));
+			JSONObject jsonObject = JSON.parseObject(sendMsg);
+			// 记录发送记录操作
+			SmsResult smsResult = saveSendResult(request, 1);
+			if (null != smsResult){
+				saveSendRecord(request, sendMsg,smsResult.getId());
+			}
+			// 返回发送信息
+			return R.data(jsonObject);
+		}
+		// 返回发送信息
+		return R.fail(400,"该手机号不存在!");
+	}
+
+
+	/**
+	 * 短信动态内容发送通用方法(仅支持 具名变量 {手机号码:11} 模式的模板)
+	 * request 必须包含手机号,模板id,拼接好的内容
+	 * @param smsRequest
+	 * @return
+	 */
+	@PostMapping("/sendFixedContentByNamedVariableModel")
+	public R sendFixedContentByNamedVariableModel(@RequestBody SmsRequest smsRequest){
+		// 处理数据(可能是多个手机号情况)
+		List<String> list = Arrays.asList(smsRequest.getPhone().split(","));
+		// 保存发送结果
+		// 记录保存
+		SMSSendRequest request = new SMSSendRequest();
+		request.setMessageContent(smsRequest.getContent());
+		request.setTemplateId(smsRequest.getTemplateId());
+		SmsResult smsResult = saveSendResult(request, list.size());
+		// 遍历
+		for (String phone : list) {
+			DynSMSSendRequest dynSMSSendRequest = new DynSMSSendRequest();
+			dynSMSSendRequest.setTemplateId(smsRequest.getTemplateId());
+			dynSMSSendRequest.setDynData(smsRequest.getParams());
+			// 手机号校验
+			if(validator(phone)) {
+				// 发送邮件短信
+				String dynSendMsg = JSON.toJSONString(SmsUtils.dynSendMethod(dynSMSSendRequest));
+				// 记录保存
+				if (null != smsResult) {
+					SMSSendRequest smsSendRequest = new SMSSendRequest();
+					smsSendRequest.setUserNumber(phone);
+					smsSendRequest.setMessageContent(smsRequest.getContent());
+					smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId());
+					// 记录发送记录操作
+					saveSendRecord(smsSendRequest, dynSendMsg,smsResult.getId());
+				}
+			}else {
+				// 手机号有误记录
+				// 记录保存
+				SMSSendRequest smsSendRequest = new SMSSendRequest();
+				smsSendRequest.setUserNumber(phone);
+				smsSendRequest.setMessageContent(smsRequest.getContent());
+				smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId());
+				// 记录发送记录操作
+				saveSendRecord(smsSendRequest, "手机号错误未发送...",null);
+			}
+		}
+		return R.status(true);
+	}
+
+	/**
 	 * 发送登录验证码
 	 * request 必须包含手机号
 	 * @param request
 	 * @return
 	 */
 	@PostMapping("/sendCode")
-	public R test(@RequestBody SMSSendRequest request){
+	public R sendCode(@RequestBody SMSSendRequest request){
 		// 手机号码校验
 		if(validatePhone(request.getUserNumber())) {
 			//设置模板相关信息
@@ -61,10 +143,13 @@
 			request.setMessageContent(content);
 			request.setTemplateId(templateId);
 			// 发送操作
-			String sendMsg = SmsUtils.sendMsg(request);
+			String sendMsg =JSON.toJSONString(SmsUtils.sendMsg(request));
 			JSONObject jsonObject = JSON.parseObject(sendMsg);
 			// 记录发送记录操作
-			saveSendRecord(request, sendMsg);
+			SmsResult smsResult = saveSendResult(request, 1);
+			if (null != smsResult){
+				saveSendRecord(request, sendMsg,smsResult.getId());
+			}
 			// 保存验证码到 redis
 			saveCodeForRedis(request.getUserNumber(), randNumber);
 			// 返回发送信息
@@ -123,16 +208,45 @@
 	 * 发送记录保存
 	 * @param request 发送信息
 	 * @param sendMsg 响应数据
+	 * @param resultId 发送结果id
 	 */
-	private void saveSendRecord(SMSSendRequest request, String sendMsg) {
+	private void saveSendRecord(SMSSendRequest request, String sendMsg,Long resultId) {
+		// 在保存明细
 		SmsRecord smsRecord = new SmsRecord();
-		smsRecord.setPhone(request.getUserNumber());
+		smsRecord.setTel(request.getUserNumber());
 		smsRecord.setContent(request.getMessageContent());
 		smsRecord.setTemplateId(request.getTemplateId());
 		smsRecord.setResContent(sendMsg);
+		smsRecord.setResultId(resultId);
+		// 解析 sendMsg
+		JSONObject jsonObject = JSON.parseObject(sendMsg);
+		smsRecord.setResponseStatus(jsonObject.getString("code"));
+		smsRecord.setResponseMsg(jsonObject.getString("msg"));
 		//插入记录
 		smsRecordService.save(smsRecord);
 	}
+
+	/**
+	 * 发送记录保存
+	 * @param request 发送信息
+	 * @param number 号码个数
+	 */
+	private SmsResult saveSendResult(SMSSendRequest request,Integer number) {
+		// 先保存结果表
+		SmsResult smsResult = new SmsResult();
+		smsResult.setTemplateId(request.getTemplateId());
+		smsResult.setContent(request.getMessageContent());
+		smsResult.setNumber(number);
+		//插入记录
+		boolean save = smsResultService.save(smsResult);
+		if (save){
+			return smsResult;
+		}
+		// 返回
+		return null;
+	}
+
+
 
 	/**
 	 * 发送邮件提醒
@@ -143,33 +257,64 @@
 	public R sendEmailMsg(@RequestBody SmsRequest smsRequest){
 		// 处理数据(可能是多个手机号情况)
 		List<String> list = Arrays.asList(smsRequest.getPhone().split(","));
+		// 保存发送结果
+		// 记录保存
+		SMSSendRequest request = new SMSSendRequest();
+		request.setMessageContent(smsRequest.getContent());
+		request.setTemplateId("2431012165299");
+		SmsResult smsResult = saveSendResult(request, list.size());
 		// 遍历
 		for (String phone : list) {
 			DynSMSSendRequest dynSMSSendRequest = new DynSMSSendRequest();
-			dynSMSSendRequest.setTemplateId("2431012165350");
+			dynSMSSendRequest.setTemplateId("2431012165299");
 			dynSMSSendRequest.setDynData(new String[][]{{"手机号码", "标题"}, {phone, smsRequest.getContent()}});
 			// 手机号校验
 			if(validator(phone)) {
 				// 发送邮件短信
-				String dynSendMsg = SmsUtils.dynSendMethod(dynSMSSendRequest);
+				String dynSendMsg = JSON.toJSONString(SmsUtils.dynSendMethod(dynSMSSendRequest));
 				// 记录保存
-				SMSSendRequest request = new SMSSendRequest();
-				request.setUserNumber(phone);
-				request.setMessageContent(smsRequest.getContent());
-				request.setTemplateId(dynSMSSendRequest.getTemplateId());
-				// 记录发送记录操作
-				saveSendRecord(request, dynSendMsg);
+				if (null != smsResult) {
+					SMSSendRequest smsSendRequest = new SMSSendRequest();
+					smsSendRequest.setUserNumber(phone);
+					smsSendRequest.setMessageContent(smsRequest.getContent());
+					smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId());
+					// 记录发送记录操作
+					saveSendRecord(smsSendRequest, dynSendMsg,smsResult.getId());
+				}
 			}else {
 				// 手机号有误记录
 				// 记录保存
-				SMSSendRequest request = new SMSSendRequest();
-				request.setUserNumber(phone);
-				request.setMessageContent(smsRequest.getContent());
-				request.setTemplateId(dynSMSSendRequest.getTemplateId());
+				SMSSendRequest smsSendRequest = new SMSSendRequest();
+				smsSendRequest.setUserNumber(phone);
+				smsSendRequest.setMessageContent(smsRequest.getContent());
+				smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId());
 				// 记录发送记录操作
-				saveSendRecord(request, "手机号错误未发送...");
+				saveSendRecord(smsSendRequest, "手机号错误未发送...",null);
 			}
 		}
 		return R.status(true);
 	}
+
+
+
+	/**
+	 * 发送 xx 变量模板短信
+	 * @param smsRequest 发送对象
+	 * @return
+	 */
+	@PostMapping("/sendXXMsg")
+	public R sendXXMsg(@RequestBody SmsRequestTemplate smsRequest){
+		return R.data(smsService.sendXXMsg(smsRequest.getSmsRequest(),smsRequest.getPhoneNumbers()));
+	}
+
+
+	/**
+	 * 发送 具名 变量模板短信
+	 * @param smsRequest 发送对象
+	 * @return
+	 */
+	@PostMapping("/sendSignMsg")
+	public R sendSignMsg(@RequestBody SmsRequestTemplate smsRequest){
+		return R.data(smsService.sendSignMsg(smsRequest.getTitle(),smsRequest.getContent(),smsRequest.getSmsRequest()));
+	}
 }

--
Gitblit v1.9.3