mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-09-10 14:29:03 +00:00
feat 商户相关功能
This commit is contained in:
@@ -47,7 +47,7 @@ Dax-Pay是Bootx-Platform的子项目之一,主要是对支付收单和账务
|
|||||||
| 支付策略 | Strategy | 对支付通道和支付方式进行封装,可以完成一种支付操作 |
|
| 支付策略 | Strategy | 对支付通道和支付方式进行封装,可以完成一种支付操作 |
|
||||||
| 聚合支付 | | 通常是扫码或收款时,根据客户使用应用的不同,自动识别是哪种支付通道,并进行支付 |
|
| 聚合支付 | | 通常是扫码或收款时,根据客户使用应用的不同,自动识别是哪种支付通道,并进行支付 |
|
||||||
| 组合支付 | | 同时使用多种支付通道进行支付,如同时使用余额+现金+储值卡+微信支付进行支付 |
|
| 组合支付 | | 同时使用多种支付通道进行支付,如同时使用余额+现金+储值卡+微信支付进行支付 |
|
||||||
| 商户 | merchant | |
|
| 商户 | Merchant | |
|
||||||
| 商户应用 | mchApp | |
|
| 商户应用 | mchApp | |
|
||||||
| 分账 | | |
|
| 分账 | | |
|
||||||
| 对账 | | |
|
| 对账 | | |
|
||||||
|
@@ -43,4 +43,18 @@ public interface PayChannelCode {
|
|||||||
/** 异步支付通道 */
|
/** 异步支付通道 */
|
||||||
List<Integer> ASYNC_TYPE = Arrays.asList(ALI, WECHAT, UNION_PAY, APPLE_PAY);
|
List<Integer> ASYNC_TYPE = Arrays.asList(ALI, WECHAT, UNION_PAY, APPLE_PAY);
|
||||||
|
|
||||||
|
/** 支付排序列表 */
|
||||||
|
List<Integer> SORT_LIST = Arrays.asList(
|
||||||
|
ALI,
|
||||||
|
WECHAT,
|
||||||
|
UNION_PAY,
|
||||||
|
CASH,
|
||||||
|
WALLET,
|
||||||
|
VOUCHER,
|
||||||
|
CREDIT_CARD,
|
||||||
|
APPLE_PAY,
|
||||||
|
CHANNEL_PAY,
|
||||||
|
AGGREGATION
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -22,6 +22,10 @@ import lombok.experimental.Accessors;
|
|||||||
@TableName("pay_mch_app_config")
|
@TableName("pay_mch_app_config")
|
||||||
public class MchAppPayConfig extends MpBaseEntity implements EntityBaseFunction<MchAppPayConfigDto> {
|
public class MchAppPayConfig extends MpBaseEntity implements EntityBaseFunction<MchAppPayConfigDto> {
|
||||||
|
|
||||||
|
/** 关联配置ID */
|
||||||
|
@DbColumn(comment = "关联应用ID")
|
||||||
|
private Long appId;
|
||||||
|
|
||||||
/** 关联配置ID */
|
/** 关联配置ID */
|
||||||
@DbColumn(comment = "关联配置ID")
|
@DbColumn(comment = "关联配置ID")
|
||||||
private Long configId;
|
private Long configId;
|
||||||
|
@@ -1,6 +1,9 @@
|
|||||||
package cn.bootx.platform.daxpay.core.merchant.entity;
|
package cn.bootx.platform.daxpay.core.merchant.entity;
|
||||||
|
|
||||||
import cn.bootx.mybatis.table.modify.annotation.DbColumn;
|
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.core.function.EntityBaseFunction;
|
||||||
import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
|
import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
|
||||||
import cn.bootx.platform.daxpay.core.merchant.convert.MchApplicationConvert;
|
import cn.bootx.platform.daxpay.core.merchant.convert.MchApplicationConvert;
|
||||||
@@ -16,7 +19,9 @@ import lombok.experimental.Accessors;
|
|||||||
* @author xxm
|
* @author xxm
|
||||||
* @date 2023-05-19
|
* @date 2023-05-19
|
||||||
*/
|
*/
|
||||||
|
@DbTable(comment = "商户应用")
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@MySqlIndex(columns = "app_no",type = MySqlIndexType.UNIQUE,comment = "应用编码唯一索引")
|
||||||
@Data
|
@Data
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@TableName("pay_application")
|
@TableName("pay_application")
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.bootx.platform.daxpay.core.merchant.entity;
|
package cn.bootx.platform.daxpay.core.merchant.entity;
|
||||||
|
|
||||||
import cn.bootx.mybatis.table.modify.annotation.DbColumn;
|
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.annotation.MySqlIndex;
|
||||||
import cn.bootx.mybatis.table.modify.mybatis.mysq.constants.MySqlIndexType;
|
import cn.bootx.mybatis.table.modify.mybatis.mysq.constants.MySqlIndexType;
|
||||||
import cn.bootx.platform.common.core.function.EntityBaseFunction;
|
import cn.bootx.platform.common.core.function.EntityBaseFunction;
|
||||||
@@ -23,6 +24,7 @@ import lombok.experimental.FieldNameConstants;
|
|||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@FieldNameConstants
|
@FieldNameConstants
|
||||||
@Data
|
@Data
|
||||||
|
@DbTable(comment = "商户")
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@TableName("pay_merchant")
|
@TableName("pay_merchant")
|
||||||
public class MerchantInfo extends MpBaseEntity implements EntityBaseFunction<MerchantInfoDto> {
|
public class MerchantInfo extends MpBaseEntity implements EntityBaseFunction<MerchantInfoDto> {
|
||||||
|
@@ -1,20 +1,19 @@
|
|||||||
package cn.bootx.platform.daxpay.core.merchant.service;
|
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.rest.param.PageParam;
|
||||||
import cn.bootx.platform.common.core.util.ResultConvertUtil;
|
import cn.bootx.platform.daxpay.code.pay.PayChannelCode;
|
||||||
import cn.bootx.platform.common.mybatisplus.util.MpUtil;
|
|
||||||
import cn.bootx.platform.daxpay.core.merchant.dao.MchAppPayConfigManager;
|
import cn.bootx.platform.daxpay.core.merchant.dao.MchAppPayConfigManager;
|
||||||
import cn.bootx.platform.daxpay.core.merchant.entity.MchAppPayConfig;
|
import cn.bootx.platform.daxpay.core.merchant.entity.MchAppPayConfig;
|
||||||
import cn.bootx.platform.daxpay.dto.merchant.MchAppPayConfigDto;
|
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.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import lombok.val;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
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;
|
private final MchAppPayConfigManager mchAppPayConfigManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加
|
* 根据应用ID删除
|
||||||
*/
|
*/
|
||||||
public void add(MchAppPayConfigParam param){
|
public void deleteByAppId(Long appId){
|
||||||
MchAppPayConfig mchAppPayConfig = MchAppPayConfig.init(param);
|
mchAppPayConfigManager.deleteByField(MchAppPayConfig::getAppId,appId);
|
||||||
mchAppPayConfigManager.save(mchAppPayConfig);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改
|
* 支付渠道配置列表
|
||||||
*/
|
*/
|
||||||
public void update(MchAppPayConfigParam param){
|
public List<MchAppPayConfigDto> ListByApp(PageParam pageParam,Long appId){
|
||||||
MchAppPayConfig mchAppPayConfig = mchAppPayConfigManager.findById(param.getId()).orElseThrow(DataNotExistException::new);
|
val mchAppPayConfigMap = mchAppPayConfigManager.findAllByField(MchAppPayConfig::getAppId, appId)
|
||||||
|
.stream()
|
||||||
BeanUtil.copyProperties(param,mchAppPayConfig, CopyOptions.create().ignoreNullValue());
|
.map(MchAppPayConfig::toDto)
|
||||||
mchAppPayConfigManager.updateById(mchAppPayConfig);
|
.collect(Collectors.toMap(MchAppPayConfigDto::getChannel, Function.identity()));
|
||||||
}
|
// 进行排序并返回
|
||||||
|
return PayChannelCode.SORT_LIST.stream()
|
||||||
/**
|
.map(mchAppPayConfigMap::get)
|
||||||
* 分页
|
.filter(Objects::nonNull)
|
||||||
*/
|
.collect(Collectors.toList());
|
||||||
public PageResult<MchAppPayConfigDto> 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<MchAppPayConfigDto> findAll(){
|
|
||||||
return ResultConvertUtil.dtoListConvert(mchAppPayConfigManager.findAll());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除
|
|
||||||
*/
|
|
||||||
public void delete(Long id){
|
|
||||||
mchAppPayConfigManager.deleteById(id);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -73,4 +73,6 @@ public class MchApplicationService {
|
|||||||
public void delete(Long id){
|
public void delete(Long id){
|
||||||
mchApplicationManager.deleteById(id);
|
mchApplicationManager.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -17,10 +17,12 @@ import lombok.experimental.Accessors;
|
|||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
public class MchAppPayConfigDto extends BaseDto {
|
public class MchAppPayConfigDto extends BaseDto {
|
||||||
|
|
||||||
|
@Schema(description = "关联应用ID")
|
||||||
|
private Long appId;
|
||||||
@Schema(description = "关联配置ID")
|
@Schema(description = "关联配置ID")
|
||||||
private Long configId;
|
private Long configId;
|
||||||
@Schema(description = "支付通道类型")
|
@Schema(description = "支付通道类型")
|
||||||
private String channel;
|
private Integer channel;
|
||||||
@Schema(description = "支付通道名称")
|
@Schema(description = "支付通道名称")
|
||||||
private String channelName;
|
private String channelName;
|
||||||
@Schema(description = "状态")
|
@Schema(description = "状态")
|
||||||
|
@@ -29,8 +29,8 @@ public class MerchantInfoDto extends BaseDto {
|
|||||||
private String contactName;
|
private String contactName;
|
||||||
@Schema(description = "联系人手机号")
|
@Schema(description = "联系人手机号")
|
||||||
private String contactTel;
|
private String contactTel;
|
||||||
@Schema(description = "是否停用")
|
@Schema(description = "状态类型")
|
||||||
private String deactivate;
|
private String state;
|
||||||
@Schema(description = "商户备注")
|
@Schema(description = "商户备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
@@ -29,8 +29,8 @@ public class MerchantInfoParam {
|
|||||||
private String contactName;
|
private String contactName;
|
||||||
@Schema(description = "联系人手机号")
|
@Schema(description = "联系人手机号")
|
||||||
private String contactTel;
|
private String contactTel;
|
||||||
@Schema(description = "是否停用")
|
@Schema(description = "状态类型")
|
||||||
private String deactivate;
|
private String state;
|
||||||
@Schema(description = "商户备注")
|
@Schema(description = "商户备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user