From a6ac90e29e513b80b7ad881da8e319338021ef8b Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Thu, 25 Sep 2025 22:41:40 +0800
Subject: [PATCH] 生产环境配置
---
oying-system/src/main/java/com/oying/modules/security/service/WeiXinService.java | 94 +++++++++++++++++++++++++++++++++++++++-------
1 files changed, 79 insertions(+), 15 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 2826e98..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
@@ -2,6 +2,10 @@
import com.alibaba.fastjson2.JSONObject;
import com.oying.modules.security.config.WeiXinProperties;
+import com.oying.modules.system.domain.User;
+import com.oying.modules.system.domain.UserSubscribe;
+import com.oying.modules.system.service.UserService;
+import com.oying.modules.system.service.UserSubscribeService;
import com.oying.utils.HttpRequest;
import com.oying.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
@@ -22,8 +26,12 @@
private WeiXinProperties weiXinProperties;
@Resource
private RedisUtils redisUtils;
- @Value("${wx.enabled}")
- private Boolean wxEnabled;
+ @Value("${oying.enabled}")
+ private Boolean oyingEnabled;
+ @Resource
+ private UserSubscribeService subscribeService;
+ @Resource
+ private UserService userService;
/**
* POST 获取稳定版接口调用凭据 获取小程序全局唯一后台接口调用凭据,token有效期为7200s,开发者需要进行妥善保存。
@@ -51,6 +59,32 @@
}
/**
+ * 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;
+ }
+
+ /**
* GET 小程序登录 登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程
*
* @param js_code 登录时获取的 code,可通过wx.login获取
@@ -61,7 +95,15 @@
url = url.replace("{appid}", weiXinProperties.getAppId())
.replace("{secret}", weiXinProperties.getAppSecret())
.replace("{js_code}", js_code);
- return HttpRequest.exchangeJsonObject(HttpMethod.GET, url, null);
+ return JSONObject.parseObject(HttpRequest.exchangeString(HttpMethod.GET, url, null));
+ }
+
+ public JSONObject code2SessionRider(String js_code) {
+ String url = weiXinProperties.getCode2Session();
+ url = url.replace("{appid}", weiXinProperties.getRiderAppId())
+ .replace("{secret}", weiXinProperties.getRiderAppSecret())
+ .replace("{js_code}", js_code);
+ return JSONObject.parseObject(HttpRequest.exchangeString(HttpMethod.GET, url, null));
}
/**
@@ -79,24 +121,46 @@
}
/**
- * POST 该接口用于发送订阅消息。
+ * POST 获取手机号 该接口用于将code换取用户手机号。 说明,每个code只能使用一次,code的有效期为5min。
*
- * @param data 请求参数
- * @param openId 用户openId
- * @param templateId 订阅模板id
- * @param page 小程序跳转链接
+ * @param code 手机号获取凭证
* @return JSONObject
*/
- public JSONObject sendMessage(Map<String, Object> data, String openId, String templateId, String page) {
- if (wxEnabled) {
+ 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 请求参数
+ * @param openid 用户openId
+ * @param templateId 订阅模板id
+ * @param page 小程序跳转链接
+ */
+ public void sendMessage(Map<String, Object> data, String openid, String templateId, String page) {
+ JSONObject jsonObject = new JSONObject();
+ if (oyingEnabled) {
String url = weiXinProperties.getSendMessage();
url = url.replace("{accessToken}", getStableAccessToken());
- Map<String, Object> map = getSendMessageDto(data, openId, templateId, page);
- return HttpRequest.exchangeJsonObject(HttpMethod.POST, url, map);
+ Map<String, Object> map = getSendMessageDto(data, openid, templateId, page);
+ jsonObject = HttpRequest.exchangeJsonObject(HttpMethod.POST, url, map);
+ } else {
+ jsonObject.put("message", "测试环境");
}
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("message", "测试环境");
- return jsonObject;
+ User user = userService.findByOpenid(openid);
+ UserSubscribe sub = new UserSubscribe();
+ sub.setSubType(templateId);
+ sub.setUserId(user.getId());
+ sub.setOpenid(openid);
+ sub.setUsername(user.getUsername());
+ sub.setSendMessage(JSONObject.toJSONString(data));
+ sub.setSubMessage(jsonObject.toJSONString());
+ subscribeService.save(sub);
}
private Map<String, Object> getSendMessageDto(Map<String, Object> data, String openId, String templateId, String page) {
--
Gitblit v1.9.3