Эх сурвалжийг харах

feat:新增公众号推送工具类

黄渊昊 6 сар өмнө
parent
commit
c571909dd2

+ 5 - 0
snowy-plugin/snowy-plugin-coldchain/pom.xml

@@ -69,5 +69,10 @@
             <groupId>vip.xiaonuo</groupId>
             <artifactId>snowy-plugin-auth-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-mp</artifactId>
+            <version>4.6.0</version>
+        </dependency>
     </dependencies>
 </project>

+ 77 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/push/config/PushConfigure.java

@@ -0,0 +1,77 @@
+package vip.xiaonuo.coldchain.modular.push.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * 配置类
+ */
+@Component
+@ConfigurationProperties("wechat")
+
+public class PushConfigure {
+    /**
+     * 微信公众平台的appID
+     */
+    private static String appId;
+
+    /**
+     * 微信公众平台的appSecret
+     */
+    private static String secret;
+
+    /**
+     * 模板ID
+     */
+    private static String templateId;
+
+    /**
+     * 小程序appId
+     */
+    private static String miniProgram;
+
+    /**
+     * 小程序路径
+     */
+    private static String pagePath;
+
+    public static String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        PushConfigure.appId = appId;
+    }
+
+    public static String getSecret() {
+        return secret;
+    }
+
+    public void setSecret(String secret) {
+        PushConfigure.secret = secret;
+    }
+
+    public static String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        PushConfigure.templateId = templateId;
+    }
+
+    public static String getMiniProgram() {
+        return miniProgram;
+    }
+
+    public void setMiniProgram(String miniProgram) {
+        PushConfigure.miniProgram = miniProgram;
+    }
+
+    public static String getPagePath() {
+        return pagePath;
+    }
+
+    public void setPagePath(String pagePath) {
+        PushConfigure.pagePath = pagePath;
+    }
+}

+ 14 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/push/entity/PushEntity.java

@@ -0,0 +1,14 @@
+package vip.xiaonuo.coldchain.modular.push.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class PushEntity {
+    private String appId;
+    private String secret;
+    private String userId;
+    private String templateId;
+    private String miniProgram;
+}

+ 19 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/push/param/PushParam.java

@@ -0,0 +1,19 @@
+package vip.xiaonuo.coldchain.modular.push.param;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+@Getter
+@Setter
+public class PushParam {
+    private String userId;
+    private String userName;
+    private String templateId;
+    private String deviceName;
+    private String value;
+    private String context;
+    private Date noticeTime;
+}

+ 66 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/push/utils/PushUtil.java

@@ -0,0 +1,66 @@
+package vip.xiaonuo.coldchain.modular.push.utils;
+
+
+import cn.hutool.core.date.DateUtil;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.mp.api.WxMpService;
+import me.chanjar.weixin.mp.api.WxMpUserService;
+import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
+import me.chanjar.weixin.mp.api.impl.WxMpUserServiceImpl;
+import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
+import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
+import vip.xiaonuo.coldchain.modular.push.config.PushConfigure;
+import vip.xiaonuo.coldchain.modular.push.param.PushParam;
+
+import java.util.Date;
+
+/**
+ * 推送类
+ */
+public class PushUtil {
+    private static WxMpConfigStorage wxMpConfigStorage() {
+        WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
+        config.setAppId(PushConfigure.getAppId());
+        config.setSecret(PushConfigure.getSecret());
+        return config;
+    }
+
+    /**
+     * 消息推送主要业务代码
+     */
+    public static String push(PushParam pushParam) {
+        //1,配置
+        WxMpService wxMpService = new WxMpServiceImpl();
+        wxMpService.setWxMpConfigStorage(wxMpConfigStorage());
+
+        WxMpTemplateMessage.MiniProgram miniProgram = new WxMpTemplateMessage.MiniProgram();
+        String miniProgramAppId = PushConfigure.getMiniProgram();
+        miniProgram.setAppid(miniProgramAppId);//小程序appid
+        miniProgram.setUsePath(true);
+        miniProgram.setPagePath(PushConfigure.getPagePath());//用户点击时需要跳转的小程序页面
+        // 推送消息
+        WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
+                .toUser(pushParam.getUserId())
+                .templateId(PushConfigure.getTemplateId())
+                .miniProgram(miniProgram)
+                .build();
+        // 配置你的信息
+        String dateFormat = DateUtil.format(pushParam.getNoticeTime(), "yyyy-MM-dd HH:mm:ss");
+        templateMessage.addData(new WxMpTemplateData("thing23", pushParam.getDeviceName()));
+        templateMessage.addData(new WxMpTemplateData("thing5", pushParam.getUserName()));
+        templateMessage.addData(new WxMpTemplateData("character_string28", pushParam.getValue()));
+        templateMessage.addData(new WxMpTemplateData("thing25", pushParam.getContext()));
+        templateMessage.addData(new WxMpTemplateData("time3", dateFormat));
+
+        System.out.println(templateMessage.toJson());
+        try {
+            wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
+        } catch (Exception e) {
+            System.out.println("推送失败:" + e.getMessage());
+            return "推送失败:" + e.getMessage();
+        }
+        return "推送成功!";
+    }
+}