师傅修改结算银行卡

This commit is contained in:
HH 2023-03-12 22:21:26 +08:00
parent 2ddf5a6bf6
commit 1fbe22585b
7 changed files with 101 additions and 4 deletions

View File

@ -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<Merchant> 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<Merchant> 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("绑定银行卡成功");
}

View File

@ -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());
}
}

View File

@ -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<WorkerBank> getByWorkerIds(@Param("ids") String ids);
WorkerBank getByMemberId(String memberId);
}

View File

@ -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;
}

View File

@ -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 师傅银行对象集合

View File

@ -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<WorkerBank> getByWorkerIds(String ids) {
return workerBankMapper.getByWorkerIds(ids);

View File

@ -52,6 +52,17 @@
)
</insert>
<update id="updateByMemberId" parameterType="com.ghy.worker.domain.WorkerBank">
UPDATE worker_bank
<set>
<if test="phone != null and phone != ''">phone = #{phone},</if>
<if test="bankNum != null and bankNum != ''">bank_num = #{bankNum},</if>
<if test="settleAccountId != null and settleAccountId != ''">settle_account_id = #{settleAccountId},</if>
updateTime = NOW()
</set>
WHERE adapay_member_id = #{memberId}
</update>
<select id="getByWorkerId" parameterType="Long" resultMap="WorkerBankResult">
SELECT *
FROM worker_bank
@ -61,7 +72,13 @@
</if>
</where>
</select>
<select id="getByMemberId" parameterType="String" resultMap="WorkerBankResult">
SELECT *
FROM worker_bank
WHERE adapay_member_id = #{memberId}
</select>
<select id="getByWorkerIds" resultMap="WorkerBankResult">
SELECT * FROM worker_bank
WHERE worker_id in ( #{ids} )