From fe031e01cc1737c2f05a133fde7c36c7a2a7b4b4 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期三, 21 一月 2026 17:38:32 +0800
Subject: [PATCH] 2026.1.21 1. 新增完善台账复制逻辑
---
src/main/kotlin/cn/flightfeather/supervision/common/net/WXHttpService.kt | 88 +++++++++++++++++++++++++++++++++++++++++--
1 files changed, 83 insertions(+), 5 deletions(-)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/net/WXHttpService.kt b/src/main/kotlin/cn/flightfeather/supervision/common/net/WXHttpService.kt
index bb20893..39bd1b8 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/common/net/WXHttpService.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/common/net/WXHttpService.kt
@@ -1,5 +1,13 @@
package cn.flightfeather.supervision.common.net
+import cn.flightfeather.supervision.common.wx.MessageWxVo
+import cn.flightfeather.supervision.common.wx.WxConfig
+import com.alibaba.fastjson.JSON
+import com.alibaba.fastjson.JSONObject
+import com.google.gson.Gson
+import com.google.gson.JsonObject
+import com.google.gson.JsonParser
+
/**
* @author riku
* Date: 2020/10/15
@@ -7,17 +15,87 @@
*/
object WXHttpService {
- private const val APP_ID=""
- private const val SECRET = ""
private val httpMethod = HttpMethod("api.weixin.qq.com", 443, true)
/**
* 寰俊鐧诲綍鍑瘉鏍¢獙
*/
- fun code2Session(code: String): HttpMethod.MyResponse =
- httpMethod.get(
+ fun code2Session(code: String): Pair<String, String>? {
+ val res =httpMethod.get(
"/sns/jscode2session", listOf(
- Pair("appid", APP_ID), Pair("secret", SECRET), Pair("js_code", code), Pair("grant_type", "authorization_code")
+ Pair("appid", WxConfig.APP_ID), Pair("secret", WxConfig.SECRET), Pair("js_code", code), Pair("grant_type", "authorization_code")
)
)
+ return if (res.success) {
+ val json = JSONObject.parseObject(res.m.responseBodyAsString)
+ val errCode = json["errcode"]
+ if (errCode == 0 || errCode == null) {
+ val openid = json["openid"] as String
+ val unionid = json["session_key"] as String
+ Pair(openid, unionid)
+ } else {
+ null
+ }
+ } else {
+ null
+ }
+ }
+
+ /**
+ * 寰俊鍙戦�佽闃呮秷鎭�
+ */
+ fun sendMsg(accessToken:String, msgWxV0: MessageWxVo): Boolean {
+ val data = Gson().toJson(msgWxV0)
+ val response = httpMethod.post("/cgi-bin/message/subscribe/send?access_token=${accessToken}", data)
+ if (response.success) {
+ val json = JsonParser.parseString(response.m.responseBodyAsString)
+ if (json.isJsonObject) {
+ val jo = json.asJsonObject
+ val eMsg = jo["errmsg"]?.asString
+ when (jo["errcode"]?.asInt) {
+ 40003 -> {
+ throw IllegalStateException("寰俊璁㈤槄娑堟伅锛宼ouser瀛楁openid涓虹┖鎴栬�呬笉姝g‘锛岄敊璇俊鎭細${eMsg}")
+ }
+ 40037 -> {
+ throw IllegalStateException("寰俊璁㈤槄娑堟伅锛岃闃呮ā鏉縤d涓虹┖涓嶆纭紝閿欒淇℃伅锛�${eMsg}")
+ }
+ 43101 -> {
+ throw IllegalStateException("寰俊璁㈤槄娑堟伅锛岀敤鎴锋嫆缁濇帴鏀舵秷鎭紝閿欒淇℃伅锛�${eMsg}")
+ }
+ 47003 -> {
+ throw IllegalStateException("寰俊璁㈤槄娑堟伅锛屾ā鏉垮弬鏁颁笉鍑嗙‘锛屽叿浣撻敊璇細${eMsg}")
+ }
+ 41030 -> {
+ throw IllegalStateException("寰俊璁㈤槄娑堟伅锛宲age璺緞涓嶆纭紝閿欒淇℃伅锛�${eMsg}")
+ }
+ }
+ }
+ return true
+ } else {
+ return false
+ }
+ }
+
+ /**
+ * 鑾峰彇灏忕▼搴忓叏灞�鍚庡彴鎺ュ彛璋冪敤鍑嵁
+ */
+ fun getAccessToken(): JsonObject? {
+ val res = httpMethod.get(
+ "/cgi-bin/token", listOf(
+ Pair("grant_type", "client_credential"),
+ Pair("appid", WxConfig.APP_ID),
+ Pair("secret", WxConfig.SECRET)
+ )
+ )
+ return if (res.success) {
+ val json = JsonParser.parseString(res.m.responseBodyAsString)
+ if (json.isJsonObject) {
+ json.asJsonObject
+ } else {
+ null
+ }
+ } else {
+ null
+ }
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3