diff --git a/README.md b/README.md index e9351702..71896115 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Dax-Pay是Bootx-Platform的子项目之一,主要是对支付收单和账务 | 支付策略 | Strategy | 对支付通道和支付方式进行封装,可以完成一种支付操作 | | 聚合支付 | | 通常是扫码或收款时,根据客户使用应用的不同,自动识别是哪种支付通道,并进行支付 | | 组合支付 | | 同时使用多种支付通道进行支付,如同时使用余额+现金+储值卡+微信支付进行支付 | -| 商户 | merchant | | +| 商户 | Merchant | | | 商户应用 | mchApp | | | 分账 | | | | 对账 | | | diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PayChannelCode.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PayChannelCode.java index 72a35c08..63dab4b4 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PayChannelCode.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PayChannelCode.java @@ -43,4 +43,18 @@ public interface PayChannelCode { /** 异步支付通道 */ List ASYNC_TYPE = Arrays.asList(ALI, WECHAT, UNION_PAY, APPLE_PAY); + /** 支付排序列表 */ + List SORT_LIST = Arrays.asList( + ALI, + WECHAT, + UNION_PAY, + CASH, + WALLET, + VOUCHER, + CREDIT_CARD, + APPLE_PAY, + CHANNEL_PAY, + AGGREGATION + ); + } diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MchAppPayConfig.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MchAppPayConfig.java index e8dc1de8..ca4889e7 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MchAppPayConfig.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MchAppPayConfig.java @@ -22,6 +22,10 @@ import lombok.experimental.Accessors; @TableName("pay_mch_app_config") public class MchAppPayConfig extends MpBaseEntity implements EntityBaseFunction { + /** 关联配置ID */ + @DbColumn(comment = "关联应用ID") + private Long appId; + /** 关联配置ID */ @DbColumn(comment = "关联配置ID") private Long configId; diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MchApplication.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MchApplication.java index 21978ff6..84b76108 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MchApplication.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MchApplication.java @@ -1,6 +1,9 @@ package cn.bootx.platform.daxpay.core.merchant.entity; import cn.bootx.mybatis.table.modify.annotation.DbColumn; +import cn.bootx.mybatis.table.modify.annotation.DbTable; +import cn.bootx.mybatis.table.modify.mybatis.mysq.annotation.MySqlIndex; +import cn.bootx.mybatis.table.modify.mybatis.mysq.constants.MySqlIndexType; import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; import cn.bootx.platform.daxpay.core.merchant.convert.MchApplicationConvert; @@ -16,7 +19,9 @@ import lombok.experimental.Accessors; * @author xxm * @date 2023-05-19 */ +@DbTable(comment = "商户应用") @EqualsAndHashCode(callSuper = true) +@MySqlIndex(columns = "app_no",type = MySqlIndexType.UNIQUE,comment = "应用编码唯一索引") @Data @Accessors(chain = true) @TableName("pay_application") diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MerchantInfo.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MerchantInfo.java index b150b40f..8237ee38 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MerchantInfo.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/entity/MerchantInfo.java @@ -1,6 +1,7 @@ package cn.bootx.platform.daxpay.core.merchant.entity; import cn.bootx.mybatis.table.modify.annotation.DbColumn; +import cn.bootx.mybatis.table.modify.annotation.DbTable; import cn.bootx.mybatis.table.modify.mybatis.mysq.annotation.MySqlIndex; import cn.bootx.mybatis.table.modify.mybatis.mysq.constants.MySqlIndexType; import cn.bootx.platform.common.core.function.EntityBaseFunction; @@ -23,6 +24,7 @@ import lombok.experimental.FieldNameConstants; @EqualsAndHashCode(callSuper = true) @FieldNameConstants @Data +@DbTable(comment = "商户") @Accessors(chain = true) @TableName("pay_merchant") public class MerchantInfo extends MpBaseEntity implements EntityBaseFunction { diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/service/MchAppPayConfigService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/service/MchAppPayConfigService.java index c5db2413..1d1a9172 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/service/MchAppPayConfigService.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/service/MchAppPayConfigService.java @@ -1,20 +1,19 @@ package cn.bootx.platform.daxpay.core.merchant.service; -import cn.bootx.platform.common.core.exception.DataNotExistException; -import cn.bootx.platform.common.core.rest.PageResult; import cn.bootx.platform.common.core.rest.param.PageParam; -import cn.bootx.platform.common.core.util.ResultConvertUtil; -import cn.bootx.platform.common.mybatisplus.util.MpUtil; +import cn.bootx.platform.daxpay.code.pay.PayChannelCode; import cn.bootx.platform.daxpay.core.merchant.dao.MchAppPayConfigManager; import cn.bootx.platform.daxpay.core.merchant.entity.MchAppPayConfig; import cn.bootx.platform.daxpay.dto.merchant.MchAppPayConfigDto; -import cn.bootx.platform.daxpay.param.merchant.MchAppPayConfigParam; -import cn.hutool.core.bean.BeanUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import lombok.val; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 商户应用支付配置 @@ -28,48 +27,24 @@ public class MchAppPayConfigService { private final MchAppPayConfigManager mchAppPayConfigManager; /** - * 添加 + * 根据应用ID删除 */ - public void add(MchAppPayConfigParam param){ - MchAppPayConfig mchAppPayConfig = MchAppPayConfig.init(param); - mchAppPayConfigManager.save(mchAppPayConfig); + public void deleteByAppId(Long appId){ + mchAppPayConfigManager.deleteByField(MchAppPayConfig::getAppId,appId); } /** - * 修改 + * 支付渠道配置列表 */ - public void update(MchAppPayConfigParam param){ - MchAppPayConfig mchAppPayConfig = mchAppPayConfigManager.findById(param.getId()).orElseThrow(DataNotExistException::new); - - BeanUtil.copyProperties(param,mchAppPayConfig, CopyOptions.create().ignoreNullValue()); - mchAppPayConfigManager.updateById(mchAppPayConfig); - } - - /** - * 分页 - */ - public PageResult page(PageParam pageParam,MchAppPayConfigParam mchAppPayConfigParam){ - return MpUtil.convert2DtoPageResult(mchAppPayConfigManager.page(pageParam,mchAppPayConfigParam)); - } - - /** - * 获取单条 - */ - public MchAppPayConfigDto findById(Long id){ - return mchAppPayConfigManager.findById(id).map(MchAppPayConfig::toDto).orElseThrow(DataNotExistException::new); - } - - /** - * 获取全部 - */ - public List findAll(){ - return ResultConvertUtil.dtoListConvert(mchAppPayConfigManager.findAll()); - } - - /** - * 删除 - */ - public void delete(Long id){ - mchAppPayConfigManager.deleteById(id); + public List ListByApp(PageParam pageParam,Long appId){ + val mchAppPayConfigMap = mchAppPayConfigManager.findAllByField(MchAppPayConfig::getAppId, appId) + .stream() + .map(MchAppPayConfig::toDto) + .collect(Collectors.toMap(MchAppPayConfigDto::getChannel, Function.identity())); + // 进行排序并返回 + return PayChannelCode.SORT_LIST.stream() + .map(mchAppPayConfigMap::get) + .filter(Objects::nonNull) + .collect(Collectors.toList()); } } diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/service/MchApplicationService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/service/MchApplicationService.java index 31d79384..cc304c21 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/service/MchApplicationService.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/merchant/service/MchApplicationService.java @@ -73,4 +73,6 @@ public class MchApplicationService { public void delete(Long id){ mchApplicationManager.deleteById(id); } + + } diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MchAppPayConfigDto.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MchAppPayConfigDto.java index 50f99677..a52cbddb 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MchAppPayConfigDto.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MchAppPayConfigDto.java @@ -17,10 +17,12 @@ import lombok.experimental.Accessors; @Accessors(chain = true) public class MchAppPayConfigDto extends BaseDto { + @Schema(description = "关联应用ID") + private Long appId; @Schema(description = "关联配置ID") private Long configId; @Schema(description = "支付通道类型") - private String channel; + private Integer channel; @Schema(description = "支付通道名称") private String channelName; @Schema(description = "状态") diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MerchantInfoDto.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MerchantInfoDto.java index 517862ff..e375f4d2 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MerchantInfoDto.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MerchantInfoDto.java @@ -29,8 +29,8 @@ public class MerchantInfoDto extends BaseDto { private String contactName; @Schema(description = "联系人手机号") private String contactTel; - @Schema(description = "是否停用") - private String deactivate; + @Schema(description = "状态类型") + private String state; @Schema(description = "商户备注") private String remark; diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/merchant/MerchantInfoParam.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/merchant/MerchantInfoParam.java index 0f0945dd..a4e418f7 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/merchant/MerchantInfoParam.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/merchant/MerchantInfoParam.java @@ -29,8 +29,8 @@ public class MerchantInfoParam { private String contactName; @Schema(description = "联系人手机号") private String contactTel; - @Schema(description = "是否停用") - private String deactivate; + @Schema(description = "状态类型") + private String state; @Schema(description = "商户备注") private String remark;