From 74571a97babcfff55b4cac0c86b50caf36311503 Mon Sep 17 00:00:00 2001 From: duoduo Date: Tue, 26 Nov 2019 09:17:44 +0800 Subject: [PATCH 1/8] =?UTF-8?q?optimization=EF=BC=9A=E5=8D=87=E7=BA=A7WxJa?= =?UTF-8?q?va=E4=BE=9D=E8=B5=96=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 1b2967a9..fb5e6a25 100644 --- a/pom.xml +++ b/pom.xml @@ -20,9 +20,9 @@ 1.8 1.2.3 - 3.5.0 - 3.5.0 - 3.5.0 + 3.6.0 + 3.6.0 + 3.6.0 4.0.0 4.6.2 4.6 From d900cf5f31900156aabfe547b10a8022f762c5d5 Mon Sep 17 00:00:00 2001 From: duoduo Date: Tue, 26 Nov 2019 09:28:07 +0800 Subject: [PATCH 2/8] =?UTF-8?q?optimization=EF=BC=9A=E4=BC=98=E5=8C=96getA?= =?UTF-8?q?ccessToken=E6=96=B9=E6=B3=95,=E8=A7=A3=E5=86=B3=E5=B9=B6?= =?UTF-8?q?=E5=8F=91=E6=97=B6=E9=87=8D=E5=A4=8D=E5=88=B7=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fangxuele/tool/push/util/WeWxMpServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/fangxuele/tool/push/util/WeWxMpServiceImpl.java b/src/main/java/com/fangxuele/tool/push/util/WeWxMpServiceImpl.java index 14602fd3..04c98673 100644 --- a/src/main/java/com/fangxuele/tool/push/util/WeWxMpServiceImpl.java +++ b/src/main/java/com/fangxuele/tool/push/util/WeWxMpServiceImpl.java @@ -44,6 +44,9 @@ public String getAccessToken(boolean forceRefresh) throws WxErrorException { lock.lock(); try { + if (!config.isAccessTokenExpired() && !forceRefresh) { + return config.getAccessToken(); + } if (timedCache.get("count") != null && Integer.parseInt(timedCache.get("count")) > 10) { WxError wxError = WxError.builder().errorCode(98).errorMsg("短时间内大量获取AccessToken失败").errorMsgEn("Fail to get AccessToken in a shot period").json("").build(); count = 0; From cb076dee394a875c7a6ebbab30363489e19991a6 Mon Sep 17 00:00:00 2001 From: duoduo Date: Thu, 28 Nov 2019 13:58:08 +0800 Subject: [PATCH 3/8] =?UTF-8?q?optimization=EF=BC=9A=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=8F=91=E9=80=81=E5=99=A8=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fangxuele/tool/push/logic/msgsender/AliYunMsgSender.java | 3 ++- .../fangxuele/tool/push/logic/msgsender/BdYunMsgSender.java | 3 ++- .../fangxuele/tool/push/logic/msgsender/DingMsgSender.java | 3 ++- .../fangxuele/tool/push/logic/msgsender/HttpMsgSender.java | 5 +++-- .../fangxuele/tool/push/logic/msgsender/MailMsgSender.java | 3 ++- .../tool/push/logic/msgsender/QiNiuYunMsgSender.java | 3 ++- .../fangxuele/tool/push/logic/msgsender/TxYunMsgSender.java | 3 ++- .../fangxuele/tool/push/logic/msgsender/UpYunMsgSender.java | 3 ++- .../fangxuele/tool/push/logic/msgsender/WxCpMsgSender.java | 3 ++- .../fangxuele/tool/push/logic/msgsender/WxKefuMsgSender.java | 3 ++- .../tool/push/logic/msgsender/WxMaTemplateMsgSender.java | 3 ++- .../tool/push/logic/msgsender/WxMpTemplateMsgSender.java | 3 ++- .../tool/push/logic/msgsender/WxUniformMsgSender.java | 3 ++- .../tool/push/logic/msgsender/YunPianMsgSender.java | 3 ++- 14 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/AliYunMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/AliYunMsgSender.java index 34cbc59b..a9f91103 100644 --- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/AliYunMsgSender.java +++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/AliYunMsgSender.java @@ -10,6 +10,7 @@ import com.fangxuele.tool.push.logic.PushControl; import com.fangxuele.tool.push.logic.msgmaker.AliyunMsgMaker; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.exception.ExceptionUtils; /** *
@@ -56,7 +57,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
         }
 
         return sendResult;
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/BdYunMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/BdYunMsgSender.java
index 312ed24b..47177b95 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/BdYunMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/BdYunMsgSender.java
@@ -9,6 +9,7 @@
 import com.fangxuele.tool.push.logic.PushControl;
 import com.fangxuele.tool.push.logic.msgmaker.BdYunMsgMaker;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 import java.util.Map;
 
@@ -70,7 +71,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
         }
 
         return sendResult;
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/DingMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/DingMsgSender.java
index 493e02d6..a89f28fb 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/DingMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/DingMsgSender.java
@@ -21,6 +21,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.compress.utils.Lists;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 import java.util.List;
 
@@ -85,7 +86,7 @@ public SendResult sendWorkMsg(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
             return sendResult;
         }
 
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/HttpMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/HttpMsgSender.java
index 4ece64a0..256f54c0 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/HttpMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/HttpMsgSender.java
@@ -20,6 +20,7 @@
 import okhttp3.RequestBody;
 import okhttp3.Response;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 import java.net.HttpCookie;
 import java.net.InetSocketAddress;
@@ -124,7 +125,7 @@ public HttpSendResult sendUseHutool(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.toString());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
             return sendResult;
         }
         StringBuilder headerBuilder = StrUtil.builder();
@@ -260,7 +261,7 @@ public HttpSendResult sendUseOkHttp(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
             return sendResult;
         }
     }
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/MailMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/MailMsgSender.java
index 9e5e70f1..7d646d07 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/MailMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/MailMsgSender.java
@@ -10,6 +10,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.compress.utils.Lists;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 import java.io.File;
 import java.util.List;
@@ -61,7 +62,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
         }
 
         return sendResult;
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/QiNiuYunMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/QiNiuYunMsgSender.java
index 56034370..5da5b0e2 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/QiNiuYunMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/QiNiuYunMsgSender.java
@@ -7,6 +7,7 @@
 import com.qiniu.sms.SmsManager;
 import com.qiniu.util.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 import java.util.Map;
 
@@ -57,7 +58,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
         }
 
         return sendResult;
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/TxYunMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/TxYunMsgSender.java
index 8c1dacb5..112e856a 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/TxYunMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/TxYunMsgSender.java
@@ -6,6 +6,7 @@
 import com.github.qcloudsms.SmsSingleSender;
 import com.github.qcloudsms.SmsSingleSenderResult;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 /**
  * 
@@ -54,7 +55,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
         }
 
         return sendResult;
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/UpYunMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/UpYunMsgSender.java
index dddfe150..e13f96a4 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/UpYunMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/UpYunMsgSender.java
@@ -5,6 +5,7 @@
 import com.fangxuele.tool.push.logic.msgmaker.UpYunMsgMaker;
 import lombok.extern.slf4j.Slf4j;
 import okhttp3.*;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 /**
  * 
@@ -62,7 +63,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
         }
 
         return sendResult;
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxCpMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxCpMsgSender.java
index 93c23318..ad279311 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxCpMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxCpMsgSender.java
@@ -15,6 +15,7 @@
 import me.chanjar.weixin.cp.bean.WxCpMessageSendResult;
 import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 import java.util.List;
 
@@ -62,7 +63,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
             return sendResult;
         }
 
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxKefuMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxKefuMsgSender.java
index 2a30f46f..e4819501 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxKefuMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxKefuMsgSender.java
@@ -5,6 +5,7 @@
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 /**
  * 
@@ -41,7 +42,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
             return sendResult;
         }
 
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMaTemplateMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMaTemplateMsgSender.java
index bcf5a255..23b7b375 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMaTemplateMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMaTemplateMsgSender.java
@@ -9,6 +9,7 @@
 import com.fangxuele.tool.push.logic.msgmaker.WxMaTemplateMsgMaker;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 /**
  * 
@@ -49,7 +50,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
             return sendResult;
         }
 
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMpTemplateMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMpTemplateMsgSender.java
index 81fa64e5..625b6530 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMpTemplateMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMpTemplateMsgSender.java
@@ -15,6 +15,7 @@
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
 import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.http.Consts;
 import org.apache.http.HttpHost;
 import org.apache.http.HttpResponse;
@@ -70,7 +71,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
             return sendResult;
         }
 
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxUniformMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxUniformMsgSender.java
index bc5d6b97..c5aeb213 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxUniformMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxUniformMsgSender.java
@@ -9,6 +9,7 @@
 import com.fangxuele.tool.push.logic.msgmaker.WxMpTemplateMsgMaker;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 /**
  * 
@@ -64,7 +65,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
             return sendResult;
         }
 
diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/YunPianMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/YunPianMsgSender.java
index 2f601697..f6040bb0 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/YunPianMsgSender.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/YunPianMsgSender.java
@@ -7,6 +7,7 @@
 import com.yunpian.sdk.model.Result;
 import com.yunpian.sdk.model.SmsSingleSend;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 
 import java.util.Map;
 
@@ -55,7 +56,7 @@ public SendResult send(String[] msgData) {
         } catch (Exception e) {
             sendResult.setSuccess(false);
             sendResult.setInfo(e.getMessage());
-            log.error(e.toString());
+            log.error(ExceptionUtils.getStackTrace(e));
         }
 
         return sendResult;

From b69026424702089b12befabc05f252260a49e07f Mon Sep 17 00:00:00 2001
From: duoduo 
Date: Fri, 29 Nov 2019 15:02:00 +0800
Subject: [PATCH 4/8] =?UTF-8?q?feature:=E5=A2=9E=E5=8A=A0=E5=B0=8F?=
 =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E8=AE=A2=E9=98=85=E6=B6=88=E6=81=AF=E8=A1=A8?=
 =?UTF-8?q?=E5=92=8C=E6=9E=9A=E4=B8=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../tool/push/dao/TMsgMaSubscribeMapper.java  |  17 +++
 .../tool/push/domain/TMsgMaSubscribe.java     |  77 ++++++++++++
 .../tool/push/logic/MessageTypeEnum.java      |   7 +-
 src/main/resources/db_init.sql                |  19 ++-
 src/main/resources/generatorConfig.xml        |   2 +-
 .../mapper/TMsgMaSubscribeMapper.xml          | 117 ++++++++++++++++++
 src/main/resources/mybatis-config.xml         |   1 +
 7 files changed, 237 insertions(+), 3 deletions(-)
 create mode 100644 src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java
 create mode 100644 src/main/java/com/fangxuele/tool/push/domain/TMsgMaSubscribe.java
 create mode 100644 src/main/resources/mapper/TMsgMaSubscribeMapper.xml

diff --git a/src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java b/src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java
new file mode 100644
index 00000000..be4768f1
--- /dev/null
+++ b/src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java
@@ -0,0 +1,17 @@
+package com.fangxuele.tool.push.dao;
+
+import com.fangxuele.tool.push.domain.TMsgMaSubscribe;
+
+public interface TMsgMaSubscribeMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(TMsgMaSubscribe record);
+
+    int insertSelective(TMsgMaSubscribe record);
+
+    TMsgMaSubscribe selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(TMsgMaSubscribe record);
+
+    int updateByPrimaryKey(TMsgMaSubscribe record);
+}
\ No newline at end of file
diff --git a/src/main/java/com/fangxuele/tool/push/domain/TMsgMaSubscribe.java b/src/main/java/com/fangxuele/tool/push/domain/TMsgMaSubscribe.java
new file mode 100644
index 00000000..2b8b8aff
--- /dev/null
+++ b/src/main/java/com/fangxuele/tool/push/domain/TMsgMaSubscribe.java
@@ -0,0 +1,77 @@
+package com.fangxuele.tool.push.domain;
+
+import java.io.Serializable;
+
+public class TMsgMaSubscribe implements Serializable {
+    private Integer id;
+
+    private Integer msgType;
+
+    private String msgName;
+
+    private String templateId;
+
+    private String page;
+
+    private String createTime;
+
+    private String modifiedTime;
+
+    private static final long serialVersionUID = 1L;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getMsgType() {
+        return msgType;
+    }
+
+    public void setMsgType(Integer msgType) {
+        this.msgType = msgType;
+    }
+
+    public String getMsgName() {
+        return msgName;
+    }
+
+    public void setMsgName(String msgName) {
+        this.msgName = msgName == null ? null : msgName.trim();
+    }
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId == null ? null : templateId.trim();
+    }
+
+    public String getPage() {
+        return page;
+    }
+
+    public void setPage(String page) {
+        this.page = page == null ? null : page.trim();
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime == null ? null : createTime.trim();
+    }
+
+    public String getModifiedTime() {
+        return modifiedTime;
+    }
+
+    public void setModifiedTime(String modifiedTime) {
+        this.modifiedTime = modifiedTime == null ? null : modifiedTime.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/fangxuele/tool/push/logic/MessageTypeEnum.java b/src/main/java/com/fangxuele/tool/push/logic/MessageTypeEnum.java
index 4e7121cc..0c244451 100644
--- a/src/main/java/com/fangxuele/tool/push/logic/MessageTypeEnum.java
+++ b/src/main/java/com/fangxuele/tool/push/logic/MessageTypeEnum.java
@@ -27,7 +27,8 @@ public enum MessageTypeEnum {
     DING(14, "钉钉"),
     BD_YUN(15, "百度云短信"),
     QI_NIU_YUN(16, "七牛云短信"),
-    WX_UNIFORM_MESSAGE(17, "小程序-统一服务消息");
+    WX_UNIFORM_MESSAGE(17, "小程序-统一服务消息"),
+    MA_SUBSCRIBE(18, "小程序-订阅消息");
 
     private int code;
 
@@ -49,6 +50,7 @@ public enum MessageTypeEnum {
     public static final int BD_YUN_CODE = 15;
     public static final int QI_NIU_YUN_CODE = 16;
     public static final int WX_UNIFORM_MESSAGE_CODE = 17;
+    public static final int MA_SUBSCRIBE_CODE = 18;
 
     MessageTypeEnum(int code, String name) {
         this.code = code;
@@ -106,6 +108,9 @@ public static String getName(int code) {
             case 17:
                 name = WX_UNIFORM_MESSAGE.name;
                 break;
+            case 18:
+                name = MA_SUBSCRIBE.name;
+                break;
             default:
                 name = "";
         }
diff --git a/src/main/resources/db_init.sql b/src/main/resources/db_init.sql
index f6c33879..35fd739e 100644
--- a/src/main/resources/db_init.sql
+++ b/src/main/resources/db_init.sql
@@ -274,4 +274,21 @@ create table if not exists t_msg_wx_uniform
 );
 
 create unique index if not exists t_msg_wx_uniform_msg_type_msg_name_uindex
-    on t_msg_wx_uniform (msg_type, msg_name);
\ No newline at end of file
+    on t_msg_wx_uniform (msg_type, msg_name);
+
+create table t_msg_ma_subscribe
+(
+    id            integer
+        constraint t_msg_ma_subscribe_pk
+            primary key autoincrement,
+    msg_type      integer,
+    msg_name      text,
+    template_id   text,
+    page          text,
+    create_time   datetime,
+    modified_time datetime
+);
+
+create unique index t_msg_ma_subscribe_msg_type_msg_name_uindex
+    on t_msg_ma_subscribe (msg_type, msg_name);
+
diff --git a/src/main/resources/generatorConfig.xml b/src/main/resources/generatorConfig.xml
index 1d192ce3..31178e72 100644
--- a/src/main/resources/generatorConfig.xml
+++ b/src/main/resources/generatorConfig.xml
@@ -45,7 +45,7 @@
 
         
+               tableName="t_msg_ma_subscribe" domainObjectName="TMsgMaSubscribe">
             
             
         
diff --git a/src/main/resources/mapper/TMsgMaSubscribeMapper.xml b/src/main/resources/mapper/TMsgMaSubscribeMapper.xml new file mode 100644 index 00000000..f42613bb --- /dev/null +++ b/src/main/resources/mapper/TMsgMaSubscribeMapper.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + id, msg_type, msg_name, template_id, page, create_time, modified_time + + + + delete from t_msg_ma_subscribe + where id = #{id,jdbcType=INTEGER} + + + insert into t_msg_ma_subscribe (id, msg_type, msg_name, + template_id, page, create_time, + modified_time) + values (#{id,jdbcType=INTEGER}, #{msgType,jdbcType=INTEGER}, #{msgName,jdbcType=VARCHAR}, + #{templateId,jdbcType=VARCHAR}, #{page,jdbcType=VARCHAR}, #{createTime,jdbcType=VARCHAR}, + #{modifiedTime,jdbcType=VARCHAR}) + + + insert into t_msg_ma_subscribe + + + id, + + + msg_type, + + + msg_name, + + + template_id, + + + page, + + + create_time, + + + modified_time, + + + + + #{id,jdbcType=INTEGER}, + + + #{msgType,jdbcType=INTEGER}, + + + #{msgName,jdbcType=VARCHAR}, + + + #{templateId,jdbcType=VARCHAR}, + + + #{page,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=VARCHAR}, + + + #{modifiedTime,jdbcType=VARCHAR}, + + + + + update t_msg_ma_subscribe + + + msg_type = #{msgType,jdbcType=INTEGER}, + + + msg_name = #{msgName,jdbcType=VARCHAR}, + + + template_id = #{templateId,jdbcType=VARCHAR}, + + + page = #{page,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=VARCHAR}, + + + modified_time = #{modifiedTime,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=INTEGER} + + + update t_msg_ma_subscribe + set msg_type = #{msgType,jdbcType=INTEGER}, + msg_name = #{msgName,jdbcType=VARCHAR}, + template_id = #{templateId,jdbcType=VARCHAR}, + page = #{page,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=VARCHAR}, + modified_time = #{modifiedTime,jdbcType=VARCHAR} + where id = #{id,jdbcType=INTEGER} + + \ No newline at end of file diff --git a/src/main/resources/mybatis-config.xml b/src/main/resources/mybatis-config.xml index 1da403ae..920ef379 100644 --- a/src/main/resources/mybatis-config.xml +++ b/src/main/resources/mybatis-config.xml @@ -30,5 +30,6 @@ + \ No newline at end of file From 93bf5bfb18be6ec0b8c27dcb5c0f0b5963169bc9 Mon Sep 17 00:00:00 2001 From: duoduo Date: Fri, 29 Nov 2019 15:21:15 +0800 Subject: [PATCH 5/8] =?UTF-8?q?feature:=E5=A2=9E=E5=8A=A0=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E8=AE=A2=E9=98=85=E6=B6=88=E6=81=AFForm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tool/push/dao/TMsgMaSubscribeMapper.java | 7 + .../push/ui/form/msg/MaSubscribeMsgForm.form | 158 ++++++++ .../push/ui/form/msg/MaSubscribeMsgForm.java | 347 ++++++++++++++++++ .../push/ui/form/msg/MaTemplateMsgForm.form | 14 +- .../push/ui/form/msg/MaTemplateMsgForm.java | 14 +- .../mapper/TMsgMaSubscribeMapper.xml | 243 ++++++------ 6 files changed, 656 insertions(+), 127 deletions(-) create mode 100644 src/main/java/com/fangxuele/tool/push/ui/form/msg/MaSubscribeMsgForm.form create mode 100644 src/main/java/com/fangxuele/tool/push/ui/form/msg/MaSubscribeMsgForm.java diff --git a/src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java b/src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java index be4768f1..54722f58 100644 --- a/src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java +++ b/src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java @@ -1,6 +1,9 @@ package com.fangxuele.tool.push.dao; import com.fangxuele.tool.push.domain.TMsgMaSubscribe; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface TMsgMaSubscribeMapper { int deleteByPrimaryKey(Integer id); @@ -14,4 +17,8 @@ public interface TMsgMaSubscribeMapper { int updateByPrimaryKeySelective(TMsgMaSubscribe record); int updateByPrimaryKey(TMsgMaSubscribe record); + + List selectByMsgTypeAndMsgName(@Param("msgType") int msgType, @Param("msgName") String msgName); + + int updateByMsgTypeAndMsgName(TMsgMaSubscribe tMsgMaSubscribe); } \ No newline at end of file diff --git a/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaSubscribeMsgForm.form b/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaSubscribeMsgForm.form new file mode 100644 index 00000000..add8fc07 --- /dev/null +++ b/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaSubscribeMsgForm.form @@ -0,0 +1,158 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaSubscribeMsgForm.java b/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaSubscribeMsgForm.java new file mode 100644 index 00000000..6a15572a --- /dev/null +++ b/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaSubscribeMsgForm.java @@ -0,0 +1,347 @@ +package com.fangxuele.tool.push.ui.form.msg; + +import com.fangxuele.tool.push.dao.TMsgMaSubscribeMapper; +import com.fangxuele.tool.push.dao.TTemplateDataMapper; +import com.fangxuele.tool.push.domain.TMsgMaSubscribe; +import com.fangxuele.tool.push.domain.TTemplateData; +import com.fangxuele.tool.push.logic.MessageTypeEnum; +import com.fangxuele.tool.push.ui.component.TableInCellButtonColumn; +import com.fangxuele.tool.push.ui.form.MainWindow; +import com.fangxuele.tool.push.ui.form.MessageEditForm; +import com.fangxuele.tool.push.util.MybatisUtil; +import com.fangxuele.tool.push.util.SqliteUtil; +import com.intellij.uiDesigner.core.GridConstraints; +import com.intellij.uiDesigner.core.GridLayoutManager; +import lombok.Getter; +import org.apache.commons.lang3.StringUtils; + +import javax.swing.*; +import javax.swing.border.TitledBorder; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableColumnModel; +import java.awt.*; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + *
+ * MaSubscribeMsgForm
+ * 
+ * + * @author Zhou Bo + * @since 2019/11/29. + */ +@Getter +public class MaSubscribeMsgForm implements IMsgForm { + private JPanel templateMsgPanel; + private JLabel templateIdLabel; + private JTextField msgTemplateIdTextField; + private JLabel templateUrlLabel; + private JTextField msgTemplateUrlTextField; + private JPanel templateMsgDataPanel; + private JLabel templateMsgNameLabel; + private JTextField templateDataNameTextField; + private JLabel templateMsgValueLabel; + private JTextField templateDataValueTextField; + private JLabel templateMsgColorLabel; + private JTextField templateDataColorTextField; + private JButton templateMsgDataAddButton; + private JTable templateMsgDataTable; + + private static MaSubscribeMsgForm maSubscribeMsgForm; + + private static TMsgMaSubscribeMapper msgMaSubscribeMapper = MybatisUtil.getSqlSession().getMapper(TMsgMaSubscribeMapper.class); + private static TTemplateDataMapper templateDataMapper = MybatisUtil.getSqlSession().getMapper(TTemplateDataMapper.class); + + public MaSubscribeMsgForm() { + // 模板数据-添加 按钮事件 + templateMsgDataAddButton.addActionListener(e -> { + String[] data = new String[3]; + data[0] = getInstance().getTemplateDataNameTextField().getText(); + data[1] = getInstance().getTemplateDataValueTextField().getText(); + data[2] = getInstance().getTemplateDataColorTextField().getText(); + + if (getInstance().getTemplateMsgDataTable().getModel().getRowCount() == 0) { + initTemplateDataTable(); + } + + DefaultTableModel tableModel = (DefaultTableModel) getInstance().getTemplateMsgDataTable() + .getModel(); + int rowCount = tableModel.getRowCount(); + + Set keySet = new HashSet<>(); + String keyData; + for (int i = 0; i < rowCount; i++) { + keyData = (String) tableModel.getValueAt(i, 0); + keySet.add(keyData); + } + + if (StringUtils.isEmpty(data[0]) || StringUtils.isEmpty(data[1])) { + JOptionPane.showMessageDialog(MessageEditForm.getInstance().getMsgEditorPanel(), "Name或value不能为空!", "提示", + JOptionPane.INFORMATION_MESSAGE); + } else if (keySet.contains(data[0])) { + JOptionPane.showMessageDialog(MessageEditForm.getInstance().getMsgEditorPanel(), "Name不能重复!", "提示", + JOptionPane.INFORMATION_MESSAGE); + } else { + if (StringUtils.isEmpty(data[2])) { + data[2] = "#000000"; + } else if (!data[2].startsWith("#")) { + data[2] = "#" + data[2]; + } + tableModel.addRow(data); + } + }); + } + + @Override + public void init(String msgName) { + clearAllField(); + List tMsgMaSubscribeList = msgMaSubscribeMapper.selectByMsgTypeAndMsgName(MessageTypeEnum.MA_SUBSCRIBE_CODE, msgName); + Integer msgId = 0; + if (tMsgMaSubscribeList.size() > 0) { + TMsgMaSubscribe tMsgMaSubscribe = tMsgMaSubscribeList.get(0); + msgId = tMsgMaSubscribe.getId(); + getInstance().getMsgTemplateIdTextField().setText(tMsgMaSubscribe.getTemplateId()); + getInstance().getMsgTemplateUrlTextField().setText(tMsgMaSubscribe.getPage()); + } + + initTemplateDataTable(); + // 模板消息Data表 + List templateDataList = templateDataMapper.selectByMsgTypeAndMsgId(MessageTypeEnum.MA_SUBSCRIBE_CODE, msgId); + String[] headerNames = {"Name", "Value", "Color", "操作"}; + Object[][] cellData = new String[templateDataList.size()][headerNames.length]; + for (int i = 0; i < templateDataList.size(); i++) { + TTemplateData tTemplateData = templateDataList.get(i); + cellData[i][0] = tTemplateData.getName(); + cellData[i][1] = tTemplateData.getValue(); + cellData[i][2] = tTemplateData.getColor(); + } + DefaultTableModel model = new DefaultTableModel(cellData, headerNames); + getInstance().getTemplateMsgDataTable().setModel(model); + TableColumnModel tableColumnModel = getInstance().getTemplateMsgDataTable().getColumnModel(); + tableColumnModel.getColumn(headerNames.length - 1). + setCellRenderer(new TableInCellButtonColumn(getInstance().getTemplateMsgDataTable(), headerNames.length - 1)); + tableColumnModel.getColumn(headerNames.length - 1). + setCellEditor(new TableInCellButtonColumn(getInstance().getTemplateMsgDataTable(), headerNames.length - 1)); + + // 设置列宽 + tableColumnModel.getColumn(3).setPreferredWidth(46); + tableColumnModel.getColumn(3).setMaxWidth(46); + } + + @Override + public void save(String msgName) { + int msgId = 0; + boolean existSameMsg = false; + + List tMsgMaSubscribeList = msgMaSubscribeMapper.selectByMsgTypeAndMsgName(MessageTypeEnum.MA_SUBSCRIBE_CODE, msgName); + if (tMsgMaSubscribeList.size() > 0) { + existSameMsg = true; + msgId = tMsgMaSubscribeList.get(0).getId(); + } + + int isCover = JOptionPane.NO_OPTION; + if (existSameMsg) { + // 如果存在,是否覆盖 + isCover = JOptionPane.showConfirmDialog(MainWindow.getInstance().getMessagePanel(), "已经存在同名的历史消息,\n是否覆盖?", "确认", + JOptionPane.YES_NO_OPTION); + } + + if (!existSameMsg || isCover == JOptionPane.YES_OPTION) { + String templateId = getInstance().getMsgTemplateIdTextField().getText(); + String templateUrl = getInstance().getMsgTemplateUrlTextField().getText(); + + String now = SqliteUtil.nowDateForSqlite(); + + TMsgMaSubscribe tMsgMaSubscribe = new TMsgMaSubscribe(); + tMsgMaSubscribe.setMsgType(MessageTypeEnum.MA_SUBSCRIBE_CODE); + tMsgMaSubscribe.setMsgName(msgName); + tMsgMaSubscribe.setTemplateId(templateId); + tMsgMaSubscribe.setPage(templateUrl); + tMsgMaSubscribe.setCreateTime(now); + tMsgMaSubscribe.setModifiedTime(now); + + if (existSameMsg) { + msgMaSubscribeMapper.updateByMsgTypeAndMsgName(tMsgMaSubscribe); + } else { + msgMaSubscribeMapper.insertSelective(tMsgMaSubscribe); + msgId = tMsgMaSubscribe.getId(); + } + + // 保存模板数据 + + // 如果是覆盖保存,则先清空之前的模板数据 + if (existSameMsg) { + templateDataMapper.deleteByMsgTypeAndMsgId(MessageTypeEnum.MA_SUBSCRIBE_CODE, msgId); + } + + // 如果table为空,则初始化 + if (getInstance().getTemplateMsgDataTable().getModel().getRowCount() == 0) { + initTemplateDataTable(); + } + + // 逐行读取 + DefaultTableModel tableModel = (DefaultTableModel) getInstance().getTemplateMsgDataTable() + .getModel(); + int rowCount = tableModel.getRowCount(); + for (int i = 0; i < rowCount; i++) { + String name = (String) tableModel.getValueAt(i, 0); + String value = (String) tableModel.getValueAt(i, 1); + String color = ((String) tableModel.getValueAt(i, 2)).trim(); + + TTemplateData tTemplateData = new TTemplateData(); + tTemplateData.setMsgType(MessageTypeEnum.MA_SUBSCRIBE_CODE); + tTemplateData.setMsgId(msgId); + tTemplateData.setName(name); + tTemplateData.setValue(value); + tTemplateData.setColor(color); + tTemplateData.setCreateTime(now); + tTemplateData.setModifiedTime(now); + + templateDataMapper.insert(tTemplateData); + } + + JOptionPane.showMessageDialog(MainWindow.getInstance().getMessagePanel(), "保存成功!", "成功", + JOptionPane.INFORMATION_MESSAGE); + } + } + + public static MaSubscribeMsgForm getInstance() { + if (maSubscribeMsgForm == null) { + maSubscribeMsgForm = new MaSubscribeMsgForm(); + } + return maSubscribeMsgForm; + } + + /** + * 初始化模板消息数据table + */ + public static void initTemplateDataTable() { + JTable msgDataTable = getInstance().getTemplateMsgDataTable(); + String[] headerNames = {"Name", "Value", "Color", "操作"}; + DefaultTableModel model = new DefaultTableModel(null, headerNames); + msgDataTable.setModel(model); + msgDataTable.updateUI(); + DefaultTableCellRenderer hr = (DefaultTableCellRenderer) msgDataTable.getTableHeader().getDefaultRenderer(); + // 表头列名居左 + hr.setHorizontalAlignment(DefaultTableCellRenderer.LEFT); + + TableColumnModel tableColumnModel = msgDataTable.getColumnModel(); + tableColumnModel.getColumn(headerNames.length - 1). + setCellRenderer(new TableInCellButtonColumn(msgDataTable, headerNames.length - 1)); + tableColumnModel.getColumn(headerNames.length - 1). + setCellEditor(new TableInCellButtonColumn(msgDataTable, headerNames.length - 1)); + + // 设置列宽 + tableColumnModel.getColumn(3).setPreferredWidth(46); + tableColumnModel.getColumn(3).setMaxWidth(46); + } + + /** + * 清空所有界面字段 + */ + public static void clearAllField() { + getInstance().getMsgTemplateIdTextField().setText(""); + getInstance().getMsgTemplateUrlTextField().setText(""); + getInstance().getTemplateDataNameTextField().setText(""); + getInstance().getTemplateDataValueTextField().setText(""); + getInstance().getTemplateDataColorTextField().setText(""); + initTemplateDataTable(); + } + + { +// GUI initializer generated by IntelliJ IDEA GUI Designer +// >>> IMPORTANT!! <<< +// DO NOT EDIT OR ADD ANY CODE HERE! + $$$setupUI$$$(); + } + + /** + * Method generated by IntelliJ IDEA GUI Designer + * >>> IMPORTANT!! <<< + * DO NOT edit this method OR call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); + templateMsgPanel = new JPanel(); + templateMsgPanel.setLayout(new GridLayoutManager(2, 1, new Insets(10, 15, 0, 0), -1, -1)); + panel1.add(templateMsgPanel, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + templateMsgPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), "小程序-订阅消息编辑", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, this.$$$getFont$$$(null, Font.BOLD, -1, templateMsgPanel.getFont()))); + templateMsgDataPanel = new JPanel(); + templateMsgDataPanel.setLayout(new GridLayoutManager(3, 4, new Insets(10, 0, 0, 0), -1, -1)); + templateMsgPanel.add(templateMsgDataPanel, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + templateMsgDataPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "模板变量(可使用\"$ENTER$\"作为换行符)", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, this.$$$getFont$$$(null, Font.BOLD, -1, templateMsgDataPanel.getFont()))); + templateDataNameTextField = new JTextField(); + templateDataNameTextField.setToolTipText("当消息类型是模板消息时的示例:first或者keyword1或者remark之类的"); + templateMsgDataPanel.add(templateDataNameTextField, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + templateDataValueTextField = new JTextField(); + templateMsgDataPanel.add(templateDataValueTextField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + templateDataColorTextField = new JTextField(); + templateDataColorTextField.setToolTipText("示例值:FF0000"); + templateMsgDataPanel.add(templateDataColorTextField, new GridConstraints(1, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + templateMsgDataAddButton = new JButton(); + templateMsgDataAddButton.setIcon(new ImageIcon(getClass().getResource("/icon/add.png"))); + templateMsgDataAddButton.setText(""); + templateMsgDataPanel.add(templateMsgDataAddButton, new GridConstraints(1, 3, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + templateMsgDataTable = new JTable(); + templateMsgDataTable.setAutoCreateColumnsFromModel(true); + templateMsgDataTable.setAutoCreateRowSorter(true); + templateMsgDataTable.setGridColor(new Color(-12236470)); + templateMsgDataTable.setRowHeight(36); + templateMsgDataPanel.add(templateMsgDataTable, new GridConstraints(2, 0, 1, 4, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + templateMsgNameLabel = new JLabel(); + templateMsgNameLabel.setText("name"); + templateMsgNameLabel.setToolTipText("当消息类型是模板消息时的示例:first或者keyword1或者remark之类的"); + templateMsgDataPanel.add(templateMsgNameLabel, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + templateMsgValueLabel = new JLabel(); + templateMsgValueLabel.setText("value"); + templateMsgDataPanel.add(templateMsgValueLabel, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + templateMsgColorLabel = new JLabel(); + templateMsgColorLabel.setText("color"); + templateMsgColorLabel.setToolTipText("示例值:FF0000"); + templateMsgDataPanel.add(templateMsgColorLabel, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JPanel panel2 = new JPanel(); + panel2.setLayout(new GridLayoutManager(2, 2, new Insets(0, 0, 5, 0), -1, -1)); + templateMsgPanel.add(panel2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + templateIdLabel = new JLabel(); + templateIdLabel.setText("模板ID *"); + panel2.add(templateIdLabel, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTemplateIdTextField = new JTextField(); + panel2.add(msgTemplateIdTextField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + templateUrlLabel = new JLabel(); + templateUrlLabel.setText("跳转页面"); + panel2.add(templateUrlLabel, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTemplateUrlTextField = new JTextField(); + panel2.add(msgTemplateUrlTextField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + templateMsgNameLabel.setLabelFor(templateDataNameTextField); + templateMsgValueLabel.setLabelFor(templateDataValueTextField); + templateMsgColorLabel.setLabelFor(templateDataColorTextField); + templateIdLabel.setLabelFor(msgTemplateIdTextField); + templateUrlLabel.setLabelFor(msgTemplateUrlTextField); + } + + /** + * @noinspection ALL + */ + private Font $$$getFont$$$(String fontName, int style, int size, Font currentFont) { + if (currentFont == null) return null; + String resultName; + if (fontName == null) { + resultName = currentFont.getName(); + } else { + Font testFont = new Font(fontName, Font.PLAIN, 10); + if (testFont.canDisplay('a') && testFont.canDisplay('1')) { + resultName = fontName; + } else { + resultName = currentFont.getName(); + } + } + return new Font(resultName, style >= 0 ? style : currentFont.getStyle(), size >= 0 ? size : currentFont.getSize()); + } + +} diff --git a/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaTemplateMsgForm.form b/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaTemplateMsgForm.form index 08b6b21a..31f59c5d 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaTemplateMsgForm.form +++ b/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaTemplateMsgForm.form @@ -8,7 +8,7 @@ - + @@ -21,7 +21,7 @@ - + @@ -107,10 +107,10 @@ - + - + @@ -126,7 +126,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -160,7 +160,7 @@ - + diff --git a/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaTemplateMsgForm.java b/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaTemplateMsgForm.java index e7fd039c..fb141794 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaTemplateMsgForm.java +++ b/src/main/java/com/fangxuele/tool/push/ui/form/msg/MaTemplateMsgForm.java @@ -275,12 +275,12 @@ public static void clearAllField() { final JPanel panel1 = new JPanel(); panel1.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); templateMsgPanel = new JPanel(); - templateMsgPanel.setLayout(new GridLayoutManager(4, 3, new Insets(10, 15, 0, 0), -1, -1)); + templateMsgPanel.setLayout(new GridLayoutManager(2, 1, new Insets(10, 15, 0, 0), -1, -1)); panel1.add(templateMsgPanel, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); templateMsgPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), "小程序-模板消息编辑", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, this.$$$getFont$$$(null, Font.BOLD, -1, templateMsgPanel.getFont()))); templateMsgDataPanel = new JPanel(); templateMsgDataPanel.setLayout(new GridLayoutManager(3, 4, new Insets(10, 0, 0, 0), -1, -1)); - templateMsgPanel.add(templateMsgDataPanel, new GridConstraints(3, 0, 1, 3, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + templateMsgPanel.add(templateMsgDataPanel, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); templateMsgDataPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "模板变量(可使用\"$ENTER$\"作为换行符)", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, this.$$$getFont$$$(null, Font.BOLD, -1, templateMsgDataPanel.getFont()))); templateDataNameTextField = new JTextField(); templateDataNameTextField.setToolTipText("当消息类型是模板消息时的示例:first或者keyword1或者remark之类的"); @@ -312,23 +312,23 @@ public static void clearAllField() { templateMsgColorLabel.setToolTipText("示例值:FF0000"); templateMsgDataPanel.add(templateMsgColorLabel, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel2 = new JPanel(); - panel2.setLayout(new GridLayoutManager(3, 3, new Insets(0, 0, 5, 0), -1, -1)); - templateMsgPanel.add(panel2, new GridConstraints(0, 0, 3, 3, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel2.setLayout(new GridLayoutManager(3, 2, new Insets(0, 0, 5, 0), -1, -1)); + templateMsgPanel.add(panel2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); templateIdLabel = new JLabel(); templateIdLabel.setText("模板ID *"); panel2.add(templateIdLabel, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); msgTemplateIdTextField = new JTextField(); - panel2.add(msgTemplateIdTextField, new GridConstraints(0, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + panel2.add(msgTemplateIdTextField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); templateUrlLabel = new JLabel(); templateUrlLabel.setText("跳转URL"); panel2.add(templateUrlLabel, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); msgTemplateUrlTextField = new JTextField(); - panel2.add(msgTemplateUrlTextField, new GridConstraints(1, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + panel2.add(msgTemplateUrlTextField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); templateKeyWordLabel = new JLabel(); templateKeyWordLabel.setText("放大关键词"); panel2.add(templateKeyWordLabel, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); msgTemplateKeyWordTextField = new JTextField(); - panel2.add(msgTemplateKeyWordTextField, new GridConstraints(2, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + panel2.add(msgTemplateKeyWordTextField, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); templateMsgNameLabel.setLabelFor(templateDataNameTextField); templateMsgValueLabel.setLabelFor(templateDataValueTextField); templateMsgColorLabel.setLabelFor(templateDataColorTextField); diff --git a/src/main/resources/mapper/TMsgMaSubscribeMapper.xml b/src/main/resources/mapper/TMsgMaSubscribeMapper.xml index f42613bb..7edb3f0a 100644 --- a/src/main/resources/mapper/TMsgMaSubscribeMapper.xml +++ b/src/main/resources/mapper/TMsgMaSubscribeMapper.xml @@ -1,117 +1,134 @@ - - - - - - - - - - - id, msg_type, msg_name, template_id, page, create_time, modified_time - - - - delete from t_msg_ma_subscribe - where id = #{id,jdbcType=INTEGER} - - - insert into t_msg_ma_subscribe (id, msg_type, msg_name, - template_id, page, create_time, - modified_time) - values (#{id,jdbcType=INTEGER}, #{msgType,jdbcType=INTEGER}, #{msgName,jdbcType=VARCHAR}, - #{templateId,jdbcType=VARCHAR}, #{page,jdbcType=VARCHAR}, #{createTime,jdbcType=VARCHAR}, - #{modifiedTime,jdbcType=VARCHAR}) - - - insert into t_msg_ma_subscribe - - - id, - - - msg_type, - - - msg_name, - - - template_id, - - - page, - - - create_time, - - - modified_time, - - - - - #{id,jdbcType=INTEGER}, - - - #{msgType,jdbcType=INTEGER}, - - - #{msgName,jdbcType=VARCHAR}, - - - #{templateId,jdbcType=VARCHAR}, - - - #{page,jdbcType=VARCHAR}, - - - #{createTime,jdbcType=VARCHAR}, - - - #{modifiedTime,jdbcType=VARCHAR}, - - - - - update t_msg_ma_subscribe - - - msg_type = #{msgType,jdbcType=INTEGER}, - - - msg_name = #{msgName,jdbcType=VARCHAR}, - - - template_id = #{templateId,jdbcType=VARCHAR}, - - - page = #{page,jdbcType=VARCHAR}, - - - create_time = #{createTime,jdbcType=VARCHAR}, - - - modified_time = #{modifiedTime,jdbcType=VARCHAR}, - - - where id = #{id,jdbcType=INTEGER} - - - update t_msg_ma_subscribe - set msg_type = #{msgType,jdbcType=INTEGER}, - msg_name = #{msgName,jdbcType=VARCHAR}, - template_id = #{templateId,jdbcType=VARCHAR}, - page = #{page,jdbcType=VARCHAR}, - create_time = #{createTime,jdbcType=VARCHAR}, - modified_time = #{modifiedTime,jdbcType=VARCHAR} - where id = #{id,jdbcType=INTEGER} - + + + + + + + + + + + id, msg_type, msg_name, template_id, page, create_time, modified_time + + + + + delete + from t_msg_ma_subscribe + where id = #{id,jdbcType=INTEGER} + + + insert into t_msg_ma_subscribe (id, msg_type, msg_name, + template_id, page, create_time, + modified_time) + values (#{id,jdbcType=INTEGER}, #{msgType,jdbcType=INTEGER}, #{msgName,jdbcType=VARCHAR}, + #{templateId,jdbcType=VARCHAR}, #{page,jdbcType=VARCHAR}, #{createTime,jdbcType=VARCHAR}, + #{modifiedTime,jdbcType=VARCHAR}) + + + insert into t_msg_ma_subscribe + + + id, + + + msg_type, + + + msg_name, + + + template_id, + + + page, + + + create_time, + + + modified_time, + + + + + #{id,jdbcType=INTEGER}, + + + #{msgType,jdbcType=INTEGER}, + + + #{msgName,jdbcType=VARCHAR}, + + + #{templateId,jdbcType=VARCHAR}, + + + #{page,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=VARCHAR}, + + + #{modifiedTime,jdbcType=VARCHAR}, + + + + + update t_msg_ma_subscribe + + + msg_type = #{msgType,jdbcType=INTEGER}, + + + msg_name = #{msgName,jdbcType=VARCHAR}, + + + template_id = #{templateId,jdbcType=VARCHAR}, + + + page = #{page,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=VARCHAR}, + + + modified_time = #{modifiedTime,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=INTEGER} + + + update t_msg_ma_subscribe + set msg_type = #{msgType,jdbcType=INTEGER}, + msg_name = #{msgName,jdbcType=VARCHAR}, + template_id = #{templateId,jdbcType=VARCHAR}, + page = #{page,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=VARCHAR}, + modified_time = #{modifiedTime,jdbcType=VARCHAR} + where id = #{id,jdbcType=INTEGER} + + + update t_msg_ma_subscribe + set template_id = #{templateId,jdbcType=VARCHAR}, + page = #{page,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=VARCHAR}, + modified_time = #{modifiedTime,jdbcType=VARCHAR} + where msg_type = #{msgType,jdbcType=INTEGER} + and msg_name = #{msgName,jdbcType=VARCHAR} + \ No newline at end of file From 4963e9d67d4cb8eb11690da1e1dbffaf5415e263 Mon Sep 17 00:00:00 2001 From: duoduo Date: Fri, 29 Nov 2019 15:53:54 +0800 Subject: [PATCH 6/8] =?UTF-8?q?feature:=E5=A2=9E=E5=8A=A0=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E8=AE=A2=E9=98=85=E6=B6=88=E6=81=AF=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tool/push/dao/TMsgMaSubscribeMapper.java | 4 ++ .../tool/push/logic/PushControl.java | 1 + .../tool/push/ui/form/MessageEditForm.java | 3 ++ .../tool/push/ui/form/MessageManageForm.java | 10 ++++ .../tool/push/ui/form/MessageTypeForm.form | 48 ++++++++++-------- .../tool/push/ui/form/MessageTypeForm.java | 49 +++++++++++-------- .../tool/push/ui/form/ScheduleForm.java | 2 +- .../tool/push/ui/form/msg/MsgFormFactory.java | 3 ++ .../tool/push/ui/listener/MemberListener.java | 2 +- .../push/ui/listener/MessageTypeListener.java | 4 ++ .../push/ui/listener/MsgEditListener.java | 3 +- .../push/ui/listener/MsgManageListener.java | 4 ++ .../mapper/TMsgMaSubscribeMapper.xml | 15 +++++- 13 files changed, 103 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java b/src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java index 54722f58..ee3a8d81 100644 --- a/src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java +++ b/src/main/java/com/fangxuele/tool/push/dao/TMsgMaSubscribeMapper.java @@ -21,4 +21,8 @@ public interface TMsgMaSubscribeMapper { List selectByMsgTypeAndMsgName(@Param("msgType") int msgType, @Param("msgName") String msgName); int updateByMsgTypeAndMsgName(TMsgMaSubscribe tMsgMaSubscribe); + + List selectByMsgType(int msgType); + + int deleteByMsgTypeAndName(@Param("msgType") int msgType, @Param("msgName") String msgName); } \ No newline at end of file diff --git a/src/main/java/com/fangxuele/tool/push/logic/PushControl.java b/src/main/java/com/fangxuele/tool/push/logic/PushControl.java index 71612b50..063716c0 100644 --- a/src/main/java/com/fangxuele/tool/push/logic/PushControl.java +++ b/src/main/java/com/fangxuele/tool/push/logic/PushControl.java @@ -175,6 +175,7 @@ public static boolean configCheck() { break; } case MessageTypeEnum.MA_TEMPLATE_CODE: + case MessageTypeEnum.MA_SUBSCRIBE_CODE: if (StringUtils.isEmpty(App.config.getMiniAppAppId()) || StringUtils.isEmpty(App.config.getMiniAppAppSecret())) { JOptionPane.showMessageDialog(settingForm.getSettingPanel(), "请先在设置中填写并保存小程序相关配置!", "提示", JOptionPane.INFORMATION_MESSAGE); diff --git a/src/main/java/com/fangxuele/tool/push/ui/form/MessageEditForm.java b/src/main/java/com/fangxuele/tool/push/ui/form/MessageEditForm.java index 17a5ff02..eee6a08c 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/form/MessageEditForm.java +++ b/src/main/java/com/fangxuele/tool/push/ui/form/MessageEditForm.java @@ -88,6 +88,9 @@ public static void switchMsgType(int msgType) { case MessageTypeEnum.MA_TEMPLATE_CODE: messageEditForm.getMsgEditorPanel().add(MaTemplateMsgForm.getInstance().getTemplateMsgPanel(), gridConstraintsRow0); break; + case MessageTypeEnum.MA_SUBSCRIBE_CODE: + messageEditForm.getMsgEditorPanel().add(MaSubscribeMsgForm.getInstance().getTemplateMsgPanel(), gridConstraintsRow0); + break; case MessageTypeEnum.KEFU_CODE: messageEditForm.getMsgEditorPanel().add(KefuMsgForm.getInstance().getKefuMsgPanel(), gridConstraintsRow0); break; diff --git a/src/main/java/com/fangxuele/tool/push/ui/form/MessageManageForm.java b/src/main/java/com/fangxuele/tool/push/ui/form/MessageManageForm.java index 4643c31e..4ff95168 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/form/MessageManageForm.java +++ b/src/main/java/com/fangxuele/tool/push/ui/form/MessageManageForm.java @@ -5,6 +5,7 @@ import com.fangxuele.tool.push.dao.TMsgHttpMapper; import com.fangxuele.tool.push.dao.TMsgKefuMapper; import com.fangxuele.tool.push.dao.TMsgKefuPriorityMapper; +import com.fangxuele.tool.push.dao.TMsgMaSubscribeMapper; import com.fangxuele.tool.push.dao.TMsgMaTemplateMapper; import com.fangxuele.tool.push.dao.TMsgMailMapper; import com.fangxuele.tool.push.dao.TMsgMpTemplateMapper; @@ -15,6 +16,7 @@ import com.fangxuele.tool.push.domain.TMsgHttp; import com.fangxuele.tool.push.domain.TMsgKefu; import com.fangxuele.tool.push.domain.TMsgKefuPriority; +import com.fangxuele.tool.push.domain.TMsgMaSubscribe; import com.fangxuele.tool.push.domain.TMsgMaTemplate; import com.fangxuele.tool.push.domain.TMsgMail; import com.fangxuele.tool.push.domain.TMsgMpTemplate; @@ -56,6 +58,7 @@ public class MessageManageForm { private static TMsgKefuPriorityMapper msgKefuPriorityMapper = MybatisUtil.getSqlSession().getMapper(TMsgKefuPriorityMapper.class); private static TMsgWxUniformMapper wxUniformMapper = MybatisUtil.getSqlSession().getMapper(TMsgWxUniformMapper.class); private static TMsgMaTemplateMapper msgMaTemplateMapper = MybatisUtil.getSqlSession().getMapper(TMsgMaTemplateMapper.class); + private static TMsgMaSubscribeMapper msgMaSubscribeMapper = MybatisUtil.getSqlSession().getMapper(TMsgMaSubscribeMapper.class); private static TMsgMpTemplateMapper msgMpTemplateMapper = MybatisUtil.getSqlSession().getMapper(TMsgMpTemplateMapper.class); private static TMsgSmsMapper msgSmsMapper = MybatisUtil.getSqlSession().getMapper(TMsgSmsMapper.class); private static TMsgMailMapper msgMailMapper = MybatisUtil.getSqlSession().getMapper(TMsgMailMapper.class); @@ -117,6 +120,13 @@ public static void init() { data[0] = tMsgMaTemplate.getMsgName(); model.addRow(data); } + } else if (msgType == MessageTypeEnum.MA_SUBSCRIBE_CODE) { + List tMsgMaSubscribeList = msgMaSubscribeMapper.selectByMsgType(msgType); + for (TMsgMaSubscribe tMsgMaSubscribe : tMsgMaSubscribeList) { + data = new Object[1]; + data[0] = tMsgMaSubscribe.getMsgName(); + model.addRow(data); + } } else if (msgType == MessageTypeEnum.MP_TEMPLATE_CODE) { List tMsgMpTemplateList = msgMpTemplateMapper.selectByMsgType(msgType); for (TMsgMpTemplate tMsgMpTemplate : tMsgMpTemplateList) { diff --git a/src/main/java/com/fangxuele/tool/push/ui/form/MessageTypeForm.form b/src/main/java/com/fangxuele/tool/push/ui/form/MessageTypeForm.form index a6aa5ade..8a629afe 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/form/MessageTypeForm.form +++ b/src/main/java/com/fangxuele/tool/push/ui/form/MessageTypeForm.form @@ -19,7 +19,7 @@ - + @@ -44,17 +44,25 @@ - + + + + + + + + + - + @@ -63,7 +71,7 @@ - + @@ -71,7 +79,7 @@ - + @@ -79,7 +87,7 @@ - + @@ -87,7 +95,7 @@ - + @@ -96,7 +104,7 @@ - + @@ -105,7 +113,7 @@ - + @@ -114,7 +122,7 @@ - + @@ -123,7 +131,7 @@ - + @@ -132,7 +140,7 @@ - + @@ -141,7 +149,7 @@ - + @@ -150,7 +158,7 @@ - + @@ -173,7 +181,7 @@ - + @@ -182,7 +190,7 @@ - + @@ -191,7 +199,7 @@ - + @@ -200,7 +208,7 @@ - + @@ -209,7 +217,7 @@ - + @@ -218,7 +226,7 @@ - + diff --git a/src/main/java/com/fangxuele/tool/push/ui/form/MessageTypeForm.java b/src/main/java/com/fangxuele/tool/push/ui/form/MessageTypeForm.java index efa6dc3d..e8265a35 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/form/MessageTypeForm.java +++ b/src/main/java/com/fangxuele/tool/push/ui/form/MessageTypeForm.java @@ -45,6 +45,7 @@ public class MessageTypeForm { private JRadioButton qiniuRadioButton; private JRadioButton bdYunRadioButton; private JRadioButton wxUniformMessageRadioButton; + private JRadioButton maSubscribeRadioButton; private static MessageTypeForm messageTypeForm; @@ -77,6 +78,9 @@ public static void init() { case MessageTypeEnum.MA_TEMPLATE_CODE: messageTypeForm.getMaTemplateRadioButton().setSelected(true); break; + case MessageTypeEnum.MA_SUBSCRIBE_CODE: + messageTypeForm.getMaSubscribeRadioButton().setSelected(true); + break; case MessageTypeEnum.KEFU_CODE: messageTypeForm.getKefuRadioButton().setSelected(true); break; @@ -153,7 +157,7 @@ private static void initMemberFormLayOut(int msgType) { MemberForm.getInstance().getMemberTabCenterPanel().setVisible(true); if (msgType == MessageTypeEnum.MP_TEMPLATE_CODE || msgType == MessageTypeEnum.MA_TEMPLATE_CODE || msgType == MessageTypeEnum.KEFU_CODE || msgType == MessageTypeEnum.KEFU_PRIORITY_CODE - || msgType == MessageTypeEnum.WX_UNIFORM_MESSAGE_CODE) { + || msgType == MessageTypeEnum.WX_UNIFORM_MESSAGE_CODE || msgType == MessageTypeEnum.MA_SUBSCRIBE_CODE) { MemberForm.getInstance().getImportFromWeixinPanel().setVisible(true); MemberForm.getInstance().getImportOptionPanel().setVisible(true); } @@ -210,7 +214,7 @@ public static void clearAllSelected() { messageTypeScrollPane.setAutoscrolls(true); messageTypePanel.add(messageTypeScrollPane, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); msgTypeListPanel = new JPanel(); - msgTypeListPanel.setLayout(new GridLayoutManager(21, 3, new Insets(20, 20, 0, 0), -1, -1)); + msgTypeListPanel.setLayout(new GridLayoutManager(22, 3, new Insets(20, 20, 0, 0), -1, -1)); msgTypeListPanel.setAutoscrolls(true); messageTypeScrollPane.setViewportView(msgTypeListPanel); mpTemplateRadioButton = new JRadioButton(); @@ -220,54 +224,57 @@ public static void clearAllSelected() { maTemplateRadioButton = new JRadioButton(); maTemplateRadioButton.setText("小程序-模板消息"); msgTypeListPanel.add(maTemplateRadioButton, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + maSubscribeRadioButton = new JRadioButton(); + maSubscribeRadioButton.setText("小程序-订阅消息"); + msgTypeListPanel.add(maSubscribeRadioButton, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); kefuRadioButton = new JRadioButton(); kefuRadioButton.setText("公众号-客服消息"); - msgTypeListPanel.add(kefuRadioButton, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(kefuRadioButton, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); kefuPriorityRadioButton = new JRadioButton(); kefuPriorityRadioButton.setText("公众号-客服消息优先"); kefuPriorityRadioButton.setToolTipText("优先尝试发送客服消息,如果失败则发送模板消息"); - msgTypeListPanel.add(kefuPriorityRadioButton, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(kefuPriorityRadioButton, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); aliYunRadioButton = new JRadioButton(); aliYunRadioButton.setText("阿里云短信"); - msgTypeListPanel.add(aliYunRadioButton, new GridConstraints(8, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(aliYunRadioButton, new GridConstraints(9, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); txYunRadioButton = new JRadioButton(); txYunRadioButton.setText("腾讯云短信"); - msgTypeListPanel.add(txYunRadioButton, new GridConstraints(9, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(txYunRadioButton, new GridConstraints(10, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); yunPianRadioButton = new JRadioButton(); yunPianRadioButton.setText("云片网短信"); - msgTypeListPanel.add(yunPianRadioButton, new GridConstraints(12, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(yunPianRadioButton, new GridConstraints(13, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 网易云信短信RadioButton = new JRadioButton(); 网易云信短信RadioButton.setEnabled(false); 网易云信短信RadioButton.setText("网易云信短信"); - msgTypeListPanel.add(网易云信短信RadioButton, new GridConstraints(16, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(网易云信短信RadioButton, new GridConstraints(17, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 榛子云短信RadioButton = new JRadioButton(); 榛子云短信RadioButton.setEnabled(false); 榛子云短信RadioButton.setText("榛子云短信"); - msgTypeListPanel.add(榛子云短信RadioButton, new GridConstraints(17, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(榛子云短信RadioButton, new GridConstraints(18, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); luosimao短信RadioButton = new JRadioButton(); luosimao短信RadioButton.setEnabled(false); luosimao短信RadioButton.setText("Luosimao短信"); - msgTypeListPanel.add(luosimao短信RadioButton, new GridConstraints(18, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(luosimao短信RadioButton, new GridConstraints(19, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 极光短信RadioButton = new JRadioButton(); 极光短信RadioButton.setEnabled(false); 极光短信RadioButton.setText("极光短信"); - msgTypeListPanel.add(极光短信RadioButton, new GridConstraints(19, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(极光短信RadioButton, new GridConstraints(20, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 极光推送RadioButton = new JRadioButton(); 极光推送RadioButton.setEnabled(false); 极光推送RadioButton.setText("极光推送"); - msgTypeListPanel.add(极光推送RadioButton, new GridConstraints(20, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(极光推送RadioButton, new GridConstraints(21, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); kefuPriorityTipsLabel = new JLabel(); kefuPriorityTipsLabel.setIcon(new ImageIcon(getClass().getResource("/icon/helpButton.png"))); kefuPriorityTipsLabel.setText(""); - msgTypeListPanel.add(kefuPriorityTipsLabel, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(kefuPriorityTipsLabel, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); eMailRadioButton = new JRadioButton(); eMailRadioButton.setEnabled(true); eMailRadioButton.setText("E-Mail(BETA)"); - msgTypeListPanel.add(eMailRadioButton, new GridConstraints(15, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(eMailRadioButton, new GridConstraints(16, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); wxCpRadioButton = new JRadioButton(); wxCpRadioButton.setEnabled(true); wxCpRadioButton.setText("企业号/企业微信"); - msgTypeListPanel.add(wxCpRadioButton, new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(wxCpRadioButton, new GridConstraints(7, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); httpRadioButton = new JRadioButton(); httpRadioButton.setEnabled(true); httpRadioButton.setText("HTTP请求"); @@ -277,26 +284,26 @@ public static void clearAllSelected() { dingRadioButton = new JRadioButton(); dingRadioButton.setEnabled(true); dingRadioButton.setText("钉钉"); - msgTypeListPanel.add(dingRadioButton, new GridConstraints(7, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(dingRadioButton, new GridConstraints(8, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); hwYunRadioButton = new JRadioButton(); hwYunRadioButton.setEnabled(true); hwYunRadioButton.setText("华为云短信(BETA)"); - msgTypeListPanel.add(hwYunRadioButton, new GridConstraints(10, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(hwYunRadioButton, new GridConstraints(11, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); bdYunRadioButton = new JRadioButton(); bdYunRadioButton.setEnabled(true); bdYunRadioButton.setText("百度云短信(BETA)"); - msgTypeListPanel.add(bdYunRadioButton, new GridConstraints(11, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(bdYunRadioButton, new GridConstraints(12, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); upYunRadioButton = new JRadioButton(); upYunRadioButton.setEnabled(true); upYunRadioButton.setText("又拍云短信(BETA)"); - msgTypeListPanel.add(upYunRadioButton, new GridConstraints(13, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(upYunRadioButton, new GridConstraints(14, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); qiniuRadioButton = new JRadioButton(); qiniuRadioButton.setEnabled(true); qiniuRadioButton.setText("七牛云短信(BETA)"); - msgTypeListPanel.add(qiniuRadioButton, new GridConstraints(14, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(qiniuRadioButton, new GridConstraints(15, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); wxUniformMessageRadioButton = new JRadioButton(); wxUniformMessageRadioButton.setText("小程序-统一服务消息(BETA)"); - msgTypeListPanel.add(wxUniformMessageRadioButton, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + msgTypeListPanel.add(wxUniformMessageRadioButton, new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel1 = new JPanel(); panel1.setLayout(new GridLayoutManager(2, 1, new Insets(8, 8, 8, 0), -1, -1)); messageTypePanel.add(panel1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); diff --git a/src/main/java/com/fangxuele/tool/push/ui/form/ScheduleForm.java b/src/main/java/com/fangxuele/tool/push/ui/form/ScheduleForm.java index 2c826cc1..3dcf565b 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/form/ScheduleForm.java +++ b/src/main/java/com/fangxuele/tool/push/ui/form/ScheduleForm.java @@ -92,7 +92,7 @@ public static void fillReimportComboBox() { int msgType = App.config.getMsgType(); if (msgType == MessageTypeEnum.MP_TEMPLATE_CODE || msgType == MessageTypeEnum.MA_TEMPLATE_CODE || msgType == MessageTypeEnum.KEFU_CODE || msgType == MessageTypeEnum.KEFU_PRIORITY_CODE - || msgType == MessageTypeEnum.WX_UNIFORM_MESSAGE_CODE) { + || msgType == MessageTypeEnum.WX_UNIFORM_MESSAGE_CODE || msgType == MessageTypeEnum.MA_SUBSCRIBE_CODE) { scheduleForm.getReimportComboBox().addItem("导入所有关注公众号的用户"); } else if (msgType == MessageTypeEnum.WX_CP_CODE) { scheduleForm.getReimportComboBox().addItem("导入企业通讯录中所有用户"); diff --git a/src/main/java/com/fangxuele/tool/push/ui/form/msg/MsgFormFactory.java b/src/main/java/com/fangxuele/tool/push/ui/form/msg/MsgFormFactory.java index 608c3f05..48c66ab5 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/form/msg/MsgFormFactory.java +++ b/src/main/java/com/fangxuele/tool/push/ui/form/msg/MsgFormFactory.java @@ -27,6 +27,9 @@ public static IMsgForm getMsgForm() { case MessageTypeEnum.MA_TEMPLATE_CODE: iMsgForm = MaTemplateMsgForm.getInstance(); break; + case MessageTypeEnum.MA_SUBSCRIBE_CODE: + iMsgForm = MaSubscribeMsgForm.getInstance(); + break; case MessageTypeEnum.KEFU_CODE: iMsgForm = KefuMsgForm.getInstance(); break; diff --git a/src/main/java/com/fangxuele/tool/push/ui/listener/MemberListener.java b/src/main/java/com/fangxuele/tool/push/ui/listener/MemberListener.java index 4816c192..cd3fe924 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/listener/MemberListener.java +++ b/src/main/java/com/fangxuele/tool/push/ui/listener/MemberListener.java @@ -924,7 +924,7 @@ private static void renderMemberListTable() { boolean isWeixinTypeMsg = false; if (msgType == MessageTypeEnum.MP_TEMPLATE_CODE || msgType == MessageTypeEnum.MA_TEMPLATE_CODE || msgType == MessageTypeEnum.KEFU_CODE || msgType == MessageTypeEnum.KEFU_PRIORITY_CODE - || msgType == MessageTypeEnum.WX_UNIFORM_MESSAGE_CODE) { + || msgType == MessageTypeEnum.WX_UNIFORM_MESSAGE_CODE || msgType == MessageTypeEnum.MA_SUBSCRIBE_CODE) { isWeixinTypeMsg = true; } // 导入列表 diff --git a/src/main/java/com/fangxuele/tool/push/ui/listener/MessageTypeListener.java b/src/main/java/com/fangxuele/tool/push/ui/listener/MessageTypeListener.java index 4874ddf7..72c4e1d6 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/listener/MessageTypeListener.java +++ b/src/main/java/com/fangxuele/tool/push/ui/listener/MessageTypeListener.java @@ -32,6 +32,10 @@ public static void addListeners() { App.config.setMsgType(MessageTypeEnum.MA_TEMPLATE_CODE); saveType(); }); + messageTypeForm.getMaSubscribeRadioButton().addActionListener(e -> { + App.config.setMsgType(MessageTypeEnum.MA_SUBSCRIBE_CODE); + saveType(); + }); messageTypeForm.getKefuRadioButton().addActionListener(e -> { App.config.setMsgType(MessageTypeEnum.KEFU_CODE); saveType(); diff --git a/src/main/java/com/fangxuele/tool/push/ui/listener/MsgEditListener.java b/src/main/java/com/fangxuele/tool/push/ui/listener/MsgEditListener.java index e9b0f5cd..d629aafb 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/listener/MsgEditListener.java +++ b/src/main/java/com/fangxuele/tool/push/ui/listener/MsgEditListener.java @@ -143,7 +143,8 @@ public void mousePressed(MouseEvent e) { String fillParaName = ""; String paraDemo = ""; if (msgType == MessageTypeEnum.MP_TEMPLATE_CODE || msgType == MessageTypeEnum.KEFU_PRIORITY_CODE - || msgType == MessageTypeEnum.KEFU_CODE || msgType == MessageTypeEnum.WX_UNIFORM_MESSAGE_CODE) { + || msgType == MessageTypeEnum.KEFU_CODE || msgType == MessageTypeEnum.WX_UNIFORM_MESSAGE_CODE + || msgType == MessageTypeEnum.MA_SUBSCRIBE_CODE) { fillParaName = "预览消息用户的openId"; paraDemo = "ox_kxwS_gGt63adS-zemlETtuvw1;ox_kxwS_gGt63adS-zemlETtuvw2"; } else if (msgType == MessageTypeEnum.MA_TEMPLATE_CODE) { diff --git a/src/main/java/com/fangxuele/tool/push/ui/listener/MsgManageListener.java b/src/main/java/com/fangxuele/tool/push/ui/listener/MsgManageListener.java index 3348b3cc..fa98d6bb 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/listener/MsgManageListener.java +++ b/src/main/java/com/fangxuele/tool/push/ui/listener/MsgManageListener.java @@ -8,6 +8,7 @@ import com.fangxuele.tool.push.dao.TMsgHttpMapper; import com.fangxuele.tool.push.dao.TMsgKefuMapper; import com.fangxuele.tool.push.dao.TMsgKefuPriorityMapper; +import com.fangxuele.tool.push.dao.TMsgMaSubscribeMapper; import com.fangxuele.tool.push.dao.TMsgMaTemplateMapper; import com.fangxuele.tool.push.dao.TMsgMailMapper; import com.fangxuele.tool.push.dao.TMsgMpTemplateMapper; @@ -42,6 +43,7 @@ public class MsgManageListener { private static TMsgKefuPriorityMapper msgKefuPriorityMapper = MybatisUtil.getSqlSession().getMapper(TMsgKefuPriorityMapper.class); private static TMsgWxUniformMapper wxUniformMapper = MybatisUtil.getSqlSession().getMapper(TMsgWxUniformMapper.class); private static TMsgMaTemplateMapper msgMaTemplateMapper = MybatisUtil.getSqlSession().getMapper(TMsgMaTemplateMapper.class); + private static TMsgMaSubscribeMapper msgMaSubscribeMapper = MybatisUtil.getSqlSession().getMapper(TMsgMaSubscribeMapper.class); private static TMsgMpTemplateMapper msgMpTemplateMapper = MybatisUtil.getSqlSession().getMapper(TMsgMpTemplateMapper.class); private static TMsgSmsMapper msgSmsMapper = MybatisUtil.getSqlSession().getMapper(TMsgSmsMapper.class); private static TMsgMailMapper msgMailMapper = MybatisUtil.getSqlSession().getMapper(TMsgMailMapper.class); @@ -97,6 +99,8 @@ public void mousePressed(MouseEvent e) { wxUniformMapper.deleteByMsgTypeAndName(msgType, msgName); } else if (msgType == MessageTypeEnum.MA_TEMPLATE_CODE) { msgMaTemplateMapper.deleteByMsgTypeAndName(msgType, msgName); + } else if (msgType == MessageTypeEnum.MA_SUBSCRIBE_CODE) { + msgMaSubscribeMapper.deleteByMsgTypeAndName(msgType, msgName); } else if (msgType == MessageTypeEnum.MP_TEMPLATE_CODE) { msgMpTemplateMapper.deleteByMsgTypeAndName(msgType, msgName); } else if (msgType == MessageTypeEnum.EMAIL_CODE) { diff --git a/src/main/resources/mapper/TMsgMaSubscribeMapper.xml b/src/main/resources/mapper/TMsgMaSubscribeMapper.xml index 7edb3f0a..a4d8fdca 100644 --- a/src/main/resources/mapper/TMsgMaSubscribeMapper.xml +++ b/src/main/resources/mapper/TMsgMaSubscribeMapper.xml @@ -26,11 +26,23 @@ where msg_type = #{msgType,jdbcType=INTEGER} and msg_name = #{msgName,jdbcType=VARCHAR} + delete from t_msg_ma_subscribe where id = #{id,jdbcType=INTEGER} + + delete + from t_msg_ma_subscribe + where msg_type = #{msgType,jdbcType=INTEGER} + and msg_name = #{msgName,jdbcType=VARCHAR} + insert into t_msg_ma_subscribe (id, msg_type, msg_name, template_id, page, create_time, @@ -39,7 +51,8 @@ #{templateId,jdbcType=VARCHAR}, #{page,jdbcType=VARCHAR}, #{createTime,jdbcType=VARCHAR}, #{modifiedTime,jdbcType=VARCHAR}) - + insert into t_msg_ma_subscribe From fd48b48410ef75311ef23e7210d8f652f6c1ef9a Mon Sep 17 00:00:00 2001 From: duoduo Date: Fri, 29 Nov 2019 16:02:01 +0800 Subject: [PATCH 7/8] =?UTF-8?q?feature:=E5=A2=9E=E5=8A=A0=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E8=AE=A2=E9=98=85=E6=B6=88=E6=81=AF=E5=8F=91?= =?UTF-8?q?=E9=80=81=E5=8A=9F=E8=83=BD=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../push/logic/msgmaker/MsgMakerFactory.java | 3 + .../logic/msgmaker/WxMaSubscribeMsgMaker.java | 82 +++++++++++++++++++ .../logic/msgsender/MsgSenderFactory.java | 3 + .../msgsender/WxMaSubscribeMsgSender.java | 58 +++++++++++++ 4 files changed, 146 insertions(+) create mode 100644 src/main/java/com/fangxuele/tool/push/logic/msgmaker/WxMaSubscribeMsgMaker.java create mode 100644 src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMaSubscribeMsgSender.java diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgmaker/MsgMakerFactory.java b/src/main/java/com/fangxuele/tool/push/logic/msgmaker/MsgMakerFactory.java index 991f9872..1695c815 100644 --- a/src/main/java/com/fangxuele/tool/push/logic/msgmaker/MsgMakerFactory.java +++ b/src/main/java/com/fangxuele/tool/push/logic/msgmaker/MsgMakerFactory.java @@ -27,6 +27,9 @@ public static IMsgMaker getMsgMaker() { case MessageTypeEnum.MA_TEMPLATE_CODE: iMsgMaker = new WxMaTemplateMsgMaker(); break; + case MessageTypeEnum.MA_SUBSCRIBE_CODE: + iMsgMaker = new WxMaSubscribeMsgMaker(); + break; case MessageTypeEnum.KEFU_CODE: iMsgMaker = new WxKefuMsgMaker(); break; diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgmaker/WxMaSubscribeMsgMaker.java b/src/main/java/com/fangxuele/tool/push/logic/msgmaker/WxMaSubscribeMsgMaker.java new file mode 100644 index 00000000..70d0460f --- /dev/null +++ b/src/main/java/com/fangxuele/tool/push/logic/msgmaker/WxMaSubscribeMsgMaker.java @@ -0,0 +1,82 @@ +package com.fangxuele.tool.push.logic.msgmaker; + +import cn.binarywang.wx.miniapp.bean.WxMaSubscribeData; +import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage; +import com.fangxuele.tool.push.bean.TemplateData; +import com.fangxuele.tool.push.ui.form.msg.MaTemplateMsgForm; +import com.fangxuele.tool.push.util.TemplateUtil; +import org.apache.commons.compress.utils.Lists; +import org.apache.velocity.VelocityContext; + +import javax.swing.table.DefaultTableModel; +import java.util.List; + +/** + *
+ * 小程序订阅消息加工器
+ * 
+ * + * @author Zhou Bo + * @since 2019/11/29. + */ +public class WxMaSubscribeMsgMaker extends BaseMsgMaker implements IMsgMaker { + + public static String templateId; + private static String templateUrl; + public static List templateDataList; + + /** + * 准备(界面字段等) + */ + @Override + public void prepare() { + templateId = MaTemplateMsgForm.getInstance().getMsgTemplateIdTextField().getText().trim(); + templateUrl = MaTemplateMsgForm.getInstance().getMsgTemplateUrlTextField().getText().trim(); + + if (MaTemplateMsgForm.getInstance().getTemplateMsgDataTable().getModel().getRowCount() == 0) { + MaTemplateMsgForm.initTemplateDataTable(); + } + + DefaultTableModel tableModel = (DefaultTableModel) MaTemplateMsgForm.getInstance().getTemplateMsgDataTable().getModel(); + int rowCount = tableModel.getRowCount(); + TemplateData templateData; + templateDataList = Lists.newArrayList(); + for (int i = 0; i < rowCount; i++) { + String name = ((String) tableModel.getValueAt(i, 0)).trim(); + String value = ((String) tableModel.getValueAt(i, 1)).trim(); + String color = ((String) tableModel.getValueAt(i, 2)).trim(); + templateData = new TemplateData(); + templateData.setName(name); + templateData.setValue(value); + templateData.setColor(color); + templateDataList.add(templateData); + } + } + + /** + * 组织订阅消息-小程序 + * + * @param msgData 消息信息 + * @return WxMaTemplateMessage + */ + @Override + public WxMaSubscribeMessage makeMsg(String[] msgData) { + // 拼模板 + WxMaSubscribeMessage wxMaSubscribeMessage = new WxMaSubscribeMessage(); + wxMaSubscribeMessage.setTemplateId(templateId); + VelocityContext velocityContext = getVelocityContext(msgData); + String templateUrlEvaluated = TemplateUtil.evaluate(templateUrl, velocityContext); + wxMaSubscribeMessage.setPage(templateUrlEvaluated); + + WxMaSubscribeData wxMaSubscribeData; + for (TemplateData templateData : templateDataList) { + wxMaSubscribeData = new WxMaSubscribeData(); + wxMaSubscribeData.setName(templateData.getName()); + wxMaSubscribeData.setValue(TemplateUtil.evaluate(templateData.getValue(), velocityContext)); + wxMaSubscribeData.setColor(templateData.getColor()); + wxMaSubscribeMessage.addData(wxMaSubscribeData); + } + + return wxMaSubscribeMessage; + } +} diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/MsgSenderFactory.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/MsgSenderFactory.java index 0440e271..f4a2ebbf 100644 --- a/src/main/java/com/fangxuele/tool/push/logic/msgsender/MsgSenderFactory.java +++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/MsgSenderFactory.java @@ -27,6 +27,9 @@ public static IMsgSender getMsgSender() { case MessageTypeEnum.MA_TEMPLATE_CODE: iMsgSender = new WxMaTemplateMsgSender(); break; + case MessageTypeEnum.MA_SUBSCRIBE_CODE: + iMsgSender = new WxMaSubscribeMsgSender(); + break; case MessageTypeEnum.KEFU_CODE: iMsgSender = new WxKefuMsgSender(); break; diff --git a/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMaSubscribeMsgSender.java b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMaSubscribeMsgSender.java new file mode 100644 index 00000000..685857f6 --- /dev/null +++ b/src/main/java/com/fangxuele/tool/push/logic/msgsender/WxMaSubscribeMsgSender.java @@ -0,0 +1,58 @@ +package com.fangxuele.tool.push.logic.msgsender; + +import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage; +import com.fangxuele.tool.push.logic.PushControl; +import com.fangxuele.tool.push.logic.msgmaker.WxMaSubscribeMsgMaker; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.exception.ExceptionUtils; + +/** + *
+ * 微信小程序订阅消息发送器
+ * 
+ * + * @author RememBerBer + * @since 2019/11/29. + */ +@Slf4j +public class WxMaSubscribeMsgSender implements IMsgSender { + public volatile static WxMaService wxMaService; + + private WxMaSubscribeMsgMaker wxMaSubscribeMsgMaker; + + public WxMaSubscribeMsgSender() { + wxMaSubscribeMsgMaker = new WxMaSubscribeMsgMaker(); + wxMaService = WxMaTemplateMsgSender.getWxMaService(); + } + + @Override + public SendResult send(String[] msgData) { + SendResult sendResult = new SendResult(); + + try { + String openId = msgData[0]; + WxMaSubscribeMessage wxMaSubscribeMessage = wxMaSubscribeMsgMaker.makeMsg(msgData); + wxMaSubscribeMessage.setToUser(openId); + if (PushControl.dryRun) { + sendResult.setSuccess(true); + return sendResult; + } else { + wxMaService.getMsgService().sendSubscribeMsg(wxMaSubscribeMessage); + } + } catch (Exception e) { + sendResult.setSuccess(false); + sendResult.setInfo(e.getMessage()); + log.error(ExceptionUtils.getStackTrace(e)); + return sendResult; + } + + sendResult.setSuccess(true); + return sendResult; + } + + @Override + public SendResult asyncSend(String[] msgData) { + return null; + } +} From 6b681885e12e3f4af876afab58694ca0947f3e0a Mon Sep 17 00:00:00 2001 From: duoduo Date: Fri, 29 Nov 2019 16:48:10 +0800 Subject: [PATCH 8/8] release:v_4.2.0_191129 --- src/main/java/com/fangxuele/tool/push/ui/UiConsts.java | 2 +- src/main/resources/version_summary.json | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/fangxuele/tool/push/ui/UiConsts.java b/src/main/java/com/fangxuele/tool/push/ui/UiConsts.java index 05bd3063..4bc972a7 100644 --- a/src/main/java/com/fangxuele/tool/push/ui/UiConsts.java +++ b/src/main/java/com/fangxuele/tool/push/ui/UiConsts.java @@ -16,7 +16,7 @@ public class UiConsts { * 软件名称,版本 */ public final static String APP_NAME = "WePush"; - public final static String APP_VERSION = "v_4.1.1_191027"; + public final static String APP_VERSION = "v_4.2.0_191129"; /** * Logo-1024*1024 diff --git a/src/main/resources/version_summary.json b/src/main/resources/version_summary.json index 737360e9..2e55a883 100644 --- a/src/main/resources/version_summary.json +++ b/src/main/resources/version_summary.json @@ -1,5 +1,5 @@ { - "currentVersion": "v_4.1.1_191027", + "currentVersion": "v_4.2.0_191129", "versionIndex": { "v_1.1.0_170701": "0", "v_1.2.0_170831": "1", @@ -39,7 +39,8 @@ "v_3.9.0_190915": "35", "v_4.0.0_190928": "36", "v_4.1.0_190930": "37", - "v_4.1.1_191027": "38" + "v_4.1.1_191027": "38", + "v_4.2.0_191129": "39" }, "versionDetailList": [ { @@ -236,6 +237,11 @@ "version": "v_4.1.1_191027", "title": "一波细节优化", "log": "● optimization:优化推送历史复制按钮功能\n● optimization:窗口关闭更优雅一些\n● optimization:窗口增加esc按钮事件\n● optimization:UI细节优化\n" + }, + { + "version": "v_4.2.0_191129", + "title": "新增支持小程序订阅消息", + "log": "● feature:新增支持小程序订阅消息类型\n● optimization:优化消息发送器日志打印\n● optimization:提高启动时界面渲染速度\n● fix:修复http请求消息和钉钉消息无法删除的问题\n" } ] } \ No newline at end of file