From 8c2974522824eff3d703b6eda017b3d41aee533d Mon Sep 17 00:00:00 2001 From: dzq Date: Fri, 19 Sep 2025 16:29:09 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=BE=AE=E4=BF=A1=E6=8E=88=E6=9D=83):=20?= =?UTF-8?q?=E5=9C=A8=E6=89=80=E6=9C=89=E5=BE=AE=E4=BF=A1=E6=8E=88=E6=9D=83?= =?UTF-8?q?URL=E4=B8=AD=E6=B7=BB=E5=8A=A0corpid=E5=8F=82=E6=95=B0=E5=B9=B6?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改多个服务和应用层代码,确保微信授权URL中正确传递corpid参数。 当未接收到corpid参数时,使用默认值并记录警告日志。 同时更新相关重定向逻辑以保持参数一致性。 --- .../customize/service/job/QywxMessageJob.java | 2 +- .../api/controller/ShopController.java | 76 +++++++++++++++---- .../domain/asset/AssetApplicationService.java | 2 +- .../ReturnApprovalApplicationService.java | 2 +- .../shop/order/OrderApplicationService.java | 2 +- 5 files changed, 66 insertions(+), 18 deletions(-) diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/job/QywxMessageJob.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/job/QywxMessageJob.java index 4e3a8fa..df6432b 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/job/QywxMessageJob.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/job/QywxMessageJob.java @@ -193,7 +193,7 @@ public class QywxMessageJob { article.setDescription("你借用的 【" + record.getGoodsName() + "】 已逾期未归还,请及时归还"); article.setPicurl(record.getCoverImg()); String serverHost = CacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); - article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_HOME_URL); + article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_HOME_URL + "?corpid=" + authCorpInfo.getCorpid()); articles.add(article); QywxApiUtil.sendNewsMessage(accessToken, Integer.valueOf(authCorpInfo.getAgentid()), diff --git a/agileboot-api/src/main/java/com/agileboot/api/controller/ShopController.java b/agileboot-api/src/main/java/com/agileboot/api/controller/ShopController.java index 8f6e506..4ff1eb1 100644 --- a/agileboot-api/src/main/java/com/agileboot/api/controller/ShopController.java +++ b/agileboot-api/src/main/java/com/agileboot/api/controller/ShopController.java @@ -10,6 +10,8 @@ import com.agileboot.common.constant.UrlConstants; import com.agileboot.common.core.dto.ResponseDTO; import com.agileboot.common.enums.common.ConfigKeyEnum; import com.agileboot.domain.common.cache.CacheCenter; +import com.agileboot.domain.qywx.authCorpInfo.AuthCorpInfoApplicationService; +import com.agileboot.domain.qywx.authCorpInfo.db.QyAuthCorpInfoEntity; import com.agileboot.domain.shop.category.CategoryApplicationService; import com.agileboot.domain.shop.category.db.ShopCategoryEntity; import com.agileboot.domain.shop.category.dto.ShopCategoryDTO; @@ -47,6 +49,7 @@ public class ShopController { private final CategoryApplicationService categoryApplicationService; private final CacheCenter cacheCenter; private final WxshopConfig wxshopConfig; + private final AuthCorpInfoApplicationService authCorpInfoApplicationService; @GetMapping("/list") public ResponseDTO> getShopList(@RequestParam(required = false) String corpid, @@ -56,6 +59,7 @@ public class ShopController { if (StringUtils.isNotBlank(corpid)) { shopList = shopApplicationService.getShopListByCorpid(corpid, modeValue); } else { + log.warn("getShopList接口未接收到corpid参数,使用默认corpid: {}", WeixinConstants.corpid); shopList = shopApplicationService.getShopListByCorpid(WeixinConstants.corpid, modeValue); } return ResponseDTO.ok(shopList); @@ -64,6 +68,7 @@ public class ShopController { @GetMapping("/goods/list") public ResponseDTO> getShopGoodsList(SearchShopGoodsQuery query) { if (StringUtils.isBlank(query.getCorpid())) { + log.warn("getShopGoodsList接口未接收到corpid参数,使用默认corpid: {}", WeixinConstants.corpid); query.setCorpid(WeixinConstants.corpid); } if (query.getBelongType() == null) { @@ -161,15 +166,21 @@ public class ShopController { joiner.add(key + "=" + String.join(",", values)); }); log.info("/qy/wechatAuth 参数:{}", joiner.toString());*/ + String corpid = request.getParameter("corpid"); + if (StringUtils.isBlank(corpid)) { + log.warn("qyWechatAuthRedirect接口未接收到corpid参数,使用默认corpid: {}", WeixinConstants.corpid); + corpid = WeixinConstants.corpid; + } + QyAuthCorpInfoEntity authCorpInfo = authCorpInfoApplicationService.selectByCorpid(corpid); String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); String authUrl = "https://open.weixin.qq.com/connect/oauth2/authorize" - + "?appid=" + WeixinConstants.corpid - + "&redirect_uri=" + URLUtil.encodeQuery(serverHost + UrlConstants.APPROVAL_REDIRECT_HANDLER_URL) + + "?appid=" + authCorpInfo.getCorpid() + + "&redirect_uri=" + URLUtil.encodeQuery(serverHost + UrlConstants.APPROVAL_REDIRECT_HANDLER_URL + "?corpid=" + corpid) + "&response_type=code" + "&scope=snsapi_base" + "&state=STATE" - + "&agentid=" + WeixinConstants.agentid + + "&agentid=" + authCorpInfo.getAgentid() + "#wechat_redirect"; return new RedirectView(authUrl); } @@ -181,10 +192,16 @@ public class ShopController { */ @GetMapping("/approvalRedirect") public RedirectView approvalRedirect(HttpServletRequest request) { + String corpid = request.getParameter("corpid"); + if (StringUtils.isBlank(corpid)) { + log.warn("approvalRedirect接口未接收到corpid参数,使用默认corpid: {}", WeixinConstants.corpid); + corpid = WeixinConstants.corpid; + } + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); UriComponentsBuilder builder = UriComponentsBuilder .fromHttpUrl(serverHost + UrlConstants.APPROVAL_REDIRECT_URL) - .queryParam("corpid", WeixinConstants.corpid) + .queryParam("corpid", corpid) .queryParam("device", "APP"); request.getParameterMap().forEach((key, values) -> { @@ -203,14 +220,21 @@ public class ShopController { */ @GetMapping("/qy/wechatAuth/asset") public RedirectView qyWechatAuthAssetRedirect(HttpServletRequest request) { + String corpid = request.getParameter("corpid"); + if (StringUtils.isBlank(corpid)) { + log.warn("qyWechatAuthAssetRedirect接口未接收到corpid参数,使用默认corpid: {}", WeixinConstants.corpid); + corpid = WeixinConstants.corpid; + } + QyAuthCorpInfoEntity authCorpInfo = authCorpInfoApplicationService.selectByCorpid(corpid); + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); String authUrl = "https://open.weixin.qq.com/connect/oauth2/authorize" - + "?appid=" + WeixinConstants.corpid - + "&redirect_uri=" + URLUtil.encodeQuery(serverHost + UrlConstants.APPROVAL_ASSET_REDIRECT_HANDLER_URL) + + "?appid=" + authCorpInfo.getCorpid() + + "&redirect_uri=" + URLUtil.encodeQuery(serverHost + UrlConstants.APPROVAL_ASSET_REDIRECT_HANDLER_URL + "?corpid=" + corpid) + "&response_type=code" + "&scope=snsapi_base" + "&state=STATE" - + "&agentid=" + WeixinConstants.agentid + + "&agentid=" + authCorpInfo.getAgentid() + "#wechat_redirect"; return new RedirectView(authUrl); } @@ -222,10 +246,16 @@ public class ShopController { */ @GetMapping("/approvalAssetRedirect") public RedirectView approvalAssetRedirect(HttpServletRequest request) { + String corpid = request.getParameter("corpid"); + if (StringUtils.isBlank(corpid)) { + log.warn("approvalAssetRedirect接口未接收到corpid参数,使用默认corpid: {}", WeixinConstants.corpid); + corpid = WeixinConstants.corpid; + } + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); UriComponentsBuilder builder = UriComponentsBuilder .fromHttpUrl(serverHost + UrlConstants.APPROVAL_ASSET_REDIRECT_URL) - .queryParam("corpid", WeixinConstants.corpid) + .queryParam("corpid", corpid) .queryParam("device", "APP"); request.getParameterMap().forEach((key, values) -> { @@ -244,19 +274,25 @@ public class ShopController { */ @GetMapping("/qy/wechatAuth/home") public RedirectView qyWechatAuthHomeRedirect(HttpServletRequest request) { + String corpid = request.getParameter("corpid"); + if (StringUtils.isBlank(corpid)) { + log.warn("qyWechatAuthHomeRedirect接口未接收到corpid参数,使用默认corpid: {}", WeixinConstants.corpid); + corpid = WeixinConstants.corpid; + } + QyAuthCorpInfoEntity authCorpInfo = authCorpInfoApplicationService.selectByCorpid(corpid); + String userAgent = request.getHeader("User-Agent"); boolean isMobile = UserAgentUtil.parse(userAgent).isMobile(); - String redirectPath = isMobile ? "homeRedirect" : "adminRedirect"; String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); String redirectHandlerUrl = isMobile ? UrlConstants.HOME_REDIRECT_HANDLER_URL : UrlConstants.ADMIN_REDIRECT_HANDLER_URL; String authUrl = "https://open.weixin.qq.com/connect/oauth2/authorize" - + "?appid=" + WeixinConstants.corpid - + "&redirect_uri=" + URLUtil.encodeQuery(serverHost + redirectHandlerUrl) + + "?appid=" + authCorpInfo.getCorpid() + + "&redirect_uri=" + URLUtil.encodeQuery(serverHost + redirectHandlerUrl + "?corpid=" + corpid) + "&response_type=code" + "&scope=snsapi_base" + "&state=STATE" - + "&agentid=" + WeixinConstants.agentid + + "&agentid=" + authCorpInfo.getAgentid() + "#wechat_redirect"; return new RedirectView(authUrl); } @@ -269,10 +305,16 @@ public class ShopController { */ @GetMapping("/homeRedirect") public RedirectView homeRedirect(HttpServletRequest request) { + String corpid = request.getParameter("corpid"); + if (StringUtils.isBlank(corpid)) { + log.warn("homeRedirect接口未接收到corpid参数,使用默认corpid: {}", WeixinConstants.corpid); + corpid = WeixinConstants.corpid; + } + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); UriComponentsBuilder builder = UriComponentsBuilder .fromHttpUrl(serverHost + UrlConstants.HOME_REDIRECT_URL) - .queryParam("corpid", WeixinConstants.corpid) + .queryParam("corpid", corpid) .queryParam("device", "APP"); request.getParameterMap().forEach((key, values) -> { @@ -292,10 +334,16 @@ public class ShopController { */ @GetMapping("/adminRedirect") public RedirectView adminRedirect(HttpServletRequest request) { + String corpid = request.getParameter("corpid"); + if (StringUtils.isBlank(corpid)) { + log.warn("adminRedirect接口未接收到corpid参数,使用默认corpid: {}", WeixinConstants.corpid); + corpid = WeixinConstants.corpid; + } + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); UriComponentsBuilder builder = UriComponentsBuilder .fromHttpUrl(serverHost + UrlConstants.ADMIN_REDIRECT_URL) - .queryParam("corpid", WeixinConstants.corpid) + .queryParam("corpid", corpid) .queryParam("device", "PC"); request.getParameterMap().forEach((key, values) -> { diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java index fd8fc06..d91ae41 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/asset/AssetApplicationService.java @@ -199,7 +199,7 @@ public class AssetApplicationService { } article.setPicurl(firstGoods.getCoverImg()); String serverHost = CacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); - article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_ASSET_URL); + article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_ASSET_URL + "?corpid=" + postAssetApprovalCommand.getCorpid()); articles.add(article); QywxApiUtil.sendNewsMessage(accessToken.getAccessToken(), Integer.valueOf(authCorpInfo.getAgentid()), diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java index 4d4dd90..5f5a7a8 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java @@ -815,7 +815,7 @@ public class ReturnApprovalApplicationService { article.setDescription("退还商品:" + orderGoods.getGoodsName()); article.setPicurl(orderGoods.getCoverImg()); String serverHost = CacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); - article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_URL); + article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_URL + "?corpid=" + command.getCorpid()); articles.add(article); QywxApiUtil.sendNewsMessage(accessToken.getAccessToken(), Integer.valueOf(authCorpInfo.getAgentid()), diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java index ed7e33d..fa9ed70 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java @@ -288,7 +288,7 @@ public class OrderApplicationService { article.setPicurl(firstOrderGoods.getCoverImg()); String serverHost = CacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); - article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_URL); + article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_URL + "?corpid=" + command.getCorpid()); articles.add(article); QywxApiUtil.sendNewsMessage(accessToken.getAccessToken(), Integer.valueOf(authCorpInfo.getAgentid()),