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; + } + +}