From 2e45c9e71d4a2b2c52cabd4ff87201c4e70fd76e Mon Sep 17 00:00:00 2001 From: rongchao Date: Thu, 5 Sep 2019 10:35:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E9=9B=86=E6=88=90=E5=88=B0ap?= =?UTF-8?q?i=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- esua-epdc/epdc-commons/epdc-wx/.editorconfig | 14 ++ esua-epdc/epdc-commons/epdc-wx/.travis.yml | 13 ++ esua-epdc/epdc-commons/epdc-wx/README.md | 58 +++++++ esua-epdc/epdc-commons/epdc-wx/pom.xml | 61 +++++++ .../epdc/wx/mp/builder/AbstractBuilder.java | 17 ++ .../esua/epdc/wx/mp/builder/ImageBuilder.java | 24 +++ .../esua/epdc/wx/mp/builder/TextBuilder.java | 22 +++ .../epdc/wx/mp/config/WxMpConfiguration.java | 113 +++++++++++++ .../epdc/wx/mp/config/WxMpProperties.java | 46 +++++ .../epdc/wx/mp/handler/AbstractHandler.java | 12 ++ .../epdc/wx/mp/handler/KfSessionHandler.java | 25 +++ .../epdc/wx/mp/handler/LocationHandler.java | 44 +++++ .../esua/epdc/wx/mp/handler/LogHandler.java | 25 +++ .../esua/epdc/wx/mp/handler/MenuHandler.java | 36 ++++ .../esua/epdc/wx/mp/handler/MsgHandler.java | 52 ++++++ .../esua/epdc/wx/mp/handler/NullHandler.java | 24 +++ .../esua/epdc/wx/mp/handler/ScanHandler.java | 25 +++ .../mp/handler/StoreCheckNotifyHandler.java | 27 +++ .../epdc/wx/mp/handler/SubscribeHandler.java | 71 ++++++++ .../wx/mp/handler/UnsubscribeHandler.java | 27 +++ .../esua/epdc/wx/mp/utils/JsonUtils.java | 16 ++ esua-epdc/epdc-commons/pom.xml | 2 +- .../epdc-api/epdc-api-client/pom.xml | 30 ++++ .../epdc-api/epdc-api-server/pom.xml | 100 +++++++++++ .../com/elink/esua/epdc/ApiApplication.java | 6 +- .../esua/epdc/wx/controller/WxController.java | 33 ++++ .../elink/esua/epdc/wx/service/WxService.java | 20 +++ .../epdc/wx/service/impl/WxServiceImpl.java | 38 +++++ .../src/main/resources/application.yml | 28 +-- .../epdc-app/epdc-app-client/pom.xml | 53 ------ .../java/com/elink/esua/epdc/epdc.gitkeep | 0 .../epdc-app/epdc-app-server/pom.xml | 146 ---------------- .../com/elink/esua/epdc/AppApplication.java | 31 ---- .../esua/epdc/config/ModuleConfigImpl.java | 26 --- .../com/elink/esua/epdc/config/WebConfig.java | 34 ---- .../src/main/resources/application.yml | 68 -------- .../main/resources/i18n/messages.properties | 0 .../resources/i18n/messages_en_US.properties | 0 .../resources/i18n/messages_zh_CN.properties | 0 .../resources/i18n/messages_zh_TW.properties | 0 .../main/resources/i18n/validation.properties | 0 .../i18n/validation_en_US.properties | 0 .../i18n/validation_zh_CN.properties | 0 .../i18n/validation_zh_TW.properties | 0 .../src/main/resources/logback-spring.xml | 159 ------------------ .../src/main/resources/registry.conf | 21 --- esua-epdc/epdc-module/epdc-app/pom.xml | 20 --- esua-epdc/epdc-module/pom.xml | 1 - 48 files changed, 995 insertions(+), 573 deletions(-) create mode 100644 esua-epdc/epdc-commons/epdc-wx/.editorconfig create mode 100644 esua-epdc/epdc-commons/epdc-wx/.travis.yml create mode 100644 esua-epdc/epdc-commons/epdc-wx/README.md create mode 100644 esua-epdc/epdc-commons/epdc-wx/pom.xml create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/AbstractBuilder.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/ImageBuilder.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/TextBuilder.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/config/WxMpConfiguration.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/config/WxMpProperties.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/AbstractHandler.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/KfSessionHandler.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/LocationHandler.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/LogHandler.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/MenuHandler.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/MsgHandler.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/NullHandler.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/ScanHandler.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/StoreCheckNotifyHandler.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/SubscribeHandler.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/UnsubscribeHandler.java create mode 100644 esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/utils/JsonUtils.java create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/controller/WxController.java create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/service/WxService.java create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/service/impl/WxServiceImpl.java delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-client/pom.xml delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-client/src/main/java/com/elink/esua/epdc/epdc.gitkeep delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/pom.xml delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/AppApplication.java delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/config/ModuleConfigImpl.java delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/config/WebConfig.java delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/application.yml delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages.properties delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages_en_US.properties delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages_zh_CN.properties delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages_zh_TW.properties delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation.properties delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation_en_US.properties delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation_zh_CN.properties delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation_zh_TW.properties delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/logback-spring.xml delete mode 100644 esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/registry.conf delete mode 100644 esua-epdc/epdc-module/epdc-app/pom.xml diff --git a/esua-epdc/epdc-commons/epdc-wx/.editorconfig b/esua-epdc/epdc-commons/epdc-wx/.editorconfig new file mode 100644 index 000000000..775be5ba0 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/.editorconfig @@ -0,0 +1,14 @@ +# EditorConfig: http://editorconfig.org/ + +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/esua-epdc/epdc-commons/epdc-wx/.travis.yml b/esua-epdc/epdc-commons/epdc-wx/.travis.yml new file mode 100644 index 000000000..5d2a7698b --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/.travis.yml @@ -0,0 +1,13 @@ +language: java +jdk: + - openjdk8 + +script: "mvn clean package -Dmaven.test.skip=true" + +branches: + only: + - master + +notifications: + email: + - binarywang@vip.qq.com diff --git a/esua-epdc/epdc-commons/epdc-wx/README.md b/esua-epdc/epdc-commons/epdc-wx/README.md new file mode 100644 index 000000000..790d56ba1 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/README.md @@ -0,0 +1,58 @@ +[![码云Gitee](https://gitee.com/binary/weixin-java-mp-demo-springboot/badge/star.svg?theme=blue)](https://gitee.com/binary/weixin-java-mp-demo-springboot) +[![Github](http://github-svg-buttons.herokuapp.com/star.svg?user=binarywang&repo=weixin-java-mp-demo-springboot&style=flat&background=1081C1)](https://github.com/binarywang/weixin-java-mp-demo-springboot) +[![Build Status](https://travis-ci.org/binarywang/weixin-java-mp-demo-springboot.svg?branch=master)](https://travis-ci.org/binarywang/weixin-java-mp-demo-springboot) +----------------------- + +### 本Demo基于Spring Boot构建,实现微信公众号后端开发功能。 +### 本项目为WxJava的Demo演示程序,更多Demo请[查阅此处](https://github.com/Wechat-Group/WxJava/blob/master/demo.md)。 +#### 如有问题请[【在此提问】](https://github.com/binarywang/weixin-java-mp-demo-springboot/issues),谢谢配合。 + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +## 使用步骤: +1. 请注意,本demo为简化代码编译时加入了lombok支持,如果不了解lombok的话,请先学习下相关知识,比如可以阅读[此文章](https://mp.weixin.qq.com/s/cUc-bUcprycADfNepnSwZQ); +1. 另外,新手遇到问题,请务必先阅读[【开发文档首页】](https://github.com/Wechat-Group/WxJava/wiki)的常见问题部分,可以少走很多弯路,节省不少时间。 +1. 配置:复制 `/src/main/resources/application.yml.template` 或修改其扩展名生成 `application.yml` 文件,根据自己需要填写相关配置(需要注意的是:yml文件内的属性冒号后面的文字之前需要加空格,可参考已有配置,否则属性会设置不成功); +2. 主要配置说明如下: +``` +wx: + mp: + configs: + - appId: 1111 (一个公众号的appid) + secret: 1111(公众号的appsecret) + token: 111 (接口配置里的Token值) + aesKey: 111 (接口配置里的EncodingAESKey值) + - appId: 2222 (另一个公众号的appid,以下同上) + secret: 1111 + token: 111 + aesKey: 111 +``` +3. 运行Java程序:`WxMpDemoApplication`; +4. 配置微信公众号中的接口地址:http://公网可访问域名/wx/portal/xxxxx (注意,xxxxx为对应公众号的appid值); +5. 根据自己需要修改各个handler的实现,加入自己的业务逻辑。 + diff --git a/esua-epdc/epdc-commons/epdc-wx/pom.xml b/esua-epdc/epdc-commons/epdc-wx/pom.xml new file mode 100644 index 000000000..081d0e49c --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + + com.esua.epdc + epdc-commons + 1.0.0 + + + 1.0.0 + epdc-wx + jar + + Wechat mp demo with Spring Boot and WxJava + 基于 WxJava 和 Spring Boot 实现的微信公众号后端开发演示项目 + + + 3.5.0 + + 1.8 + 1.8 + UTF-8 + UTF-8 + zh_CN + wechat-mp-demo + + + + + com.github.binarywang + weixin-java-mp + ${weixin-java-mp.version} + + + + org.projectlombok + lombok + provided + + + + org.springframework.boot + spring-boot-autoconfigure + compile + + + org.springframework.boot + spring-boot-configuration-processor + compile + true + + + org.springframework.boot + spring-boot-autoconfigure-processor + compile + true + + + diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/AbstractBuilder.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/AbstractBuilder.java new file mode 100644 index 000000000..dc270da56 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/AbstractBuilder.java @@ -0,0 +1,17 @@ +package com.elink.esua.epdc.wx.mp.builder; + +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +public abstract class AbstractBuilder { + protected final Logger logger = LoggerFactory.getLogger(getClass()); + + public abstract WxMpXmlOutMessage build(String content, + WxMpXmlMessage wxMessage, WxMpService service); +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/ImageBuilder.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/ImageBuilder.java new file mode 100644 index 000000000..8daf22d2c --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/ImageBuilder.java @@ -0,0 +1,24 @@ +package com.elink.esua.epdc.wx.mp.builder; + +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutImageMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +public class ImageBuilder extends AbstractBuilder { + + @Override + public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, + WxMpService service) { + + WxMpXmlOutImageMessage m = WxMpXmlOutMessage.IMAGE().mediaId(content) + .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser()) + .build(); + + return m; + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/TextBuilder.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/TextBuilder.java new file mode 100644 index 000000000..93ea48018 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/builder/TextBuilder.java @@ -0,0 +1,22 @@ +package com.elink.esua.epdc.wx.mp.builder; + +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +public class TextBuilder extends AbstractBuilder { + + @Override + public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, + WxMpService service) { + WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT().content(content) + .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser()) + .build(); + return m; + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/config/WxMpConfiguration.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/config/WxMpConfiguration.java new file mode 100644 index 000000000..59a027c9d --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/config/WxMpConfiguration.java @@ -0,0 +1,113 @@ +package com.elink.esua.epdc.wx.mp.config; + +import com.elink.esua.epdc.wx.mp.handler.*; +import lombok.AllArgsConstructor; +import me.chanjar.weixin.mp.api.WxMpMessageRouter; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; +import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.List; +import java.util.stream.Collectors; + +import static me.chanjar.weixin.common.api.WxConsts.EventType; +import static me.chanjar.weixin.common.api.WxConsts.EventType.SUBSCRIBE; +import static me.chanjar.weixin.common.api.WxConsts.EventType.UNSUBSCRIBE; +import static me.chanjar.weixin.common.api.WxConsts.MenuButtonType.CLICK; +import static me.chanjar.weixin.common.api.WxConsts.MenuButtonType.VIEW; +import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType; +import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType.EVENT; +import static me.chanjar.weixin.mp.constant.WxMpEventConstants.CustomerService.*; +import static me.chanjar.weixin.mp.constant.WxMpEventConstants.POI_CHECK_NOTIFY; + +/** + * wechat mp configuration + * + * @author Binary Wang(https://github.com/binarywang) + */ +@AllArgsConstructor +@Configuration +@EnableConfigurationProperties(WxMpProperties.class) +public class WxMpConfiguration { + private final LogHandler logHandler; + private final NullHandler nullHandler; + private final KfSessionHandler kfSessionHandler; + private final StoreCheckNotifyHandler storeCheckNotifyHandler; + private final LocationHandler locationHandler; + private final MenuHandler menuHandler; + private final MsgHandler msgHandler; + private final UnsubscribeHandler unsubscribeHandler; + private final SubscribeHandler subscribeHandler; + private final ScanHandler scanHandler; + private final WxMpProperties properties; + + @Bean + public WxMpService wxMpService() { + // 代码里 getConfigs()处报错的同学,请注意仔细阅读项目说明,你的IDE需要引入lombok插件!!!! + final List configs = this.properties.getConfigs(); + if (configs == null) { + throw new RuntimeException("大哥,拜托先看下项目首页的说明(readme文件),添加下相关配置,注意别配错了!"); + } + + WxMpService service = new WxMpServiceImpl(); + service.setMultiConfigStorages(configs + .stream().map(a -> { + WxMpDefaultConfigImpl configStorage = new WxMpDefaultConfigImpl(); + configStorage.setAppId(a.getAppId()); + configStorage.setSecret(a.getSecret()); + configStorage.setToken(a.getToken()); + configStorage.setAesKey(a.getAesKey()); + return configStorage; + }).collect(Collectors.toMap(WxMpDefaultConfigImpl::getAppId, a -> a, (o, n) -> o))); + return service; + } + + @Bean + public WxMpMessageRouter messageRouter(WxMpService wxMpService) { + final WxMpMessageRouter newRouter = new WxMpMessageRouter(wxMpService); + + // 记录所有事件的日志 (异步执行) + newRouter.rule().handler(this.logHandler).next(); + + // 接收客服会话管理事件 + newRouter.rule().async(false).msgType(EVENT).event(KF_CREATE_SESSION) + .handler(this.kfSessionHandler).end(); + newRouter.rule().async(false).msgType(EVENT).event(KF_CLOSE_SESSION) + .handler(this.kfSessionHandler).end(); + newRouter.rule().async(false).msgType(EVENT).event(KF_SWITCH_SESSION) + .handler(this.kfSessionHandler).end(); + + // 门店审核事件 + newRouter.rule().async(false).msgType(EVENT).event(POI_CHECK_NOTIFY).handler(this.storeCheckNotifyHandler).end(); + + // 自定义菜单事件 + newRouter.rule().async(false).msgType(EVENT).event(CLICK).handler(this.menuHandler).end(); + + // 点击菜单连接事件 + newRouter.rule().async(false).msgType(EVENT).event(VIEW).handler(this.nullHandler).end(); + + // 关注事件 + newRouter.rule().async(false).msgType(EVENT).event(SUBSCRIBE).handler(this.subscribeHandler).end(); + + // 取消关注事件 + newRouter.rule().async(false).msgType(EVENT).event(UNSUBSCRIBE).handler(this.unsubscribeHandler).end(); + + // 上报地理位置事件 + newRouter.rule().async(false).msgType(EVENT).event(EventType.LOCATION).handler(this.locationHandler).end(); + + // 接收地理位置消息 + newRouter.rule().async(false).msgType(XmlMsgType.LOCATION).handler(this.locationHandler).end(); + + // 扫码事件 + newRouter.rule().async(false).msgType(EVENT).event(EventType.SCAN).handler(this.scanHandler).end(); + + // 默认 + newRouter.rule().async(false).handler(this.msgHandler).end(); + + return newRouter; + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/config/WxMpProperties.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/config/WxMpProperties.java new file mode 100644 index 000000000..6a1aa5947 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/config/WxMpProperties.java @@ -0,0 +1,46 @@ +package com.elink.esua.epdc.wx.mp.config; + +import com.elink.esua.epdc.wx.mp.utils.JsonUtils; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.List; + +/** + * wechat mp properties + * + * @author Binary Wang(https://github.com/binarywang) + */ +@Data +@ConfigurationProperties(prefix = "wx.mp") +public class WxMpProperties { + private List configs; + + @Data + public static class MpConfig { + /** + * 设置微信公众号的appid + */ + private String appId; + + /** + * 设置微信公众号的app secret + */ + private String secret; + + /** + * 设置微信公众号的token + */ + private String token; + + /** + * 设置微信公众号的EncodingAESKey + */ + private String aesKey; + } + + @Override + public String toString() { + return JsonUtils.toJson(this); + } +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/AbstractHandler.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/AbstractHandler.java new file mode 100644 index 000000000..b3a89e72b --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/AbstractHandler.java @@ -0,0 +1,12 @@ +package com.elink.esua.epdc.wx.mp.handler; + +import me.chanjar.weixin.mp.api.WxMpMessageHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +public abstract class AbstractHandler implements WxMpMessageHandler { + protected Logger logger = LoggerFactory.getLogger(getClass()); +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/KfSessionHandler.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/KfSessionHandler.java new file mode 100644 index 000000000..46df4a7a2 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/KfSessionHandler.java @@ -0,0 +1,25 @@ +package com.elink.esua.epdc.wx.mp.handler; + +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +@Component +public class KfSessionHandler extends AbstractHandler { + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService wxMpService, + WxSessionManager sessionManager) { + //TODO 对会话做处理 + return null; + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/LocationHandler.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/LocationHandler.java new file mode 100644 index 000000000..9089a15a2 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/LocationHandler.java @@ -0,0 +1,44 @@ +package com.elink.esua.epdc.wx.mp.handler; + +import com.elink.esua.epdc.wx.mp.builder.TextBuilder; +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; + +import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +@Component +public class LocationHandler extends AbstractHandler { + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService wxMpService, + WxSessionManager sessionManager) { + if (wxMessage.getMsgType().equals(XmlMsgType.LOCATION)) { + //TODO 接收处理用户发送的地理位置消息 + try { + String content = "感谢反馈,您的的地理位置已收到!"; + return new TextBuilder().build(content, wxMessage, null); + } catch (Exception e) { + this.logger.error("位置消息接收处理失败", e); + return null; + } + } + + //上报地理位置事件 + this.logger.info("上报地理位置,纬度 : {},经度 : {},精度 : {}", + wxMessage.getLatitude(), wxMessage.getLongitude(), String.valueOf(wxMessage.getPrecision())); + + //TODO 可以将用户地理位置信息保存到本地数据库,以便以后使用 + + return null; + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/LogHandler.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/LogHandler.java new file mode 100644 index 000000000..1ff3ec3de --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/LogHandler.java @@ -0,0 +1,25 @@ +package com.elink.esua.epdc.wx.mp.handler; + +import com.elink.esua.epdc.wx.mp.utils.JsonUtils; +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +@Component +public class LogHandler extends AbstractHandler { + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService wxMpService, + WxSessionManager sessionManager) { + this.logger.info("\n接收到请求消息,内容:{}", JsonUtils.toJson(wxMessage)); + return null; + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/MenuHandler.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/MenuHandler.java new file mode 100644 index 000000000..249d87e3c --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/MenuHandler.java @@ -0,0 +1,36 @@ +package com.elink.esua.epdc.wx.mp.handler; + +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; + +import static me.chanjar.weixin.common.api.WxConsts.MenuButtonType; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +@Component +public class MenuHandler extends AbstractHandler { + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService weixinService, + WxSessionManager sessionManager) { + + String msg = String.format("type:%s, event:%s, key:%s", + wxMessage.getMsgType(), wxMessage.getEvent(), + wxMessage.getEventKey()); + if (MenuButtonType.VIEW.equals(wxMessage.getEvent())) { + return null; + } + + return WxMpXmlOutMessage.TEXT().content(msg) + .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser()) + .build(); + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/MsgHandler.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/MsgHandler.java new file mode 100644 index 000000000..21f8b48b2 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/MsgHandler.java @@ -0,0 +1,52 @@ +package com.elink.esua.epdc.wx.mp.handler; + +import com.elink.esua.epdc.wx.mp.builder.TextBuilder; +import com.elink.esua.epdc.wx.mp.utils.JsonUtils; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import java.util.Map; + +import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +@Component +public class MsgHandler extends AbstractHandler { + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService weixinService, + WxSessionManager sessionManager) { + + if (!wxMessage.getMsgType().equals(XmlMsgType.EVENT)) { + //TODO 可以选择将消息保存到本地 + } + + //当用户输入关键词如“你好”,“客服”等,并且有客服在线时,把消息转发给在线客服 + try { + if (StringUtils.startsWithAny(wxMessage.getContent(), "你好", "客服") + && weixinService.getKefuService().kfOnlineList() + .getKfOnlineList().size() > 0) { + return WxMpXmlOutMessage.TRANSFER_CUSTOMER_SERVICE() + .fromUser(wxMessage.getToUser()) + .toUser(wxMessage.getFromUser()).build(); + } + } catch (WxErrorException e) { + e.printStackTrace(); + } + + //TODO 组装回复消息 + String content = "收到信息内容:" + JsonUtils.toJson(wxMessage); + + return new TextBuilder().build(content, wxMessage, weixinService); + + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/NullHandler.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/NullHandler.java new file mode 100644 index 000000000..f76290842 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/NullHandler.java @@ -0,0 +1,24 @@ +package com.elink.esua.epdc.wx.mp.handler; + +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +@Component +public class NullHandler extends AbstractHandler { + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService wxMpService, + WxSessionManager sessionManager) { + return null; + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/ScanHandler.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/ScanHandler.java new file mode 100644 index 000000000..407f94676 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/ScanHandler.java @@ -0,0 +1,25 @@ +package com.elink.esua.epdc.wx.mp.handler; + +import java.util.Map; + +import org.springframework.stereotype.Component; + +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +@Component +public class ScanHandler extends AbstractHandler { + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMpXmlMessage, Map map, + WxMpService wxMpService, WxSessionManager wxSessionManager) throws WxErrorException { + // 扫码事件处理 + return null; + } +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/StoreCheckNotifyHandler.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/StoreCheckNotifyHandler.java new file mode 100644 index 000000000..cd1cd25ed --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/StoreCheckNotifyHandler.java @@ -0,0 +1,27 @@ +package com.elink.esua.epdc.wx.mp.handler; + +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * 门店审核事件处理 + * + * @author Binary Wang(https://github.com/binarywang) + */ +@Component +public class StoreCheckNotifyHandler extends AbstractHandler { + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService wxMpService, + WxSessionManager sessionManager) { + // TODO 处理门店审核事件 + return null; + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/SubscribeHandler.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/SubscribeHandler.java new file mode 100644 index 000000000..88aac68bd --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/SubscribeHandler.java @@ -0,0 +1,71 @@ +package com.elink.esua.epdc.wx.mp.handler; + +import java.util.Map; + +import com.elink.esua.epdc.wx.mp.builder.TextBuilder; +import org.springframework.stereotype.Component; + +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import me.chanjar.weixin.mp.bean.result.WxMpUser; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +@Component +public class SubscribeHandler extends AbstractHandler { + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService weixinService, + WxSessionManager sessionManager) throws WxErrorException { + + this.logger.info("新关注用户 OPENID: " + wxMessage.getFromUser()); + + // 获取微信用户基本信息 + try { + WxMpUser userWxInfo = weixinService.getUserService() + .userInfo(wxMessage.getFromUser(), null); + if (userWxInfo != null) { + // TODO 可以添加关注用户到本地数据库 + } + } catch (WxErrorException e) { + if (e.getError().getErrorCode() == 48001) { + this.logger.info("该公众号没有获取用户信息权限!"); + } + } + + + WxMpXmlOutMessage responseResult = null; + try { + responseResult = this.handleSpecial(wxMessage); + } catch (Exception e) { + this.logger.error(e.getMessage(), e); + } + + if (responseResult != null) { + return responseResult; + } + + try { + return new TextBuilder().build("感谢关注", wxMessage, weixinService); + } catch (Exception e) { + this.logger.error(e.getMessage(), e); + } + + return null; + } + + /** + * 处理特殊请求,比如如果是扫码进来的,可以做相应处理 + */ + private WxMpXmlOutMessage handleSpecial(WxMpXmlMessage wxMessage) + throws Exception { + //TODO + return null; + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/UnsubscribeHandler.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/UnsubscribeHandler.java new file mode 100644 index 000000000..4a4723d45 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/handler/UnsubscribeHandler.java @@ -0,0 +1,27 @@ +package com.elink.esua.epdc.wx.mp.handler; + +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +@Component +public class UnsubscribeHandler extends AbstractHandler { + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService wxMpService, + WxSessionManager sessionManager) { + String openId = wxMessage.getFromUser(); + this.logger.info("取消关注用户 OPENID: " + openId); + // TODO 可以更新本地数据库为取消关注状态 + return null; + } + +} diff --git a/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/utils/JsonUtils.java b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/utils/JsonUtils.java new file mode 100644 index 000000000..0c88b1568 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-wx/src/main/java/com/elink/esua/epdc/wx/mp/utils/JsonUtils.java @@ -0,0 +1,16 @@ +package com.elink.esua.epdc.wx.mp.utils; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +public class JsonUtils { + public static String toJson(Object obj) { + Gson gson = new GsonBuilder() + .setPrettyPrinting() + .create(); + return gson.toJson(obj); + } +} diff --git a/esua-epdc/epdc-commons/pom.xml b/esua-epdc/epdc-commons/pom.xml index 9709e2771..f2e733488 100644 --- a/esua-epdc/epdc-commons/pom.xml +++ b/esua-epdc/epdc-commons/pom.xml @@ -9,7 +9,6 @@ 1.0.0 - com.esua.epdc epdc-commons pom @@ -19,5 +18,6 @@ epdc-commons-dynamic-datasource epdc-commons-api-version-control epdc-commons-tools-phone + epdc-wx diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/pom.xml b/esua-epdc/epdc-module/epdc-api/epdc-api-client/pom.xml index baf672df8..c41c11e02 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-client/pom.xml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/pom.xml @@ -18,6 +18,36 @@ epdc-commons-tools 1.0.0 + + com.esua.epdc + epdc-heart-client + 1.0.0 + + + com.esua.epdc + epdc-neighbor-client + 1.0.0 + + + com.esua.epdc + epdc-news-client + 1.0.0 + + + com.esua.epdc + epdc-events-client + 1.0.0 + + + com.esua.epdc + epdc-services-client + 1.0.0 + + + com.esua.epdc + epdc-user-client + 1.0.0 + diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml index 1762d3b84..402037d25 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml @@ -12,6 +12,10 @@ epdc-api-server jar + + 3.5.0 + + com.esua.epdc @@ -53,6 +57,13 @@ epdc-commons-api-version-control ${project.version} + + + + com.esua.epdc + epdc-wx + ${project.version} + @@ -76,4 +87,93 @@ + + + dev + + true + + + dev + + 9040 + + 2 + 47.104.224.45 + 6379 + elink@888 + + + + + epdc + elink833066 + + true + 47.104.224.45:8848 + + wx6ff4e50840cf7dfc + caf82e454ae4e2cb9697651194c37784 + 111 + 111 + + + + + test + + test + + 9040 + + 2 + 47.104.224.45 + 6379 + elink@888 + + + + + epdc + elink833066 + + true + 47.104.224.45:8848 + + wx6ff4e50840cf7dfc + caf82e454ae4e2cb9697651194c37784 + 111 + 111 + + + + + prod + + prod + + 9040 + + 2 + 47.104.224.45 + 6379 + elink@888 + + + + + epdc + elink888 + + false + 47.104.224.45:8848 + + wx62aba559696345af + a93c3dd28ce34fb96228830141e51549 + 111 + 111 + + + + diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/ApiApplication.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/ApiApplication.java index 6e75e8720..116122eeb 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/ApiApplication.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/ApiApplication.java @@ -1,8 +1,8 @@ /** * Copyright (c) 2018 人人开源 All rights reserved. - * + *

* https://www.renren.io - * + *

* 版权所有,侵权必究! */ @@ -19,7 +19,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; * @author Mark sunlightcs@gmail.com * @since 1.0.0 */ -@SpringBootApplication +@SpringBootApplication(scanBasePackages = {"com.elink.esua.epdc"}) @EnableDiscoveryClient @EnableFeignClients public class ApiApplication { diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/controller/WxController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/controller/WxController.java new file mode 100644 index 000000000..0357ff904 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/controller/WxController.java @@ -0,0 +1,33 @@ +package com.elink.esua.epdc.wx.controller; + +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.wx.service.WxService; +import me.chanjar.weixin.common.bean.WxJsapiSignature; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 微信Controller + * + * @author rongchao + * @Date 19-9-4 + */ +@RestController +@RequestMapping("wx") +public class WxController { + + @Autowired + private WxService wxService; + + /** + * 获取用户信息 + * + * @return + */ + @GetMapping("getWxConfig") + public Result getWxConfig(String url) { + return wxService.getWxConfig(url); + } +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/service/WxService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/service/WxService.java new file mode 100644 index 000000000..17ae1c39a --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/service/WxService.java @@ -0,0 +1,20 @@ +package com.elink.esua.epdc.wx.service; + +import com.elink.esua.epdc.commons.tools.utils.Result; +import me.chanjar.weixin.common.bean.WxJsapiSignature; + +/** + * 微信接口类 + * + * @author rongchao + * @Date 19-9-4 + */ +public interface WxService { + + /** + * 获取微信jssdk配置信息 + * + * @return + */ + Result getWxConfig(String url); +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/service/impl/WxServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/service/impl/WxServiceImpl.java new file mode 100644 index 000000000..803e1c31e --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/wx/service/impl/WxServiceImpl.java @@ -0,0 +1,38 @@ +package com.elink.esua.epdc.wx.service.impl; + +import com.elink.esua.epdc.commons.tools.exception.RenException; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.wx.service.WxService; +import me.chanjar.weixin.common.bean.WxJsapiSignature; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 微信相关服务实现类 + * + * @author rongchao + * @Date 19-9-4 + */ +@Service +public class WxServiceImpl implements WxService { + + private final Logger log = LoggerFactory.getLogger(getClass()); + + @Autowired + private WxMpService wxMpService; + + @Override + public Result getWxConfig(String url) { + try { + WxJsapiSignature wxJsapiSignature = wxMpService.createJsapiSignature(url); + return new Result().ok(wxJsapiSignature); + } catch (WxErrorException e) { + log.error("获取微信Jssdk相关配置失败"); + throw new RenException("获取微信Jssdk相关配置失败"); + } + } +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml index a3a7d17a5..c1236c0cb 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 8087 + port: @server.port@ servlet: context-path: /api @@ -16,22 +16,22 @@ spring: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss redis: - database: 0 - host: 47.104.224.45 + database: @spring.redis.index@ + host: @spring.redis.host@ timeout: 30s - port: 6379 - password: elink@888 + port: @spring.redis.port@ + password: @spring.redis.password@ datasource: druid: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://47.104.224.45:3308/epdc_api?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC - username: root - password: shibei@888 + url: @spring.datasource.druid.url@ + username: @spring.datasource.druid.username@ + password: @spring.datasource.druid.password@ cloud: nacos: discovery: - server-addr: 47.104.224.45:8848 - register-enabled: true + server-addr: @nacos.server-addr@ + register-enabled: @nacos.register-enabled@ alibaba: seata: tx-service-group: epdc-api-server-fescar-service-group @@ -65,3 +65,11 @@ mybatis-plus: cache-enabled: false call-setters-on-nulls: true jdbc-type-for-null: 'null' + +wx: + mp: + configs: + - appId: @wx.mp.configs.appId@ + secret: @wx.mp.configs.secret@ + token: @wx.mp.configs.token@ + aesKey: @wx.mp.configs.aesKey@ diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-client/pom.xml b/esua-epdc/epdc-module/epdc-app/epdc-app-client/pom.xml deleted file mode 100644 index 2b9c90eb5..000000000 --- a/esua-epdc/epdc-module/epdc-app/epdc-app-client/pom.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - epdc-app - com.esua.epdc - 1.0.0 - - 4.0.0 - - epdc-app-client - jar - - - - com.esua.epdc - epdc-commons-tools - 1.0.0 - - - com.esua.epdc - epdc-heart-client - 1.0.0 - - - com.esua.epdc - epdc-neighbor-client - 1.0.0 - - - com.esua.epdc - epdc-news-client - 1.0.0 - - - com.esua.epdc - epdc-events-client - 1.0.0 - - - com.esua.epdc - epdc-services-client - 1.0.0 - - - com.esua.epdc - epdc-user-client - 1.0.0 - - - - diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-client/src/main/java/com/elink/esua/epdc/epdc.gitkeep b/esua-epdc/epdc-module/epdc-app/epdc-app-client/src/main/java/com/elink/esua/epdc/epdc.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/pom.xml b/esua-epdc/epdc-module/epdc-app/epdc-app-server/pom.xml deleted file mode 100644 index 42ce442e0..000000000 --- a/esua-epdc/epdc-module/epdc-app/epdc-app-server/pom.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - - epdc-app - com.esua.epdc - 1.0.0 - - 4.0.0 - - epdc-app-server - jar - - - - com.esua.epdc - epdc-app-client - 1.0.0 - - - com.esua.epdc - epdc-commons-tools - 1.0.0 - - - com.esua.epdc - epdc-commons-mybatis - 1.0.0 - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework - spring-context-support - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - - - de.codecentric - spring-boot-admin-starter-client - ${spring.boot.admin.version} - - - - - ${project.artifactId} - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-surefire-plugin - - true - - - - com.spotify - docker-maven-plugin - - - - - - - - dev - - true - - - dev - - 9058 - - 2 - 47.104.224.45 - 6379 - elink@888 - - - - - epdc - elink888 - - false - 47.104.224.45:8848 - - - - - test - - test - - 9058 - - 2 - 47.104.224.45 - 6379 - elink@888 - - - - - epdc - elink888 - - false - 47.104.224.45:8848 - - - - - prod - - prod - - 9058 - - 2 - 47.104.224.45 - 6379 - elink@888 - - - - - epdc - elink888 - - false - 47.104.224.45:8848 - - - - - \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/AppApplication.java b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/AppApplication.java deleted file mode 100644 index 5fa453d6b..000000000 --- a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/AppApplication.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright (c) 2018 人人开源 All rights reserved. - *

- * https://www.renren.io - *

- * 版权所有,侵权必究! - */ - -package com.elink.esua.epdc; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.cloud.openfeign.EnableFeignClients; - -/** - * 移动端接口模块 - * - * @author Mark sunlightcs@gmail.com - * @since 1.1.0 - */ -@SpringBootApplication -@EnableDiscoveryClient -@EnableFeignClients -public class AppApplication { - - public static void main(String[] args) { - SpringApplication.run(AppApplication.class, args); - } - -} diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/config/ModuleConfigImpl.java b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/config/ModuleConfigImpl.java deleted file mode 100644 index 0a6891524..000000000 --- a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/config/ModuleConfigImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Copyright (c) 2018 人人开源 All rights reserved. - *

- * https://www.renren.io - *

- * 版权所有,侵权必究! - */ - -package com.elink.esua.epdc.config; - -import com.elink.esua.epdc.commons.tools.config.ModuleConfig; -import org.springframework.stereotype.Service; - -/** - * 模块配置信息-移动端接口模块 - * - * @author Mark sunlightcs@gmail.com - * @since 1.0.0 - */ -@Service -public class ModuleConfigImpl implements ModuleConfig { - @Override - public String getName() { - return "app"; - } -} diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/config/WebConfig.java b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/config/WebConfig.java deleted file mode 100644 index 1ca742ce7..000000000 --- a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/java/com/elink/esua/epdc/config/WebConfig.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright (c) 2018 人人开源 All rights reserved. - *

- * https://www.renren.io - *

- * 版权所有,侵权必究! - */ - -package com.elink.esua.epdc.config; - -import com.elink.esua.epdc.commons.tools.resolver.LoginUserHandlerMethodArgumentResolver; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.method.support.HandlerMethodArgumentResolver; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -import java.util.List; - -/** - * MVC配置 - * - * @author Mark sunlightcs@gmail.com - */ -@Configuration -public class WebConfig implements WebMvcConfigurer { - - @Autowired - private LoginUserHandlerMethodArgumentResolver loginUserHandlerMethodArgumentResolver; - - @Override - public void addArgumentResolvers(List argumentResolvers) { - argumentResolvers.add(loginUserHandlerMethodArgumentResolver); - } -} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/application.yml deleted file mode 100644 index 6d75d4801..000000000 --- a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/application.yml +++ /dev/null @@ -1,68 +0,0 @@ -server: - port: @server.port@ - servlet: - context-path: /epdc-app - -spring: - application: - name: epdc-app-server - # 环境 dev|test|prod - profiles: - active: @spring.profiles.active@ - messages: - encoding: UTF-8 - basename: i18n/messages,i18n/messages_common - jackson: - time-zone: GMT+8 - date-format: yyyy-MM-dd HH:mm:ss - redis: - database: @spring.redis.index@ - host: @spring.redis.host@ - timeout: 30s - port: @spring.redis.port@ - password: @spring.redis.password@ - cloud: - nacos: - discovery: - server-addr: @nacos.server-addr@ - register-enabled: @nacos.register-enabled@ - alibaba: - seata: - tx-service-group: epdc-app-server-fescar-service-group - datasource: - druid: - driver-class-name: com.mysql.jdbc.Driver - url: @spring.datasource.druid.url@ - username: @spring.datasource.druid.username@ - password: @spring.datasource.druid.password@ - - -management: - endpoints: - web: - exposure: - include: "*" - endpoint: - health: - show-details: ALWAYS - -mybatis-plus: - mapper-locations: classpath:/mapper/**/*.xml - #实体扫描,多个package用逗号或者分号分隔 - typeAliasesPackage: io.renren.entity;com.elink.esua.epdc.entity - global-config: - #数据库相关配置 - db-config: - #主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID"; - id-type: ID_WORKER - #字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断" - field-strategy: NOT_NULL - #驼峰下划线转换 - column-underline: true - banner: false - #原生配置 - configuration: - map-underscore-to-camel-case: true - cache-enabled: false - call-setters-on-nulls: true - jdbc-type-for-null: 'null' diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages.properties b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages_en_US.properties b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages_en_US.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages_zh_CN.properties b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages_zh_CN.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages_zh_TW.properties b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/messages_zh_TW.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation.properties b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation_en_US.properties b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation_en_US.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation_zh_CN.properties b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation_zh_CN.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation_zh_TW.properties b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/i18n/validation_zh_TW.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/logback-spring.xml b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/logback-spring.xml deleted file mode 100644 index dd5aa1d15..000000000 --- a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/logback-spring.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - debug - - - ${CONSOLE_LOG_PATTERN} - - UTF-8 - - - - - - - - ${log.path}/debug.log - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n - UTF-8 - - - - - ${log.path}/debug-%d{yyyy-MM-dd}.%i.log - - 100MB - - - 15 - - - - debug - ACCEPT - DENY - - - - - - - ${log.path}/info.log - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n - UTF-8 - - - - - ${log.path}/info-%d{yyyy-MM-dd}.%i.log - - 100MB - - - 15 - - - - info - ACCEPT - DENY - - - - - - - ${log.path}/warn.log - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n - UTF-8 - - - - ${log.path}/warn-%d{yyyy-MM-dd}.%i.log - - 100MB - - - 15 - - - - warn - ACCEPT - DENY - - - - - - - ${log.path}/error.log - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n - UTF-8 - - - - ${log.path}/error-%d{yyyy-MM-dd}.%i.log - - 100MB - - - 15 - - - - ERROR - ACCEPT - DENY - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/registry.conf b/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/registry.conf deleted file mode 100644 index 9cfedf9cc..000000000 --- a/esua-epdc/epdc-module/epdc-app/epdc-app-server/src/main/resources/registry.conf +++ /dev/null @@ -1,21 +0,0 @@ -registry { - # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa - type = "nacos" - - nacos { - serverAddr = "47.104.224.45" - namespace = "public" - cluster = "default" - } -} - -config { - # file、nacos 、apollo、zk、consul、etcd3 - type = "nacos" - - nacos { - serverAddr = "47.104.224.45" - namespace = "public" - cluster = "default" - } -} diff --git a/esua-epdc/epdc-module/epdc-app/pom.xml b/esua-epdc/epdc-module/epdc-app/pom.xml deleted file mode 100644 index cc01eb83b..000000000 --- a/esua-epdc/epdc-module/epdc-app/pom.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - epdc-module - com.esua.epdc - 1.0.0 - - 4.0.0 - - epdc-app - pom - - epdc-app-client - epdc-app-server - - - - \ No newline at end of file diff --git a/esua-epdc/epdc-module/pom.xml b/esua-epdc/epdc-module/pom.xml index 68c359200..4abd74cfe 100644 --- a/esua-epdc/epdc-module/pom.xml +++ b/esua-epdc/epdc-module/pom.xml @@ -24,7 +24,6 @@ epdc-events epdc-neighbor epdc-services - epdc-app epdc-user epdc-demo