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 new file mode 100644 index 00000000..6a50ed0e --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeDriver.java @@ -0,0 +1,57 @@ +package com.mdd.common.plugin.notice; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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.SpringUtil; +import com.mdd.common.utils.StringUtil; +import com.mdd.common.utils.ToolsUtil; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Map; + +public class NoticeDriver { + + public void handle(Map params) { + // 获取通知场景 + if (StringUtil.isNull(params.get("scene"))) { + throw new OperateException("scene参数缺失!"); + } + + // 获取场景模板 + NoticeSettingMapper noticeSettingMapper = SpringUtil.getBean(NoticeSettingMapper.class); + NoticeSetting noticeSetting = noticeSettingMapper.selectOne( + new QueryWrapper() + .eq("scene", Integer.parseInt(params.get("scene").toString())) + .eq("is_delete", 0) + .last("limit 1")); + + if (StringUtil.isNull(noticeSetting)) { + throw new OperateException("消息场景不存在!"); + } + + // 短信通知 + Map smsTemplate = ToolsUtil.jsonToMap(noticeSetting.getSmsNotice()); + if (StringUtil.isNotEmpty(smsTemplate.get("status")) && Integer.parseInt(smsTemplate.get("status")) == 1) { + (new SmsNotice()).send(params, smsTemplate); + } + + // 公众号订阅通知 +// 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); +// } + } + +} 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 new file mode 100644 index 00000000..57250e4a --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/MpNotice.java @@ -0,0 +1,11 @@ +package com.mdd.common.plugin.notice.engine; + +import java.util.Map; + +public class MpNotice { + + public void send(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 new file mode 100644 index 00000000..07206f05 --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/OaNotice.java @@ -0,0 +1,11 @@ +package com.mdd.common.plugin.notice.engine; + +import java.util.Map; + +public class OaNotice { + + public void send(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 new file mode 100644 index 00000000..cd35968c --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/SmsNotice.java @@ -0,0 +1,60 @@ +package com.mdd.common.plugin.notice.engine; + +import com.mdd.common.plugin.sms.SmsDriver; +import com.mdd.common.utils.ConfigUtil; +import com.mdd.common.utils.StringUtil; + +import java.util.Map; + +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; + } +// System.out.println(this.getContent(params, smsTemplate)); + // 发送短信 +// (new SmsDriver()) +// .setMobile(mobile) +// .setTemplateCode(smsTemplate.getOrDefault("templateId", "")) +// .setTemplateParam(null) +// .setSmsContent(this.getContent(params, smsTemplate)); + + return true; + } + + /** + * 获取短信内容 + * + * @author fzr + * @param params 短信参数 + * @param smsTemplate 短信模板 + * @return String 短信内容 + */ + private String getContent(Map params, Map smsTemplate) { + String content = smsTemplate.getOrDefault("content", ""); + for (Map.Entry entry : params.entrySet()) { + String searchReplace = "\\$\\{" + entry.getKey() + "}"; + content = content.replaceAll(searchReplace, entry.getValue()); + } + + return content; + } + + /** + * 腾讯云参数处理 + * + * @author fzr + * @return Map + */ + private Map getSmsParams(Map params) { + String engine = ConfigUtil.get("sms", "default", ""); + if (!engine.equals("tencent")) { + return params; + } + return null; + } + +} 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 3238eccd..3cdc1723 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 @@ -1,6 +1,7 @@ package com.mdd.front.controller; import com.mdd.common.core.AjaxResult; +import com.mdd.common.plugin.notice.NoticeDriver; import com.mdd.common.validator.annotation.IDMust; import com.mdd.front.service.IIndexService; import org.springframework.validation.annotation.Validated; @@ -10,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.LinkedHashMap; import java.util.Map; @RestController @@ -27,6 +29,20 @@ 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", + "张三丰", + "张无忌", + "王二麻子", + "张富贵" + }); + + (new NoticeDriver()).handle(params); + + Map detail = IIndexService.index(); return AjaxResult.success(detail); }