新增 删除结算账户、新增结算账户接口

This commit is contained in:
Lemon
2025-06-25 15:37:29 +08:00
parent d892f2d7b2
commit 1e178d6890
6 changed files with 126 additions and 1 deletions

View File

@@ -209,7 +209,8 @@ public class AdapayMemberController extends BaseController {
public AjaxResult deleteSettleAccount(@RequestBody AdapayMemberInfoDTO dto) {
AjaxResult result = null;
try {
adapayService.createDeleteSettleAccountRequest(dto.getAdapayMemberId(), dto.getSettleAccountId(), Constants.DEFAULT_APP_ID);
// 新写删除方法
adapayService.deleteSettleAccount(dto);
result = AjaxResult.success();
} catch (Exception e) {
logger.error("删除结算账户 error,", e);
@@ -217,4 +218,23 @@ public class AdapayMemberController extends BaseController {
}
return result;
}
/**
* 在仅删除结算账户后,重新创建新的结算账户
* 注:使用原 member_id 重新创建结算账户对象,且必须与原身份证和银行卡户名保持一致
* @param dto
* @return
*/
@PostMapping("createBankAccount")
public AjaxResult createBankAccount(@RequestBody SettleAccountDTO dto) {
AjaxResult result = null;
try {
adapayService.createBankAccount(dto);
} catch (Exception e) {
logger.error("重新创建结算账户 error, ", e);
result = AjaxResult.error();
}
return result;
}
}

View File

@@ -1517,4 +1517,53 @@ public class AdapayService {
return totalSplitAmount;
}
/**
* 创建结算账户
* @param dto
* @throws BaseAdaPayException
*/
public void createBankAccount(SettleAccountDTO dto) throws BaseAdaPayException {
// 根据运营商id 查出现有的adapayMemberId
String merchantId = dto.getMerchantId();
// 新写一个查询方法,查询最近一条的记录(因为之前已经删除过数据,使用原查询方法查不到数据)
AdapayMemberAccount adapayMemberAccount = adapayMemberAccountService.selectRecentInfoByMerchantId(merchantId);
if (adapayMemberAccount == null) {
return;
}
String adapayMemberId = adapayMemberAccount.getAdapayMemberId();
// 查询该商户的wxAppId
String wxAppId = pileMerchantInfoService.queryAppIdByMerchantId(merchantId);
// 创建结算账户请求
Map<String, Object> settleAccount = this.createSettleAccountRequest(dto, adapayMemberId, wxAppId);
// 保存结果
if (settleAccount == null || StringUtils.equals((String) settleAccount.get("status"), "failed")) {
String errorMsg = settleAccount == null ? "创建汇付结算账户失败" : (String) settleAccount.get("error_msg");
throw new BusinessException("00500001", errorMsg);
}
String settleAccountId = (String) settleAccount.get("id");
// 保存到数据库
adapayMemberAccount = new AdapayMemberAccount();
adapayMemberAccount.setMerchantId(dto.getMerchantId());
adapayMemberAccount.setAdapayMemberId(adapayMemberId);
adapayMemberAccount.setSettleAccountId(settleAccountId);
adapayMemberAccount.setStatus(Constants.ONE);
adapayMemberAccountService.insertAdapayMemberAccount(adapayMemberAccount);
}
/**
* 删除结算账户(先删除汇付的结算账户,再逻辑删除数据库)
* @param dto
* @throws BaseAdaPayException
*/
public void deleteSettleAccount(AdapayMemberInfoDTO dto) throws BaseAdaPayException {
// 查询appId
String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(dto.getMerchantId());
// 1、新建删除请求 2、如果成功再将数据库中的记录删除
this.createDeleteSettleAccountRequest(dto.getAdapayMemberId(), dto.getSettleAccountId(), wechatAppId);
// 删除数据库中的记录
adapayMemberAccountService.deleteAccountByMerchantId(dto.getMerchantId());
}
}

View File

@@ -119,4 +119,17 @@ public interface AdapayMemberAccountMapper {
void updateAdapayMemberAccountByMemberId(AdapayMemberAccount adapayMemberAccount);
AdapayMemberAccount selectByMemberId(String memberId);
/**
* 通过运营商id删除账户信息
* @param merchantId
*/
void deleteAccountByMerchantId(String merchantId);
/**
* 根据运营商id查询最近一条的信息
* @param merchantId
* @return
*/
AdapayMemberAccount selectRecentInfoByMerchantId(String merchantId);
}

View File

@@ -109,4 +109,17 @@ public interface AdapayMemberAccountService {
* @return
*/
String selectMerchantNameByAdapayMemberId(String adapayMemberId);
/**
* 根据运营商id删除记录
* @param merchantId
*/
void deleteAccountByMerchantId(String merchantId);
/**
* 根据运营商Id查询最近一条的信息
* @param merchantId
* @return
*/
AdapayMemberAccount selectRecentInfoByMerchantId(String merchantId);
}

View File

@@ -259,5 +259,19 @@ public class AdapayMemberAccountServiceImpl implements AdapayMemberAccountServic
return pileMerchantInfo.getMerchantName();
}
@Override
public void deleteAccountByMerchantId(String merchantId) {
adapayMemberAccountMapper.deleteAccountByMerchantId(merchantId);
}
/**
* 根据运营商id查询最近一条的信息
* @param merchantId
* @return
*/
@Override
public AdapayMemberAccount selectRecentInfoByMerchantId(String merchantId) {
return adapayMemberAccountMapper.selectRecentInfoByMerchantId(merchantId);
}
}

View File

@@ -528,4 +528,20 @@
where del_flag = '0'
and adapay_member_id = #{memberId,jdbcType=VARCHAR}
</select>
<update id="deleteAccountByMerchantId">
update
adapay_member_account
set del_flag = '0'
where merchant_id = #{merchantId,jdbcType=VARCHAR}
</update>
<select id="selectRecentInfoByMerchantId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from adapay_member_account
where merchant_id = #{merchantId,jdbcType=VARCHAR}
order by create_time desc
limit 1
</select>
</mapper>