mirror of
https://gitee.com/dromara/dax-pay
synced 2026-08-09 22:45:58 +08:00
refactor(merchant): 新增接入查询/权限具体服务类,为塌掉SPI接口做准备
- MerchantAccessQueryService: 商户/应用接入信息查询,返回精简DTO(不暴露JPA实体) - MerchantPermissionService: 商户权限检查(开源版默认放行) - 接入信息DTO(MerchantAccessInfo/MchAppInfoAccessInfo)置于merchant.dto 注: 仅新增具体类,6个SPI接口的删除与消费者重连待并行Agent(PaymentContext迁移)提交后再做
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
package cn.daxpay.open.payment.merchant.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/// # 商户应用接入信息
|
||||
///
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class MchAppInfoAccessInfo {
|
||||
|
||||
/// 应用号
|
||||
private String appId;
|
||||
|
||||
/// 商户号
|
||||
private String mchNo;
|
||||
|
||||
/// 应用状态
|
||||
private String status;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package cn.daxpay.open.payment.merchant.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/// # 商户接入信息
|
||||
///
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class MerchantAccessInfo {
|
||||
|
||||
/// 商户号
|
||||
private String mchNo;
|
||||
|
||||
/// 商户状态
|
||||
private String status;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package cn.daxpay.open.payment.merchant.service.permission;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/// # 商户权限检查服务
|
||||
///
|
||||
/// 开源版默认放行,后续可扩展为真实 RBAC。
|
||||
@Service
|
||||
public class MerchantPermissionService {
|
||||
|
||||
public boolean hasApiPerm(String api) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean hasChannelPerm(String channel) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public List<String> getAvailableChannel(String mchNo) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package cn.daxpay.open.payment.merchant.service.query;
|
||||
|
||||
import cn.daxpay.open.payment.merchant.dto.MchAppInfoAccessInfo;
|
||||
import cn.daxpay.open.payment.merchant.dto.MerchantAccessInfo;
|
||||
import cn.daxpay.open.payment.merchant.dao.appinfo.MchAppInfoManager;
|
||||
import cn.daxpay.open.payment.merchant.dao.info.MerchantInfoManager;
|
||||
import cn.daxpay.open.payment.merchant.entity.appinfo.MchAppInfo;
|
||||
import cn.daxpay.open.payment.merchant.entity.info.MerchantInfo;
|
||||
import cn.daxpay.open.payment.merchant.service.config.MerchantCredentialService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/// # 商户接入信息查询服务
|
||||
///
|
||||
/// 供支付总线层查询商户/应用的接入信息,返回精简 DTO,不暴露 JPA 实体。
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class MerchantAccessQueryService {
|
||||
private final MerchantInfoManager merchantInfoManager;
|
||||
private final MchAppInfoManager mchAppInfoManager;
|
||||
private final MerchantCredentialService merchantCredentialService;
|
||||
|
||||
/// 根据商户号查询商户接入信息
|
||||
public MerchantAccessInfo getMerchantByMchNo(String mchNo) {
|
||||
return merchantInfoManager.findByMchNo(mchNo)
|
||||
.map(this::toMerchantAccessInfo)
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
/// 根据商户号查询默认应用
|
||||
public MchAppInfoAccessInfo getDefaultAppByMchNo(String mchNo) {
|
||||
return mchAppInfoManager.findDefaultByMchNoNotTenant(mchNo)
|
||||
.map(this::toMchAppInfoAccessInfo)
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
/// 根据应用号查询应用
|
||||
public MchAppInfoAccessInfo getAppByAppId(String appId) {
|
||||
return mchAppInfoManager.findByAppIdNotTenant(appId)
|
||||
.map(this::toMchAppInfoAccessInfo)
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
/// 根据商户号查询商户公钥
|
||||
public String findMerchantPublicKey(String mchNo) {
|
||||
return merchantCredentialService.findByMchNo(mchNo).getPublicKey();
|
||||
}
|
||||
|
||||
private MerchantAccessInfo toMerchantAccessInfo(MerchantInfo merchantInfo) {
|
||||
return new MerchantAccessInfo()
|
||||
.setMchNo(merchantInfo.getMchNo())
|
||||
.setStatus(merchantInfo.getStatus());
|
||||
}
|
||||
|
||||
private MchAppInfoAccessInfo toMchAppInfoAccessInfo(MchAppInfo mchApp) {
|
||||
return new MchAppInfoAccessInfo()
|
||||
.setAppId(mchApp.getAppId())
|
||||
.setMchNo(mchApp.getMchNo())
|
||||
.setStatus(mchApp.getStatus());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user