From c7f24dde247a95facd2f8d3659ed9309139d1088 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 06 Jun 2023 20:00:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev
---
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java | 41 +++++-
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java | 11 +
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml | 23 +++
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java | 7 +
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java | 69 ++++++++---
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java | 3
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java | 16 ++
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java | 12 +
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java | 9 +
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java | 16 ++
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java | 93 +++++++++++++--
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java | 5
12 files changed, 253 insertions(+), 52 deletions(-)
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java b/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java
index 7528ec0..db8a8dc 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java
@@ -1,6 +1,10 @@
package cn.gistack.alerts.sms.entity;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
@@ -9,16 +13,26 @@
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springblade.core.tenant.mp.TenantEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
/**
* 短信发送记录
+ * @author Administrator
*/
@Data
@TableName("sm_sms_record")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "sm_sms_record对象", description = "短信发送记录")
-public class SmsRecord extends TenantEntity {
+public class SmsRecord{
+
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty("主键id")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
/**
* 模板id
*/
@@ -30,12 +44,6 @@
*/
@ApiModelProperty(value = "手机号")
private String tel;
-
- /**
- * 手机号(废弃)
- */
- @ApiModelProperty(value = "手机号(废弃)")
- private String phone;
/**
* 消息内容
@@ -62,10 +70,25 @@
private String responseMsg;
/**
- * 响应消息
+ * 发送结果ID
*/
- @ApiModelProperty(value = "响应消息")
+ @ApiModelProperty(value = "发送结果ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long resultId;
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty("创建人")
+ private Long createUser;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty("创建时间")
+ private Date createTime;
+
+ @ApiModelProperty("业务状态")
+ private Integer status;
+
+ @TableLogic
+ @ApiModelProperty("是否已删除")
+ private Integer isDeleted;
+
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java
index 392d60b..2ee9888 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java
@@ -40,4 +40,15 @@
add("rz");
}};
+ /**
+ * 水位初次超汛限告警(水库技术责任人、巡查责任人)
+ */
+ public static List<String> waterFirstOverList = new ArrayList<String>()
+ {{
+ add("town_nm");
+ add("res_nm");
+ add("rz");
+ add("over_z");
+ }};
+
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java
index 3a9786c..301acff 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java
@@ -23,4 +23,9 @@
*/
public static final String res_diff_dead_z_api = "http://10.42.6.192/services/1234567890ABCDEFGHIJKLMN/res/diff_dead_z";
+ /**
+ * 水位初次超汛限告警
+ */
+ public static final String over_z_res_api = "http://10.10.2.192/services/1234567890ABCDEFGHIJKLMN/over_z_res";
+
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
index 3634407..e1bb822 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
@@ -66,7 +66,7 @@
* @param templateId
* @param alarmRule
* @param columnsList 列名集合信息
- * @param flag
+ * @param flag 是否包含日期
* @return
*/
private SmsRequestTemplate getSendSmsTemplate(JSONArray jsonArray,
@@ -210,6 +210,29 @@
}
/**
+ * 依次添加巡查责任人,技术责任人信息
+ * @param list
+ */
+ private void addPatrolTechnologyInfo(List<String> list) {
+ // 查询巡查责任人姓名,技术责任人姓名信息
+ List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(0),"4,5");
+ String xczrr = "";
+ String jszrr = "";
+ for (PersonVO personVO : personVOList) {
+ if (personVO.getType().equals("5")){
+ xczrr = personVO.getName();
+ }
+ if (personVO.getType().equals("4")){
+ jszrr = personVO.getName();
+ }
+ }
+ // 巡查责任人姓名
+ list.add(xczrr);
+ // 技术责任人姓名
+ list.add(jszrr);
+ }
+
+ /**
* 默认实现
*
* @param arg1 告警规则名称
@@ -349,22 +372,7 @@
// 遍历,拼接县水利部人员电话
for (List<String> list : smsRequestTemplate.getTemplateContent()) {
// 后面依次拼接 巡查责任人姓名,技术责任人姓名,市县水利部门人员姓名电话(暂时不要)
- // 查询巡查责任人姓名,技术责任人姓名信息
- List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(0),"4,5");
- String xczrr = "";
- String jszrr = "";
- for (PersonVO personVO : personVOList) {
- if (personVO.getType().equals("5")){
- xczrr = personVO.getName();
- }
- if (personVO.getType().equals("4")){
- jszrr = personVO.getName();
- }
- }
- // 巡查责任人姓名
- list.add(xczrr);
- // 技术责任人姓名
- list.add(jszrr);
+ addPatrolTechnologyInfo(list);
// 市县水利部门人员姓名电话(暂时不要)
// list.add("测试:13112341234");
// 保存告警记录信息
@@ -380,6 +388,8 @@
return "水位接近汛限告警";
}
+
+
/**
* 策略6: 水位初次超汛限告警
*
@@ -388,8 +398,29 @@
* @return
*/
public String waterFirstOverHandle(String arg1, String arg2) {
- // 业务逻辑处理 2...
- return "";
+ // 查询当前策略对应的告警规则信息
+ AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
+ if (null!=alarmRule) {
+ // 调用中台服务接口查询数据
+ JSONArray ztData = getZtData("", ZtApiUrlConstant.over_z_res_api);
+ // 只发短信,将发短信信息组装好
+ SmsRequestTemplate smsRequestTemplate
+ = getSendSmsTemplate(ztData, "2431012216671",alarmRule, ZtApiDataColumnConstant.waterFirstOverList,true);
+ // 拼接后面内容
+ for (List<String> list : smsRequestTemplate.getTemplateContent()) {
+ // 依次拼接巡查责任人,技术责任人姓名
+ addPatrolTechnologyInfo(list);
+ // 保存告警记录信息
+ AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule);
+ if (null != alarmRecord) {
+ list.add(alarmRecord.getId().toString());
+ }
+ }
+ // 调用短信服务
+ smsService.sendSignMsg(smsRequestTemplate);
+ }
+ // 返回
+ return "水位初次超汛限告警";
}
/**
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java
index 4d0dffe..1c5e7c7 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java
@@ -19,6 +19,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static cn.gistack.common.cache.CacheNames.PHONE_KEY;
@@ -72,7 +73,7 @@
/**
* 短信动态内容发送通用方法(仅支持 具名变量 {手机号码:11} 模式的模板)
- * request 必须包含手机号,模板id,拼接好的内容
+ * request
* @param smsRequest
* @return
*/
@@ -254,7 +255,7 @@
/**
- * 发送 具名 变量模板短信
+ * 发送 具名 变量模板短信(告警定制)
* @param smsRequest 发送对象
* @return
*/
@@ -262,4 +263,15 @@
public R sendSignMsg(@RequestBody SmsRequestTemplate smsRequest){
return R.data(smsService.sendSignMsg(smsRequest));
}
+
+
+ /**
+ * 发送降雨短信
+ * @param params 发送对象
+ * @return
+ */
+ @PostMapping("/sendSignRainMsg")
+ public R sendSignRainMsg(@RequestBody Map<String,Object> params){
+ return R.data(smsService.sendSignRainMsg(params));
+ }
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java
index 1ebe2b1..375f64f 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java
@@ -8,7 +8,6 @@
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
@@ -26,7 +25,7 @@
@RestController
@RequestMapping("/smsRecord/smsRecord")
@AllArgsConstructor
-public class SmsRecordController extends BladeController {
+public class SmsRecordController{
private ISmsRecordService smsRecordService;
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java
index 4967e8e..58d2715 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java
@@ -21,4 +21,11 @@
* @return
*/
List<SmsRecordVO> selectSmsRecordPage(IPage<SmsRecordVO> page,@Param("smsRecord") SmsRecordVO smsRecord);
+
+ /**
+ * 批量插入记录
+ * @param list
+ * @return
+ */
+ int batchSaveSendRecord(@Param("list") List<SmsRecord> list);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml
index 459a0e1..064605f 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml
@@ -5,8 +5,8 @@
<!--自定义分页列表查询-->
<select id="selectSmsRecordPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO">
select * from sm_sms_record where 1=1 and is_deleted = 0
- <if test="smsRecord.phone!=null and smsRecord.phone!=''">
- and phone like concat(concat('%',#{smsRecord.phone}),'%')
+ <if test="smsRecord.tel!=null and smsRecord.tel!=''">
+ and tel like concat(concat('%',#{smsRecord.tel}),'%')
</if>
<if test="smsRecord.content!=null and smsRecord.content!=''">
and content like concat(concat('%',#{smsRecord.content}),'%')
@@ -17,4 +17,23 @@
order by id desc
</select>
+ <!--批量新增-->
+ <insert id="batchSaveSendRecord"
+ parameterType="cn.gistack.alerts.sms.entity.SmsRecord" useGeneratedKeys="true" keyProperty="id">
+ insert into sm_sms_record
+ (id,template_id,tel,content,response_status,response_msg,result_id,is_deleted,create_time)
+ <foreach collection="list" item="item" index="index" separator=",">
+ (
+ #{item.id},
+ #{item.templateId},
+ #{item.tel},
+ #{item.content},
+ #{item.responseStatus},
+ #{item.responseMsg},
+ #{item.resultId},
+ 0,now()
+ )
+ </foreach>
+ </insert>
+
</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java
index 67aacf1..84246bd 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java
@@ -3,9 +3,11 @@
import cn.gistack.alerts.sms.entity.SmsRecord;
import cn.gistack.alerts.sms.vo.SmsRecordVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.extension.service.IService;
-public interface ISmsRecordService extends BaseService<SmsRecord> {
+import java.util.List;
+
+public interface ISmsRecordService extends IService<SmsRecord> {
/**
* 自定义分页列表查询
@@ -14,4 +16,10 @@
* @return
*/
Object selectSmsRecordPage(IPage<SmsRecordVO> page, SmsRecordVO smsRecord);
+
+ /**
+ * 批量插入记录
+ * @param list
+ */
+ int batchSaveSendRecord(List<SmsRecord> list);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java
index fd52a3b..1bfef26 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java
@@ -25,7 +25,7 @@
List<String> phoneNumbers);
/**
- * 发送 具名 变量模板短信
+ * 发送 具名 变量模板短信 (告警定制)
* @param smsRequestTemplate
* @return
*/
@@ -55,4 +55,11 @@
* @return
*/
Map<String, Object> saveInStationInfo(SmsRequestTemplate smsRequestTemplate);
+
+ /**
+ * 发送降雨短信
+ * @param params 发送对象
+ * @return
+ */
+ Object sendSignRainMsg(Map<String, Object> params);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java
index aed5514..e373aac 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java
@@ -5,15 +5,17 @@
import cn.gistack.alerts.sms.service.ISmsRecordService;
import cn.gistack.alerts.sms.vo.SmsRecordVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseServiceImpl;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
+
+import java.util.List;
/**
* 短信发送记录
* @author zhongrj
*/
@Service
-public class SmsRecordServiceImpl extends BaseServiceImpl<SmsRecordMapper, SmsRecord> implements ISmsRecordService {
+public class SmsRecordServiceImpl extends ServiceImpl<SmsRecordMapper, SmsRecord> implements ISmsRecordService {
/**
* 自定义分页列表查询
@@ -30,4 +32,14 @@
// 查询返回
return page.setRecords(baseMapper.selectSmsRecordPage(page,smsRecord));
}
+
+ /**
+ * 批量插入记录
+ * @param list
+ * @return
+ */
+ @Override
+ public int batchSaveSendRecord(List<SmsRecord> list) {
+ return baseMapper.batchSaveSendRecord(list);
+ }
}
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 e1b173e..fb52c50 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
@@ -15,10 +15,14 @@
import cn.gistack.alerts.sms.service.SmsService;
import cn.gistack.alerts.sms.util.SmsUtils;
import cn.gistack.alerts.sms.vo.SmsRequestTemplate;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* 短信发送服务实现层
@@ -65,7 +69,7 @@
}
/**
- * 发送 具名 变量模板短信
+ * 发送 具名 变量模板短信(告警定制)
* @param smsRequestTemplate
* @return
*/
@@ -194,12 +198,34 @@
}
/**
- * 发送 具名 变量模板短信--批量一次发送
- * @param title 具名变量头
+ * 发送降雨短信--批量一次发送
+ * @param params 具名变量头
* @return
*/
- public Object sendSignMsg(String title, String datas, SMSSendRequest request, Integer type, SmsTemplate smsTemplate) {
- String[] titleArr = title.split(",");
+ @Override
+ public Object sendSignRainMsg(Map<String, Object> params) {
+ String[] titleArr = params.get("title").toString().split(",");
+ String data = params.get("data").toString();
+ String templateId = params.get("templateId").toString();
+ String content = params.get("content").toString();
+ List<String> phones = (List<String>)params.get("phones");
+ List<String> errPhones = new ArrayList<>();
+ // 手机号去重
+ Set<String> hashSet = new HashSet<>();
+ for (String phone : phones) {
+ hashSet.add(phone);
+ }
+ StringBuilder builder = new StringBuilder();
+ // 变量
+ for (String phone : hashSet) {
+ if (validator(phone)){
+ builder.append(phone+","+data).append(";");
+ }else {
+ // 异常手机号
+ errPhones.add(phone);
+ }
+ }
+ String datas = builder.toString();
String[] rows = datas.split(";");
String[][] dyns = new String[rows.length + 1][titleArr.length];
dyns[0] = titleArr;
@@ -210,22 +236,45 @@
}
//请求参数
DynSMSSendRequest sendRequest = new DynSMSSendRequest();
- sendRequest.setTemplateId(request.getTemplateId());
+ sendRequest.setTemplateId(templateId);
sendRequest.setDynData(dyns);
// 发送
ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(sendRequest);
+ SMSSendRequest request = new SMSSendRequest();
+ request.setTemplateId(templateId);
+ request.setMessageContent(content);
+ request.setUserNumber("");
// 先保存结果记录
SmsResult smsResult = saveSendResult(request, rows.length);
- SmsRecord smsRecord = new SmsRecord();
if (null != smsResult){
- // 保存记录
- smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
+ List<SmsRecord> list = new ArrayList<>();
+ // 遍历保存
+ for (String phone : hashSet) {
+ SmsRecord smsRecord = new SmsRecord();
+ smsRecord.setId(IdWorker.getId());
+ smsRecord.setTel(phone);
+ smsRecord.setContent(content);
+ smsRecord.setTemplateId(templateId);
+ smsRecord.setResultId(smsResult.getId());
+ smsRecord.setResponseStatus(resultComResult.getCode().toString());
+ smsRecord.setResponseMsg(resultComResult.getMsg());
+ // 加入集合
+ list.add(smsRecord);
+ }
+ // 批量保存记录
+ smsRecordService.batchSaveSendRecord(list);
}
- Map<String, Object> map = new HashMap<>(2);
- map.put("smsRecord",smsRecord);
- map.put("smsResult",smsResult);
+ Integer diff = phones.size() - hashSet.size();
+ if (resultComResult.getCode()==0){
+ String successMsg = "发送成功!共提交号码 "+phones.size()+" 个,其中重复号码 "+diff+" 个,错误号码 "
+ +errPhones.size()+" 个,发送成功号码 "+ hashSet.size() + " 个。";
+ // 返回
+ return R.data(200,successMsg,null);
+ }
+ String errorMsg = "发送失败!共提交号码 "+phones.size()+" 个,其中重复号码 "+diff+" 个,错误号码 "+errPhones.size()+
+ " 个,发送异常号码 "+ hashSet.size()+" 个,异常原因" + resultComResult.getMsg() + "。";
// 返回
- return map;
+ return R.data(400,errorMsg,null);
}
@@ -274,5 +323,23 @@
return smsRecord;
}
+ /**
+ * 校验手机号码
+ */
+ public static boolean validator(String phone) {
+ if (null!=phone && !phone.equals("")) {
+ 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;
+ }
+ }
+ return false;
+ }
+
}
--
Gitblit v1.9.3