diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/BankAccountController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/BankAccountController.java new file mode 100644 index 0000000..e1dabf6 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/BankAccountController.java @@ -0,0 +1,36 @@ +package com.jzo2o.customer.controller.agency; + +import com.jzo2o.customer.model.dto.request.BankAccountUpsertReqDTO; +import com.jzo2o.customer.model.dto.response.BankAccountResDTO; +import com.jzo2o.customer.service.IBankAccountService; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @author JIAN + */ +@RestController("agencyBankAccountController") +@RequestMapping("/agency/bank-account") +@Api(tags = "机构端 - 银行账号相关接口") +public class BankAccountController { + @Resource + private IBankAccountService bankAccountService; + + /** + * 新增/修改银行账号 + */ + @PostMapping + public void upsertBankAccount(@RequestBody BankAccountUpsertReqDTO bankAccountUpsertReqDTO) { + bankAccountService.upsertBankAccount(bankAccountUpsertReqDTO); + } + + /** + * 获取当前用户的银行账户 + */ + @GetMapping("/currentUserBankAccount") + public BankAccountResDTO getCurrentUserBankAccount() { + return bankAccountService.getCurrentUserBankAccount(); + } +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/BankAccountController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/BankAccountController.java new file mode 100644 index 0000000..e67e486 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/BankAccountController.java @@ -0,0 +1,36 @@ +package com.jzo2o.customer.controller.worker; + +import com.jzo2o.customer.model.dto.request.BankAccountUpsertReqDTO; +import com.jzo2o.customer.model.dto.response.BankAccountResDTO; +import com.jzo2o.customer.service.IBankAccountService; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @author JIAN + */ +@RestController("workerBankAccountController") +@RequestMapping("/worker/bank-account") +@Api(tags = "服务端 - 银行账号相关接口") +public class BankAccountController { + @Resource + private IBankAccountService bankAccountService; + + /** + * 新增/修改银行账号 + */ + @PostMapping + public void upsertBankAccount(@RequestBody BankAccountUpsertReqDTO bankAccountUpsertReqDTO) { + bankAccountService.upsertBankAccount(bankAccountUpsertReqDTO); + } + + /** + * 获取当前用户的银行账户 + */ + @GetMapping("/currentUserBankAccount") + public BankAccountResDTO getCurrentUserBankAccount() { + return bankAccountService.getCurrentUserBankAccount(); + } +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/BankAccountMapper.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/BankAccountMapper.java new file mode 100644 index 0000000..cfc7052 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/BankAccountMapper.java @@ -0,0 +1,15 @@ +package com.jzo2o.customer.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jzo2o.customer.model.domain.BankAccount; + +/** + *

+ * 服务人员/机构银行账号 Mapper 接口 + *

+ * + * @author JIAN + * @since 2024-08-29 + */ +public interface BankAccountMapper extends BaseMapper { +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/BankAccount.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/BankAccount.java new file mode 100644 index 0000000..a88baf2 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/BankAccount.java @@ -0,0 +1,101 @@ +package com.jzo2o.customer.model.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 服务人员/机构银行账号 + *

+ * + * @author JIAN + * @since 2024-08-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("bank_account") +public class BankAccount implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 服务人员/机构id + */ + @TableId(value = "id", type = IdType.NONE) + private Long id; + + /** + * 类型,2:服务人员,3:服务机构 + */ + @TableField("type") + private Integer type; + + /** + * 户名 + */ + @TableField("name") + private String name; + + /** + * 省份 + */ + @TableField("province") + private String province; + + /** + * 市级 + */ + @TableField("city") + private String city; + + /** + * 区/县 + */ + @TableField("district") + private String district; + + /** + * 银行名称 + */ + @TableField("bank_name") + private String bankName; + + /** + * 银行网点 + */ + @TableField("branch") + private String branch; + + /** + * 银行卡号 + */ + @TableField("account") + private String account; + + /** + * 开户证明 + */ + @TableField("account_certification") + private String accountCertification; + + /** + * 创建时间 + */ + @TableField("create_time") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IBankAccountService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IBankAccountService.java new file mode 100644 index 0000000..ae04dd0 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IBankAccountService.java @@ -0,0 +1,26 @@ +package com.jzo2o.customer.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jzo2o.customer.model.domain.BankAccount; +import com.jzo2o.customer.model.dto.request.BankAccountUpsertReqDTO; +import com.jzo2o.customer.model.dto.response.BankAccountResDTO; + +/** + *

+ * 服务人员/机构银行账号 服务类 + *

+ * + * @author JIAN + * @since 2024-08-29 + */ +public interface IBankAccountService extends IService { + /** + * 新增/更新银行账户 + */ + void upsertBankAccount(BankAccountUpsertReqDTO bankAccountUpsertReqDTO); + + /** + * 获取当前用户的银行账户 + */ + BankAccountResDTO getCurrentUserBankAccount(); +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/BankAccountServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/BankAccountServiceImpl.java new file mode 100644 index 0000000..ebac117 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/BankAccountServiceImpl.java @@ -0,0 +1,64 @@ +package com.jzo2o.customer.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jzo2o.common.expcetions.ForbiddenOperationException; +import com.jzo2o.common.utils.BeanUtils; +import com.jzo2o.common.utils.ObjectUtils; +import com.jzo2o.customer.mapper.BankAccountMapper; +import com.jzo2o.customer.model.domain.BankAccount; +import com.jzo2o.customer.model.domain.ServeProvider; +import com.jzo2o.customer.model.dto.request.BankAccountUpsertReqDTO; +import com.jzo2o.customer.model.dto.response.BankAccountResDTO; +import com.jzo2o.customer.service.IBankAccountService; +import com.jzo2o.customer.service.IServeProviderService; +import com.jzo2o.mvc.utils.UserContext; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +/** + *

+ * 服务人员/机构银行账号 服务实现类 + *

+ * @author JIAN + * @since 2024-08-29 + */ +@Service +public class BankAccountServiceImpl extends ServiceImpl implements IBankAccountService { + @Resource + IServeProviderService serveProviderService; + + @Override + @Transactional + public void upsertBankAccount(BankAccountUpsertReqDTO bankAccountUpsertReqDTO) { + Long userId = UserContext.currentUserId(); + ServeProvider serveProvider = serveProviderService.getById(userId); + if (ObjectUtils.isEmpty(serveProvider)) { + throw new ForbiddenOperationException("当前用户不存在"); + } + + BankAccount bankAccount = BeanUtils.toBean(bankAccountUpsertReqDTO, BankAccount.class); + bankAccount.setId(userId); + bankAccount.setType(serveProvider.getType()); + + if (ObjectUtils.isEmpty(baseMapper.selectById(userId))) { + baseMapper.insert(bankAccount); + } else { + baseMapper.updateById(bankAccount); + } + } + + @Override + public BankAccountResDTO getCurrentUserBankAccount() { + Long userId = UserContext.currentUserId(); + if (ObjectUtils.isEmpty(userId)) { + throw new ForbiddenOperationException("当前用户不存在"); + } + + BankAccount bankAccount = baseMapper.selectById(userId); + return ObjectUtils.isEmpty(bankAccount) + ? new BankAccountResDTO() + : BeanUtils.toBean(bankAccount, BankAccountResDTO.class); + } +} \ No newline at end of file