From 1fbe22585bfbe00bdac594dbcbf0d298e3ab88be Mon Sep 17 00:00:00 2001 From: HH Date: Sun, 12 Mar 2023 22:21:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=88=E5=82=85=E4=BF=AE=E6=94=B9=E7=BB=93?= =?UTF-8?q?=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 --- .../worker/WorkerBankController.java | 43 +++++++++++++++++-- .../com/ghy/web/core/GhyExceptionHandler.java | 18 ++++++++ .../ghy/worker/mapper/WorkerBankMapper.java | 3 ++ .../request/WorkerBindBankCardRequest.java | 8 ++++ .../ghy/worker/service/WorkerBankService.java | 4 ++ .../service/impl/WorkerBankServiceImpl.java | 10 +++++ .../mapper/worker/WorkerBankMapper.xml | 19 +++++++- 7 files changed, 101 insertions(+), 4 deletions(-) create mode 100644 ghy-admin/src/main/java/com/ghy/web/core/GhyExceptionHandler.java diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerBankController.java b/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerBankController.java index b3b8c148..4e1f6327 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerBankController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerBankController.java @@ -19,9 +19,12 @@ import com.ghy.worker.service.WorkerBankService; import com.ghy.worker.service.WorkerService; import com.huifu.adapay.core.exception.BaseAdaPayException; import org.springframework.stereotype.Controller; +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; @@ -47,7 +50,7 @@ public class WorkerBankController extends BaseController { */ @PostMapping("bind") @ResponseBody - private AjaxResult bindBankCard(@RequestBody WorkerBindBankCardRequest request) throws BaseAdaPayException { + public AjaxResult bindBankCard(@RequestBody @Valid WorkerBindBankCardRequest request) throws BaseAdaPayException { Set merchants = AdapayConfig.getMerchants(); for (Merchant merchant : merchants) { String memberId = AdapayUtils.getWorkerMemberId(request.getWorkerId(), merchant.getDeptId()); @@ -106,10 +109,44 @@ public class WorkerBankController extends BaseController { @PutMapping("update") @ResponseBody - private AjaxResult updateBankCard(@RequestBody WorkerBindBankCardRequest request) throws BaseAdaPayException { + @Transactional(rollbackFor = Exception.class) + public AjaxResult updateBankCard(@RequestBody @Valid WorkerBindBankCardRequest request) throws BaseAdaPayException { Set merchants = AdapayConfig.getMerchants(); for (Merchant merchant : merchants) { - + String memberId = AdapayUtils.getWorkerMemberId(request.getWorkerId(), merchant.getDeptId()); + WorkerBank workerBank = workerBankService.getByMemberId(memberId); + if (workerBank != null) { + if (request.getBankNum().equals(workerBank.getBankNum())) { + // 这个银行卡号已经绑定过了 + continue; + } + boolean equalsName = request.getName().equals(workerBank.getName()); + boolean equalsCertId = request.getCertId().equals(workerBank.getCertId()); + // 必须与原来的开户名和身份证一致 + Assert.isTrue(equalsName && equalsCertId, "银行卡与实名信息不符"); + JSONObject deleteResponse = adapayService.deleteSettleAccount(merchant.getDeptId(), memberId, workerBank.getSettleAccountId()); + boolean deleteResult = AdapayStatusEnum.succeeded.code.equals(deleteResponse.getString("status")); + Assert.isTrue(deleteResult, "解绑银行卡失败: " + deleteResponse.getString("error_msg")); + } else { + workerBank = new WorkerBank(); + workerBank.setAdapayMemberId(memberId); + workerBank.setWorkerId(request.getWorkerId()); + workerBank.setName(request.getName()); + workerBank.setCertId(request.getCertId()); + workerBank.setDeptId(merchant.getDeptId()); + workerBank.setSettleAccount(1); + workerBankService.insertWorkerBank(workerBank); + } + // 绑定新卡 + 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")); + // 更新数据库中的手机号和银行卡号 + workerBank.setPhone(request.getPhone()); + workerBank.setBankNum(request.getBankNum()); + workerBank.setSettleAccountId(createResponse.getString("id")); + workerBankService.updateByMemberId(workerBank); } return AjaxResult.success("绑定银行卡成功"); } diff --git a/ghy-admin/src/main/java/com/ghy/web/core/GhyExceptionHandler.java b/ghy-admin/src/main/java/com/ghy/web/core/GhyExceptionHandler.java new file mode 100644 index 00000000..5c01872e --- /dev/null +++ b/ghy-admin/src/main/java/com/ghy/web/core/GhyExceptionHandler.java @@ -0,0 +1,18 @@ +package com.ghy.web.core; + +import com.ghy.common.core.domain.AjaxResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; + +@Slf4j +@ControllerAdvice +public class GhyExceptionHandler { + + @ExceptionHandler(IllegalArgumentException.class) + public AjaxResult IllegalArgumentExceptionHandler(IllegalArgumentException e) { + log.error(e.getMessage(), e); + return AjaxResult.error(e.getMessage()); + } + +} diff --git a/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerBankMapper.java b/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerBankMapper.java index 2511150f..3bc8448d 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerBankMapper.java +++ b/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerBankMapper.java @@ -17,6 +17,8 @@ public interface WorkerBankMapper { */ int insertWorkerBank(WorkerBank workerBank); + int updateByMemberId(WorkerBank workerBank); + /** * @param workerId 师傅id * @return 师傅银行卡对象 @@ -29,4 +31,5 @@ public interface WorkerBankMapper { */ List getByWorkerIds(@Param("ids") String ids); + WorkerBank getByMemberId(String memberId); } diff --git a/ghy-worker/src/main/java/com/ghy/worker/request/WorkerBindBankCardRequest.java b/ghy-worker/src/main/java/com/ghy/worker/request/WorkerBindBankCardRequest.java index d3750b83..4b3ed4e1 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/request/WorkerBindBankCardRequest.java +++ b/ghy-worker/src/main/java/com/ghy/worker/request/WorkerBindBankCardRequest.java @@ -2,32 +2,40 @@ package com.ghy.worker.request; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + @Data public class WorkerBindBankCardRequest { /** * 师傅ID */ + @NotNull private Long workerId; /** * 用户真实姓名 */ + @NotBlank private String name; /** * 身份证号 */ + @NotBlank private String certId; /** * 银行卡号 */ + @NotBlank private String bankNum; /** * 银行卡绑定手机号 */ + @NotBlank private String phone; } diff --git a/ghy-worker/src/main/java/com/ghy/worker/service/WorkerBankService.java b/ghy-worker/src/main/java/com/ghy/worker/service/WorkerBankService.java index d1f814e1..d6c46c52 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/service/WorkerBankService.java +++ b/ghy-worker/src/main/java/com/ghy/worker/service/WorkerBankService.java @@ -16,12 +16,16 @@ public interface WorkerBankService { */ int insertWorkerBank(WorkerBank workerBank); + int updateByMemberId(WorkerBank workerBank); + /** * @param workerId 师傅id * @return 师傅银行卡对象 */ WorkerBank getByWorkerId(Long workerId); + WorkerBank getByMemberId(String memberId); + /** * @param ids 师傅ids * @return 师傅银行对象集合 diff --git a/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerBankServiceImpl.java b/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerBankServiceImpl.java index 1632f6d2..b5dd70af 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerBankServiceImpl.java +++ b/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerBankServiceImpl.java @@ -21,11 +21,21 @@ public class WorkerBankServiceImpl implements WorkerBankService { return workerBankMapper.insertWorkerBank(workerBank); } + @Override + public int updateByMemberId(WorkerBank workerBank) { + return workerBankMapper.updateByMemberId(workerBank); + } + @Override public WorkerBank getByWorkerId(Long workerId) { return workerBankMapper.getByWorkerId(workerId); } + @Override + public WorkerBank getByMemberId(String memberId) { + return workerBankMapper.getByMemberId(memberId); + } + @Override public List getByWorkerIds(String ids) { return workerBankMapper.getByWorkerIds(ids); diff --git a/ghy-worker/src/main/resources/mapper/worker/WorkerBankMapper.xml b/ghy-worker/src/main/resources/mapper/worker/WorkerBankMapper.xml index 2d9ec5ef..22a8c0d4 100644 --- a/ghy-worker/src/main/resources/mapper/worker/WorkerBankMapper.xml +++ b/ghy-worker/src/main/resources/mapper/worker/WorkerBankMapper.xml @@ -52,6 +52,17 @@ ) + + UPDATE worker_bank + + phone = #{phone}, + bank_num = #{bankNum}, + settle_account_id = #{settleAccountId}, + updateTime = NOW() + + WHERE adapay_member_id = #{memberId} + + - + + +