From 139702efa7d5011c9a3d9b6fe827d46f8b04d002 Mon Sep 17 00:00:00 2001 From: HH Date: Sun, 12 Mar 2023 23:16:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E8=B4=B9=E8=80=85=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E9=93=B6=E8=A1=8C=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerBankController.java | 63 ++++++++++++++++--- .../com/ghy/customer/domain/CustomerBank.java | 3 + .../customer/mapper/CustomerBankMapper.java | 4 ++ .../customer/request/BindBankCardRequest.java | 8 +++ .../customer/service/CustomerBankService.java | 4 ++ .../service/impl/CustomerBankServiceImpl.java | 14 ++++- .../mapper/customer/CustomerBankMapper.xml | 21 ++++++- 7 files changed, 104 insertions(+), 13 deletions(-) diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/customer/CustomerBankController.java b/ghy-admin/src/main/java/com/ghy/web/controller/customer/CustomerBankController.java index a1248f7a..3958dc82 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/customer/CustomerBankController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/customer/CustomerBankController.java @@ -1,8 +1,8 @@ package com.ghy.web.controller.customer; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.ghy.common.adapay.AdapayConfig; -import com.ghy.payment.service.AdapayService; import com.ghy.common.adapay.model.AdapayStatusEnum; import com.ghy.common.adapay.model.Merchant; import com.ghy.common.core.domain.AjaxResult; @@ -11,15 +11,16 @@ import com.ghy.common.utils.ExceptionUtil; import com.ghy.customer.domain.CustomerBank; import com.ghy.customer.request.BindBankCardRequest; import com.ghy.customer.service.CustomerBankService; +import com.ghy.payment.service.AdapayService; import com.huifu.adapay.core.exception.BaseAdaPayException; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.Assert; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.validation.Valid; import java.util.Map; import java.util.Set; @@ -41,7 +42,7 @@ public class CustomerBankController { */ @PostMapping("bind") @ResponseBody - private AjaxResult bindBankCard(@RequestBody BindBankCardRequest request) throws BaseAdaPayException { + private AjaxResult bindBankCard(@RequestBody @Valid BindBankCardRequest request) throws BaseAdaPayException { Set merchants = AdapayConfig.getMerchants(); for (Merchant merchant : merchants) { String memberId = AdapayUtils.getCustomerMemberId(request.getCustomerId(), merchant.getDeptId()); @@ -61,7 +62,7 @@ public class CustomerBankController { } // 开始创建结算账户 - Map result2 = adapayService.createSettleAccount(merchant.getDeptId(), memberId, request.getBankNum(), request.getName(), + JSONObject result2 = adapayService.createSettleAccount(merchant.getDeptId(), memberId, request.getBankNum(), request.getName(), "2", request.getCertId(), request.getPhone(), null, null, null); if (!AdapayStatusEnum.succeeded.code.equals(result2.get("status"))) { if ("account_exists".equals(result2.get("error_code"))) { @@ -87,12 +88,56 @@ public class CustomerBankController { return AjaxResult.success(); } + @PutMapping("update") + @ResponseBody + @Transactional(rollbackFor = Exception.class) + public AjaxResult updateBankCard(@RequestBody @Valid BindBankCardRequest request) throws BaseAdaPayException { + Set merchants = AdapayConfig.getMerchants(); + for (Merchant merchant : merchants) { + String memberId = AdapayUtils.getCustomerMemberId(request.getCustomerId(), merchant.getDeptId()); + CustomerBank customerBank = customerBankService.getByMemberId(memberId); + if (customerBank != null) { + if (request.getBankNum().equals(customerBank.getBankNum())) { + // 这个银行卡号已经绑定过了 + continue; + } + boolean equalsName = request.getName().equals(customerBank.getName()); + boolean equalsCertId = request.getCertId().equals(customerBank.getCertId()); + // 必须与原来的开户名和身份证一致 + Assert.isTrue(equalsName && equalsCertId, "银行卡与实名信息不符"); + JSONObject deleteResponse = adapayService.deleteSettleAccount(merchant.getDeptId(), memberId, customerBank.getSettleAccountId()); + boolean deleteResult = AdapayStatusEnum.succeeded.code.equals(deleteResponse.getString("status")); + Assert.isTrue(deleteResult, "解绑银行卡失败: " + deleteResponse.getString("error_msg")); + } else { + customerBank = new CustomerBank(); + customerBank.setAdapayMemberId(memberId); + customerBank.setCustomerId(request.getCustomerId()); + customerBank.setName(request.getName()); + customerBank.setCertId(request.getCertId()); + customerBank.setDeptId(merchant.getDeptId()); + customerBank.setSettleAccount(1); + customerBankService.insertCustomerBank(customerBank); + } + // 绑定新卡 + JSONObject createResponse = adapayService.createSettleAccount(merchant.getDeptId(), memberId, request.getBankNum(), request.getName(), + "2", request.getCertId(), request.getPhone(), null, null, null); + boolean createResult = AdapayStatusEnum.succeeded.code.equals(createResponse.get("status")); + Assert.isTrue(createResult, "绑定银行卡失败: " + createResponse.getString("error_msg")); + // 更新数据库中的手机号和银行卡号 + customerBank.setPhone(request.getPhone()); + customerBank.setBankNum(request.getBankNum()); + customerBank.setSettleAccountId(createResponse.getString("id")); + customerBankService.updateByMemberId(customerBank); + } + return AjaxResult.success("绑定银行卡成功"); + } + @PostMapping("getByCustomerId") @ResponseBody - public AjaxResult getByCustomerId(@RequestBody BindBankCardRequest request){ + public AjaxResult getByCustomerId(@RequestBody BindBankCardRequest request) { try { return AjaxResult.success(customerBankService.selectByCustomerId(request.getCustomerId())); - }catch (Exception e){ + } catch (Exception e) { log.error(e.getMessage()); return AjaxResult.error(ExceptionUtil.getExceptionMessage(e)); } diff --git a/ghy-custom/src/main/java/com/ghy/customer/domain/CustomerBank.java b/ghy-custom/src/main/java/com/ghy/customer/domain/CustomerBank.java index 3e1f5c44..054fa890 100644 --- a/ghy-custom/src/main/java/com/ghy/customer/domain/CustomerBank.java +++ b/ghy-custom/src/main/java/com/ghy/customer/domain/CustomerBank.java @@ -41,4 +41,7 @@ public class CustomerBank extends BaseEntity { @Excel(name = "是否为结算账户", cellType = Excel.ColumnType.STRING) private Integer settleAccount; + + private String settleAccountId; + } diff --git a/ghy-custom/src/main/java/com/ghy/customer/mapper/CustomerBankMapper.java b/ghy-custom/src/main/java/com/ghy/customer/mapper/CustomerBankMapper.java index 455a4d28..90d232ce 100644 --- a/ghy-custom/src/main/java/com/ghy/customer/mapper/CustomerBankMapper.java +++ b/ghy-custom/src/main/java/com/ghy/customer/mapper/CustomerBankMapper.java @@ -63,4 +63,8 @@ public interface CustomerBankMapper { * @return 更新成功条数 */ int updateCustomerBank(CustomerBank customerBank); + + CustomerBank getByMemberId(String memberId); + + int updateByMemberId(CustomerBank customerBank); } diff --git a/ghy-custom/src/main/java/com/ghy/customer/request/BindBankCardRequest.java b/ghy-custom/src/main/java/com/ghy/customer/request/BindBankCardRequest.java index 7cb0c1ae..181ca097 100644 --- a/ghy-custom/src/main/java/com/ghy/customer/request/BindBankCardRequest.java +++ b/ghy-custom/src/main/java/com/ghy/customer/request/BindBankCardRequest.java @@ -2,6 +2,9 @@ package com.ghy.customer.request; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + /** * 个人账户绑定银行卡接口参数 * @@ -13,25 +16,30 @@ public class BindBankCardRequest { /** * 消费者ID */ + @NotNull private Long customerId; /** * 用户真实姓名 */ + @NotBlank private String name; /** * 身份证号 */ + @NotBlank private String certId; /** * 银行卡号 */ + @NotBlank private String bankNum; /** * 银行卡绑定手机号 */ + @NotBlank private String phone; } diff --git a/ghy-custom/src/main/java/com/ghy/customer/service/CustomerBankService.java b/ghy-custom/src/main/java/com/ghy/customer/service/CustomerBankService.java index 1261357a..868e2063 100644 --- a/ghy-custom/src/main/java/com/ghy/customer/service/CustomerBankService.java +++ b/ghy-custom/src/main/java/com/ghy/customer/service/CustomerBankService.java @@ -62,4 +62,8 @@ public interface CustomerBankService { * @return 更新成功条数 */ int updateCustomerBank(CustomerBank customerBank); + + CustomerBank getByMemberId(String memberId); + + int updateByMemberId(CustomerBank customerBank); } diff --git a/ghy-custom/src/main/java/com/ghy/customer/service/impl/CustomerBankServiceImpl.java b/ghy-custom/src/main/java/com/ghy/customer/service/impl/CustomerBankServiceImpl.java index 75d13786..9ba7626e 100644 --- a/ghy-custom/src/main/java/com/ghy/customer/service/impl/CustomerBankServiceImpl.java +++ b/ghy-custom/src/main/java/com/ghy/customer/service/impl/CustomerBankServiceImpl.java @@ -24,9 +24,9 @@ public class CustomerBankServiceImpl implements CustomerBankService { } @Override - public CustomerBank selectByCustomerId(Long customerId){ + public CustomerBank selectByCustomerId(Long customerId) { List list = customerBankMapper.selectByCustomerId(customerId); - if(list.size()>0){ + if (list.size() > 0) { return list.get(0); } return null; @@ -63,4 +63,14 @@ public class CustomerBankServiceImpl implements CustomerBankService { return customerBankMapper.updateCustomerBank(customerBank); } + @Override + public CustomerBank getByMemberId(String memberId) { + return customerBankMapper.getByMemberId(memberId); + } + + @Override + public int updateByMemberId(CustomerBank customerBank) { + return customerBankMapper.updateByMemberId(customerBank); + } + } \ No newline at end of file diff --git a/ghy-custom/src/main/resources/mapper/customer/CustomerBankMapper.xml b/ghy-custom/src/main/resources/mapper/customer/CustomerBankMapper.xml index ff3dc8ef..cd7c28a0 100644 --- a/ghy-custom/src/main/resources/mapper/customer/CustomerBankMapper.xml +++ b/ghy-custom/src/main/resources/mapper/customer/CustomerBankMapper.xml @@ -4,6 +4,7 @@ + @@ -22,6 +23,7 @@ SELECT customer_bank_id, + settle_account_id, customer_id, name, cert_id, @@ -56,7 +58,7 @@ - INSERT INTO customer_bank( + INSERT INTO customer_bank( settle_account_id, customer_id, name, cert_id, @@ -69,7 +71,7 @@ create_by, remark, create_time - )VALUES( + )VALUES( #{settleAccountId}, #{customerId}, #{name}, #{certId}, @@ -130,4 +132,19 @@ WHERE customer_bank_id = #{customerBankId} + + + + UPDATE customer_bank + + phone = #{phone}, + bank_num = #{bankNum}, + settle_account_id = #{settleAccountId}, + update_time = NOW() + + WHERE adapay_member_id = #{adapayMemberId} +