From 31adc0adc2ac9b6e6a898e3363189df01b716859 Mon Sep 17 00:00:00 2001 From: dzq Date: Fri, 19 Sep 2025 10:26:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=99=BB=E5=BD=95=E9=85=8D=E7=BD=AE):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=B9=B6=E9=87=8D=E6=9E=84URL=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将硬编码的服务器域名替换为可配置项,新增SERVER_HOST配置枚举 创建UrlConstants类集中管理所有URL路径 修改相关服务类使用配置的域名和URL常量 调整SecurityConfig中/getConfig的访问权限 --- .../customize/config/SecurityConfig.java | 4 +- .../service/job/DeadlineOrderJob.java | 6 +- .../customize/service/job/QywxMessageJob.java | 6 +- .../customize/service/login/LoginService.java | 1 + .../service/login/dto/ConfigDTO.java | 2 + .../api/controller/ShopController.java | 36 ++++++--- .../common/constant/PayApiConstants.java | 2 - .../common/constant/UrlConstants.java | 76 +++++++++++++++++++ .../common/enums/common/ConfigKeyEnum.java | 3 +- .../domain/asset/AssetApplicationService.java | 6 +- .../ReturnApprovalApplicationService.java | 6 +- .../shop/order/OrderApplicationService.java | 10 ++- .../guava/AbstractGuavaCacheTemplate.java | 2 +- 13 files changed, 138 insertions(+), 22 deletions(-) create mode 100644 agileboot-common/src/main/java/com/agileboot/common/constant/UrlConstants.java diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/SecurityConfig.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/SecurityConfig.java index f141555..7c4d250 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/SecurityConfig.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/config/SecurityConfig.java @@ -134,10 +134,10 @@ public class SecurityConfig { .authorizeRequests() // 对于登录login 注册register 验证码captchaImage 以及公共Api的请求允许匿名访问 // 注意: 当携带token请求以下这几个接口时 会返回403的错误 - .antMatchers("/login", "/register", "/getConfig", "/captchaImage", "/api/**", "/file/**").anonymous() + .antMatchers("/login", "/register", "/captchaImage", "/api/**", "/file/**").anonymous() .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() - .antMatchers("/qywx/**", "/test/**", "/monitor/**", "/getQyUserinfo").permitAll() + .antMatchers("/qywx/**", "/test/**", "/monitor/**", "/getQyUserinfo", "/getConfig").permitAll() // TODO this is danger. .antMatchers("/swagger-ui.html").anonymous() .antMatchers("/swagger-resources/**").anonymous() diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/job/DeadlineOrderJob.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/job/DeadlineOrderJob.java index c9f841c..4c83b97 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/job/DeadlineOrderJob.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/job/DeadlineOrderJob.java @@ -1,10 +1,12 @@ package com.agileboot.admin.customize.service.job; import cn.hutool.core.date.DateUtil; +import com.agileboot.common.enums.common.ConfigKeyEnum; import com.agileboot.domain.cabinet.cell.db.CabinetCellEntity; import com.agileboot.domain.cabinet.cell.db.CabinetCellService; import com.agileboot.domain.cabinet.smartCabinet.db.SmartCabinetEntity; import com.agileboot.domain.cabinet.smartCabinet.db.SmartCabinetService; +import com.agileboot.domain.common.cache.CacheCenter; import com.agileboot.domain.qywx.accessToken.AccessTokenApplicationService; import com.agileboot.domain.qywx.accessToken.db.QyAccessTokenEntity; import com.agileboot.domain.qywx.api.QywxApiUtil; @@ -199,7 +201,9 @@ public class DeadlineOrderJob { article.setDescription(String.format("用户姓名: %s, 订单号: %s, 商品名称: %s, 创建时间: %s, 归还期限: %s天, 截止日期: %s", order.getName(), order.getOrderId(), orderGoods.getGoodsName(), DateUtil.formatDateTime(order.getCreateTime()), returnDeadlineDays, DateUtil.formatDateTime(deadlineDate))); article.setPicurl(orderGoods.getCoverImg()); - article.setUrl("http://wxshop.ab98.cn/shop-api/api/shop/qy/wechatAuth"); + + String serverHost = CacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); + article.setUrl(serverHost + "/shop-api/api/shop/qy/wechatAuth"); articles.add(article); QywxApiUtil.sendNewsMessage(accessToken.getAccessToken(), Integer.valueOf(authCorpInfo.getAgentid()), 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 b86a376..4e3a8fa 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 @@ -27,6 +27,9 @@ import com.agileboot.domain.shop.order.db.ShopOrderGoodsEntity; import com.agileboot.domain.shop.order.db.ShopOrderService; import com.agileboot.domain.system.role.db.SysRoleService; import com.agileboot.domain.system.user.model.UserModelFactory; +import com.agileboot.common.enums.common.ConfigKeyEnum; +import com.agileboot.domain.common.cache.CacheCenter; +import com.agileboot.common.constant.UrlConstants; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -189,7 +192,8 @@ public class QywxMessageJob { article.setTitle("逾期未归还通知"); article.setDescription("你借用的 【" + record.getGoodsName() + "】 已逾期未归还,请及时归还"); article.setPicurl(record.getCoverImg()); - article.setUrl("http://wxshop.ab98.cn/shop-api/api/shop/qy/wechatAuth/home"); + String serverHost = CacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); + article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_HOME_URL); articles.add(article); QywxApiUtil.sendNewsMessage(accessToken, Integer.valueOf(authCorpInfo.getAgentid()), diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/LoginService.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/LoginService.java index aa99f58..394933f 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/LoginService.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/LoginService.java @@ -156,6 +156,7 @@ public class LoginService { boolean isCaptchaOn = isCaptchaOn(); configDTO.setIsCaptchaOn(isCaptchaOn); configDTO.setDictionary(MapCache.dictionaryCache()); + configDTO.setServerHost(guavaCache.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue())); return configDTO; } diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/dto/ConfigDTO.java b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/dto/ConfigDTO.java index 57f9243..3f4cdea 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/dto/ConfigDTO.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/customize/service/login/dto/ConfigDTO.java @@ -16,4 +16,6 @@ public class ConfigDTO { private Map> dictionary; private String res; + + private String serverHost; } 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 52c7357..7d22704 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 @@ -5,7 +5,10 @@ import cn.hutool.http.useragent.UserAgentUtil; import cn.hutool.json.JSONUtil; import com.agileboot.api.response.ShopGoodsResponse; import com.agileboot.common.constant.WeixinConstants; +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.shop.category.CategoryApplicationService; import com.agileboot.domain.shop.category.db.ShopCategoryEntity; import com.agileboot.domain.shop.category.dto.ShopCategoryDTO; @@ -41,6 +44,7 @@ public class ShopController { private final ShopApplicationService shopApplicationService; private final GoodsApplicationService goodsApplicationService; private final CategoryApplicationService categoryApplicationService; + private final CacheCenter cacheCenter; @GetMapping("/list") public ResponseDTO> getShopList(@RequestParam(required = false) String corpid, @@ -127,9 +131,10 @@ public class ShopController { state = "state"; } - String redirect_uri = "http%3A%2F%2Fwxshop.ab98.cn%2Fshop"; + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); + String redirect_uri = URLUtil.encodeQuery(serverHost + UrlConstants.HOME_REDIRECT_URL); if (StringUtils.isNotBlank(shopId)) { - redirect_uri += "%3FshopId%3D" + shopId; + redirect_uri += URLUtil.encodeQuery("?shopId=" + shopId); } // 构造微信网页授权URL String authUrl = "https://open.weixin.qq.com/connect/oauth2/authorize" @@ -155,9 +160,10 @@ public class ShopController { }); log.info("/qy/wechatAuth 参数:{}", joiner.toString());*/ + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); String authUrl = "https://open.weixin.qq.com/connect/oauth2/authorize" + "?appid=" + WeixinConstants.corpid - + "&redirect_uri=http%3A%2F%2Fwxshop.ab98.cn%2Fshop-api%2Fapi%2Fshop%2FapprovalRedirect" + + "&redirect_uri=" + URLUtil.encodeQuery(serverHost + UrlConstants.APPROVAL_REDIRECT_HANDLER_URL) + "&response_type=code" + "&scope=snsapi_base" + "&state=STATE" @@ -173,8 +179,9 @@ public class ShopController { */ @GetMapping("/approvalRedirect") public RedirectView approvalRedirect(HttpServletRequest request) { + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); UriComponentsBuilder builder = UriComponentsBuilder - .fromHttpUrl("http://wxshop.ab98.cn/shop#/approval/list") + .fromHttpUrl(serverHost + UrlConstants.APPROVAL_REDIRECT_URL) .queryParam("corpid", WeixinConstants.corpid) .queryParam("device", "APP"); @@ -194,9 +201,10 @@ public class ShopController { */ @GetMapping("/qy/wechatAuth/asset") public RedirectView qyWechatAuthAssetRedirect(HttpServletRequest request) { + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); String authUrl = "https://open.weixin.qq.com/connect/oauth2/authorize" + "?appid=" + WeixinConstants.corpid - + "&redirect_uri=http%3A%2F%2Fwxshop.ab98.cn%2Fshop-api%2Fapi%2Fshop%2FapprovalAssetRedirect" + + "&redirect_uri=" + URLUtil.encodeQuery(serverHost + UrlConstants.APPROVAL_ASSET_REDIRECT_HANDLER_URL) + "&response_type=code" + "&scope=snsapi_base" + "&state=STATE" @@ -212,8 +220,9 @@ public class ShopController { */ @GetMapping("/approvalAssetRedirect") public RedirectView approvalAssetRedirect(HttpServletRequest request) { + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); UriComponentsBuilder builder = UriComponentsBuilder - .fromHttpUrl("http://wxshop.ab98.cn/shop#/approvalAsset/list") + .fromHttpUrl(serverHost + UrlConstants.APPROVAL_ASSET_REDIRECT_URL) .queryParam("corpid", WeixinConstants.corpid) .queryParam("device", "APP"); @@ -237,9 +246,11 @@ public class ShopController { 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=http%3A%2F%2Fwxshop.ab98.cn%2Fshop-api%2Fapi%2Fshop%2F" + redirectPath + + "&redirect_uri=" + URLUtil.encodeQuery(serverHost + redirectHandlerUrl) + "&response_type=code" + "&scope=snsapi_base" + "&state=STATE" @@ -256,8 +267,9 @@ public class ShopController { */ @GetMapping("/homeRedirect") public RedirectView homeRedirect(HttpServletRequest request) { + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); UriComponentsBuilder builder = UriComponentsBuilder - .fromHttpUrl("http://wxshop.ab98.cn/shop") + .fromHttpUrl(serverHost + UrlConstants.HOME_REDIRECT_URL) .queryParam("corpid", WeixinConstants.corpid) .queryParam("device", "APP"); @@ -278,8 +290,9 @@ public class ShopController { */ @GetMapping("/adminRedirect") public RedirectView adminRedirect(HttpServletRequest request) { + String serverHost = cacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); UriComponentsBuilder builder = UriComponentsBuilder - .fromHttpUrl("http://wxshop.ab98.cn/shop-admin") + .fromHttpUrl(serverHost + UrlConstants.ADMIN_REDIRECT_URL) .queryParam("corpid", WeixinConstants.corpid) .queryParam("device", "PC"); @@ -296,7 +309,10 @@ public class ShopController { String res = URLEncoder.encode("token=12312", StandardCharsets.UTF_8.name()); System.out.println(res); - String url = URLUtil.encode("http://wxshop.ab98.cn/shop-api/api/shop/"); + // 注意:main方法中无法直接获取缓存,这里仅作为示例 + // 实际使用时应该从CacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue())获取 + String serverHost = "http://example.com"; + String url = URLUtil.encodeQuery(serverHost + "/shop-api/api/shop/"); System.out.println(url); } } \ No newline at end of file diff --git a/agileboot-common/src/main/java/com/agileboot/common/constant/PayApiConstants.java b/agileboot-common/src/main/java/com/agileboot/common/constant/PayApiConstants.java index 5b052c0..ea49ac3 100644 --- a/agileboot-common/src/main/java/com/agileboot/common/constant/PayApiConstants.java +++ b/agileboot-common/src/main/java/com/agileboot/common/constant/PayApiConstants.java @@ -5,7 +5,5 @@ public class PayApiConstants { public static final String old_biz_id = "wxshop_old"; public static final String appkey = "wxshop202503081132"; public static final String pay_url = "http://222.218.10.217:7890/open/trade/wx/jsapi/precreate"; - public static final String pay_callback_url = "http://wxshop.ab98.cn/shop-api/api/payment/callback"; public static final String refund_url = "http://222.218.10.217:7890/open/trade/refund"; - public static final String refund_callback_url = "http://wxshop.ab98.cn/shop-api/api/payment/refund/callback"; } diff --git a/agileboot-common/src/main/java/com/agileboot/common/constant/UrlConstants.java b/agileboot-common/src/main/java/com/agileboot/common/constant/UrlConstants.java new file mode 100644 index 0000000..9fa6024 --- /dev/null +++ b/agileboot-common/src/main/java/com/agileboot/common/constant/UrlConstants.java @@ -0,0 +1,76 @@ +package com.agileboot.common.constant; + +/** + * URL常量类 + */ +public class UrlConstants { + /** + * 服务器主机地址(从缓存中获取) + */ + public static final String SERVER_HOST = "sys.server.host"; + + /** + * 微信授权相关URL + */ + public static final String WECHAT_AUTH_URL = "/shop-api/api/shop/qy/wechatAuth"; + + /** + * 微信授权资产相关URL + */ + public static final String WECHAT_AUTH_ASSET_URL = "/shop-api/api/shop/qy/wechatAuth/asset"; + + /** + * 微信授权主页相关URL + */ + public static final String WECHAT_AUTH_HOME_URL = "/shop-api/api/shop/qy/wechatAuth/home"; + + /** + * 审批重定向URL + */ + public static final String APPROVAL_REDIRECT_URL = "/shop#/approval/list"; + + /** + * 审批重定向处理URL + */ + public static final String APPROVAL_REDIRECT_HANDLER_URL = "/shop-api/api/shop/approvalRedirect"; + + /** + * 资产审批重定向处理URL + */ + public static final String APPROVAL_ASSET_REDIRECT_HANDLER_URL = "/shop-api/api/shop/approvalAssetRedirect"; + + /** + * 主页重定向处理URL(移动端) + */ + public static final String HOME_REDIRECT_HANDLER_URL = "/shop-api/api/shop/homeRedirect"; + + /** + * 管理后台重定向处理URL(PC端) + */ + public static final String ADMIN_REDIRECT_HANDLER_URL = "/shop-api/api/shop/adminRedirect"; + + /** + * 资产审批重定向URL + */ + public static final String APPROVAL_ASSET_REDIRECT_URL = "/shop#/approvalAsset/list"; + + /** + * 主页重定向URL + */ + public static final String HOME_REDIRECT_URL = "/shop"; + + /** + * 管理后台重定向URL + */ + public static final String ADMIN_REDIRECT_URL = "/shop-admin"; + + /** + * 支付回调URL + */ + public static final String PAY_CALLBACK_URL = "/shop-api/api/payment/callback"; + + /** + * 退款回调URL + */ + public static final String REFUND_CALLBACK_URL = "/shop-api/api/payment/refund/callback"; +} \ No newline at end of file diff --git a/agileboot-common/src/main/java/com/agileboot/common/enums/common/ConfigKeyEnum.java b/agileboot-common/src/main/java/com/agileboot/common/enums/common/ConfigKeyEnum.java index 7f22fd2..199426b 100644 --- a/agileboot-common/src/main/java/com/agileboot/common/enums/common/ConfigKeyEnum.java +++ b/agileboot-common/src/main/java/com/agileboot/common/enums/common/ConfigKeyEnum.java @@ -16,7 +16,8 @@ public enum ConfigKeyEnum implements BasicEnum { INIT_PASSWORD("sys.user.initPassword", "初始密码"), SIDE_BAR_THEME("sys.index.sideTheme", "侧边栏开关"), CAPTCHA("sys.account.captchaOnOff", "验证码开关"), - REGISTER("sys.account.registerUser", "注册开放功能"); + REGISTER("sys.account.registerUser", "注册开放功能"), + SERVER_HOST("sys.server.host", "服务器域名"); private final String value; private final String description; 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 cf695fc..fd8fc06 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 @@ -2,7 +2,10 @@ package com.agileboot.domain.asset; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; +import com.agileboot.common.constant.UrlConstants; import com.agileboot.common.constant.WeixinConstants; +import com.agileboot.common.enums.common.ConfigKeyEnum; +import com.agileboot.domain.common.cache.CacheCenter; import com.agileboot.domain.asset.api.request.ConsumeOutputRequest; import com.agileboot.domain.asset.api.response.ConsumeOutputResponse; import com.agileboot.domain.asset.command.PostAssetApprovalCommand; @@ -195,7 +198,8 @@ public class AssetApplicationService { article.setDescription(postAssetApprovalCommand.getName() + " 申请领用" + firstGoods.getGoodsName()); } article.setPicurl(firstGoods.getCoverImg()); - article.setUrl("http://wxshop.ab98.cn/shop-api/api/shop/qy/wechatAuth/asset"); + String serverHost = CacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); + article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_ASSET_URL); 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 762a04d..ff89a20 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 @@ -3,7 +3,10 @@ package com.agileboot.domain.shop.approval; import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONUtil; import com.agileboot.common.constant.PayApiConstants; +import com.agileboot.common.constant.UrlConstants; import com.agileboot.common.constant.WeixinConstants; +import com.agileboot.common.enums.common.ConfigKeyEnum; +import com.agileboot.domain.common.cache.CacheCenter; import com.agileboot.common.core.page.PageDTO; import com.agileboot.common.exception.ApiException; import com.agileboot.common.exception.error.ErrorCode; @@ -808,7 +811,8 @@ public class ReturnApprovalApplicationService { article.setTitle("退货审核通知"); article.setDescription("退还商品:" + orderGoods.getGoodsName()); article.setPicurl(orderGoods.getCoverImg()); - article.setUrl("http://wxshop.ab98.cn/shop-api/api/shop/qy/wechatAuth"); + String serverHost = CacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); + article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_URL); 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 39979a8..76285dd 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 @@ -6,6 +6,9 @@ import com.agileboot.common.constant.PayApiConstants; import com.agileboot.common.core.page.PageDTO; import com.agileboot.common.exception.ApiException; import com.agileboot.common.exception.error.ErrorCode; +import com.agileboot.common.enums.common.ConfigKeyEnum; +import com.agileboot.domain.common.cache.CacheCenter; +import com.agileboot.common.constant.UrlConstants; import com.agileboot.domain.ab98.user.db.Ab98UserEntity; import com.agileboot.domain.ab98.user.db.Ab98UserService; import com.agileboot.domain.cabinet.cell.db.CabinetCellEntity; @@ -280,7 +283,9 @@ public class OrderApplicationService { article.setDescription(submitOrderCommand.getName() + " 申请领用" + firstOrderGoods.getGoodsName()); } article.setPicurl(firstOrderGoods.getCoverImg()); - article.setUrl("http://wxshop.ab98.cn/shop-api/api/shop/qy/wechatAuth"); + + String serverHost = CacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); + article.setUrl(serverHost + UrlConstants.WECHAT_AUTH_URL); articles.add(article); QywxApiUtil.sendNewsMessage(accessToken.getAccessToken(), Integer.valueOf(authCorpInfo.getAgentid()), @@ -302,7 +307,8 @@ public class OrderApplicationService { request.setPay_amount(amountInFen.toPlainString()); // 单位转换为分 request.setTitle("商品订单支付"); - request.setNotify_url(PayApiConstants.pay_callback_url); + String serverHost = CacheCenter.configCache.get(ConfigKeyEnum.SERVER_HOST.getValue()); + request.setNotify_url(serverHost + UrlConstants.PAY_CALLBACK_URL); request.setBiz_id(PayApiConstants.biz_id); request.setUcid(orderModel.getUcid()); request.setExtra(""); diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/cache/guava/AbstractGuavaCacheTemplate.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/cache/guava/AbstractGuavaCacheTemplate.java index 0907626..623153d 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/cache/guava/AbstractGuavaCacheTemplate.java +++ b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/cache/guava/AbstractGuavaCacheTemplate.java @@ -37,7 +37,7 @@ public abstract class AbstractGuavaCacheTemplate { // -- 没写访问下,超过5秒会失效(非自动失效,需有任意put get方法才会扫描过期失效数据) // .expireAfterWrite(5L, TimeUnit.MINUTES) // 没写访问下,超过5秒会失效(非自动失效,需有任意put get方法才会扫描过期失效数据。但区别是会开一个异步线程进行刷新,刷新过程中访问返回旧数据) - .refreshAfterWrite(5L, TimeUnit.MINUTES) + .refreshAfterWrite(10L, TimeUnit.MINUTES) // 移除监听事件 .removalListener(removal -> { // 可做一些删除后动作,比如上报删除数据用于统计