From 1dadfb8fba1eecdd27f43787d44ddd7c5912ff0f Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 18 Aug 2024 15:30:35 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E6=94=AF=E4=BB=98=EF=BC=9A=E6=94=AF=E4=BB=98=E5=BA=94?= =?UTF-8?q?=E7=94=A8=EF=BC=8C=E5=A2=9E=E5=8A=A0=20appKey=20=E6=A0=87?= =?UTF-8?q?=E8=AF=86=EF=BC=8C=E7=94=A8=E4=BA=8E=E4=B8=8D=E5=90=8C=E6=8E=A5?= =?UTF-8?q?=E5=85=A5=E6=96=B9=E7=9A=84=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 12 ++-- .../convert/order/TradeOrderConvert.java | 2 +- .../order/config/TradeOrderProperties.java | 15 ++-- .../order/TradeOrderUpdateServiceTest.java | 2 +- .../controller/admin/app/vo/PayAppBaseVO.java | 4 ++ .../admin/app/vo/PayAppCreateReqVO.java | 10 ++- .../admin/app/vo/PayAppPageItemRespVO.java | 3 - .../admin/app/vo/PayAppPageReqVO.java | 2 +- .../admin/app/vo/PayAppUpdateReqVO.java | 4 -- .../framework/pay/config/PayProperties.java | 8 +++ .../pay/service/app/PayAppServiceImpl.java | 69 +++++++------------ .../service/demo/PayDemoOrderServiceImpl.java | 2 +- .../service/refund/PayRefundServiceImpl.java | 2 +- .../wallet/PayWalletRechargeServiceImpl.java | 14 ++-- .../impl/alipay/AlipayPayClientConfig.java | 9 ++- yudao-server/pom.xml | 60 ++++++++-------- .../src/main/resources/application-local.yaml | 40 +++++------ .../src/main/resources/application.yaml | 1 - 18 files changed, 122 insertions(+), 137 deletions(-) diff --git a/pom.xml b/pom.xml index 82de1e8b7..4634d345e 100644 --- a/pom.xml +++ b/pom.xml @@ -16,14 +16,14 @@ yudao-module-system yudao-module-infra yudao-module-member - yudao-module-bpm - yudao-module-report - yudao-module-mp + + + yudao-module-pay yudao-module-mall - yudao-module-crm - yudao-module-erp - yudao-module-ai + + + ${project.artifactId} diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java index aa36eeeec..d91969481 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java @@ -101,7 +101,7 @@ public interface TradeOrderConvert { default PayOrderCreateReqDTO convert(TradeOrderDO order, List orderItems, TradeOrderProperties orderProperties) { PayOrderCreateReqDTO createReqDTO = new PayOrderCreateReqDTO() - .setAppKey(orderProperties.getAppKey()).setUserIp(order.getUserIp()); + .setAppKey(orderProperties.getPayAppKey()).setUserIp(order.getUserIp()); // 商户相关字段 createReqDTO.setMerchantOrderId(String.valueOf(order.getId())); String subject = orderItems.get(0).getSpuName(); diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/framework/order/config/TradeOrderProperties.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/framework/order/config/TradeOrderProperties.java index c88e93933..0d7b271d9 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/framework/order/config/TradeOrderProperties.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/framework/order/config/TradeOrderProperties.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.trade.framework.order.config; +import jakarta.validation.constraints.NotEmpty; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.validation.annotation.Validated; @@ -19,17 +20,15 @@ import java.time.Duration; @Validated public class TradeOrderProperties { - /** - * 默认应用标识 - */ - private static final String APP_KEY_DEFAULT = "mall"; + private static final String PAY_APP_KEY_DEFAULT = "mall"; /** - * 应用标识,用于区分不同的应用程序 - * 通过注解@NotNull确保应用标识不能为空 + * 支付应用标识 + * + * 在 pay 模块的 [支付管理 -> 应用信息] 里添加 */ - @NotNull(message = "应用标识不能为空") - private String appKey = APP_KEY_DEFAULT; + @NotEmpty(message = "Pay 应用标识不能为空") + private String payAppKey = PAY_APP_KEY_DEFAULT; /** * 支付超时时间 diff --git a/yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceTest.java b/yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceTest.java index fa15b7e52..fb19f074b 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceTest.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceTest.java @@ -99,7 +99,7 @@ public class TradeOrderUpdateServiceTest extends BaseDbUnitTest { @BeforeEach public void setUp() { - when(tradeOrderProperties.getAppKey()).thenReturn("demo"); + when(tradeOrderProperties.getPayAppKey()).thenReturn("mall"); when(tradeOrderProperties.getPayExpireTime()).thenReturn(Duration.ofDays(1)); when(tradeNoRedisDAO.generate(anyString())).thenReturn(IdUtil.randomUUID()); } diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppBaseVO.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppBaseVO.java index a95242a9f..d6cabdc50 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppBaseVO.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppBaseVO.java @@ -14,6 +14,10 @@ import jakarta.validation.constraints.*; @Data public class PayAppBaseVO { + @Schema(description = "应用标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao") + @NotEmpty(message = "应用标识不能为空") + private String appKey; + @Schema(description = "应用名", requiredMode = Schema.RequiredMode.REQUIRED, example = "小豆") @NotNull(message = "应用名不能为空") private String name; diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppCreateReqVO.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppCreateReqVO.java index db0dcde8b..f1a5dddaf 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppCreateReqVO.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppCreateReqVO.java @@ -1,7 +1,9 @@ package cn.iocoder.yudao.module.pay.controller.admin.app.vo; + import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; @Schema(description = "管理后台 - 支付应用信息创建 Request VO") @Data @@ -9,8 +11,4 @@ import lombok.*; @ToString(callSuper = true) public class PayAppCreateReqVO extends PayAppBaseVO { - @Schema(description = "应用标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao") - @NotNull(message = "应用标识不能为空") - private String appKey; - } diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppPageItemRespVO.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppPageItemRespVO.java index 29931b14f..76b62003c 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppPageItemRespVO.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppPageItemRespVO.java @@ -17,9 +17,6 @@ public class PayAppPageItemRespVO extends PayAppBaseVO { @Schema(description = "应用编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; - @Schema(description = "应用标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao") - private String appKey; - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) private LocalDateTime createTime; diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppPageReqVO.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppPageReqVO.java index 7a9931ac5..e433c85e9 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppPageReqVO.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppPageReqVO.java @@ -20,7 +20,7 @@ public class PayAppPageReqVO extends PageParam { @Schema(description = "应用名", example = "小豆") private String name; - @Schema(description = "应用标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao") + @Schema(description = "应用标识", example = "yudao") private String appKey; @Schema(description = "开启状态", example = "0") diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppUpdateReqVO.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppUpdateReqVO.java index 4ea50df27..c4e50bd44 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppUpdateReqVO.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/app/vo/PayAppUpdateReqVO.java @@ -14,8 +14,4 @@ public class PayAppUpdateReqVO extends PayAppBaseVO { @NotNull(message = "应用编号不能为空") private Long id; - @Schema(description = "应用标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao") - @NotNull(message = "应用标识不能为空") - private String appKey; - } diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/config/PayProperties.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/config/PayProperties.java index 02254ca0b..d124bbfc5 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/config/PayProperties.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/config/PayProperties.java @@ -15,6 +15,8 @@ public class PayProperties { private static final String ORDER_NO_PREFIX = "P"; private static final String REFUND_NO_PREFIX = "R"; + private static final String WALLET_PAY_APP_KEY_DEFAULT = "wallet"; + /** * 支付回调地址 * @@ -49,4 +51,10 @@ public class PayProperties { @NotEmpty(message = "退款订单 no 的前缀不能为空") private String refundNoPrefix = REFUND_NO_PREFIX; + /** + * 钱包支付应用 AppKey + */ + @NotEmpty(message = "钱包支付应用 AppKey 不能为空") + private String walletPayAppKey = WALLET_PAY_APP_KEY_DEFAULT; + } diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/app/PayAppServiceImpl.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/app/PayAppServiceImpl.java index 9809b5057..6774c442e 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/app/PayAppServiceImpl.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/app/PayAppServiceImpl.java @@ -1,9 +1,7 @@ package cn.iocoder.yudao.module.pay.service.app; -import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.pay.controller.admin.app.vo.PayAppCreateReqVO; import cn.iocoder.yudao.module.pay.controller.admin.app.vo.PayAppPageReqVO; import cn.iocoder.yudao.module.pay.controller.admin.app.vo.PayAppUpdateReqVO; @@ -20,7 +18,6 @@ import org.springframework.validation.annotation.Validated; import java.util.Collection; import java.util.List; -import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.*; @@ -46,8 +43,9 @@ public class PayAppServiceImpl implements PayAppService { @Override public Long createApp(PayAppCreateReqVO createReqVO) { - // 验证appKey是否重复 - validateAppKeyDuplicate(null, createReqVO.getAppKey()); + // 验证 appKey 是否重复 + validateEmailUnique(null, createReqVO.getAppKey()); + // 插入 PayAppDO app = PayAppConvert.INSTANCE.convert(createReqVO); appMapper.insert(app); @@ -59,13 +57,28 @@ public class PayAppServiceImpl implements PayAppService { public void updateApp(PayAppUpdateReqVO updateReqVO) { // 校验存在 validateAppExists(updateReqVO.getId()); - // 验证appKey是否重复 - validateAppKeyDuplicate(updateReqVO.getId(), updateReqVO.getAppKey()); + // 验证 appKey 是否重复 + validateEmailUnique(updateReqVO.getId(), updateReqVO.getAppKey()); + // 更新 PayAppDO updateObj = PayAppConvert.INSTANCE.convert(updateReqVO); appMapper.updateById(updateObj); } + void validateEmailUnique(Long id, String appKey) { + PayAppDO app = appMapper.selectByAppKey(appKey); + if (app == null) { + return; + } + // 如果 id 为空,说明不用比较是否为相同 appKey 的应用 + if (id == null) { + throw exception(APP_KEY_EXISTS); + } + if (!app.getId().equals(id)) { + throw exception(APP_KEY_EXISTS); + } + } + @Override public void updateAppStatus(Long id, Integer status) { // 校验商户存在 @@ -119,63 +132,31 @@ public class PayAppServiceImpl implements PayAppService { @Override public PayAppDO validPayApp(Long appId) { PayAppDO app = appMapper.selectById(appId); - // 校验支付应用数据是否存在以及可用 - return validatePayAppDO(app); + return validatePayApp(app); } @Override public PayAppDO validPayApp(String appKey) { PayAppDO app = appMapper.selectByAppKey(appKey); - // 校验支付应用数据是否存在以及可用 - return validatePayAppDO(app); + return validatePayApp(app); } /** - * 校验支付应用实体的有效性 - * 主要包括存在性检查和禁用状态检查 + * 校验支付应用实体的有效性:存在 + 开启 * * @param app 待校验的支付应用实体 * @return 校验通过的支付应用实体 - * @throws IllegalArgumentException 如果支付应用实体不存在或已被禁用 */ - private PayAppDO validatePayAppDO(PayAppDO app) { + private PayAppDO validatePayApp(PayAppDO app) { // 校验是否存在 if (app == null) { throw exception(ErrorCodeConstants.APP_NOT_FOUND); } // 校验是否禁用 - if (CommonStatusEnum.DISABLE.getStatus().equals(app.getStatus())) { + if (CommonStatusEnum.isDisable(app.getStatus())) { throw exception(ErrorCodeConstants.APP_IS_DISABLE); } return app; } - - /** - * 校验应用密钥是否重复 - * 在新增或更新支付应用时,确保应用密钥(appKey)的唯一性 - * 如果是在新增情况下,检查数据库中是否已存在相同的appKey - * 如果是在更新情况下,检查数据库中是否存在除当前应用外的其他应用使用了相同的appKey - * - * @param payAppId 支付应用的ID,更新时使用,新增时可能为null - * @param payAppKey 支付应用的密钥,用于校验是否重复 - * @throws RuntimeException 如果发现appKey重复,抛出运行时异常 - */ - private void validateAppKeyDuplicate(Long payAppId, String payAppKey) { - // 新增时,校验appKey是否重复 - if (Objects.isNull(payAppId) && StrUtil.isNotBlank(payAppKey)) { - if (appMapper.selectCount(PayAppDO::getAppKey, payAppKey) > 0) { - throw exception(APP_KEY_EXISTS); - } - // 更新时,校验appKey是否重复 - } else if (Objects.nonNull(payAppId) && StrUtil.isNotBlank(payAppKey)) { - LambdaQueryWrapperX queryWrapper = new LambdaQueryWrapperX<>(); - queryWrapper.eq(PayAppDO::getAppKey, payAppKey) - .ne(PayAppDO::getId, payAppId); - if (appMapper.selectCount(queryWrapper) > 0) { - throw exception(APP_KEY_EXISTS); - } - } - } - } diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/demo/PayDemoOrderServiceImpl.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/demo/PayDemoOrderServiceImpl.java index c2067c838..29a9e9aec 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/demo/PayDemoOrderServiceImpl.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/demo/PayDemoOrderServiceImpl.java @@ -43,7 +43,7 @@ import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.*; public class PayDemoOrderServiceImpl implements PayDemoOrderService { /** - * 接入的实力应用编号 + * 接入的支付应用标识 * * 从 [支付管理 -> 应用信息] 里添加 */ diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceImpl.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceImpl.java index e52d91f18..39179dfa0 100755 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceImpl.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceImpl.java @@ -199,8 +199,8 @@ public class PayRefundServiceImpl implements PayRefundService { * @param channel 支付渠道 * @param notify 通知 */ - @Transactional(rollbackFor = Exception.class) // 注意,如果是方法内调用该方法,需要通过 getSelf().notifyRefund(channel, notify) 调用,否则事务不生效 + @Transactional(rollbackFor = Exception.class) public void notifyRefund(PayChannelDO channel, PayRefundRespDTO notify) { // 情况一:退款成功 if (PayRefundStatusRespEnum.isSuccess(notify.getStatus())) { diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java index b62c8cfcf..98e32ec79 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java @@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.pay.dal.mysql.wallet.PayWalletRechargeMapper; import cn.iocoder.yudao.module.pay.enums.order.PayOrderStatusEnum; import cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum; import cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum; +import cn.iocoder.yudao.module.pay.framework.pay.config.PayProperties; import cn.iocoder.yudao.module.pay.service.order.PayOrderService; import cn.iocoder.yudao.module.pay.service.refund.PayRefundService; import cn.iocoder.yudao.module.system.api.social.SocialClientApi; @@ -51,11 +52,6 @@ import static cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum.*; @Slf4j public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { - /** - * TODO 芋艿:放到 payconfig - */ - private static final String WALLET_PAY_APP_KEY = "wallet"; - private static final String WALLET_RECHARGE_ORDER_SUBJECT = "钱包余额充值"; @Resource @@ -68,9 +64,13 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { private PayRefundService payRefundService; @Resource private PayWalletRechargePackageService payWalletRechargePackageService; + @Resource public SocialClientApi socialClientApi; + @Resource + private PayProperties payProperties; + @Override @Transactional(rollbackFor = Exception.class) public PayWalletRechargeDO createWalletRecharge(Long userId, Integer userType, String userIp, @@ -92,7 +92,7 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { // 2.1 创建支付单 Long payOrderId = payOrderService.createOrder(new PayOrderCreateReqDTO() - .setAppKey(WALLET_PAY_APP_KEY).setUserIp(userIp) + .setAppKey(payProperties.getWalletPayAppKey()).setUserIp(userIp) .setMerchantOrderId(recharge.getId().toString()) // 业务的订单编号 .setSubject(WALLET_RECHARGE_ORDER_SUBJECT).setBody("") .setPrice(recharge.getPayPrice()) @@ -174,7 +174,7 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { String walletRechargeId = String.valueOf(id); String refundId = walletRechargeId + "-refund"; Long payRefundId = payRefundService.createPayRefund(new PayRefundCreateReqDTO() - .setAppKey(WALLET_PAY_APP_KEY).setUserIp(userIp) + .setAppKey(payProperties.getWalletPayAppKey()).setUserIp(userIp) .setMerchantOrderId(walletRechargeId) .setMerchantRefundId(refundId) .setReason("想退钱").setPrice(walletRecharge.getPayPrice())); diff --git a/yudao-module-pay/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayClientConfig.java b/yudao-module-pay/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayClientConfig.java index 3cb2bc242..9980fb71e 100644 --- a/yudao-module-pay/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayClientConfig.java +++ b/yudao-module-pay/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayClientConfig.java @@ -98,9 +98,12 @@ public class AlipayPayClientConfig implements PayClientConfig { private String rootCertContent; /** - * 接口内容加密方式,如果为空,将使用无加密方式 - * 如果要加密,目前支付宝只有 AES 一种加密方式 - * 支付宝开放平台 + * 接口内容加密方式 + * + * 1. 如果为空,将使用无加密方式 + * 2. 如果要加密,目前支付宝只有 AES 一种加密方式 + * + * @see 支付宝开放平台 * @see AlipayPayClientConfig#ENC_TYPE_AES */ private String encryptType; diff --git a/yudao-server/pom.xml b/yudao-server/pom.xml index b161ee79c..d0c429aab 100644 --- a/yudao-server/pom.xml +++ b/yudao-server/pom.xml @@ -40,17 +40,17 @@ - - cn.iocoder.boot - yudao-module-report-biz - ${revision} - + + + + + - - cn.iocoder.boot - yudao-module-bpm-biz - ${revision} - + + + + + cn.iocoder.boot @@ -59,11 +59,11 @@ - - cn.iocoder.boot - yudao-module-mp-biz - ${revision} - + + + + + @@ -88,25 +88,25 @@ - - cn.iocoder.boot - yudao-module-crm-biz - ${revision} - + + + + + - - cn.iocoder.boot - yudao-module-erp-biz - ${revision} - + + + + + - - cn.iocoder.boot - yudao-module-ai-biz - ${revision} - + + + + + diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index 9847131b0..0c27aeac8 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -45,7 +45,7 @@ spring: primary: master datasource: master: - url: jdbc:mysql://39.105.15.179:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 + url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 # url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai # MySQL Connector/J 5.X 连接的示例 # url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 连接的示例 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例 @@ -54,26 +54,26 @@ spring: # url: jdbc:kingbase8://127.0.0.1:54321/test # 人大金仓 KingbaseES 连接的示例 # url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 连接的示例 username: root - password: 3WLiVUBEwTbvAfsh + password: 123456 # username: sa # SQL Server 连接的示例 # password: Yudao@2024 # SQL Server 连接的示例 # username: SYSDBA # DM 连接的示例 # password: SYSDBA001 # DM 连接的示例 # username: root # OpenGauss 连接的示例 # password: Yudao@2024 # OpenGauss 连接的示例 -# slave: # 模拟从库,可根据自己需要修改 -# lazy: true # 开启懒加载,保证启动速度 -# url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true -# username: root -# password: 123456 + slave: # 模拟从库,可根据自己需要修改 + lazy: true # 开启懒加载,保证启动速度 + url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true + username: root + password: 123456 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 data: redis: - host: 39.105.15.179 # 地址 + host: 127.0.0.1 # 地址 port: 6379 # 端口 database: 0 # 数据库索引 - password: 3WLiVUBEwTbvAfsh # 密码,建议生产环境开启 +# password: dev # 密码,建议生产环境开启 --- #################### 定时任务相关配置 #################### @@ -110,18 +110,18 @@ spring: # rocketmq 配置项,对应 RocketMQProperties 配置类 rocketmq: - name-server: 117.72.39.77:9876 # RocketMQ Namesrv + name-server: 127.0.0.1:9876 # RocketMQ Namesrv -#spring: -# # RabbitMQ 配置项,对应 RabbitProperties 配置类 -# rabbitmq: -# host: 127.0.0.1 # RabbitMQ 服务的地址 -# port: 5672 # RabbitMQ 服务的端口 -# username: rabbit # RabbitMQ 服务的账号 -# password: rabbit # RabbitMQ 服务的密码 -# # Kafka 配置项,对应 KafkaProperties 配置类 -# kafka: -# bootstrap-servers: 127.0.0.1:9092 # 指定 Kafka Broker 地址,可以设置多个,以逗号分隔 +spring: + # RabbitMQ 配置项,对应 RabbitProperties 配置类 + rabbitmq: + host: 127.0.0.1 # RabbitMQ 服务的地址 + port: 5672 # RabbitMQ 服务的端口 + username: rabbit # RabbitMQ 服务的账号 + password: rabbit # RabbitMQ 服务的密码 + # Kafka 配置项,对应 KafkaProperties 配置类 + kafka: + bootstrap-servers: 127.0.0.1:9092 # 指定 Kafka Broker 地址,可以设置多个,以逗号分隔 --- #################### 服务保障相关配置 #################### diff --git a/yudao-server/src/main/resources/application.yaml b/yudao-server/src/main/resources/application.yaml index f294b8010..7a42906f9 100644 --- a/yudao-server/src/main/resources/application.yaml +++ b/yudao-server/src/main/resources/application.yaml @@ -309,7 +309,6 @@ yudao: end-code: 9999 # 这里配置 9999 的原因是,测试方便。 trade: order: - app-key: mall pay-expire-time: 2h # 支付的过期时间 receive-expire-time: 14d # 收货的过期时间 comment-expire-time: 7d # 评论的过期时间