From b33010bfb1a4d61f33eb91bf5bee0dd76a289b7c Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 23 Aug 2023 16:33:21 +0800
Subject: [PATCH] 智能外呼任务创建失败新增短信告警

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java       |    3 +
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java                  |   26 +++++++++++++
 skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/feign/ISmsRecordClient.java         |    8 ++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/AsyncCallService.java      |   16 ++++++++
 skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/feign/ISmsRecordClientFallback.java |    5 ++
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java            |   26 ++++++++----
 6 files changed, 75 insertions(+), 9 deletions(-)

diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/feign/ISmsRecordClient.java b/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/feign/ISmsRecordClient.java
index 4fb47c1..cec0bdd 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/feign/ISmsRecordClient.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/feign/ISmsRecordClient.java
@@ -17,6 +17,7 @@
 	String API_PREFIX = "/client";
 	String SAVE_SMS_RECORD = API_PREFIX + "/saveSmsRecord";
 	String SEND_SMS_BY_OUT_CALL_NOT_CONNECT = API_PREFIX + "/sendSmsByOutCallNotConnect";
+	String CREATE_OUT_CALL_ERROR_SEND_SMS = API_PREFIX + "/createOutCallErrorSendSms";
 
 	/**
 	 * 保存短信发送记录
@@ -44,4 +45,11 @@
 	@GetMapping(SEND_SMS_BY_OUT_CALL_NOT_CONNECT)
 	String sendSmsByOutCallNotConnect(@RequestParam("taskId")String taskId,
 									  @RequestParam("time")String time);
+
+	/**
+	 * 外呼任务创建失败发送短信提醒
+	 * @param msg 失败原因
+	 */
+	@GetMapping(CREATE_OUT_CALL_ERROR_SEND_SMS)
+    void createOutCallErrorSendSms(@RequestParam("msg") String msg);
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/feign/ISmsRecordClientFallback.java b/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/feign/ISmsRecordClientFallback.java
index ca65715..1a67bde 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/feign/ISmsRecordClientFallback.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/feign/ISmsRecordClientFallback.java
@@ -22,4 +22,9 @@
 	public String sendSmsByOutCallNotConnect(String taskId, String time) {
 		return null;
 	}
+
+	@Override
+	public void createOutCallErrorSendSms(String msg) {
+
+	}
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java
index d32e83c..775fcb5 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java
@@ -10,6 +10,11 @@
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * 短信发送记录
  * @author zhongrj
@@ -62,4 +67,25 @@
 	public String sendSmsByOutCallNotConnect(String taskId,String time) {
 		return smsService.sendSmsByOutCallNotConnect(taskId,time);
 	}
+
+	/**
+	 * 外呼任务创建失败发送短信提醒
+	 * @param msg 失败原因
+	 */
+	@Override
+	@GetMapping(CREATE_OUT_CALL_ERROR_SEND_SMS)
+	public void createOutCallErrorSendSms(String msg) {
+		// 创建map 集合
+		Map<String, Object> map = new HashMap<>(3);
+		// 查询需要告警的人员手机号
+		List<String> list = new ArrayList<>();
+		list.add("15170720695");
+		list.add("15179776420");
+		//封装数据
+		map.put("templateId","2431012254505");
+		map.put("phones",list);
+		map.put("content",msg);
+		// 发送短信
+		smsService.batchSendSms(map);
+	}
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
index a36b5da..deacf38 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
@@ -694,7 +694,7 @@
 	}
 
 	/**
-	 * 批量发送动态短信
+	 * 批量发送动态短信--该方法只适合除手机号外只有一个动态参数并且是内容一致的情况
 	 * @param phoneList
 	 * @param titleArr 示例: [手机号码,水库名称,水位值]
 	 * @param param 示例: ***水库,15.12
@@ -857,13 +857,21 @@
 	public Object batchSendSms(Map<String, Object> map) {
 		// 获取模板id
 		String templateId = map.get("templateId").toString();
-		// 获取集合数据
-		List<Map<String,Object>> list = (List<Map<String,Object>>) map.get("list");
-		List<String> columnList = (List<String>) map.get("columnList");
-		// 遍历
-		for (Map<String, Object> param : list) {
-			// 放入集合数据
-		}
-		return null;
+		// 获取手机号集合
+		List<String> list = (List<String>) map.get("phones");
+		// 获取发送的动态内容(msg)
+		String param = (String) map.get("content");
+		// 创建错误手机号集合
+		List<String> errPhones = new ArrayList<>();
+		// 去重
+		Set<String> hashSet = new HashSet<>(list);
+		// 查询短信模板
+		SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id", templateId));
+		// 拼接短信标题数组
+		String [] titleArr = getSmsTitleArr(smsTemplate);
+		// 批量发送短信
+		Map<String, Object> batchSendSmsMap = batchSendSms(hashSet, titleArr, param, smsTemplate,errPhones);
+		// 返回
+		return batchSendSmsMap;
 	}
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/AsyncCallService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/AsyncCallService.java
index 4debcb8..22dc5e1 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/AsyncCallService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/AsyncCallService.java
@@ -1,5 +1,6 @@
 package cn.gistack.sm.intelligentCall.service.impl;
 
+import cn.gistack.alerts.sms.feign.ISmsRecordClient;
 import cn.gistack.sm.intelligentCall.entity.DailyCallTask;
 import cn.gistack.sm.intelligentCall.service.IDailyCallTaskService;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -14,6 +15,9 @@
 
 	@Autowired
 	private IDailyCallTaskService dailyCallTaskService;
+
+	@Autowired
+	private ISmsRecordClient smsRecordClient;
 
 
 	/**
@@ -31,4 +35,16 @@
 		// 新增
 		dailyCallTaskService.save(dailyCallTask);
 	}
+
+	/**
+	 * 外呼任务创建失败发送短信提醒
+	 * @param code 错误码
+	 * @param msg 失败原因
+	 */
+	@Async
+	public void createOutCallErrorSendSms(String code,String msg) {
+		String data = msg;
+		// 新增
+		smsRecordClient.createOutCallErrorSendSms(data);
+	}
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java
index 64f3236..6d511b0 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java
@@ -144,6 +144,9 @@
 		if (success){
 			//通过任务名称查询taskId
 			taskId = callTaskMapper.getTaskIdByTaskName(taskName);
+		}else {
+			// 任务创建失败,发送短信告知
+			asyncCallService.createOutCallErrorSendSms(jsonObject.getString("code"),jsonObject.getString("message"));
 		}
 		List<String> list = new ArrayList<>();
 		list.add(response.getBody());

--
Gitblit v1.9.3