From 3b6aefe8ca205ef57adfd55e92a1b299fdc7e97d Mon Sep 17 00:00:00 2001
From: jlzhou <12020042@qq.com>
Date: Sat, 6 May 2023 11:53:40 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BC=95=E5=85=A5=E5=BE=AE=E4=BF=A1=E5=B0=8F?=
=?UTF-8?q?=E7=A8=8B=E5=BA=8F+dev=E9=85=8D=E7=BD=AE=E9=A1=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 15 ++
.../src/main/resources/application-dev.yml | 5 +
.../src/main/resources/application-prod.yml | 5 +
.../src/main/resources/application.yml | 11 ++
ruoyi-common/pom.xml | 5 +
.../com/ruoyi/common/config/RuoYiConfig.java | 5 +-
.../common/config/WxMaConfiguration.java | 129 ++++++++++++++++++
.../ruoyi/common/config/WxMaProperties.java | 46 +++++++
8 files changed, 220 insertions(+), 1 deletion(-)
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/WxMaConfiguration.java
create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/WxMaProperties.java
diff --git a/pom.xml b/pom.xml
index 33594a4..013e34f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,6 +47,9 @@
2.0.23
3.1.687
+
+ 4.5.0
+ 4.5.0
@@ -336,6 +339,18 @@
0.2.2
+
+ com.github.binarywang
+ weixin-java-miniapp
+ ${weixin-java-miniapp-version}
+
+
+
+ com.github.binarywang
+ weixin-java-pay
+ ${weixin-java-pay.version}
+
+
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 98948a5..7833c47 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -1,3 +1,8 @@
+# 项目相关配置
+ruoyi:
+ # 是否是开发模式
+ dev: true
+
--- # 监控中心配置
spring.boot.admin.client:
# 增加客户端开关
diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml
index 85f6e93..181c446 100644
--- a/ruoyi-admin/src/main/resources/application-prod.yml
+++ b/ruoyi-admin/src/main/resources/application-prod.yml
@@ -1,3 +1,8 @@
+# 项目相关配置
+ruoyi:
+ # 是否是开发模式
+ dev: false
+
--- # 临时文件存储位置 避免临时文件被系统清理报错
spring.servlet.multipart.location: /ruoyi/server/temp
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index b67d0d9..2797cd1 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -1,5 +1,7 @@
# 项目相关配置
ruoyi:
+ # 是否是开发模式
+ dev: false
# 名称
name: demo_202305
# 版本
@@ -13,6 +15,15 @@ ruoyi:
# 缓存懒加载
cacheLazy: false
+wx:
+ miniapp:
+ configs:
+ - appid: #微信小程序的appid
+ secret: #微信小程序的Secret
+ token: #微信小程序消息服务器配置的token
+ aesKey: #微信小程序消息服务器配置的EncodingAESKey
+ msgDataFormat: JSON
+
captcha:
# 页面 <参数设置> 可开启关闭 验证码校验
# 验证码类型 math 数组计算 char 字符验证
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index e6e888e..09a71a7 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -159,6 +159,11 @@
bcprov-jdk15to18
+
+ com.github.binarywang
+ weixin-java-miniapp
+
+
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java
index 8ce7a8c..4caa6ca 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java
@@ -15,7 +15,10 @@ import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "ruoyi")
public class RuoYiConfig {
-
+ /**
+ * 开发模式
+ */
+ private Boolean dev=false;
/**
* 项目名称
*/
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/WxMaConfiguration.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/WxMaConfiguration.java
new file mode 100644
index 0000000..aee0e69
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/WxMaConfiguration.java
@@ -0,0 +1,129 @@
+package com.ruoyi.common.config;
+
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
+import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage;
+import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage;
+import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
+import cn.binarywang.wx.miniapp.message.WxMaMessageHandler;
+import cn.binarywang.wx.miniapp.message.WxMaMessageRouter;
+import com.google.common.collect.Lists;
+import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.common.error.WxRuntimeException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.io.File;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author Binary Wang
+ */
+@Slf4j
+@Configuration
+@EnableConfigurationProperties(WxMaProperties.class)
+public class WxMaConfiguration {
+ private final WxMaProperties properties;
+
+ @Autowired
+ public WxMaConfiguration(WxMaProperties properties) {
+ this.properties = properties;
+ }
+
+ @Bean
+ public WxMaService wxMaService() {
+ List configs = this.properties.getConfigs();
+ if (configs == null) {
+ throw new WxRuntimeException("大哥,拜托先看下项目首页的说明(readme文件),添加下相关配置,注意别配错了!");
+ }
+ WxMaService maService = new WxMaServiceImpl();
+ maService.setMultiConfigs(
+ configs.stream()
+ .map(a -> {
+ WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
+ config.setAppid(a.getAppid());
+ config.setSecret(a.getSecret());
+ config.setToken(a.getToken());
+ config.setAesKey(a.getAesKey());
+ config.setMsgDataFormat(a.getMsgDataFormat());
+ return config;
+ }).collect(Collectors.toMap(WxMaDefaultConfigImpl::getAppid, a -> a, (o, n) -> o)));
+ return maService;
+ }
+
+ @Bean
+ public WxMaMessageRouter wxMaMessageRouter(WxMaService wxMaService) {
+ final WxMaMessageRouter router = new WxMaMessageRouter(wxMaService);
+ router
+ .rule().handler(logHandler).next()
+ .rule().async(false).content("订阅消息").handler(subscribeMsgHandler).end()
+ .rule().async(false).content("文本").handler(textHandler).end()
+ .rule().async(false).content("图片").handler(picHandler).end()
+ .rule().async(false).content("二维码").handler(qrcodeHandler).end();
+ return router;
+ }
+
+ private final WxMaMessageHandler subscribeMsgHandler = (wxMessage, context, service, sessionManager) -> {
+ service.getMsgService().sendSubscribeMsg(WxMaSubscribeMessage.builder()
+ .templateId("此处更换为自己的模板id")
+ .data(Lists.newArrayList(
+ new WxMaSubscribeMessage.MsgData("keyword1", "339208499")))
+ .toUser(wxMessage.getFromUser())
+ .build());
+ return null;
+ };
+
+ private final WxMaMessageHandler logHandler = (wxMessage, context, service, sessionManager) -> {
+ log.info("收到消息:" + wxMessage.toString());
+ service.getMsgService().sendKefuMsg(WxMaKefuMessage.newTextBuilder().content("收到信息为:" + wxMessage.toJson())
+ .toUser(wxMessage.getFromUser()).build());
+ return null;
+ };
+
+ private final WxMaMessageHandler textHandler = (wxMessage, context, service, sessionManager) -> {
+ service.getMsgService().sendKefuMsg(WxMaKefuMessage.newTextBuilder().content("回复文本消息")
+ .toUser(wxMessage.getFromUser()).build());
+ return null;
+ };
+
+ private final WxMaMessageHandler picHandler = (wxMessage, context, service, sessionManager) -> {
+ try {
+ WxMediaUploadResult uploadResult = service.getMediaService()
+ .uploadMedia("image", "png",
+ ClassLoader.getSystemResourceAsStream("tmp.png"));
+ service.getMsgService().sendKefuMsg(
+ WxMaKefuMessage
+ .newImageBuilder()
+ .mediaId(uploadResult.getMediaId())
+ .toUser(wxMessage.getFromUser())
+ .build());
+ } catch (WxErrorException e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ };
+
+ private final WxMaMessageHandler qrcodeHandler = (wxMessage, context, service, sessionManager) -> {
+ try {
+ final File file = service.getQrcodeService().createQrcode("123", 430);
+ WxMediaUploadResult uploadResult = service.getMediaService().uploadMedia("image", file);
+ service.getMsgService().sendKefuMsg(
+ WxMaKefuMessage
+ .newImageBuilder()
+ .mediaId(uploadResult.getMediaId())
+ .toUser(wxMessage.getFromUser())
+ .build());
+ } catch (WxErrorException e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ };
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/WxMaProperties.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/WxMaProperties.java
new file mode 100644
index 0000000..980c9f7
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/WxMaProperties.java
@@ -0,0 +1,46 @@
+package com.ruoyi.common.config;
+
+import java.util.List;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import lombok.Data;
+
+/**
+ * @author Binary Wang
+ */
+@Data
+@ConfigurationProperties(prefix = "wx.miniapp")
+public class WxMaProperties {
+
+ private List configs;
+
+ @Data
+ public static class Config {
+ /**
+ * 设置微信小程序的appid
+ */
+ private String appid;
+
+ /**
+ * 设置微信小程序的Secret
+ */
+ private String secret;
+
+ /**
+ * 设置微信小程序消息服务器配置的token
+ */
+ private String token;
+
+ /**
+ * 设置微信小程序消息服务器配置的EncodingAESKey
+ */
+ private String aesKey;
+
+ /**
+ * 消息格式,XML或者JSON
+ */
+ private String msgDataFormat;
+ }
+
+}