From 4548c5045b3a5522ad14df7c939f0303c1e17587 Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Sat, 11 Oct 2025 19:07:29 +0800
Subject: [PATCH] 配送费

---
 oying-system/src/main/java/com/oying/modules/security/service/WeiXinService.java |   46 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 43 insertions(+), 3 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/security/service/WeiXinService.java b/oying-system/src/main/java/com/oying/modules/security/service/WeiXinService.java
index 4281552..7d5c7f5 100644
--- a/oying-system/src/main/java/com/oying/modules/security/service/WeiXinService.java
+++ b/oying-system/src/main/java/com/oying/modules/security/service/WeiXinService.java
@@ -26,8 +26,8 @@
     private WeiXinProperties weiXinProperties;
     @Resource
     private RedisUtils redisUtils;
-    @Value("${wx.enabled}")
-    private Boolean wxEnabled;
+    @Value("${oying.enabled}")
+    private Boolean oyingEnabled;
     @Resource
     private UserSubscribeService subscribeService;
     @Resource
@@ -54,6 +54,32 @@
         } else {
             // 查询接口调用凭据
             accessToken = (String) redisUtils.get(weiXinProperties.getTokenKey());
+        }
+        return accessToken;
+    }
+
+    /**
+     * POST 获取稳定版接口调用凭据 获取小程序全局唯一后台接口调用凭据,token有效期为7200s,开发者需要进行妥善保存。
+     *
+     * @return accessToken
+     */
+    public String getStableAccessTokenRider() {
+        String TokenKey = weiXinProperties.getTokenKey() + "_rider";
+        String accessToken;
+        if (redisUtils.isExpire(TokenKey)) {
+            // 获取接口调用凭据
+            String url = weiXinProperties.getGetStableAccessToken();
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("grant_type", "client_credential");
+            map.put("appid", weiXinProperties.getRiderAppId());
+            map.put("secret", weiXinProperties.getRiderAppSecret());
+            map.put("force_refresh", false);
+            JSONObject jsonObject = HttpRequest.exchangeJsonObject(HttpMethod.POST, url, map);
+            accessToken = jsonObject.getString("access_token");
+            redisUtils.set(TokenKey, accessToken, weiXinProperties.getTokenTime());
+        } else {
+            // 查询接口调用凭据
+            accessToken = (String) redisUtils.get(TokenKey);
         }
         return accessToken;
     }
@@ -95,6 +121,20 @@
     }
 
     /**
+     * POST 获取手机号 该接口用于将code换取用户手机号。 说明,每个code只能使用一次,code的有效期为5min。
+     *
+     * @param code 手机号获取凭证
+     * @return JSONObject
+     */
+    public JSONObject getRiderPhoneNumber(String code) {
+        String url = weiXinProperties.getGetPhoneNumber();
+        url = url.replace("{accessToken}", getStableAccessTokenRider());
+        Map<String, Object> map = new LinkedHashMap<>();
+        map.put("code", code);
+        return HttpRequest.exchangeJsonObject(HttpMethod.POST, url, map);
+    }
+
+    /**
      * POST 该接口用于发送订阅消息。
      *
      * @param data       请求参数
@@ -104,7 +144,7 @@
      */
     public void sendMessage(Map<String, Object> data, String openid, String templateId, String page) {
         JSONObject jsonObject = new JSONObject();
-        if (wxEnabled) {
+        if (oyingEnabled) {
             String url = weiXinProperties.getSendMessage();
             url = url.replace("{accessToken}", getStableAccessToken());
             Map<String, Object> map = getSendMessageDto(data, openid, templateId, page);

--
Gitblit v1.9.3