|
@@ -3,16 +3,13 @@ package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
-import com.baomidou.mybatisplus.extension.service.additional.update.impl.LambdaUpdateChainWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.microsvc.toolkit.middleware.payment.common.api.BasePaymentService;
|
|
|
import com.microsvc.toolkit.middleware.payment.common.api.PaymentServiceContext;
|
|
|
import com.microsvc.toolkit.middleware.payment.common.api.entity.PaymentMerchant;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.PaymentMerchantConfig;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.SysArea;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.mapper.SysAreaMapper;
|
|
|
import com.yonge.cooleshow.biz.dal.service.PaymentMerchantConfigService;
|
|
@@ -20,8 +17,7 @@ import com.yonge.cooleshow.biz.dal.service.SysConfigService;
|
|
|
import com.yonge.cooleshow.common.constant.SysConfigConstant;
|
|
|
import com.yonge.cooleshow.common.enums.EPayerType;
|
|
|
import com.yonge.toolset.base.exception.BizException;
|
|
|
-import com.yonge.toolset.base.util.StringUtil;
|
|
|
-import org.apache.commons.lang.StringUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -32,7 +28,6 @@ import com.yonge.cooleshow.biz.dal.service.TenantMemberService;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -119,16 +114,31 @@ public class TenantMemberServiceImpl extends ServiceImpl<TenantMemberMapper, Ten
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean add(TenantMemberWrapper.InsertOrUpdateTenantMember tenantMember) {
|
|
|
|
|
|
+ Integer count = this.lambdaQuery()
|
|
|
+ .eq(TenantMember::getTenantId, tenantMember.getTenantId())
|
|
|
+ .eq(TenantMember::getPayerName, tenantMember.getPayerName())
|
|
|
+ .count();
|
|
|
+ if (count > 0) {
|
|
|
+ throw new BizException("该机构已创建成功,请核查");
|
|
|
+ }
|
|
|
+
|
|
|
PaymentMerchant.MerchantConfig merchantConfig = getMerchantConfig(tenantMember.getPayerName());
|
|
|
tenantMember.setRequestNo(IdWorker.getIdStr());
|
|
|
|
|
|
// 创建账户
|
|
|
BasePaymentService paymentService = paymentServiceContext.getPaymentService(tenantMember.getPayerName());
|
|
|
+ if (paymentService == null) {
|
|
|
+ throw new BizException("支付渠道不存在");
|
|
|
+ }
|
|
|
|
|
|
PaymentMerchant.MerchantMember merchantMember = getMerchantMember(tenantMember);
|
|
|
try {
|
|
|
log.info("创建子账户参数:{}", JSON.toJSONString(merchantConfig));
|
|
|
Map<String, Object> paymentCorpMember = paymentService.createPaymentCorpMember(merchantConfig, merchantMember);
|
|
|
+ if (tenantMember.getPayerType().equals(EPayerType.YEEPAY)) {
|
|
|
+ tenantMember.setMemberId(paymentCorpMember.get("merchantNo").toString());
|
|
|
+// tenantMember.setRequestNo(paymentCorpMember.get("requestNo").toString());
|
|
|
+ }
|
|
|
}catch (Exception e) {
|
|
|
log.error("创建子账户失败", e);
|
|
|
throw new BizException("创建子账户失败:" + e.getMessage());
|
|
@@ -161,7 +171,7 @@ public class TenantMemberServiceImpl extends ServiceImpl<TenantMemberMapper, Ten
|
|
|
.attachFile(tenantMember.getFile())
|
|
|
.bankCode(tenantMember.getBankCode())
|
|
|
.bankAccountType(tenantMember.getBankAcctType())
|
|
|
- .bankCardNo(tenantMember.getBankCode())
|
|
|
+ .bankCardNo(tenantMember.getCardNo())
|
|
|
.cardName(tenantMember.getCardName())
|
|
|
.zipCode(tenantMember.getZipCode())
|
|
|
.requestNo(tenantMember.getRequestNo())
|
|
@@ -178,16 +188,17 @@ public class TenantMemberServiceImpl extends ServiceImpl<TenantMemberMapper, Ten
|
|
|
.build();
|
|
|
if (tenantMember.getPayerType().equals(EPayerType.ADAPAY)) {
|
|
|
merchantMember.setNotifyUrl(sysConfigService.findConfigValue(SysConfigConstant.SUB_ACCOUNT_CREATE_CALLBACK_URL) +
|
|
|
- "/" + EPayerType.ADAPAY.getCode());
|
|
|
+ "/" + EPayerType.ADAPAY.getDesc());
|
|
|
} else if (tenantMember.getPayerType().equals(EPayerType.YEEPAY)) {
|
|
|
merchantMember.setNotifyUrl(sysConfigService.findConfigValue(SysConfigConstant.SUB_ACCOUNT_CREATE_CALLBACK_URL )+
|
|
|
- "/" + EPayerType.YEEPAY.getCode()+"/"+tenantMember.getRequestNo());
|
|
|
+ "/" + EPayerType.YEEPAY.getDesc());
|
|
|
}
|
|
|
return merchantMember;
|
|
|
|
|
|
}
|
|
|
|
|
|
- private PaymentMerchant.MerchantConfig getMerchantConfig(String paymentVerdor) {
|
|
|
+ @Override
|
|
|
+ public PaymentMerchant.MerchantConfig getMerchantConfig(String paymentVerdor) {
|
|
|
// 注册对应的子账户
|
|
|
PaymentMerchantConfig merchantConfig = paymentMerchantConfigService.getByPaymentVendor(paymentVerdor);
|
|
|
|
|
@@ -218,6 +229,13 @@ public class TenantMemberServiceImpl extends ServiceImpl<TenantMemberMapper, Ten
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean update(TenantMemberWrapper.InsertOrUpdateTenantMember tenantMember){
|
|
|
+ Integer count = this.lambdaQuery()
|
|
|
+ .eq(TenantMember::getId, tenantMember.getId())
|
|
|
+ .count();
|
|
|
+ if (count == 0) {
|
|
|
+ throw new BizException("商户不存在请核对");
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
TenantMember member = this.getById(tenantMember.getId());
|
|
|
|
|
@@ -225,7 +243,9 @@ public class TenantMemberServiceImpl extends ServiceImpl<TenantMemberMapper, Ten
|
|
|
|
|
|
// 创建账户
|
|
|
BasePaymentService paymentService = paymentServiceContext.getPaymentService(tenantMember.getPayerName());
|
|
|
-
|
|
|
+ if (paymentService == null) {
|
|
|
+ throw new BizException("支付渠道不存在");
|
|
|
+ }
|
|
|
PaymentMerchant.MerchantMember merchantMember = getMerchantMember(tenantMember);
|
|
|
|
|
|
try {
|
|
@@ -254,18 +274,54 @@ public class TenantMemberServiceImpl extends ServiceImpl<TenantMemberMapper, Ten
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean updateCount(TenantMemberWrapper.UpdateCount tenantMember) {
|
|
|
|
|
|
- if (!StringUtil.isEmpty(tenantMember)){
|
|
|
- LambdaUpdateChainWrapper<TenantMember> wrapper = this.lambdaUpdate()
|
|
|
- .set(TenantMember::getCardNo, tenantMember.getCardNo())
|
|
|
- .set(TenantMember::getBankCode, tenantMember.getBankCode())
|
|
|
- .eq(TenantMember::getId, tenantMember.getId());
|
|
|
+ TenantMember member = getById(tenantMember.getId());
|
|
|
+ if (member == null) {
|
|
|
+ throw new BizException("商户不存在请核对");
|
|
|
+ }
|
|
|
+ if (!member.getStatus().equals(AuthStatusEnum.PASS)) {
|
|
|
+ throw new BizException("商户审核通过,才能绑定结算卡");
|
|
|
+ }
|
|
|
+
|
|
|
+ member.setBankCode(tenantMember.getBankCode());
|
|
|
+ member.setCardNo(tenantMember.getCardNo());
|
|
|
+
|
|
|
+ PaymentMerchant.MerchantConfig merchantConfig = getMerchantConfig(member.getPayerName());
|
|
|
|
|
|
- wrapper.update();
|
|
|
- return true;
|
|
|
+ // 创建账户
|
|
|
+ BasePaymentService paymentService = paymentServiceContext.getPaymentService(member.getPayerName());
|
|
|
+ if (paymentService == null) {
|
|
|
+ throw new BizException("支付渠道不存在");
|
|
|
}
|
|
|
- return false;
|
|
|
+
|
|
|
+ try {
|
|
|
+ //删除结算账户
|
|
|
+ if (StringUtils.isNotBlank(member.getSettleAccountId())) {
|
|
|
+ paymentService.deleteSettleAccount(merchantConfig.getMerchantKey(), merchantConfig.getAppId(), member.getMemberId(), member.getSettleAccountId());
|
|
|
+ }
|
|
|
+
|
|
|
+ PaymentMerchant.AccountInfo accountInfo = PaymentMerchant.AccountInfo.builder()
|
|
|
+ .memberId(member.getMemberId())
|
|
|
+ .cardId(member.getCardNo())
|
|
|
+ .cardName(member.getCardName())
|
|
|
+ .areaCode(member.getAreaCode())
|
|
|
+ .bankAcctType(member.getBankAcctType())
|
|
|
+ .bankCode(member.getBankCode())
|
|
|
+ .bankName(member.getBankCode())
|
|
|
+ .provCode(member.getProvCode())
|
|
|
+ .telNo(member.getLegalMp())
|
|
|
+ .build();
|
|
|
+ //创建结算账户
|
|
|
+ String settleAccountId = paymentService.createSettleAccount(merchantConfig, accountInfo);
|
|
|
+
|
|
|
+ member.setSettleAccountId(settleAccountId);
|
|
|
+ }catch (Exception e) {
|
|
|
+ log.error("更新结算账户失败", e);
|
|
|
+ throw new BizException("更新结算账户失败:" + e.getMessage());
|
|
|
+ }
|
|
|
+ return this.updateById(member);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -298,4 +354,24 @@ public class TenantMemberServiceImpl extends ServiceImpl<TenantMemberMapper, Ten
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public PaymentMerchant.MerchantMember remoteDetail(Long id) {
|
|
|
+
|
|
|
+ TenantMember tenantMember = getById(id);
|
|
|
+
|
|
|
+ TenantMember member = this.getById(tenantMember.getId());
|
|
|
+
|
|
|
+ PaymentMerchant.MerchantConfig merchantConfig = getMerchantConfig(tenantMember.getPayerName());
|
|
|
+
|
|
|
+ // 创建账户
|
|
|
+ BasePaymentService paymentService = paymentServiceContext.getPaymentService(tenantMember.getPayerName());
|
|
|
+ if (paymentService == null) {
|
|
|
+ throw new BizException("支付渠道不存在");
|
|
|
+ }
|
|
|
+ PaymentMerchant.MerchantMember merchantMember = getMerchantMember(TenantMemberWrapper.InsertOrUpdateTenantMember.from(JSON.toJSONString(tenantMember)));
|
|
|
+
|
|
|
+ return paymentService.getPaymentCorpMember(merchantConfig, merchantMember);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|