From 2abb4faacf9da4713947fffc11ebd2ddf3eae8e5 Mon Sep 17 00:00:00 2001 From: akhan Date: Tue, 1 Apr 2025 14:53:49 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9C=A8=20feat:=20=E5=BE=AE=E4=BF=A1JSSDK?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pigx/mp/controller/WxJssdkController.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java new file mode 100644 index 000000000..365b1f6eb --- /dev/null +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java @@ -0,0 +1,56 @@ +package com.pig4cloud.pigx.mp.controller; + +import cn.hutool.core.util.StrUtil; +import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.security.annotation.Inner; +import com.pig4cloud.pigx.mp.config.WxMpInitConfigRunner; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.bean.WxJsapiSignature; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpService; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * 微信JSSDK配置 + * + * @author akhan + * @date 13:59 2025/4/1 + */ +@Slf4j +@Inner(value = false) +@RestController +@AllArgsConstructor +@RequestMapping("/{appId}/jssdk-config") +public class WxJssdkController { + + @GetMapping + public R getJssdkConfig(@PathVariable("appId") String appId, + @RequestParam(name = "url", required = false) String url){ + if (StrUtil.isAllBlank(url)) { + throw new IllegalArgumentException("请求参数非法,请核实!"); + } + + final WxMpService wxService = WxMpInitConfigRunner.getMpServices().get(appId); + + if (wxService == null) { + throw new IllegalArgumentException(String.format("未找到对应appid=[%d]的配置,请核实!", appId)); + } + + try { + WxJsapiSignature signature = wxService.createJsapiSignature(url); + + return R.ok(Map.of( + "appId", signature.getAppId(), + "timestamp", signature.getTimestamp(), + "nonceStr", signature.getNonceStr(), + "signature", signature.getSignature() + )); + } catch (WxErrorException e) { + log.error("获取微信js api出现错误: {}", e.getLocalizedMessage()); + return R.failed("获取微信js api出现错误: " + e.getLocalizedMessage()); + } + } +} From bf410db2ebcffe92e281cab61b1395cda48b7112 Mon Sep 17 00:00:00 2001 From: akhan Date: Wed, 2 Apr 2025 14:20:54 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E2=9C=A8=20feat:=20=E5=BE=AE=E4=BF=A1JSSDK?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pigx/mp/controller/WxJssdkController.java | 56 ------------------- .../mp/controller/WxPortalController.java | 34 +++++++++++ 2 files changed, 34 insertions(+), 56 deletions(-) delete mode 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java deleted file mode 100644 index 365b1f6eb..000000000 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.pig4cloud.pigx.mp.controller; - -import cn.hutool.core.util.StrUtil; -import com.pig4cloud.pigx.common.core.util.R; -import com.pig4cloud.pigx.common.security.annotation.Inner; -import com.pig4cloud.pigx.mp.config.WxMpInitConfigRunner; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import me.chanjar.weixin.common.bean.WxJsapiSignature; -import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.mp.api.WxMpService; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -/** - * 微信JSSDK配置 - * - * @author akhan - * @date 13:59 2025/4/1 - */ -@Slf4j -@Inner(value = false) -@RestController -@AllArgsConstructor -@RequestMapping("/{appId}/jssdk-config") -public class WxJssdkController { - - @GetMapping - public R getJssdkConfig(@PathVariable("appId") String appId, - @RequestParam(name = "url", required = false) String url){ - if (StrUtil.isAllBlank(url)) { - throw new IllegalArgumentException("请求参数非法,请核实!"); - } - - final WxMpService wxService = WxMpInitConfigRunner.getMpServices().get(appId); - - if (wxService == null) { - throw new IllegalArgumentException(String.format("未找到对应appid=[%d]的配置,请核实!", appId)); - } - - try { - WxJsapiSignature signature = wxService.createJsapiSignature(url); - - return R.ok(Map.of( - "appId", signature.getAppId(), - "timestamp", signature.getTimestamp(), - "nonceStr", signature.getNonceStr(), - "signature", signature.getSignature() - )); - } catch (WxErrorException e) { - log.error("获取微信js api出现错误: {}", e.getLocalizedMessage()); - return R.failed("获取微信js api出现错误: " + e.getLocalizedMessage()); - } - } -} diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java index 96cfaa06d..44b564334 100644 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java @@ -3,6 +3,7 @@ package com.pig4cloud.pigx.mp.controller; import cn.hutool.core.util.StrUtil; import com.pig4cloud.pigx.common.api.encrypt.annotation.NoEncrypt; import com.pig4cloud.pigx.common.core.constant.SecurityConstants; +import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.data.tenant.TenantBroker; import com.pig4cloud.pigx.common.security.annotation.Inner; import com.pig4cloud.pigx.common.xss.core.XssCleanIgnore; @@ -10,11 +11,15 @@ import com.pig4cloud.pigx.mp.config.WxMpContextHolder; import com.pig4cloud.pigx.mp.config.WxMpInitConfigRunner; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.bean.WxJsapiSignature; +import me.chanjar.weixin.common.error.WxErrorException; 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.web.bind.annotation.*; +import java.util.Map; + /** * @author Binary Wang * @author lengleng @@ -87,6 +92,35 @@ public class WxPortalController { (id) -> handleMessage(appId, requestBody, signature, timestamp, nonce, openid, encType, msgSignature)); } + @XssCleanIgnore + @GetMapping + public R getJssdkConfig(@PathVariable("appId") String appId, + @RequestParam(name = "url", required = false) String url){ + if (StrUtil.isAllBlank(url)) { + throw new IllegalArgumentException("请求参数非法,请核实!"); + } + + final WxMpService wxService = WxMpInitConfigRunner.getMpServices().get(appId); + + if (wxService == null) { + throw new IllegalArgumentException(String.format("未找到对应appid=[%d]的配置,请核实!", appId)); + } + + try { + WxJsapiSignature signature = wxService.createJsapiSignature(url); + + return R.ok(Map.of( + "appId", signature.getAppId(), + "timestamp", signature.getTimestamp(), + "nonceStr", signature.getNonceStr(), + "signature", signature.getSignature() + )); + } catch (WxErrorException e) { + log.error("获取微信js api出现错误: {}", e.getLocalizedMessage()); + return R.failed("获取微信js api出现错误: " + e.getLocalizedMessage()); + } + } + /** * 微信消息处理 * @param appId 多公众号标志位 From cee6524ffb3bfcb2fdffe09d9246ac7d8b7e9df0 Mon Sep 17 00:00:00 2001 From: akhan Date: Wed, 2 Apr 2025 14:30:00 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E2=9C=A8=20feat:=20=E5=BE=AE=E4=BF=A1JSSDK?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/pig4cloud/pigx/mp/controller/WxPortalController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java index 44b564334..473a1cff6 100644 --- a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java @@ -93,7 +93,7 @@ public class WxPortalController { } @XssCleanIgnore - @GetMapping + @GetMapping("/jssdk-config") public R getJssdkConfig(@PathVariable("appId") String appId, @RequestParam(name = "url", required = false) String url){ if (StrUtil.isAllBlank(url)) {