hejianhao
2026-08-19 365ce457ce9cde401c54a58994582c96a7b812b2
feat0806: 实现APP门店绑定银行卡功能
4个文件已添加
90 ■■■■■ 已修改文件
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/controller/AppBankCardController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/dto/AppBankCardUpdateRequest.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/service/AppBankCardService.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/vo/AppBankCardVO.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/controller/AppBankCardController.java
New file
@@ -0,0 +1,19 @@
package com.tcm.training.admin.app.bankcard.controller;
import com.tcm.training.admin.app.bankcard.dto.AppBankCardUpdateRequest;
import com.tcm.training.admin.app.bankcard.service.AppBankCardService;
import com.tcm.training.admin.app.bankcard.vo.AppBankCardVO;
import com.tcm.training.admin.common.ApiResponse;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@Validated
@RestController
@RequestMapping({"/api/app/bank-card", "/api/v1/app/bank-card"})
public class AppBankCardController {
    private final AppBankCardService service;
    public AppBankCardController(AppBankCardService service) { this.service = service; }
    @GetMapping public ApiResponse<AppBankCardVO> detail() { return ApiResponse.ok(service.detail()); }
    @PutMapping public ApiResponse<AppBankCardVO> update(@Valid @RequestBody AppBankCardUpdateRequest request) { return ApiResponse.ok(service.update(request)); }
}
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/dto/AppBankCardUpdateRequest.java
New file
@@ -0,0 +1,13 @@
package com.tcm.training.admin.app.bankcard.dto;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
@Getter @Setter
public class AppBankCardUpdateRequest {
    @NotBlank(message = "请输入银行名称") private String bankName;
    @NotBlank(message = "请输入账户名称") private String accountName;
    @NotBlank(message = "请输入账号") private String accountNumber;
    @NotBlank(message = "请输入支行名称") private String branchName;
}
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/service/AppBankCardService.java
New file
@@ -0,0 +1,46 @@
package com.tcm.training.admin.app.bankcard.service;
import com.tcm.training.admin.app.auth.service.AppAuthSessionService;
import com.tcm.training.admin.app.bankcard.dto.AppBankCardUpdateRequest;
import com.tcm.training.admin.app.bankcard.vo.AppBankCardVO;
import com.tcm.training.admin.live.entity.Clinic;
import com.tcm.training.admin.live.mapper.ClinicMapper;
import com.tcm.training.admin.member.entity.AppUser;
import com.tcm.training.admin.member.mapper.UserMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class AppBankCardService {
    private final AppAuthSessionService sessionService;
    private final UserMapper userMapper;
    private final ClinicMapper clinicMapper;
    public AppBankCardService(AppAuthSessionService sessionService, UserMapper userMapper, ClinicMapper clinicMapper) {
        this.sessionService = sessionService; this.userMapper = userMapper; this.clinicMapper = clinicMapper;
    }
    public AppBankCardVO detail() { return toVO(requireClinic()); }
    @Transactional
    public AppBankCardVO update(AppBankCardUpdateRequest request) {
        Clinic clinic = requireClinic();
        clinic.setBankName(trim(request.getBankName()));
        clinic.setAccountHolder(trim(request.getAccountName()));
        clinic.setAccountNumber(trim(request.getAccountNumber()));
        clinic.setBranchName(trim(request.getBranchName()));
        clinicMapper.updateById(clinic);
        return toVO(clinic);
    }
    private Clinic requireClinic() {
        AppUser user = userMapper.selectById(sessionService.requireLoginUserId());
        if (user == null || user.getDeleted() == null || user.getDeleted() != 0) throw new IllegalArgumentException("用户不存在");
        if (user.getType() == null || user.getType() != 1 || user.getClinicId() == null) throw new IllegalArgumentException("当前账号未绑定诊所");
        Clinic clinic = clinicMapper.selectById(user.getClinicId());
        if (clinic == null || clinic.getDeleted() == null || clinic.getDeleted() != 0) throw new IllegalArgumentException("诊所不存在");
        return clinic;
    }
    private AppBankCardVO toVO(Clinic c) { AppBankCardVO v=new AppBankCardVO(); v.setBankName(c.getBankName()); v.setAccountName(c.getAccountHolder()); v.setAccountNumber(c.getAccountNumber()); v.setBranchName(c.getBranchName()); return v; }
    private String trim(String value) { return value == null ? null : value.trim(); }
}
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/bankcard/vo/AppBankCardVO.java
New file
@@ -0,0 +1,12 @@
package com.tcm.training.admin.app.bankcard.vo;
import lombok.Getter;
import lombok.Setter;
@Getter @Setter
public class AppBankCardVO {
    private String bankName;
    private String accountName;
    private String accountNumber;
    private String branchName;
}