From 88ead65e7352234450f79814ec3eee6893653737 Mon Sep 17 00:00:00 2001 From: TinyAnts Date: Tue, 6 Sep 2022 14:07:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E8=A3=85=E4=BF=AE=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DecoratePageServiceImpl.java | 4 +- .../validate/decorate/DecoratePageParam.java | 2 +- server/like-common/pom.xml | 12 +++ .../common/plugin/notice/NoticeDriver.java | 32 +++----- .../common/plugin/notice/engine/MpNotice.java | 2 +- .../common/plugin/notice/engine/OaNotice.java | 2 +- .../plugin/notice/engine/SmsNotice.java | 82 +++++++++++++------ .../com/mdd/common/plugin/sms/SmsDriver.java | 7 +- .../common/plugin/sms/engine/TencentSms.java | 13 ++- .../mdd/front/controller/IndexController.java | 18 ++-- 10 files changed, 105 insertions(+), 69 deletions(-) diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/decorate/impl/DecoratePageServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/decorate/impl/DecoratePageServiceImpl.java index 6b2a0a36..527569b1 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/decorate/impl/DecoratePageServiceImpl.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/decorate/impl/DecoratePageServiceImpl.java @@ -34,7 +34,7 @@ public class DecoratePageServiceImpl implements IDecoratePageService { Map map = new LinkedHashMap<>(); map.put("id", decoratePage.getId()); map.put("pageType", decoratePage.getPageType()); - map.put("pageData", ToolsUtil.jsonToMap(decoratePage.getPageData())); + map.put("pageData", decoratePage.getPageData()); return map; } @@ -49,7 +49,7 @@ public class DecoratePageServiceImpl implements IDecoratePageService { DecoratePage decoratePage = decoratePageMapper.selectById(decoratePageParam.getId()); Assert.notNull(decoratePage, "数据不存在!"); - decoratePage.setPageData(JSON.toJSONString(decoratePageParam.getPageData())); + decoratePage.setPageData(decoratePageParam.getPageData()); decoratePage.setUpdateTime(System.currentTimeMillis() / 1000); decoratePageMapper.updateById(decoratePage); } diff --git a/server/like-admin/src/main/java/com/mdd/admin/validate/decorate/DecoratePageParam.java b/server/like-admin/src/main/java/com/mdd/admin/validate/decorate/DecoratePageParam.java index bfd13938..aa2efcd0 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/validate/decorate/DecoratePageParam.java +++ b/server/like-admin/src/main/java/com/mdd/admin/validate/decorate/DecoratePageParam.java @@ -15,6 +15,6 @@ public class DecoratePageParam { private Integer id; @NotNull(message = "pageData参数缺失") - private Object pageData; + private String pageData; } diff --git a/server/like-common/pom.xml b/server/like-common/pom.xml index cc752636..11596ebe 100644 --- a/server/like-common/pom.xml +++ b/server/like-common/pom.xml @@ -14,6 +14,18 @@ 4.0.0 like-common like-common + + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + diff --git a/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeDriver.java b/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeDriver.java index 5e990d5a..dfd63909 100644 --- a/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeDriver.java +++ b/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeDriver.java @@ -1,32 +1,23 @@ package com.mdd.common.plugin.notice; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.google.gson.reflect.TypeToken; import com.mdd.common.entity.notice.NoticeSetting; import com.mdd.common.exception.OperateException; import com.mdd.common.mapper.notice.NoticeSettingMapper; import com.mdd.common.plugin.notice.engine.MpNotice; import com.mdd.common.plugin.notice.engine.OaNotice; import com.mdd.common.plugin.notice.engine.SmsNotice; -import com.mdd.common.utils.ArrayUtil; import com.mdd.common.utils.SpringUtil; import com.mdd.common.utils.StringUtil; import com.mdd.common.utils.ToolsUtil; -import org.springframework.stereotype.Component; -import javax.annotation.Resource; -import java.lang.reflect.Type; -import java.util.Arrays; -import java.util.Collections; import java.util.Map; public class NoticeDriver { - public void handle(Map params) { + public void handle(Map config, Map params) { // 获取通知场景 - if (StringUtil.isNull(params.get("scene"))) { + if (StringUtil.isNull(config.get("scene"))) { throw new OperateException("scene参数缺失!"); } @@ -34,7 +25,7 @@ public class NoticeDriver { NoticeSettingMapper noticeSettingMapper = SpringUtil.getBean(NoticeSettingMapper.class); NoticeSetting noticeSetting = noticeSettingMapper.selectOne( new QueryWrapper() - .eq("scene", Integer.parseInt(params.get("scene").toString())) + .eq("scene", Integer.parseInt(config.get("scene"))) .eq("is_delete", 0) .last("limit 1")); @@ -45,20 +36,21 @@ public class NoticeDriver { // 短信通知 Map smsTemplate = ToolsUtil.jsonToMap(noticeSetting.getSmsNotice()); if (StringUtil.isNotEmpty(smsTemplate.get("status")) && Integer.parseInt(smsTemplate.get("status")) == 1) { - (new SmsNotice()).send(params, smsTemplate); + (new SmsNotice()).send(config, params, smsTemplate); + } + + // 小程序订阅通知 + Map mnpTemplate = ToolsUtil.jsonToMap(noticeSetting.getMnpNotice()); + if (StringUtil.isNotEmpty(mnpTemplate.get("status")) && Integer.parseInt(mnpTemplate.get("status")) == 1) { + (new MpNotice()).send(config, params, mnpTemplate); } // 公众号订阅通知 // Map oaTemplate = ToolsUtil.jsonToMap(noticeSetting.getOaNotice()); // if (StringUtil.isNotEmpty(oaTemplate.get("status")) && Integer.parseInt(oaTemplate.get("status")) == 1) { -// (new OaNotice()).send(params, oaTemplate); -// } -// -// // 小程序订阅通知 -// Map mnpTemplate = ToolsUtil.jsonToMap(noticeSetting.getMnpNotice()); -// if (StringUtil.isNotEmpty(mnpTemplate.get("status")) && Integer.parseInt(mnpTemplate.get("status")) == 1) { -// (new MpNotice()).send(params, mnpTemplate); +// (new OaNotice()).send(config, params, oaTemplate); // } + } } diff --git a/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/MpNotice.java b/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/MpNotice.java index 57250e4a..23db09b3 100644 --- a/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/MpNotice.java +++ b/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/MpNotice.java @@ -4,7 +4,7 @@ import java.util.Map; public class MpNotice { - public void send(Map params, Map smsTemplate) { + public void send(Map config, Map params, Map smsTemplate) { } diff --git a/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/OaNotice.java b/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/OaNotice.java index 07206f05..fc7ea489 100644 --- a/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/OaNotice.java +++ b/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/OaNotice.java @@ -4,7 +4,7 @@ import java.util.Map; public class OaNotice { - public void send(Map params, Map smsTemplate) { + public void send(Map config, Map params, Map smsTemplate) { } diff --git a/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/SmsNotice.java b/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/SmsNotice.java index 66efa253..b963624b 100644 --- a/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/SmsNotice.java +++ b/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/SmsNotice.java @@ -1,35 +1,32 @@ package com.mdd.common.plugin.notice.engine; -import com.alibaba.fastjson.JSON; import com.mdd.common.plugin.sms.SmsDriver; import com.mdd.common.utils.ConfigUtil; import com.mdd.common.utils.StringUtil; -import com.mdd.common.utils.ToolsUtil; -import java.util.Map; +import java.util.*; public class SmsNotice { - public Boolean send(Map params, Map smsTemplate) { - String mobile = params.getOrDefault("mobile", "").toString(); - String scene = params.getOrDefault("scene", "").toString(); - if (!StringUtil.isNotEmpty(mobile) || !StringUtil.isNotEmpty(scene)) { - return false; + /** + * 发送短信通知 + * + * @author fzr + * @param config 基础配置 + * @param params 短信参数 + * @param smsTemplate 短信模板 + */ + public void send(Map config, Map params, Map smsTemplate) { + String mobile = config.getOrDefault("mobile", ""); + String scene = config.getOrDefault("scene", ""); + if (StringUtil.isNotEmpty(mobile) && StringUtil.isNotEmpty(scene)) { + (new SmsDriver()) + .setMobile(mobile) + .setTemplateCode(smsTemplate.getOrDefault("templateId", "")) + .setTemplateParam(this.getSmsParams(params, smsTemplate)) + .setSmsContent(this.getContent(params, smsTemplate)) + .sendSms(); } - -// if (StringUtil.isNotNull(params.get("params"))) { -// ToolsUtil.objectToMap(params.get("params")); -// } - -// System.out.println(this.getContent(params, smsTemplate)); - // 发送短信 -// (new SmsDriver()) -// .setMobile(mobile) -// .setTemplateCode(smsTemplate.getOrDefault("templateId", "")) -// .setTemplateParam(null) -// .setSmsContent(this.getContent(params, smsTemplate)); - - return true; } /** @@ -56,12 +53,49 @@ public class SmsNotice { * @author fzr * @return Map */ - private Map getSmsParams(Map params) { + private Map getSmsParams(Map params, Map smsTemplate) { String engine = ConfigUtil.get("sms", "default", ""); if (!engine.equals("tencent")) { return params; } - return null; + + // 获取内容变量 + List arr = new LinkedList<>(); + String content = smsTemplate.getOrDefault("content", ""); + for (Map.Entry entry : params.entrySet()) { + String search = "\\$\\{" + entry.getKey() + "}"; + if (content.indexOf(search) != 1 && !arr.contains(entry.getKey())) { + arr.add(entry.getKey()); + } + } + + // 获取变量名称 + List arrIndex = new LinkedList<>(); + Map arr2 = new LinkedHashMap<>(); + if (arr.size() > 0) { + for (String v: arr) { + int k = content.indexOf(v); + arrIndex.add(k); + arr2.put(k, v); + } + } + + // 从小到大排序 + List arr3 = new LinkedList<>(); + Collections.sort(arrIndex); + for (Integer i : arrIndex) { + arr3.add(arr2.get(i)); + } + + // 取变量对应值 + Map arr4 = new LinkedHashMap<>(); + for (String v : arr3) { + if (StringUtil.isNotNull(params.get(v))) { + arr4.put(params.get(v), ""); + } + } + + return arr4; } } diff --git a/server/like-common/src/main/java/com/mdd/common/plugin/sms/SmsDriver.java b/server/like-common/src/main/java/com/mdd/common/plugin/sms/SmsDriver.java index e789292a..35078823 100644 --- a/server/like-common/src/main/java/com/mdd/common/plugin/sms/SmsDriver.java +++ b/server/like-common/src/main/java/com/mdd/common/plugin/sms/SmsDriver.java @@ -106,15 +106,10 @@ public class SmsDriver { sendResult = aliSms.getSendResult(); break; case "tencent": - List params = new LinkedList<>(); - for (Map.Entry MapString : this.templateParam.entrySet()) { - params.add(MapString.getValue()); - } - TencentSms tencentSms = new TencentSms(this.config); results = tencentSms.setMobile(this.mobile) .setTemplateId(this.templateCode) - .setTemplateParams(params.toArray(new String[0])) + .setTemplateParams(this.templateParam) .send(); sendResult = tencentSms.getSendResult(); break; diff --git a/server/like-common/src/main/java/com/mdd/common/plugin/sms/engine/TencentSms.java b/server/like-common/src/main/java/com/mdd/common/plugin/sms/engine/TencentSms.java index 94f2f352..762892ff 100644 --- a/server/like-common/src/main/java/com/mdd/common/plugin/sms/engine/TencentSms.java +++ b/server/like-common/src/main/java/com/mdd/common/plugin/sms/engine/TencentSms.java @@ -1,6 +1,5 @@ package com.mdd.common.plugin.sms.engine; -import com.mdd.common.exception.OperateException; import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.profile.ClientProfile; import com.tencentcloudapi.common.profile.HttpProfile; @@ -8,6 +7,9 @@ import com.tencentcloudapi.sms.v20210111.SmsClient; import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest; import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; import java.util.Map; /** @@ -53,8 +55,13 @@ public class TencentSms { * @param templateParams 模板参数 * @return AliSms */ - public TencentSms setTemplateParams(String[] templateParams) { - this.templateParams = templateParams; + public TencentSms setTemplateParams(Map templateParams) { + List params = new LinkedList<>(); + for (Map.Entry entry : templateParams.entrySet()) { + params.add(entry.getKey()); + + } + this.templateParams = params.toArray(String[]::new); return this; } diff --git a/server/like-front/src/main/java/com/mdd/front/controller/IndexController.java b/server/like-front/src/main/java/com/mdd/front/controller/IndexController.java index 3cdc1723..b31d7618 100644 --- a/server/like-front/src/main/java/com/mdd/front/controller/IndexController.java +++ b/server/like-front/src/main/java/com/mdd/front/controller/IndexController.java @@ -29,18 +29,14 @@ public class IndexController { */ @GetMapping("/index") public Object index() { - Map params = new LinkedHashMap<>(); - params.put("scene", "101"); - params.put("mobile", "12323"); - params.put("params", new String[]{ - "code:203", - "张三丰", - "张无忌", - "王二麻子", - "张富贵" - }); + Map config = new LinkedHashMap<>(); + config.put("scene", "100"); + config.put("mobile", "1222"); - (new NoticeDriver()).handle(params); + Map params = new LinkedHashMap<>(); + params.put("code", "5522"); +// params.put("order_sn", "27552210565677"); + (new NoticeDriver()).handle(config, params); Map detail = IIndexService.index();