diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/paymentchannelorder/user/request/ThirdPartyField.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/paymentchannelorder/user/request/ThirdPartyField.java index b99a405..64ec85d 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/paymentchannelorder/user/request/ThirdPartyField.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/paymentchannelorder/user/request/ThirdPartyField.java @@ -30,4 +30,6 @@ public class ThirdPartyField { public static final String OPEN_ID = "openId"; public static final String PAYER_CLIENT_IP = "payerClientIp"; public static final String H5_INFO_TYPE = "h5InfoType"; + + public static final String BANK_CARD_ID = "bankCardId"; } \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java index 2421606..46b75f1 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java @@ -41,7 +41,7 @@ public class WithdrawAuditApplicationService extends BaseApplicationService { Long identityId = Objects.nonNull(withdrawAudit.getWalletAccountOrgId()) ? withdrawAudit.getWalletAccountOrgId() : withdrawAudit.getWalletAccountUserId(); synchronized (identityId.toString().intern()) { WalletAccount walletAccount = walletAccountQueryService.queryByType(identityId, withdrawAudit.getIdentityType()); - if (Objects.isNull(walletAccount) || withdrawAudit.getWithdrawAmount().compareTo(walletAccount.getAvailableBalance()) > 0) { + if (Objects.isNull(walletAccount) || walletAccountQueryService.countAvailableWithdrawBalance(walletAccount).compareTo(withdrawAudit.getWithdrawAmount()) >= 0) { throw new BizException("超出可提现金额"); } //todo 改成策略模式 @@ -52,6 +52,12 @@ public class WithdrawAuditApplicationService extends BaseApplicationService { Map extDetails = new HashMap<>(); extDetails.put(ThirdPartyField.OPEN_ID, sessionVo.getOpenid()); withdrawAudit.setExtDetailsInfo(extDetails); + } else { + //银行卡 + String bankCardId = ThirdPartyField.findFiledValueByKey(ThirdPartyField.BANK_CARD_ID, fieldList); + Map extDetails = new HashMap<>(); + extDetails.put(ThirdPartyField.BANK_CARD_ID, bankCardId); + withdrawAudit.setExtDetailsInfo(extDetails); } withdrawAudit.setWalletAccountId(walletAccount.getId()); walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().subtract(withdrawAudit.getWithdrawAmount())); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java index 9df09a1..bcd7e75 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java @@ -8,6 +8,8 @@ import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.framework.utils.PageUtil; +import java.math.BigDecimal; + public interface WalletAccountQueryService { WalletAccount queryByUserId(Long userId); @@ -17,4 +19,6 @@ public interface WalletAccountQueryService { UserGetWalletAccountVo getWalletAccountView(Long userId, Long orgId); WalletAccount queryByType(Long identityId, IdentityTypeEnum identityTypeEnum); + + BigDecimal countAvailableWithdrawBalance(WalletAccount walletAccount); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java index 0006e4a..12cabe3 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java @@ -77,7 +77,7 @@ public class WalletAccountQueryServiceImpl implements WalletAccountQueryService * @param walletAccount * @return */ - private BigDecimal countAvailableWithdrawBalance(WalletAccount walletAccount) { + public BigDecimal countAvailableWithdrawBalance(WalletAccount walletAccount) { BigDecimal availableBalance = walletAccount.getAvailableBalance(); LocalDate date = LocalDate.now(); int month = 0;