瀏覽代碼

wxservice 适配两个公众号

wcq 1 年之前
父節點
當前提交
1bbcf044ae

+ 10 - 0
src/main/java/com/ematou/wxservice/api/WeChatApi.java

@@ -13,6 +13,12 @@ public enum WeChatApi {
     GET_TOKEN("https://wxbase.ds-bay.com/wxbase/token", "GET"),
 
     /**
+     * 微信基础服务获取AccessToken
+     */
+    GET_TOKEN_NEW("https://wxbase.ds-bay.com/wxbase/token/%s", "GET"),
+
+
+    /**
      * 微信基础服务获取ticket
      */
     GET_TICKET("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=jsapi", "GET"),
@@ -22,6 +28,10 @@ public enum WeChatApi {
      */
     GENERAL_TOKEN("https://wxbase.ds-bay.com/wxbase/generate/token", "GET"),
     /**
+     * 微信基础服务生成AccessToken
+     */
+    GENERAL_TOKEN_NEW("https://wxbase.ds-bay.com/wxbase/generate/token/%s", "GET"),
+    /**
      * 获取用户信息,只能获取到openId,如需要使用unionId,需要将公众号绑定到微信开放平台帐号
      */
     GET_USER_INFO("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN", "GET"),

+ 31 - 0
src/main/java/com/ematou/wxservice/common/constant/WeChatAccount.java

@@ -0,0 +1,31 @@
+package com.ematou.wxservice.common.constant;
+
+public enum WeChatAccount {
+    E_MA_TO("emato","e码头e站通公众号"),
+    QH_E_MA_TO("qhemato","前海e码头公众号");
+
+
+    private String item;
+    private String itemName;
+
+    WeChatAccount(String item, String itemName) {
+        this.item = item;
+        this.itemName = itemName;
+    }
+
+    public String getItem() {
+        return item;
+    }
+
+    public void setItem(String item) {
+        this.item = item;
+    }
+
+    public String getItemName() {
+        return itemName;
+    }
+
+    public void setItemName(String itemName) {
+        this.itemName = itemName;
+    }
+}

+ 57 - 24
src/main/java/com/ematou/wxservice/mp/menu/MenuButtonManager.java

@@ -4,11 +4,13 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ematou.wxservice.api.WeChatApi;
 import com.ematou.wxservice.api.WeChatApiRestTemplate;
+import com.ematou.wxservice.common.constant.WeChatAccount;
 import com.ematou.wxservice.common.constant.WeChatConstant;
 import com.ematou.wxservice.service.WeChatService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
@@ -38,39 +40,70 @@ public class MenuButtonManager {
     @Autowired
     WeChatService weChatService;
 
+    @Value("${wechat}")
+    String wechat;
+
     @PostConstruct
     public void init() {
         // TODO 初始化菜单按钮
         //ViewButton testBtn = new ViewButton("测试按钮", WeChatConstant.EventType.VIEW.toLowerCase(), "http://f3dhion.nat.ipyingshe.com/view/main");
-
-        ClickButton myCodeBtn = new ClickButton("我的取件码", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.MY_TAKE_PARCEL_CODE);
-        ClickButton scanPush = new ClickButton("扫码取件", WeChatConstant.EventType.SCANCODE_PUSH.toLowerCase(), WeChatConstant.CustomEventKey.SCANCODE_PUSH_BUTTON);
-        //ClickButton myHistoryBtn = new ClickButton("取件历史", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.MY_HISTORY_RECORD);
-        //ViewButton addressEntryBtn = new ViewButton("收货地址管理", WeChatConstant.EventType.VIEW.toLowerCase(), "http://kmall-test.ds-bay.com:8080/qrcode/verification.html");
-        MenuButton takeParcelMenuButton = new MenuButton("取件服务");
-        takeParcelMenuButton.setSub_button(Arrays.asList(scanPush)); // myCodeBtn  我的取件码菜单屏蔽
-
-        ViewButton companyState = new ViewButton("公司状态", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=3&sn=da0db13971baf7a27bf639f2f7eaebbe&scene=18#wechat_redirect");
-        ViewButton companyInfo = new ViewButton("公司简介", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/s?__biz=MzIwMTI2MTg1MA==&mid=503159833&idx=1&sn=fbddc8c56f960d7912cee60c959c42e8&chksm=0ef9aa6c398e237a862143c4f4c7314c0159a77e87ad4fd39a89d22181bcb05aedc9a816c8b2&scene=18#wechat_redirect");
-        ViewButton industryReport = new ViewButton("行业周报", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=1&sn=f7becf0ef818d4a57a4ca4acfde72613&scene=18#wechat_redirect");
-        ClickButton policySupport = new ClickButton("政策支持", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.POLICY_SUPPORT);
-        ClickButton callCompanyBtn = new ClickButton("联系我们", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.CALL_COMPANY);
-        MenuButton companyMenuButton = new MenuButton("公司信息");
-        companyMenuButton.setSub_button(Arrays.asList(companyState, companyInfo, policySupport, industryReport, callCompanyBtn));
-
-        ViewButton supplier = new ViewButton("供应商拓展", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=2&sn=cd51f61ada3218168fe3af6c3318b6ca&scene=18#wechat_redirect");
-        ViewButton showGoods = new ViewButton("货源展示区", WeChatConstant.EventType.VIEW.toLowerCase(), "https://mp.weixin.qq.com/bizmall/mallshelf?id=&t=mall/list&biz=MzIwMTI2MTg1MA==&shelf_id=5&showwxpaytitle=1#wechat_redirect");
-        ViewButton showNews = new ViewButton("展会快讯", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=4&sn=89a19c85a4742d13eb3e4ceab2179ba8&scene=18#wechat_redirect");
-        MenuButton goodsMenuButton = new MenuButton("货源展示");
-        goodsMenuButton.setSub_button(Arrays.asList(supplier, showGoods, showNews));
-
         HashMap<String, List<Button>> map = new HashMap<>();
-        map.put("button", Arrays.asList(companyMenuButton, goodsMenuButton, takeParcelMenuButton));
+        if(WeChatAccount.E_MA_TO.getItem().equals(wechat)){
+            ClickButton myCodeBtn = new ClickButton("我的取件码", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.MY_TAKE_PARCEL_CODE);
+            ClickButton scanPush = new ClickButton("扫码取件", WeChatConstant.EventType.SCANCODE_PUSH.toLowerCase(), WeChatConstant.CustomEventKey.SCANCODE_PUSH_BUTTON);
+            //ClickButton myHistoryBtn = new ClickButton("取件历史", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.MY_HISTORY_RECORD);
+            //ViewButton addressEntryBtn = new ViewButton("收货地址管理", WeChatConstant.EventType.VIEW.toLowerCase(), "http://kmall-test.ds-bay.com:8080/qrcode/verification.html");
+            MenuButton takeParcelMenuButton = new MenuButton("取件服务");
+            takeParcelMenuButton.setSub_button(Arrays.asList(scanPush)); // myCodeBtn  我的取件码菜单屏蔽
+
+            ViewButton companyState = new ViewButton("公司状态", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=3&sn=da0db13971baf7a27bf639f2f7eaebbe&scene=18#wechat_redirect");
+            ViewButton companyInfo = new ViewButton("公司简介", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/s?__biz=MzIwMTI2MTg1MA==&mid=503159833&idx=1&sn=fbddc8c56f960d7912cee60c959c42e8&chksm=0ef9aa6c398e237a862143c4f4c7314c0159a77e87ad4fd39a89d22181bcb05aedc9a816c8b2&scene=18#wechat_redirect");
+            ViewButton industryReport = new ViewButton("行业周报", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=1&sn=f7becf0ef818d4a57a4ca4acfde72613&scene=18#wechat_redirect");
+            ClickButton policySupport = new ClickButton("政策支持", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.POLICY_SUPPORT);
+            ClickButton callCompanyBtn = new ClickButton("联系我们", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.CALL_COMPANY);
+            MenuButton companyMenuButton = new MenuButton("公司信息");
+            companyMenuButton.setSub_button(Arrays.asList(companyState, companyInfo, policySupport, industryReport, callCompanyBtn));
+
+            ViewButton supplier = new ViewButton("供应商拓展", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=2&sn=cd51f61ada3218168fe3af6c3318b6ca&scene=18#wechat_redirect");
+            ViewButton showGoods = new ViewButton("货源展示区", WeChatConstant.EventType.VIEW.toLowerCase(), "https://mp.weixin.qq.com/bizmall/mallshelf?id=&t=mall/list&biz=MzIwMTI2MTg1MA==&shelf_id=5&showwxpaytitle=1#wechat_redirect");
+            ViewButton showNews = new ViewButton("展会快讯", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=4&sn=89a19c85a4742d13eb3e4ceab2179ba8&scene=18#wechat_redirect");
+            MenuButton goodsMenuButton = new MenuButton("货源展示");
+            goodsMenuButton.setSub_button(Arrays.asList(supplier, showGoods, showNews));
+
+            map.put("button", Arrays.asList(companyMenuButton, goodsMenuButton, takeParcelMenuButton));
+
+        } else if (WeChatAccount.QH_E_MA_TO.getItem().equals(wechat)) {
+            ClickButton myCodeBtn = new ClickButton("我的取件码", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.MY_TAKE_PARCEL_CODE);
+            ClickButton scanPush = new ClickButton("扫码取件", WeChatConstant.EventType.SCANCODE_PUSH.toLowerCase(), WeChatConstant.CustomEventKey.SCANCODE_PUSH_BUTTON);
+            //ClickButton myHistoryBtn = new ClickButton("取件历史", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.MY_HISTORY_RECORD);
+            //ViewButton addressEntryBtn = new ViewButton("收货地址管理", WeChatConstant.EventType.VIEW.toLowerCase(), "http://kmall-test.ds-bay.com:8080/qrcode/verification.html");
+            MenuButton takeParcelMenuButton = new MenuButton("取件服务");
+            takeParcelMenuButton.setSub_button(Arrays.asList(scanPush)); // myCodeBtn  我的取件码菜单屏蔽
+
+            ViewButton companyState = new ViewButton("公司状态", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=3&sn=da0db13971baf7a27bf639f2f7eaebbe&scene=18#wechat_redirect");
+            ViewButton companyInfo = new ViewButton("公司简介", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/s?__biz=MzIwMTI2MTg1MA==&mid=503159833&idx=1&sn=fbddc8c56f960d7912cee60c959c42e8&chksm=0ef9aa6c398e237a862143c4f4c7314c0159a77e87ad4fd39a89d22181bcb05aedc9a816c8b2&scene=18#wechat_redirect");
+            ViewButton industryReport = new ViewButton("行业周报", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=1&sn=f7becf0ef818d4a57a4ca4acfde72613&scene=18#wechat_redirect");
+            ClickButton policySupport = new ClickButton("政策支持", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.POLICY_SUPPORT);
+            ClickButton callCompanyBtn = new ClickButton("联系我们", WeChatConstant.EventType.CLICK.toLowerCase(), WeChatConstant.CustomEventKey.CALL_COMPANY);
+            MenuButton companyMenuButton = new MenuButton("公司信息");
+            companyMenuButton.setSub_button(Arrays.asList(companyState, companyInfo, policySupport, industryReport, callCompanyBtn));
+
+            ViewButton supplier = new ViewButton("供应商拓展", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=2&sn=cd51f61ada3218168fe3af6c3318b6ca&scene=18#wechat_redirect");
+            ViewButton showGoods = new ViewButton("货源展示区", WeChatConstant.EventType.VIEW.toLowerCase(), "https://mp.weixin.qq.com/bizmall/mallshelf?id=&t=mall/list&biz=MzIwMTI2MTg1MA==&shelf_id=5&showwxpaytitle=1#wechat_redirect");
+            ViewButton showNews = new ViewButton("展会快讯", WeChatConstant.EventType.VIEW.toLowerCase(), "http://mp.weixin.qq.com/mp/homepage?__biz=MzIwMTI2MTg1MA==&hid=4&sn=89a19c85a4742d13eb3e4ceab2179ba8&scene=18#wechat_redirect");
+            MenuButton goodsMenuButton = new MenuButton("货源展示");
+            goodsMenuButton.setSub_button(Arrays.asList(supplier, showGoods, showNews));
+
+
+            map.put("button", Arrays.asList(companyMenuButton, goodsMenuButton, takeParcelMenuButton));
+
+
+        }
 
         String menu = JSON.toJSONString(map);
-
         logger.info("初始化菜单信息:" + menu);
 
+
         CompletableFuture<Void> runAsync = CompletableFuture.runAsync(() -> {
             int retry = 0;
             while (retry < 3) {

+ 5 - 2
src/main/java/com/ematou/wxservice/service/WeChatMessageService.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ematou.wxservice.api.WeChatApi;
 import com.ematou.wxservice.api.WeChatApiRestTemplate;
+import com.ematou.wxservice.common.constant.WeChatAccount;
 import com.ematou.wxservice.config.WeChatGeneralConfig;
 import com.ematou.wxservice.entity.vo.AccessToken;
 import com.ematou.wxservice.mp.message.WeChatMessage;
@@ -14,6 +15,7 @@ import com.ematou.wxservice.utils.HttpUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
@@ -35,7 +37,8 @@ public class WeChatMessageService {
     RestTemplate restTemplate;
     @Autowired
     WeChatApiRestTemplate weChatApiRestTemplate;
-
+    @Value ("${wechat}")
+    String wechat;
     private static final Logger logger = LoggerFactory.getLogger(WeChatMessageHandlerRouter.class);
 
     /**
@@ -62,7 +65,7 @@ public class WeChatMessageService {
      * 生成二维码信息
      */
     public String generateqRcodeService(JSONObject msgmap) {
-        String response = weChatApiRestTemplate.getForOther(WeChatApi.GET_TOKEN.getUrl());
+        String response = weChatApiRestTemplate.getForOther(String.format(WeChatApi.GET_TOKEN_NEW.getUrl(), wechat));
         AccessToken accessToken = JSON.parseObject(response).getObject("data", AccessToken.class);
         String msg = HttpUtils.sendPost(" https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token="+accessToken.getAccessToken(),msgmap.toJSONString());
         return msg;

+ 5 - 3
src/main/java/com/ematou/wxservice/service/WeChatService.java

@@ -15,6 +15,7 @@ import com.ematou.wxservice.mapper.UserInfoMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
@@ -44,17 +45,18 @@ public class WeChatService {
     UserInfoMapper userInfoMapper;
     @Autowired
     WeChatMessageService weChatMessageService;
-
+    @Value("${wechat}")
+    String wechat;
     /**
      * 获取普通AccessToken
      * @return AccessToken
      * @throws RuntimeException 异常
      */
     public AccessToken getAccessToken() throws RuntimeException {
-        String response = weChatApiRestTemplate.getForOther(WeChatApi.GET_TOKEN.getUrl());
+        String response = weChatApiRestTemplate.getForOther(String.format(WeChatApi.GET_TOKEN_NEW.getUrl(),wechat));
         AccessToken accessToken = JSON.parseObject(response).getObject("data", AccessToken.class);
         if (null == accessToken) {
-            response = weChatApiRestTemplate.getForOther(WeChatApi.GENERAL_TOKEN.getUrl());
+            response = weChatApiRestTemplate.getForOther(String.format(WeChatApi.GET_TOKEN_NEW.getUrl(),wechat));
             accessToken = JSON.parseObject(response).getObject("data", AccessToken.class);
             if (null == accessToken) {
                 logger.error("微信基础服务可能已经宕机!response:" + response);

+ 4 - 0
src/main/resources/application.yml

@@ -34,3 +34,7 @@ sms:
   singleUrl: https://sms.yunpian.com/v2/sms/single_send.json
   # 短信模板
   smsContent: 【前海电商】欢迎绑定%s公众号,您的手机验证码是%s。本条信息无需回复
+#e码头e站通公众号
+wechat: emato
+#前海e码头公众号
+#wechat: qhemato