diff --git a/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/controller/AliPayCallbackController.java b/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/controller/AliPayCallbackController.java index f9406e4a..1a2c6101 100644 --- a/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/controller/AliPayCallbackController.java +++ b/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/controller/AliPayCallbackController.java @@ -1,13 +1,12 @@ package org.dromara.daxpay.channel.alipay.controller; import cn.bootx.platform.core.annotation.IgnoreAuth; -import org.dromara.daxpay.channel.alipay.service.callback.AliPayCallbackService; -import org.dromara.daxpay.channel.alipay.service.extra.AliPayAuthService; -import org.dromara.daxpay.service.service.assist.PaymentAssistService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; +import org.dromara.daxpay.channel.alipay.service.callback.AliPayCallbackService; +import org.dromara.daxpay.service.service.assist.PaymentAssistService; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -28,7 +27,6 @@ public class AliPayCallbackController { private final PaymentAssistService paymentAssistService; private final AliPayCallbackService payCallbackService; - private final AliPayAuthService aliPayAuthService; @Operation(summary = "支付宝回调") @PostMapping("/alipay") diff --git a/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/allocation/receiver/AliPayAllocReceiverService.java b/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/allocation/receiver/AliPayAllocReceiverService.java index e93ebd89..62877174 100644 --- a/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/allocation/receiver/AliPayAllocReceiverService.java +++ b/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/allocation/receiver/AliPayAllocReceiverService.java @@ -56,7 +56,6 @@ public class AliPayAllocReceiverService { public void bind(AllocReceiver allocReceiver){ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(); AlipayTradeRoyaltyRelationBindModel model = new AlipayTradeRoyaltyRelationBindModel(); - model.setOutRequestNo(String.valueOf(allocReceiver.getId())); RoyaltyEntity entity = new RoyaltyEntity(); AllocReceiverTypeEnum receiverTypeEnum = AllocReceiverTypeEnum.findByCode(allocReceiver.getReceiverType()); @@ -68,6 +67,7 @@ public class AliPayAllocReceiverService { // 不报错视为同步成功 model.setReceiverList(Collections.singletonList(entity)); AlipayTradeRoyaltyRelationBindRequest request = new AlipayTradeRoyaltyRelationBindRequest(); + model.setOutRequestNo(String.valueOf(allocReceiver.getId())); request.setBizModel(model); AlipayTradeRoyaltyRelationBindResponse response = alipayClient.execute(request); this.verifyErrorMsg(response); @@ -118,13 +118,13 @@ public class AliPayAllocReceiverService { */ private String getReceiverType(AllocReceiverTypeEnum receiverTypeEnum){ if (receiverTypeEnum == USER_ID){ - return "ali_user_id"; + return "userId"; } if (receiverTypeEnum == OPEN_ID){ - return "ali_open_id"; + return "openId"; } if (receiverTypeEnum == LOGIN_NAME){ - return "ali_login_name"; + return "loginName"; } throw new ConfigErrorException("分账接收方类型错误"); } diff --git a/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/extra/AliPayAuthService.java b/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/extra/AliPayAuthService.java index 255dc62d..65411bb0 100644 --- a/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/extra/AliPayAuthService.java +++ b/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/extra/AliPayAuthService.java @@ -1,13 +1,6 @@ package org.dromara.daxpay.channel.alipay.service.extra; import cn.bootx.platform.core.exception.BizException; -import org.dromara.daxpay.channel.alipay.entity.config.AliPayConfig; -import org.dromara.daxpay.channel.alipay.service.config.AliPayConfigService; -import org.dromara.daxpay.core.param.assist.GenerateAuthUrlParam; -import org.dromara.daxpay.core.result.assist.AuthResult; -import org.dromara.daxpay.core.result.assist.AuthUrlResult; -import org.dromara.daxpay.service.entity.config.PlatformConfig; -import org.dromara.daxpay.service.service.config.PlatformConfigService; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.alipay.api.AlipayClient; @@ -16,7 +9,13 @@ import com.alipay.api.response.AlipaySystemOauthTokenResponse; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import org.springframework.data.redis.core.RedisTemplate; +import org.dromara.daxpay.channel.alipay.entity.config.AliPayConfig; +import org.dromara.daxpay.channel.alipay.service.config.AliPayConfigService; +import org.dromara.daxpay.core.param.assist.GenerateAuthUrlParam; +import org.dromara.daxpay.core.result.assist.AuthResult; +import org.dromara.daxpay.core.result.assist.AuthUrlResult; +import org.dromara.daxpay.service.entity.config.PlatformConfig; +import org.dromara.daxpay.service.service.config.PlatformConfigService; import org.springframework.stereotype.Service; /** @@ -33,8 +32,6 @@ public class AliPayAuthService { private final PlatformConfigService platformsConfigService; - private final RedisTemplate redisTemplate; - /** * 生成一个用于授权页面的链接 * 1. 如果手动传输授权回调地址, 不进行处理 @@ -49,19 +46,10 @@ public class AliPayAuthService { AliPayConfig aliPayConfig = aliPayConfigService.getAliPayConfig(); String queryCode = RandomUtil.randomString(10); - // 判断是否独立部署前端 - String authUrl; - if (platformConfig.isMobileEmbedded()){ - // 嵌入式 + // 授权地址 String serverUrl = platformConfig.getGatewayMobileUrl(); - authUrl = StrUtil.format("{}/h5/alipay/auth/{}/{}/{}/{}", + String authUrl = StrUtil.format("{}/alipay/auth/{}/{}/{}/{}", serverUrl, param.getAppId(),param.getChannel(),queryCode,aliPayConfig.getAliAppId()); - } else { - // 独立部署 - String serverUrl = platformConfig.getGatewayMobileUrl(); - authUrl = StrUtil.format("{}/alipay/auth/{}/{}/{}/{}", - serverUrl, param.getAppId(),param.getChannel(),queryCode,aliPayConfig.getAliAppId()); - } return new AuthUrlResult().setAuthUrl(authUrl).setQueryCode(queryCode); } diff --git a/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/redirect/AliPayRedirectUrlService.java b/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/redirect/AliPayRedirectUrlService.java index 016e97ce..1dead804 100644 --- a/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/redirect/AliPayRedirectUrlService.java +++ b/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/redirect/AliPayRedirectUrlService.java @@ -49,17 +49,8 @@ public class AliPayRedirectUrlService { return StrUtil.format("{}?biz_trade_no={}&trade_no={}", order.getReturnUrl(),order.getBizOrderNo(),order.getOrderNo() ); } else { PlatformConfig platformConfig = platformConfigService.getConfig(); - if (platformConfig.isMobileEmbedded()){ - // 嵌入式 - String serverUrl = platformConfig.getGatewayMobileUrl(); - return StrUtil.format("{}/h5/alipay/pay/finish", serverUrl); - - } else { - // 独立部署 - String serverUrl = platformConfig.getGatewayMobileUrl(); - return StrUtil.format("{}/alipay/pay/finish", serverUrl); - - } + String serverUrl = platformConfig.getGatewayMobileUrl(); + return StrUtil.format("{}/alipay/pay/finish", serverUrl); } } } diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/allocation/WechatPayAllocReceiverV2Service.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/allocation/WechatPayAllocReceiverV2Service.java index 68fbe23a..788bee70 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/allocation/WechatPayAllocReceiverV2Service.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/allocation/WechatPayAllocReceiverV2Service.java @@ -18,6 +18,8 @@ import org.dromara.daxpay.service.entity.allocation.receiver.AllocReceiver; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Locale; +import java.util.Objects; import static org.dromara.daxpay.core.enums.AllocReceiverTypeEnum.MERCHANT_NO; import static org.dromara.daxpay.core.enums.AllocReceiverTypeEnum.OPEN_ID; @@ -47,7 +49,7 @@ public class WechatPayAllocReceiverV2Service { ProfitSharingService sharingService = wxPayService.getProfitSharingService(); ProfitSharingReceiverRequest request = new ProfitSharingReceiverRequest(); - Receiver receiver = new Receiver(receiverType,allocReceiver.getReceiverAccount(),allocReceiver.getReceiverName(),allocReceiver.getRelationType(),allocReceiver.getRelationName()); + Receiver receiver = new Receiver(receiverType,allocReceiver.getReceiverAccount(),allocReceiver.getReceiverName(),getRelationType(allocReceiver.getRelationType()),allocReceiver.getRelationName()); List receivers = List.of(receiver); request.setReceiver(GSON.toJson(receivers)); @@ -92,4 +94,14 @@ public class WechatPayAllocReceiverV2Service { } throw new ConfigErrorException("分账接收方类型错误"); } + + /** + * 获取分账关系类型编码 + */ + private String getRelationType(String relationType){ + if (Objects.isNull(relationType)){ + return null; + } + return relationType.toUpperCase(Locale.ROOT); + } } diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/allocation/WechatPayAllocReceiverV3Service.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/allocation/WechatPayAllocReceiverV3Service.java index 25da6f9d..880f5684 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/allocation/WechatPayAllocReceiverV3Service.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/allocation/WechatPayAllocReceiverV3Service.java @@ -14,8 +14,8 @@ import org.dromara.daxpay.core.exception.OperationFailException; import org.dromara.daxpay.service.entity.allocation.receiver.AllocReceiver; import org.springframework.stereotype.Service; -import java.util.Arrays; -import java.util.List; +import java.util.Locale; +import java.util.Objects; import static org.dromara.daxpay.core.enums.AllocReceiverTypeEnum.MERCHANT_NO; import static org.dromara.daxpay.core.enums.AllocReceiverTypeEnum.OPEN_ID; @@ -31,15 +31,6 @@ import static org.dromara.daxpay.core.enums.AllocReceiverTypeEnum.OPEN_ID; public class WechatPayAllocReceiverV3Service { private final WechatPayConfigService wechatPayConfigService; - /** - * 校验参数是否合法 - */ - public boolean validation(AllocReceiver allocReceiver){ - List list = Arrays.asList(AllocReceiverTypeEnum.OPEN_ID.getCode(), AllocReceiverTypeEnum.MERCHANT_NO.getCode()); - String receiverType = allocReceiver.getReceiverType(); - return list.contains(receiverType); - } - /** * 绑定 */ @@ -54,7 +45,7 @@ public class WechatPayAllocReceiverV3Service { request.setType(receiverType); request.setAccount(allocReceiver.getReceiverAccount()); request.setName(allocReceiver.getReceiverName()); - request.setRelationType(allocReceiver.getRelationType()); + request.setRelationType(getRelationType(allocReceiver.getRelationType())); request.setCustomRelation(allocReceiver.getRelationName()); try { sharingService.addReceiverV3(request); @@ -77,7 +68,7 @@ public class WechatPayAllocReceiverV3Service { request.setType(receiverType); request.setAccount(allocReceiver.getReceiverAccount()); request.setName(allocReceiver.getReceiverName()); - request.setRelationType(allocReceiver.getRelationType()); + request.setRelationType(getRelationType(allocReceiver.getRelationType())); request.setCustomRelation(allocReceiver.getRelationName()); try { sharingService.removeReceiverV3(request); @@ -98,4 +89,13 @@ public class WechatPayAllocReceiverV3Service { } throw new ConfigErrorException("分账接收方类型错误"); } + /** + * 获取分账关系类型编码 + */ + private String getRelationType(String relationType){ + if (Objects.isNull(relationType)){ + return null; + } + return relationType.toUpperCase(Locale.ROOT); + } } diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java index 8c65062e..68640433 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java @@ -46,20 +46,9 @@ public class WechatAuthService { } else { PlatformConfig platformConfig = platformsConfigService.getConfig(); String queryCode = RandomUtil.randomString(10); - // 判断是否独立部署前端 - String authUrl; - if (platformConfig.isMobileEmbedded()){ - // 嵌入式 - String serverUrl = platformConfig.getGatewayMobileUrl(); - String redirectUrl = StrUtil.format("{}/h5/wechat/auth/{}/{}/{}", serverUrl, param.getAppId(), param.getChannel(),queryCode); - authUrl = wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, ""); - } else { - // 独立部署 - String serverUrl = platformConfig.getGatewayMobileUrl(); - String redirectUrl = StrUtil.format("{}/wechat/auth/{}/{}/{}", serverUrl, param.getAppId(), param.getChannel(),queryCode); - authUrl = wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, ""); - - } + String serverUrl = platformConfig.getGatewayMobileUrl(); + String redirectUrl = StrUtil.format("{}/wechat/auth/{}/{}/{}", serverUrl, param.getAppId(), param.getChannel(),queryCode); + String authUrl = wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, ""); return new AuthUrlResult().setAuthUrl(authUrl).setQueryCode(queryCode); } } diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayCashierService.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayCashierService.java index de7d622c..aa357e6d 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayCashierService.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayCashierService.java @@ -42,18 +42,9 @@ public class WechatPayCashierService { public String generateAuthUrl(CashierAuthUrlParam param) { WxMpService wxMpService = this.getWxMpService(); PlatformConfig platformConfig = platformConfigService.getConfig(); - // 判断是否独立部署前端 - if (platformConfig.isMobileEmbedded()){ - // 嵌入式 - String serverUrl = platformConfig.getGatewayMobileUrl(); - String redirectUrl = StrUtil.format("{}/h5/wechat/cashier/{}/{}", serverUrl, param.getAppId()); - return wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, ""); - } else { - // 独立部署 - String serverUrl = platformConfig.getGatewayMobileUrl(); - String redirectUrl = StrUtil.format("{}/wechat/cashier/{}/{}", serverUrl, param.getAppId()); - return wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, ""); - } + String serverUrl = platformConfig.getGatewayMobileUrl(); + String redirectUrl = StrUtil.format("{}/wechat/cashier/{}/{}", serverUrl, param.getAppId()); + return wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, ""); } /** diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/AllocReceiverTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/AllocReceiverTypeEnum.java index 281b80e6..e8db13ea 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/AllocReceiverTypeEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/AllocReceiverTypeEnum.java @@ -7,6 +7,7 @@ import java.util.Arrays; /** * 分账接收方类型 + * alloc_receiver_type * @author xxm * @since 2024/4/1 */ @@ -20,7 +21,7 @@ public enum AllocReceiverTypeEnum { /** openId */ OPEN_ID("open_id", "openId"), /** 账号 */ - LOGIN_NAME("login_name", "账号"); + LOGIN_NAME("login_name", "登录账号"); /** 编码 */ private final String code; diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/AllocRelationTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/AllocRelationTypeEnum.java index fa7e18a8..6ff81f87 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/AllocRelationTypeEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/AllocRelationTypeEnum.java @@ -5,23 +5,24 @@ import lombok.Getter; /** * 分账关系类型 + * alloc_relation_typ * @author xxm * @since 2024/3/27 */ @Getter @AllArgsConstructor public enum AllocRelationTypeEnum { - SERVICE_PROVIDER("SERVICE_PROVIDER","服务商"), - STORE("STORE","门店"), - STAFF("STAFF","员工"), - STORE_OWNER("STORE_OWNER","店主"), - PARTNER("PARTNER","合作伙伴"), - HEADQUARTER("HEADQUARTER","总部"), - BRAND("BRAND","品牌方"), - DISTRIBUTOR("DISTRIBUTOR","分销商"), - USER("USER","用户"), - SUPPLIER("SUPPLIER","供应商"), - CUSTOM("CUSTOM","自定义"); + SERVICE_PROVIDER("service_provider","服务商"), + STORE("store","门店"), + STAFF("staff","员工"), + STORE_OWNER("store_owner","店主"), + PARTNER("partner","合作伙伴"), + HEADQUARTER("headquarter","总部"), + BRAND("brand","品牌方"), + DISTRIBUTOR("distributor","分销商"), + USER("user","用户"), + SUPPLIER("supplier","供应商"), + CUSTOM("custom","自定义"); private final String code; private final String name; diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/allocation/AllocReceiverController.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/allocation/AllocReceiverController.java index 532505fa..1497b2b3 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/allocation/AllocReceiverController.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/allocation/AllocReceiverController.java @@ -14,6 +14,7 @@ import org.dromara.daxpay.service.param.allocation.receiver.AllocReceiverQuery; import org.dromara.daxpay.service.param.allocation.receiver.AllocReceiverRemoveParam; import org.dromara.daxpay.service.result.allocation.AllocReceiverResult; import org.dromara.daxpay.service.service.allocation.AllocReceiverService; +import org.dromara.daxpay.service.service.assist.PaymentAssistService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -32,6 +33,8 @@ import java.util.List; public class AllocReceiverController { private final AllocReceiverService receiverService; + private final PaymentAssistService paymentAssistService; + @Operation(summary = "分页") @GetMapping("/page") @@ -55,6 +58,7 @@ public class AllocReceiverController { @Operation(summary = "添加") @PostMapping("/add") public Result add(@RequestBody @Validated AllocReceiverAddParam param){ + paymentAssistService.initMchApp(param.getAppId()); receiverService.addAndSync(param); return Res.ok(); } @@ -62,6 +66,7 @@ public class AllocReceiverController { @Operation(summary = "删除") @PostMapping("/delete") public Result delete(@RequestBody @Validated AllocReceiverRemoveParam param){ + paymentAssistService.initMchApp(param.getAppId()); receiverService.removeAndSync(param); return Res.ok(); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/entity/config/PlatformConfig.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/entity/config/PlatformConfig.java index ace89e8d..7a569562 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/entity/config/PlatformConfig.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/entity/config/PlatformConfig.java @@ -24,15 +24,9 @@ public class PlatformConfig extends MpBaseEntity implements ToResult groupReceivers = receivers.stream() - .map(receiver -> new AllocGroupReceiver().setGroupId(group.getId()) - .setReceiverId(receiver.getId()) - .setRate(receiverParams.get(receivers.indexOf(receiver)) - .getRate())) + .map(receiver -> { + var groupReceiver = new AllocGroupReceiver().setGroupId(group.getId()) + .setReceiverId(receiver.getId()) + .setRate(receiverParams.get(receivers.indexOf(receiver)) + .getRate()); + groupReceiver.setAppId(group.getAppId()); + return groupReceiver; + }) .collect(Collectors.toList()); groupReceiverManager.saveAll(groupReceivers); // 计算分账比例 diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/allocation/AllocReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/allocation/AllocReceiverService.java index b4644540..664f60bc 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/allocation/AllocReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/allocation/AllocReceiverService.java @@ -7,6 +7,7 @@ import cn.bootx.platform.core.exception.ValidationFailedException; import cn.bootx.platform.core.rest.dto.LabelValue; import cn.bootx.platform.core.rest.param.PageParam; import cn.bootx.platform.core.rest.result.PageResult; +import cn.hutool.core.util.IdUtil; import cn.hutool.extra.spring.SpringUtil; import com.baomidou.lock.LockInfo; import com.baomidou.lock.LockTemplate; @@ -27,6 +28,7 @@ import org.dromara.daxpay.service.strategy.AbsAllocReceiverStrategy; import org.dromara.daxpay.service.strategy.PaymentStrategy; import org.dromara.daxpay.service.util.PaymentStrategyFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; @@ -75,6 +77,7 @@ public class AllocReceiverService { /** * 添加分账接收方并同步到三方支付系统中 */ + @Transactional(rollbackFor = Exception.class) public void addAndSync(AllocReceiverAddParam param) { // 判断是否已经添加 LockInfo lock = lockTemplate.lock("payment:receiver:" + param.getReceiverNo(), 10000, 200); @@ -87,6 +90,8 @@ public class AllocReceiverService { throw new OperationFailException("该接收方已存在"); } AllocReceiver receiver = AllocReceiverConvert.CONVERT.convert(param); + // 预先写入id, 部分通道需要使用外部请求号, 用id进行关联 + receiver.setId(IdUtil.getSnowflakeNextId()); // 获取策略 AbsAllocReceiverStrategy receiverStrategy = PaymentStrategyFactory.create(param.getChannel(), AbsAllocReceiverStrategy.class); // 校验 @@ -106,6 +111,7 @@ public class AllocReceiverService { /** * 分账方删除 */ + @Transactional(rollbackFor = Exception.class) public void removeAndSync(AllocReceiverRemoveParam param) { // 判断是否存在 AllocReceiver receiver = allocReceiverManager.findByReceiverNo(param.getReceiverNo(), param.getAppId()) diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/ChannelCashierConfigService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/ChannelCashierConfigService.java index 91153f90..2a750522 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/ChannelCashierConfigService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/ChannelCashierConfigService.java @@ -109,15 +109,7 @@ public class ChannelCashierConfigService { public String qrCodeUrl(String appId) { MchApp mchApp = mchAppManager.findByAppId(appId).orElseThrow(() -> new DataNotExistException("未找到指定的应用配置")); PlatformConfig platformConfig = platformConfigService.getConfig(); - // 判断是否独立部署前端 - if (platformConfig.isMobileEmbedded()){ - // 嵌入式 - String serverUrl = platformConfig.getGatewayMobileUrl(); - return StrUtil.format("{}/h5/channel/cashier/{}/{}", serverUrl, mchApp.getAppId()); - } else { - // 独立部署 - String serverUrl = platformConfig.getGatewayMobileUrl(); - return StrUtil.format("{}/channel/cashier/{}/{}", serverUrl, mchApp.getAppId()); - } + String serverUrl = platformConfig.getGatewayMobileUrl(); + return StrUtil.format("{}/channel/cashier/{}/{}", serverUrl, mchApp.getAppId()); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/MerchantNotifyConfigService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/MerchantNotifyConfigService.java index e69b0686..22ef1982 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/MerchantNotifyConfigService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/MerchantNotifyConfigService.java @@ -6,11 +6,9 @@ import org.dromara.daxpay.service.dao.config.MerchantNotifyConfigManager; import org.dromara.daxpay.service.dao.constant.MerchantNotifyConstManager; import org.dromara.daxpay.service.entity.config.MerchantNotifyConfig; import org.dromara.daxpay.service.entity.constant.MerchantNotifyConst; -import org.dromara.daxpay.service.entity.merchant.MchApp; import org.dromara.daxpay.service.result.config.MerchantNotifyConfigResult; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springdoc.core.service.GenericResponseService; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -32,8 +30,8 @@ public class MerchantNotifyConfigService { private final MerchantNotifyConstManager constManagerAll; private final MerchantNotifyConfigManager configManager; + private final MchAppCacheService mchAppCacheService; - private final GenericResponseService responseBuilder; /** * 显示列表 @@ -43,7 +41,6 @@ public class MerchantNotifyConfigService { .stream() .collect(Collectors.toMap(MerchantNotifyConfig::getCode, Function.identity(), (v1, v2) -> v1)); List costs = constManagerAll.lambdaQuery().orderByAsc(MpIdEntity::getId).list(); - MchApp mchApp = mchAppCacheService.get(appId); return costs.stream() .map(o->{ @@ -79,8 +76,6 @@ public class MerchantNotifyConfigService { * 开启或关闭订阅 */ public void subscribe(String appId, String notifyType, boolean subscribe){ - // 查询应用 - var mchApp = mchAppCacheService.get(appId); // 判断是否存在配置 var notifyConfigOpt = configManager.findByAppIdAndType(appId, notifyType); diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/PlatformConfigService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/PlatformConfigService.java index 4d98767a..7fc80e55 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/PlatformConfigService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/config/PlatformConfigService.java @@ -7,6 +7,8 @@ import org.dromara.daxpay.service.param.config.PlatformConfigParam; import cn.hutool.core.bean.BeanUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; /** @@ -23,6 +25,7 @@ public class PlatformConfigService { /** * 获取平台配置 */ + @Cacheable(value = "cache:PlatformConfig") public PlatformConfig getConfig(){ return platformConfigManager.findById(1L).orElseThrow(() -> new BizInfoException("平台配置不存在")); } @@ -30,6 +33,7 @@ public class PlatformConfigService { /** * 更新 */ + @CacheEvict(value = "cache:PlatformConfig", allEntries = true) public void update(PlatformConfigParam param){ PlatformConfig platformConfig = platformConfigManager.findById(1L) .orElseThrow(() -> new BizInfoException("平台配置不存在")); diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/merchant/MchAppService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/merchant/MchAppService.java index d7f72ddf..159685f3 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/merchant/MchAppService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/merchant/MchAppService.java @@ -88,7 +88,6 @@ public class MchAppService { public void delete(Long id) { MchApp mchApp = mchAppManager.findById(id) .orElseThrow(ConfigNotExistException::new); - // 查看是否有配置的支付配置 if (channelConfigManager.existedByField(ChannelConfig::getAppId, mchApp.getAppId())){ throw new OperationFailException("该商户应用已绑定支付配置,请先删除支付配置");