From af8bfa5a4c86908ef4fda21fd12bde39a944e5f0 Mon Sep 17 00:00:00 2001 From: clunt Date: Fri, 27 May 2022 10:00:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=88=E5=82=85=E6=B3=A8=E5=86=8Cadapay?= =?UTF-8?q?=E7=94=A8=E6=88=B7=EF=BC=8C=E4=BB=A5=E5=8F=8A=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=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 | 93 +++++++++++++++++++ .../com/ghy/worker/domain/WorkerBank.java | 6 ++ .../ghy/worker/mapper/WorkerBankMapper.java | 17 ++++ .../request/WorkerBindBankCardRequest.java | 33 +++++++ .../ghy/worker/service/WorkerBankService.java | 17 ++++ .../service/impl/WorkerBankServiceImpl.java | 22 +++++ .../mapper/worker/WorkerBankMapper.xml | 75 +++++++++++++++ 7 files changed, 263 insertions(+) create mode 100644 ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerBankController.java create mode 100644 ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerBankMapper.java create mode 100644 ghy-worker/src/main/java/com/ghy/worker/request/WorkerBindBankCardRequest.java create mode 100644 ghy-worker/src/main/java/com/ghy/worker/service/WorkerBankService.java create mode 100644 ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerBankServiceImpl.java create mode 100644 ghy-worker/src/main/resources/mapper/worker/WorkerBankMapper.xml 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 new file mode 100644 index 00000000..17c5d7de --- /dev/null +++ b/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerBankController.java @@ -0,0 +1,93 @@ +package com.ghy.web.controller.worker; + +import com.alibaba.fastjson.JSON; +import com.ghy.common.adapay.AdapayConfig; +import com.ghy.common.adapay.AdapayService; +import com.ghy.common.adapay.model.AdapayStatusEnum; +import com.ghy.common.adapay.model.Merchant; +import com.ghy.common.core.controller.BaseController; +import com.ghy.common.core.domain.AjaxResult; +import com.ghy.common.utils.AdapayUtils; +import com.ghy.worker.domain.WorkerBank; +import com.ghy.worker.request.WorkerBindBankCardRequest; +import com.ghy.worker.service.WorkerBankService; +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 javax.annotation.Resource; +import java.util.Map; +import java.util.Set; + +/** + * @author clunt + * 师傅银行卡绑定 + */ +@Slf4j +@Controller +@RequestMapping("/worker/bank") +public class WorkerBankController extends BaseController { + + @Resource + private WorkerBankService workerBankService; + @Resource + private AdapayService adapayService; + + + /** + * 个人账户绑定银行卡接口 + */ + @PostMapping("bind") + @ResponseBody + private AjaxResult bindBankCard(@RequestBody WorkerBindBankCardRequest request) throws BaseAdaPayException { + Set merchants = AdapayConfig.getMerchants(); + for (Merchant merchant : merchants) { + String memberId = AdapayUtils.getWorkerMemberId(request.getWorkerId(), merchant.getDeptId()); + + // 需要先检查一次memberId是否已存在,如果已存在则只需要绑卡即可 + Map member = adapayService.queryMember(merchant.getDeptId(), memberId); + if (AdapayStatusEnum.succeeded.code.equals(member.get("status")) && memberId.equals(member.get("member_id"))) { + log.info("用户[memberId={}]已存在 跳过实名直接绑卡", memberId); + } else { + // 先在Adapay创建实名用户 + Map result1 = adapayService.createMember(merchant.getDeptId(), memberId, request.getPhone(), + request.getName(), request.getCertId()); + if (!AdapayStatusEnum.succeeded.code.equals(result1.get("status"))) { + log.error("实名认证失败[{}]", JSON.toJSONString(result1)); + return AjaxResult.error("个人信息不正确"); + } + } + + // 开始创建结算账户 + Map 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"))) { + log.info("用户[memberId={}]结算账户已存在 跳过", memberId); + } else { + log.error("创建结算账户失败[{}]", JSON.toJSONString(result2)); + return AjaxResult.error("个人信息与银行卡不匹配"); + } + } + + WorkerBank workerBank = new WorkerBank(); + workerBank.setWorkerBankId(request.getWorkerId()); + workerBank.setName(request.getName()); + workerBank.setCertId(request.getCertId()); + workerBank.setBankNum(request.getBankNum()); + workerBank.setPhone(request.getPhone()); + workerBank.setDeptId(merchant.getDeptId()); + workerBank.setAdapayMemberId(memberId); + workerBank.setSettleAccount(1); + workerBankService.insertWorkerBank(workerBank); + + } + return AjaxResult.success(); + } + + +} diff --git a/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerBank.java b/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerBank.java index 3dc1b6d4..829b035b 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerBank.java +++ b/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerBank.java @@ -2,7 +2,13 @@ package com.ghy.worker.domain; import com.ghy.common.annotation.Excel; import com.ghy.common.core.domain.BaseEntity; +import lombok.Data; +/** + * @author clunt + * 师傅银行卡实体 + */ +@Data public class WorkerBank extends BaseEntity { @Excel(name = "师傅银行卡id", cellType = Excel.ColumnType.NUMERIC) 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 new file mode 100644 index 00000000..b8dadc21 --- /dev/null +++ b/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerBankMapper.java @@ -0,0 +1,17 @@ +package com.ghy.worker.mapper; + +import com.ghy.worker.domain.WorkerBank; + +/** + * @author clunt + * 师傅银行卡mapper层 + */ +public interface WorkerBankMapper { + + /** + * @param workerBank 银行卡实体 + * @return 消费者 + */ + int insertWorkerBank(WorkerBank workerBank); + +} 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 new file mode 100644 index 00000000..d3750b83 --- /dev/null +++ b/ghy-worker/src/main/java/com/ghy/worker/request/WorkerBindBankCardRequest.java @@ -0,0 +1,33 @@ +package com.ghy.worker.request; + +import lombok.Data; + +@Data +public class WorkerBindBankCardRequest { + + /** + * 师傅ID + */ + private Long workerId; + + /** + * 用户真实姓名 + */ + private String name; + + /** + * 身份证号 + */ + private String certId; + + /** + * 银行卡号 + */ + private String bankNum; + + /** + * 银行卡绑定手机号 + */ + 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 new file mode 100644 index 00000000..61582b10 --- /dev/null +++ b/ghy-worker/src/main/java/com/ghy/worker/service/WorkerBankService.java @@ -0,0 +1,17 @@ +package com.ghy.worker.service; + +import com.ghy.worker.domain.WorkerBank; + +/** + * @author clunt + * 师傅银行卡service层 + */ +public interface WorkerBankService { + + /** + * @param workerBank 银行卡实体 + * @return 消费者 + */ + int insertWorkerBank(WorkerBank workerBank); + +} 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 new file mode 100644 index 00000000..7d0e2f12 --- /dev/null +++ b/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerBankServiceImpl.java @@ -0,0 +1,22 @@ +package com.ghy.worker.service.impl; + +import com.ghy.worker.domain.WorkerBank; +import com.ghy.worker.mapper.WorkerBankMapper; +import com.ghy.worker.service.WorkerBankService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Slf4j +@Service +public class WorkerBankServiceImpl implements WorkerBankService { + + @Resource + private WorkerBankMapper workerBankMapper; + + @Override + public int insertWorkerBank(WorkerBank workerBank) { + return workerBankMapper.insertWorkerBank(workerBank); + } +} diff --git a/ghy-worker/src/main/resources/mapper/worker/WorkerBankMapper.xml b/ghy-worker/src/main/resources/mapper/worker/WorkerBankMapper.xml new file mode 100644 index 00000000..7b850ee4 --- /dev/null +++ b/ghy-worker/src/main/resources/mapper/worker/WorkerBankMapper.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO worker_bank( + worker_id, + name, + cert_id, + bank_name, + bank_num, + phone, + dept_id, + adapay_member_id, + settle_account, + create_by, + remark, + create_time + )VALUES( + #{workerId}, + #{name}, + #{certId}, + #{bankName}, + #{bankNum}, + #{phone}, + #{deptId}, + #{adapayMemberId}, + #{settleAccount}, + #{createBy}, + #{remark}, + sysdate() + ) + + + + + + + + + + + + + + + + + + + + + + + +