This commit is contained in:
2023-06-13 11:28:15 +08:00
parent 0ba0b55cd7
commit b99d5f075e
19 changed files with 121 additions and 31 deletions

View File

@@ -9,6 +9,7 @@ import com.huifu.adapay.core.exception.BaseAdaPayException;
import com.huifu.adapay.model.Member;
import com.huifu.adapay.model.SettleAccount;
import com.jsowell.adapay.dto.AdapayMemberInfoDTO;
import com.jsowell.adapay.vo.AdapayAccountBalanceVO;
import com.jsowell.adapay.vo.AdapayMemberInfoVO;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.StringUtils;
@@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Map;
@Slf4j
@@ -126,25 +128,48 @@ public class AdapayMemberService {
Map<String, Object> settleCount = SettleAccount.create(settleCountParams);
log.info("创建汇付结算账户result:{}", settleCount);
AdapaySettleAccount adapaySettleAccount = new AdapaySettleAccount();
adapaySettleAccount.setMerchantId(dto.getMerchantId());
adapaySettleAccount.setAdapayMemberId(dto.getAdapayMemberId());
adapaySettleAccount.setCardId(dto.getCardId());
adapaySettleAccount.setCardName(dto.getCardName());
adapaySettleAccount.setCertId(dto.getCertId());
adapaySettleAccount.setCertType("00");
adapaySettleAccount.setTelNo(dto.getTelNo());
adapaySettleAccount.setBankCode(dto.getBankCode());
adapaySettleAccount.setBankAcctType(dto.getBankAcctType());
adapaySettleAccount.setProvCode(dto.getProvCode());
adapaySettleAccount.setAreaCode(dto.getAreaCode());
adapaySettleAccountService.insertAdapaySettleAccount(adapaySettleAccount);
if (settleCount != null && StringUtils.equals((String) settleCount.get("status"), "succeeded")) {
AdapaySettleAccount adapaySettleAccount = new AdapaySettleAccount();
adapaySettleAccount.setSettleAccountId((String) settleCount.get("id"));
adapaySettleAccount.setMerchantId(dto.getMerchantId());
adapaySettleAccount.setAdapayMemberId(dto.getAdapayMemberId());
adapaySettleAccount.setCardId(dto.getCardId());
adapaySettleAccount.setCardName(dto.getCardName());
adapaySettleAccount.setCertId(dto.getCertId());
adapaySettleAccount.setCertType("00");
adapaySettleAccount.setTelNo(dto.getTelNo());
adapaySettleAccount.setBankCode(dto.getBankCode());
adapaySettleAccount.setBankAcctType(dto.getBankAcctType());
adapaySettleAccount.setProvCode(dto.getProvCode());
adapaySettleAccount.setAreaCode(dto.getAreaCode());
adapaySettleAccountService.insertAdapaySettleAccount(adapaySettleAccount);
}
}
/**
* 查询汇付会员账户余额
*/
public void queryAdapayAccountBalance() {
public AdapayAccountBalanceVO queryAdapayAccountBalance(String merchantId) throws BaseAdaPayException {
AdapayAccountBalanceVO vo = AdapayAccountBalanceVO.builder().build();
// 通过merchantId 查询出汇付会员id 和 结算账户id用来查询余额
AdapaySettleAccount adapaySettleAccount = adapaySettleAccountService.selectByMerchantId(merchantId);
if (adapaySettleAccount == null) {
return vo;
}
String settle_account_id = adapaySettleAccount.getAdapayMemberId();
String member_id = adapaySettleAccount.getAdapayMemberId();
Map<String, Object> queryParams = Maps.newHashMap();
queryParams.put("settle_account_id", settle_account_id);
queryParams.put("member_id", member_id);
queryParams.put("app_id", ADAPAY_APP_ID);
Map<String, Object> settleCount = SettleAccount.balance(queryParams);
if (settleCount == null || settleCount.isEmpty() || StringUtils.equals((String)settleCount.get("status"), "succeeded")) {
return vo;
}
vo.setFrzBalance(new BigDecimal((String) settleCount.get("frz_balance")));
vo.setAcctBalance(new BigDecimal((String) settleCount.get("acct_balance")));
vo.setAvlBalance(new BigDecimal((String) settleCount.get("avl_balance")));
vo.setLastAvlBalance(new BigDecimal((String) settleCount.get("last_avl_balance")));
return vo;
}
}

View File

@@ -0,0 +1,25 @@
package com.jsowell.adapay.vo;
import lombok.*;
import java.math.BigDecimal;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AdapayAccountBalanceVO {
// 账户余额,账户余额 = 可用余额 + 冻结余额
private BigDecimal acctBalance;
// 可用余额该余额大于0时才可发起取现。
private BigDecimal avlBalance;
// 冻结余额,当配置了自动结算功能,在每日发起结算时会将可用余额转为冻结金额。该部分金额不允许取现。
private BigDecimal frzBalance;
// 昨日日终余额。
private BigDecimal lastAvlBalance;
}

View File

@@ -2,6 +2,8 @@ package com.jsowell.pile.domain;
import com.jsowell.common.annotation.Excel;
import com.jsowell.common.core.domain.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@@ -11,6 +13,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
* @author jsowell
* @date 2023-06-12
*/
@Getter
@Setter
public class AdapaySettleAccount extends BaseEntity {
private static final long serialVersionUID = 1L;
@@ -31,6 +35,12 @@ public class AdapaySettleAccount extends BaseEntity {
@Excel(name = "汇付会员id")
private String adapayMemberId;
/**
* 结算账户对象 id
*/
@Excel(name = "结算账户对象id")
private String settleAccountId;
/**
* 银行卡号
*/

View File

@@ -1,6 +1,7 @@
package com.jsowell.pile.mapper;
import com.jsowell.pile.domain.AdapaySettleAccount;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -10,6 +11,7 @@ import java.util.List;
* @author jsowell
* @date 2023-06-12
*/
@Repository
public interface AdapaySettleAccountMapper {
/**
* 查询汇付结算账户
@@ -58,4 +60,6 @@ public interface AdapaySettleAccountMapper {
* @return 结果
*/
public int deleteAdapaySettleAccountByIds(Long[] ids);
AdapaySettleAccount selectByMerchantId(String merchantId);
}

View File

@@ -58,4 +58,6 @@ public interface IAdapaySettleAccountService {
* @return 结果
*/
public int deleteAdapaySettleAccountById(Long id);
AdapaySettleAccount selectByMerchantId(String merchantId);
}

View File

@@ -87,4 +87,9 @@ public class AdapaySettleAccountServiceImpl implements IAdapaySettleAccountServi
public int deleteAdapaySettleAccountById(Long id) {
return adapaySettleAccountMapper.deleteAdapaySettleAccountById(id);
}
@Override
public AdapaySettleAccount selectByMerchantId(String merchantId) {
return adapaySettleAccountMapper.selectByMerchantId(merchantId);
}
}