From 6d5b4e001c93856166a708977e171ac08c81bdb0 Mon Sep 17 00:00:00 2001 From: shenyifei Date: Thu, 25 Dec 2025 11:17:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(supplier):=20=E6=B7=BB=E5=8A=A0=E9=93=B6?= =?UTF-8?q?=E8=A1=8C=E5=90=8D=E7=A7=B0=E5=AD=97=E6=AE=B5=E5=B9=B6=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E4=BE=9B=E5=BA=94=E5=95=86=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在SupplierCreateCmd中添加银行名称字段并设置为必填 - 更新OrderSupplier相关DTO和实体类,添加银行名称字段 - 在SupplierVO和OrderSupplierVO中增加银行名称属性 - 完善WxMaOcrBankCardVO,添加银行名称字段支持 - 在数据库实体OrderSupplierDO和SupplierDO中增加银行名称映射 - 更新SupplierCreateCmd中的收款人姓名和手机号为必填字段 - 在Mapper XML文件中添加银行名称字段映射 - 实现微信OCR银行卡识别时通过API获取银行名称功能 - 添加微信银行信息查询相关的请求和响应数据结构 --- .../biz/domain/entity/OrderSupplier.java | 5 ++ .../erp/turbo/biz/domain/entity/Supplier.java | 5 ++ .../entity/OrderSupplierDO.java | 7 ++ .../biz/infrastructure/entity/SupplierDO.java | 6 ++ .../resources/mapper/OrderSupplierMapper.xml | 1 + .../main/resources/mapper/SupplierMapper.xml | 1 + .../executor/cmd/WxMaOcrBankCardCmdExe.java | 68 +++++++++++++++++++ .../api/biz/dto/cmd/SupplierCreateCmd.java | 11 ++- .../api/biz/dto/common/OrderSupplier.java | 6 ++ .../turbo/api/biz/dto/vo/OrderSupplierVO.java | 6 ++ .../erp/turbo/api/biz/dto/vo/SupplierVO.java | 10 ++- .../api/facade/dto/vo/WxMaOcrBankCardVO.java | 3 + 12 files changed, 125 insertions(+), 4 deletions(-) diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/OrderSupplier.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/OrderSupplier.java index b9ca5a4..25f6fe6 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/OrderSupplier.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/OrderSupplier.java @@ -55,6 +55,11 @@ public class OrderSupplier extends DTO { */ private String idCard; + /** + * 银行名称 + */ + private String bankName; + /** * 银行卡号 */ diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/Supplier.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/Supplier.java index 4018938..b6b809d 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/Supplier.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/Supplier.java @@ -41,6 +41,11 @@ public class Supplier extends DTO { */ private String phone; + /** + * 银行名称 + */ + private String bankName; + /** * 银行卡号 */ diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderSupplierDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderSupplierDO.java index 51f4c0f..c6050fe 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderSupplierDO.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderSupplierDO.java @@ -53,6 +53,7 @@ public class OrderSupplierDO extends BaseDO { /** * 收款人姓名 */ + @TableField(value = "payee_name") private String payeeName; /** @@ -61,6 +62,12 @@ public class OrderSupplierDO extends BaseDO { @TableField(value = "id_card") private String idCard; + /** + * 银行名称 + */ + @TableField(value = "bank_name") + private String bankName; + /** * 银行卡号 */ diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/SupplierDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/SupplierDO.java index 33be032..eafe430 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/SupplierDO.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/SupplierDO.java @@ -47,6 +47,12 @@ public class SupplierDO extends BaseDO { @TableField(value = "phone") private String phone; + /** + * 银行名称 + */ + @TableField(value = "bank_name") + private String bankName; + /** * 银行卡号 */ diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderSupplierMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderSupplierMapper.xml index 7163bbc..cf808b6 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderSupplierMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderSupplierMapper.xml @@ -11,6 +11,7 @@ + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierMapper.xml index 9e1eaf9..5297f81 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierMapper.xml @@ -10,6 +10,7 @@ + diff --git a/erp-turbo-business/erp-turbo-facade/src/main/java/com/xunhong/erp/turbo/facade/app/executor/cmd/WxMaOcrBankCardCmdExe.java b/erp-turbo-business/erp-turbo-facade/src/main/java/com/xunhong/erp/turbo/facade/app/executor/cmd/WxMaOcrBankCardCmdExe.java index 86640a3..dd62ebf 100644 --- a/erp-turbo-business/erp-turbo-facade/src/main/java/com/xunhong/erp/turbo/facade/app/executor/cmd/WxMaOcrBankCardCmdExe.java +++ b/erp-turbo-business/erp-turbo-facade/src/main/java/com/xunhong/erp/turbo/facade/app/executor/cmd/WxMaOcrBankCardCmdExe.java @@ -1,15 +1,24 @@ package com.xunhong.erp.turbo.facade.app.executor.cmd; import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.hutool.core.collection.CollUtil; +import com.google.gson.annotations.SerializedName; import com.xunhong.erp.turbo.api.facade.dto.vo.WxMaOcrBankCardVO; import com.xunhong.erp.turbo.api.infra.api.SettingServiceI; import com.xunhong.erp.turbo.facade.app.executor.common.WxCmdExe; +import lombok.Getter; import lombok.RequiredArgsConstructor; +import lombok.Setter; import lombok.SneakyThrows; import me.chanjar.weixin.common.bean.ocr.WxOcrBankCardResult; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Component; +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + /** * @author shenyifei */ @@ -29,6 +38,65 @@ public class WxMaOcrBankCardCmdExe extends WxCmdExe { wxMaOcrBankCardVO.setNumber(number); wxMaOcrBankCardVO.setOcrUrl(ocrUrl); + GetBankByNumRequest getBankByNumRequest = new GetBankByNumRequest(); + getBankByNumRequest.setSetAccountNumber(number); + + String responseContent = wxMaService.post("https://api.weixin.qq.com/shop/funds/getbankbynum", getBankByNumRequest); + WxGetBankByNumResult wxGetBankByNumResult = WxGetBankByNumResult.fromJson(responseContent); + List data = wxGetBankByNumResult.getData(); + if (CollUtil.isNotEmpty(data)) { + wxMaOcrBankCardVO.setBankName(data.getFirst().getBankName()); + } return wxMaOcrBankCardVO; } + + @Getter + @Setter + public static class GetBankByNumRequest implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + @SerializedName("account_number") + private String setAccountNumber; + } + + @Getter + @Setter + public static class WxGetBankByNumResult implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + @SerializedName("total_count") + private Integer totalCount; + private List data; + + public static WxGetBankByNumResult fromJson(String json) { + return WxGsonBuilder.create().fromJson(json, WxGetBankByNumResult.class); + } + + public String toString() { + return WxGsonBuilder.create().toJson(this); + } + } + + @Getter + @Setter + public static class BankInfo implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + @SerializedName("bank_code") + private String bankCode; + + @SerializedName("bank_id") + private String bankId; + + @SerializedName("bank_name") + private String bankName; + + @SerializedName("need_branch") + private Boolean needBranch; + + @SerializedName("account_bank") + private String accountBank; + } } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierCreateCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierCreateCmd.java index 280c797..1461f43 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierCreateCmd.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierCreateCmd.java @@ -30,7 +30,7 @@ public class SupplierCreateCmd extends Command { /** * 收款人姓名 */ - @Schema(title = "收款人姓名") + @Schema(title = "收款人姓名", requiredMode = Schema.RequiredMode.REQUIRED) private String payeeName; /** @@ -42,9 +42,16 @@ public class SupplierCreateCmd extends Command { /** * 手机号 */ - @Schema(title = "手机号") + @Schema(title = "手机号", requiredMode = Schema.RequiredMode.REQUIRED) private String phone; + /** + * 银行名称 + */ + @Schema(title = "银行名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String bankName; + + /** * 银行卡号 */ diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplier.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplier.java index c67b3fe..f3cdb2e 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplier.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplier.java @@ -57,6 +57,12 @@ public class OrderSupplier extends Command { @Schema(title = "身份证号", requiredMode = Schema.RequiredMode.REQUIRED) private String idCard; + /** + * 银行名称 + */ + @Schema(title = "银行名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String bankName; + /** * 银行卡号 */ diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/OrderSupplierVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/OrderSupplierVO.java index 2ea0cb5..09817db 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/OrderSupplierVO.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/OrderSupplierVO.java @@ -59,6 +59,12 @@ public class OrderSupplierVO extends DTO { @Schema(title = "身份证号", requiredMode = Schema.RequiredMode.REQUIRED) private String idCard; + /** + * 银行名称 + */ + @Schema(title = "银行名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String bankName; + /** * 银行卡号 */ diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/SupplierVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/SupplierVO.java index b033cec..c1fdf73 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/SupplierVO.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/SupplierVO.java @@ -31,7 +31,7 @@ public class SupplierVO extends DTO { /** * 收款人姓名 */ - @Schema(title = "收款人姓名") + @Schema(title = "收款人姓名", requiredMode = Schema.RequiredMode.REQUIRED) private String payeeName; /** @@ -43,9 +43,15 @@ public class SupplierVO extends DTO { /** * 手机号 */ - @Schema(title = "手机号") + @Schema(title = "手机号", requiredMode = Schema.RequiredMode.REQUIRED) private String phone; + /** + * 银行名称 + */ + @Schema(title = "银行名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String bankName; + /** * 银行卡号 */ diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/vo/WxMaOcrBankCardVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/vo/WxMaOcrBankCardVO.java index 67933eb..34e4e80 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/vo/WxMaOcrBankCardVO.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/vo/WxMaOcrBankCardVO.java @@ -16,6 +16,9 @@ public class WxMaOcrBankCardVO extends DTO { @Schema(title = "银行卡号", requiredMode = Schema.RequiredMode.REQUIRED) private String number; + @Schema(title = "银行名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String bankName; + @Schema(title = "银行卡图片", requiredMode = Schema.RequiredMode.REQUIRED) private String ocrUrl; }