guomengjiao месяцев назад: 4
Родитель
Сommit
c9b32ff16a
19 измененных файлов с 992 добавлено и 680 удалено
  1. 42 0
      ruoyi-api/src/main/java/com/ruoyi/api/controller/business/ApiBusinessSettlementController.java
  2. 0 89
      ruoyi-business/src/main/java/com/ruoyi/business/domain/Business.java
  3. 5 86
      ruoyi-business/src/main/java/com/ruoyi/business/domain/BusinessApply.java
  4. 123 0
      ruoyi-business/src/main/java/com/ruoyi/business/domain/BusinessSettlement.java
  5. 2 115
      ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/BusinessApplyBo.java
  6. 2 115
      ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/BusinessBo.java
  7. 181 0
      ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/BusinessSettlementBo.java
  8. 3 115
      ruoyi-business/src/main/java/com/ruoyi/business/domain/vo/BusinessApplyVo.java
  9. 202 0
      ruoyi-business/src/main/java/com/ruoyi/business/domain/vo/BusinessSettlementVo.java
  10. 2 115
      ruoyi-business/src/main/java/com/ruoyi/business/domain/vo/BusinessVo.java
  11. 53 0
      ruoyi-business/src/main/java/com/ruoyi/business/exception/BusinessSettlementExceptionEnum.java
  12. 15 0
      ruoyi-business/src/main/java/com/ruoyi/business/mapper/BusinessSettlementMapper.java
  13. 78 0
      ruoyi-business/src/main/java/com/ruoyi/business/service/IBusinessSettlementService.java
  14. 15 1
      ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BusinessServiceImpl.java
  15. 177 0
      ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BusinessSettlementServiceImpl.java
  16. 54 0
      ruoyi-business/src/main/java/com/ruoyi/business/typehandler/ObjectToSettlementTypeHandler.java
  17. 1 22
      ruoyi-business/src/main/resources/mapper/business/BusinessApplyMapper.xml
  18. 0 22
      ruoyi-business/src/main/resources/mapper/business/BusinessMapper.xml
  19. 37 0
      ruoyi-business/src/main/resources/mapper/business/BusinessSettlementMapper.xml

+ 42 - 0
ruoyi-api/src/main/java/com/ruoyi/api/controller/business/ApiBusinessSettlementController.java

@@ -0,0 +1,42 @@
+package com.ruoyi.api.controller.business;
+
+import com.ruoyi.api.controller.common.AbstractApiController;
+import com.ruoyi.business.domain.vo.BusinessSettlementVo;
+import com.ruoyi.business.service.IBusinessSettlementService;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.enums.FilePathSplicingType;
+import com.ruoyi.common.filepathsplicing.FilePathSplicing;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 商家结算信息Controller
+ *
+ * @author ruoyi
+ * @date 2025-12-11
+ */
+@Validated
+@Api(value = "商家结算信息控制器", tags = {"商家结算信息管理"})
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/business/businessSettlement")
+public class ApiBusinessSettlementController extends AbstractApiController {
+
+    private final IBusinessSettlementService iBusinessSettlementService;
+
+    /**
+     * 获取商家结算信息详细信息
+     */
+    @FilePathSplicing(type = FilePathSplicingType.RESPONSE)
+    @ApiOperation("获取商家结算信息详细信息")
+    @GetMapping("/info")
+    public R<BusinessSettlementVo> getInfo() {
+        return R.ok(iBusinessSettlementService.queryByBusinessId(getBusinessByUserId(getUserId(true), true)));
+    }
+
+}

+ 0 - 89
ruoyi-business/src/main/java/com/ruoyi/business/domain/Business.java

@@ -268,95 +268,6 @@ public class Business extends BaseEntity {
      */
     private String qrCode;
 
-    /**
-     * 账户类型
-     */
-    private String accountType;
-    /**
-     * 银行卡正面图片
-     */
-    private String cardFrontUrl;
-    /**
-     * 银行卡反面图片
-     */
-    private String cardBackUrl;
-    /**
-     * 开户人姓名
-     */
-    private String accountHolderName;
-    /**
-     * 开户行名称
-     */
-    private String bankName;
-    /**
-     * 银行卡号
-     */
-    private String bankCardNumber;
-    /**
-     * 开户行支行
-     */
-    private String subBranchName;
-    /**
-     * 开户行所在省
-     */
-    private String bankProvinceName;
-    /**
-     * 开户行所在市
-     */
-    private String bankCityName;
-    /**
-     * 开户行所在区
-     */
-    private String bankAreaName;
-    /**
-     * 开户行所在省编号
-     */
-    private String bankProvinceCode;
-    /**
-     * 开户行所在市编号
-     */
-    private String bankCityCode;
-    /**
-     * 开户行所在区编号
-     */
-    private String bankAreaCode;
-    /**
-     * 开户许可证
-     */
-    private String openLicenseUrl;
-    /**
-     * 结算人身份证正面图片
-     */
-    private String settlementIdCardFrontUrl;
-    /**
-     * 结算人身份证反面图片
-     */
-    private String settlementIdCardBackUrl;
-    /**
-     * 结算人姓名
-     */
-    private String settlementName;
-    /**
-     * 结算人身份证
-     */
-    private String settlementIdCard;
-    /**
-     * 结算人身份证有效期开始
-     */
-    private String settlementIdValidStart;
-    /**
-     * 身份证有效期结束
-     */
-    private String settlementIdValidEnd;
-    /**
-     * 结算人手机号
-     */
-    private String settlementPhone;
-    /**
-     * 授权委托书URL
-     */
-    private String authorizationLetterUrl;
-
     /**
      * 是否有效
      */

+ 5 - 86
ruoyi-business/src/main/java/com/ruoyi/business/domain/BusinessApply.java

@@ -3,7 +3,9 @@ package com.ruoyi.business.domain;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.business.domain.bo.BusinessSettlementBo;
 import com.ruoyi.business.enums.BusinessType;
+import com.ruoyi.business.typehandler.ObjectToSettlementTypeHandler;
 import com.ruoyi.common.core.domain.BaseTimeEntity;
 import com.ruoyi.common.typehandler.ListToStringTypeHandler;
 import lombok.Data;
@@ -233,91 +235,8 @@ public class BusinessApply extends BaseTimeEntity {
      */
     private String agentAuditResult;
     /**
-     * 账户类型
+     * 商家结算信息
      */
-    private String accountType;
-    /**
-     * 银行卡正面图片
-     */
-    private String cardFrontUrl;
-    /**
-     * 银行卡反面图片
-     */
-    private String cardBackUrl;
-    /**
-     * 开户人姓名
-     */
-    private String accountHolderName;
-    /**
-     * 开户行名称
-     */
-    private String bankName;
-    /**
-     * 银行卡号
-     */
-    private String bankCardNumber;
-    /**
-     * 开户行支行
-     */
-    private String subBranchName;
-    /**
-     * 开户行所在省
-     */
-    private String bankProvinceName;
-    /**
-     * 开户行所在市
-     */
-    private String bankCityName;
-    /**
-     * 开户行所在区
-     */
-    private String bankAreaName;
-    /**
-     * 开户行所在省编号
-     */
-    private String bankProvinceCode;
-    /**
-     * 开户行所在市编号
-     */
-    private String bankCityCode;
-    /**
-     * 开户行所在区编号
-     */
-    private String bankAreaCode;
-    /**
-     * 开户许可证
-     */
-    private String openLicenseUrl;
-    /**
-     * 结算人身份证正面图片
-     */
-    private String settlementIdCardFrontUrl;
-    /**
-     * 结算人身份证反面图片
-     */
-    private String settlementIdCardBackUrl;
-    /**
-     * 结算人姓名
-     */
-    private String settlementName;
-    /**
-     * 结算人身份证
-     */
-    private String settlementIdCard;
-    /**
-     * 结算人身份证有效期开始
-     */
-    private String settlementIdValidStart;
-    /**
-     * 身份证有效期结束
-     */
-    private String settlementIdValidEnd;
-    /**
-     * 结算人手机号
-     */
-    private String settlementPhone;
-    /**
-     * 授权委托书URL
-     */
-    private String authorizationLetterUrl;
+    @TableField(typeHandler = ObjectToSettlementTypeHandler.class)
+    private BusinessSettlementBo settlementInfo;
 }

+ 123 - 0
ruoyi-business/src/main/java/com/ruoyi/business/domain/BusinessSettlement.java

@@ -0,0 +1,123 @@
+package com.ruoyi.business.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.common.core.domain.BaseTimeEntity;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 商家结算信息对象 tb_business_settlement
+ *
+ * @author ruoyi
+ * @date 2025-12-11
+ */
+@Data
+@TableName("tb_business_settlement")
+public class BusinessSettlement extends BaseTimeEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *
+     */
+    @TableId(value = "id")
+    private Long id;
+    /**
+     * 所属商家ID
+     */
+    private Long businessId;
+    /**
+     * 结算-银行卡类型
+     */
+    private String accountType;
+    /**
+     * 银行卡照片正面
+     */
+    private String cardFrontUrl;
+    /**
+     * 银行卡照片背面
+     */
+    private String cardBackUrl;
+    /**
+     * 开户人姓名
+     */
+    private String accountHolderName;
+    /**
+     * 开户行名称
+     */
+    private String bankName;
+    /**
+     * 银行卡号
+     */
+    private String bankCardNumber;
+    /**
+     * 支行名称
+     */
+    private String subBranchName;
+    /**
+     * 开户行所属省名
+     */
+    private String bankProvinceName;
+    /**
+     * 开户行所属市名
+     */
+    private String bankCityName;
+    /**
+     * 开户行所属区名
+     */
+    private String bankAreaName;
+    /**
+     * 开户行所属省编号
+     */
+    private String bankProvinceCode;
+    /**
+     * 开户行所属市编号
+     */
+    private String bankCityCode;
+    /**
+     * 开户行所属区编号
+     */
+    private String bankAreaCode;
+    /**
+     * 开户许可证
+     */
+    private String openLicenseUrl;
+    /**
+     * 结算人身份证正面照片URL
+     */
+    private String settlementIdCardFrontUrl;
+    /**
+     * 结算人身份证反面照片URL
+     */
+    private String settlementIdCardBackUrl;
+    /**
+     * 持卡人姓名
+     */
+    private String settlementName;
+    /**
+     * 持卡人身份证
+     */
+    private String settlementIdCard;
+    /**
+     * 身份证起始有效期
+     */
+    private String settlementIdValidStart;
+    /**
+     * 身份证结束有效期
+     */
+    private String settlementIdValidEnd;
+    /**
+     * 持卡人电话
+     */
+    private String settlementPhone;
+    /**
+     * 授权委托书URL
+     */
+    private String authorizationLetterUrl;
+
+}

+ 2 - 115
ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/BusinessApplyBo.java

@@ -372,120 +372,7 @@ public class BusinessApplyBo extends BaseEntity {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date endTime;
 
-    /**
-     * 账户类型
-     */
-    @ApiModelProperty(value = "账户类型", required = true)
-    private String accountType;
-    /**
-     * 银行卡正面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "银行卡正面图片", required = true)
-    private String cardFrontUrl;
-    /**
-     * 银行卡反面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "银行卡反面图片", required = true)
-    private String cardBackUrl;
-    /**
-     * 开户人姓名
-     */
-    @ApiModelProperty(value = "开户人姓名", required = true)
-    private String accountHolderName;
-    /**
-     * 开户行名称
-     */
-    @ApiModelProperty(value = "开户行名称", required = true)
-    private String bankName;
-    /**
-     * 银行卡号
-     */
-    @ApiModelProperty(value = "银行卡号", required = true)
-    private String bankCardNumber;
-    /**
-     * 开户行支行
-     */
-    @ApiModelProperty(value = "开户行支行", required = true)
-    private String subBranchName;
-    /**
-     * 开户行所在省
-     */
-    @ApiModelProperty(value = "开户行所在省", required = true)
-    private String bankProvinceName;
-    /**
-     * 开户行所在市
-     */
-    @ApiModelProperty(value = "开户行所在市", required = true)
-    private String bankCityName;
-    /**
-     * 开户行所在区
-     */
-    @ApiModelProperty(value = "开户行所在区", required = true)
-    private String bankAreaName;
-    /**
-     * 开户行所在省编号
-     */
-    @ApiModelProperty(value = "开户行所在省编号", required = true)
-    private String bankProvinceCode;
-    /**
-     * 开户行所在市编号
-     */
-    @ApiModelProperty(value = "开户行所在市编号", required = true)
-    private String bankCityCode;
-    /**
-     * 开户行所在区编号
-     */
-    @ApiModelProperty(value = "开户行所在区编号", required = true)
-    private String bankAreaCode;
-    /**
-     * 开户许可证
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "开户许可证", required = true)
-    private String openLicenseUrl;
-    /**
-     * 结算人身份证正面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "结算人身份证正面图片", required = true)
-    private String settlementIdCardFrontUrl;
-    /**
-     * 结算人身份证反面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "结算人身份证反面图片", required = true)
-    private String settlementIdCardBackUrl;
-    /**
-     * 结算人姓名
-     */
-    @ApiModelProperty(value = "结算人姓名", required = true)
-    private String settlementName;
-    /**
-     * 结算人身份证
-     */
-    @ApiModelProperty(value = "结算人身份证", required = true)
-    private String settlementIdCard;
-    /**
-     * 结算人身份证有效期开始
-     */
-    @ApiModelProperty(value = "结算人身份证有效期开始", required = true)
-    private String settlementIdValidStart;
-    /**
-     * 身份证有效期结束
-     */
-    @ApiModelProperty(value = "身份证有效期结束", required = true)
-    private String settlementIdValidEnd;
-    /**
-     * 结算人手机号
-     */
-    @ApiModelProperty(value = "结算人手机号", required = true)
-    private String settlementPhone;
-    /**
-     * 授权委托书URL
-     */
     @FilePathValue
-    @ApiModelProperty(value = "授权委托书URL", required = true)
-    private String authorizationLetterUrl;
+    @ApiModelProperty("商家结算信息")
+    private BusinessSettlementBo settlementInfo;
 }

+ 2 - 115
ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/BusinessBo.java

@@ -401,120 +401,7 @@ public class BusinessBo extends BaseEntity {
     @ApiModelProperty(value = "付贝渠道商户号")
     private String fuChannelMchNo;
 
-    /**
-     * 账户类型
-     */
-    @ApiModelProperty(value = "账户类型", required = true)
-    private String accountType;
-    /**
-     * 银行卡正面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "银行卡正面图片", required = true)
-    private String cardFrontUrl;
-    /**
-     * 银行卡反面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "银行卡反面图片", required = true)
-    private String cardBackUrl;
-    /**
-     * 开户人姓名
-     */
-    @ApiModelProperty(value = "开户人姓名", required = true)
-    private String accountHolderName;
-    /**
-     * 开户行名称
-     */
-    @ApiModelProperty(value = "开户行名称", required = true)
-    private String bankName;
-    /**
-     * 银行卡号
-     */
-    @ApiModelProperty(value = "银行卡号", required = true)
-    private String bankCardNumber;
-    /**
-     * 开户行支行
-     */
-    @ApiModelProperty(value = "开户行支行", required = true)
-    private String subBranchName;
-    /**
-     * 开户行所在省
-     */
-    @ApiModelProperty(value = "开户行所在省", required = true)
-    private String bankProvinceName;
-    /**
-     * 开户行所在市
-     */
-    @ApiModelProperty(value = "开户行所在市", required = true)
-    private String bankCityName;
-    /**
-     * 开户行所在区
-     */
-    @ApiModelProperty(value = "开户行所在区", required = true)
-    private String bankAreaName;
-    /**
-     * 开户行所在省编号
-     */
-    @ApiModelProperty(value = "开户行所在省编号", required = true)
-    private String bankProvinceCode;
-    /**
-     * 开户行所在市编号
-     */
-    @ApiModelProperty(value = "开户行所在市编号", required = true)
-    private String bankCityCode;
-    /**
-     * 开户行所在区编号
-     */
-    @ApiModelProperty(value = "开户行所在区编号", required = true)
-    private String bankAreaCode;
-    /**
-     * 开户许可证
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "开户许可证", required = true)
-    private String openLicenseUrl;
-    /**
-     * 结算人身份证正面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "结算人身份证正面图片", required = true)
-    private String settlementIdCardFrontUrl;
-    /**
-     * 结算人身份证反面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "结算人身份证反面图片", required = true)
-    private String settlementIdCardBackUrl;
-    /**
-     * 结算人姓名
-     */
-    @ApiModelProperty(value = "结算人姓名", required = true)
-    private String settlementName;
-    /**
-     * 结算人身份证
-     */
-    @ApiModelProperty(value = "结算人身份证", required = true)
-    private String settlementIdCard;
-    /**
-     * 结算人身份证有效期开始
-     */
-    @ApiModelProperty(value = "结算人身份证有效期开始", required = true)
-    private String settlementIdValidStart;
-    /**
-     * 身份证有效期结束
-     */
-    @ApiModelProperty(value = "身份证有效期结束", required = true)
-    private String settlementIdValidEnd;
-    /**
-     * 结算人手机号
-     */
-    @ApiModelProperty(value = "结算人手机号", required = true)
-    private String settlementPhone;
-    /**
-     * 授权委托书URL
-     */
     @FilePathValue
-    @ApiModelProperty(value = "授权委托书URL", required = true)
-    private String authorizationLetterUrl;
+    @ApiModelProperty(value = "商家结算信息")
+    private BusinessSettlementBo settlementInfo;
 }

+ 181 - 0
ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/BusinessSettlementBo.java

@@ -0,0 +1,181 @@
+package com.ruoyi.business.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.filepathsplicing.FilePathValue;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 商家结算信息业务对象 tb_business_settlement
+ *
+ * @author ruoyi
+ * @date 2025-12-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("商家结算信息业务对象")
+public class BusinessSettlementBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @ApiModelProperty(value = "", required = true)
+    private Long id;
+
+    /**
+     * 所属商家ID
+     */
+    @ApiModelProperty(value = "所属商家ID", required = true)
+    private Long businessId;
+
+    /**
+     * 结算-银行卡类型
+     */
+    @ApiModelProperty(value = "结算-银行卡类型", required = true)
+    @NotBlank(message = "结算-银行卡类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String accountType;
+
+    /**
+     * 银行卡照片正面
+     */
+    @FilePathValue
+    @ApiModelProperty(value = "银行卡照片正面", required = true)
+    @NotBlank(message = "银行卡照片正面不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String cardFrontUrl;
+
+    /**
+     * 银行卡照片背面
+     */
+    @FilePathValue
+    @ApiModelProperty(value = "银行卡照片背面", required = true)
+    @NotBlank(message = "银行卡照片背面不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String cardBackUrl;
+
+    /**
+     * 开户人姓名
+     */
+    @ApiModelProperty(value = "开户人姓名", required = true)
+    private String accountHolderName;
+
+    /**
+     * 开户行名称
+     */
+    @ApiModelProperty(value = "开户行名称", required = true)
+    private String bankName;
+
+    /**
+     * 银行卡号
+     */
+    @ApiModelProperty(value = "银行卡号", required = true)
+    private String bankCardNumber;
+
+    /**
+     * 支行名称
+     */
+    @ApiModelProperty(value = "支行名称", required = true)
+    private String subBranchName;
+
+    /**
+     * 开户行所属省名
+     */
+    @ApiModelProperty(value = "开户行所属省名", required = true)
+    private String bankProvinceName;
+
+    /**
+     * 开户行所属市名
+     */
+    @ApiModelProperty(value = "开户行所属市名", required = true)
+    private String bankCityName;
+
+    /**
+     * 开户行所属区名
+     */
+    @ApiModelProperty(value = "开户行所属区名", required = true)
+    private String bankAreaName;
+
+    /**
+     * 开户行所属省编号
+     */
+    @ApiModelProperty(value = "开户行所属省编号", required = true)
+    private String bankProvinceCode;
+
+    /**
+     * 开户行所属市编号
+     */
+    @ApiModelProperty(value = "开户行所属市编号", required = true)
+    private String bankCityCode;
+
+    /**
+     * 开户行所属区编号
+     */
+    @ApiModelProperty(value = "开户行所属区编号", required = true)
+    private String bankAreaCode;
+
+    /**
+     * 开户许可证
+     */
+    @FilePathValue
+    @ApiModelProperty(value = "开户许可证", required = true)
+    private String openLicenseUrl;
+
+    /**
+     * 结算人身份证正面照片URL
+     */
+    @FilePathValue
+    @ApiModelProperty(value = "结算人身份证正面照片URL", required = true)
+    private String settlementIdCardFrontUrl;
+
+    /**
+     * 结算人身份证反面照片URL
+     */
+    @FilePathValue
+    @ApiModelProperty(value = "结算人身份证反面照片URL", required = true)
+    private String settlementIdCardBackUrl;
+
+    /**
+     * 持卡人姓名
+     */
+    @ApiModelProperty(value = "持卡人姓名", required = true)
+    private String settlementName;
+
+    /**
+     * 持卡人身份证
+     */
+    @ApiModelProperty(value = "持卡人身份证", required = true)
+    private String settlementIdCard;
+
+    /**
+     * 身份证起始有效期
+     */
+    @ApiModelProperty(value = "身份证起始有效期", required = true)
+    private String settlementIdValidStart;
+
+    /**
+     * 身份证结束有效期
+     */
+    @ApiModelProperty(value = "身份证结束有效期", required = true)
+    private String settlementIdValidEnd;
+
+    /**
+     * 持卡人电话
+     */
+    @ApiModelProperty(value = "持卡人电话", required = true)
+    private String settlementPhone;
+
+    /**
+     * 授权委托书URL
+     */
+    @FilePathValue
+    @ApiModelProperty(value = "授权委托书URL", required = true)
+    private String authorizationLetterUrl;
+
+
+}

+ 3 - 115
ruoyi-business/src/main/java/com/ruoyi/business/domain/vo/BusinessApplyVo.java

@@ -2,6 +2,7 @@ package com.ruoyi.business.domain.vo;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.business.domain.bo.BusinessSettlementBo;
 import com.ruoyi.business.enums.BusinessType;
 import com.ruoyi.common.annotation.ExcelDictFormat;
 import com.ruoyi.common.convert.ExcelDictConvert;
@@ -378,120 +379,7 @@ public class BusinessApplyVo {
     @ApiModelProperty("创建时间")
     private Date createTime;
 
-    /**
-     * 账户类型
-     */
-    @ApiModelProperty(value = "账户类型", required = true)
-    private String accountType;
-    /**
-     * 银行卡正面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "银行卡正面图片", required = true)
-    private String cardFrontUrl;
-    /**
-     * 银行卡反面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "银行卡反面图片", required = true)
-    private String cardBackUrl;
-    /**
-     * 开户人姓名
-     */
-    @ApiModelProperty(value = "开户人姓名", required = true)
-    private String accountHolderName;
-    /**
-     * 开户行名称
-     */
-    @ApiModelProperty(value = "开户行名称", required = true)
-    private String bankName;
-    /**
-     * 银行卡号
-     */
-    @ApiModelProperty(value = "银行卡号", required = true)
-    private String bankCardNumber;
-    /**
-     * 开户行支行
-     */
-    @ApiModelProperty(value = "开户行支行", required = true)
-    private String subBranchName;
-    /**
-     * 开户行所在省
-     */
-    @ApiModelProperty(value = "开户行所在省", required = true)
-    private String bankProvinceName;
-    /**
-     * 开户行所在市
-     */
-    @ApiModelProperty(value = "开户行所在市", required = true)
-    private String bankCityName;
-    /**
-     * 开户行所在区
-     */
-    @ApiModelProperty(value = "开户行所在区", required = true)
-    private String bankAreaName;
-    /**
-     * 开户行所在省编号
-     */
-    @ApiModelProperty(value = "开户行所在省编号", required = true)
-    private String bankProvinceCode;
-    /**
-     * 开户行所在市编号
-     */
-    @ApiModelProperty(value = "开户行所在市编号", required = true)
-    private String bankCityCode;
-    /**
-     * 开户行所在区编号
-     */
-    @ApiModelProperty(value = "开户行所在区编号", required = true)
-    private String bankAreaCode;
-    /**
-     * 开户许可证
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "开户许可证", required = true)
-    private String openLicenseUrl;
-    /**
-     * 结算人身份证正面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "结算人身份证正面图片", required = true)
-    private String settlementIdCardFrontUrl;
-    /**
-     * 结算人身份证反面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "结算人身份证反面图片", required = true)
-    private String settlementIdCardBackUrl;
-    /**
-     * 结算人姓名
-     */
-    @ApiModelProperty(value = "结算人姓名", required = true)
-    private String settlementName;
-    /**
-     * 结算人身份证
-     */
-    @ApiModelProperty(value = "结算人身份证", required = true)
-    private String settlementIdCard;
-    /**
-     * 结算人身份证有效期开始
-     */
-    @ApiModelProperty(value = "结算人身份证有效期开始", required = true)
-    private String settlementIdValidStart;
-    /**
-     * 身份证有效期结束
-     */
-    @ApiModelProperty(value = "身份证有效期结束", required = true)
-    private String settlementIdValidEnd;
-    /**
-     * 结算人手机号
-     */
-    @ApiModelProperty(value = "结算人手机号", required = true)
-    private String settlementPhone;
-    /**
-     * 授权委托书URL
-     */
     @FilePathValue
-    @ApiModelProperty(value = "授权委托书URL", required = true)
-    private String authorizationLetterUrl;
+    @ApiModelProperty("商家结算信息")
+    private BusinessSettlementBo settlementInfo;
 }

+ 202 - 0
ruoyi-business/src/main/java/com/ruoyi/business/domain/vo/BusinessSettlementVo.java

@@ -0,0 +1,202 @@
+package com.ruoyi.business.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import com.ruoyi.common.filepathsplicing.FilePathValue;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 商家结算信息视图对象 tb_business_settlement
+ *
+ * @author ruoyi
+ * @date 2025-12-11
+ */
+@Data
+@ApiModel("商家结算信息视图对象")
+@ExcelIgnoreUnannotated
+public class BusinessSettlementVo {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    @ApiModelProperty("")
+    private Long id;
+
+    /**
+     * 所属商家ID
+     */
+    @ExcelProperty(value = "所属商家ID")
+    @ApiModelProperty("所属商家ID")
+    private Long businessId;
+
+    /**
+     * 结算-银行卡类型
+     */
+    @ExcelProperty(value = "结算-银行卡类型")
+    @ApiModelProperty("结算-银行卡类型")
+    private String accountType;
+
+    /**
+     * 银行卡照片正面
+     */
+    @FilePathValue
+    @ExcelProperty(value = "银行卡照片正面")
+    @ApiModelProperty("银行卡照片正面")
+    private String cardFrontUrl;
+
+    /**
+     * 银行卡照片背面
+     */
+    @FilePathValue
+    @ExcelProperty(value = "银行卡照片背面")
+    @ApiModelProperty("银行卡照片背面")
+    private String cardBackUrl;
+
+    /**
+     * 开户人姓名
+     */
+    @ExcelProperty(value = "开户人姓名")
+    @ApiModelProperty("开户人姓名")
+    private String accountHolderName;
+
+    /**
+     * 开户行名称
+     */
+    @ExcelProperty(value = "开户行名称")
+    @ApiModelProperty("开户行名称")
+    private String bankName;
+
+    /**
+     * 银行卡号
+     */
+    @ExcelProperty(value = "银行卡号")
+    @ApiModelProperty("银行卡号")
+    private String bankCardNumber;
+
+    /**
+     * 支行名称
+     */
+    @ExcelProperty(value = "支行名称")
+    @ApiModelProperty("支行名称")
+    private String subBranchName;
+
+    /**
+     * 开户行所属省名
+     */
+    @ExcelProperty(value = "开户行所属省名")
+    @ApiModelProperty("开户行所属省名")
+    private String bankProvinceName;
+
+    /**
+     * 开户行所属市名
+     */
+    @ExcelProperty(value = "开户行所属市名")
+    @ApiModelProperty("开户行所属市名")
+    private String bankCityName;
+
+    /**
+     * 开户行所属区名
+     */
+    @ExcelProperty(value = "开户行所属区名")
+    @ApiModelProperty("开户行所属区名")
+    private String bankAreaName;
+
+    /**
+     * 开户行所属省编号
+     */
+    @ExcelProperty(value = "开户行所属省编号")
+    @ApiModelProperty("开户行所属省编号")
+    private String bankProvinceCode;
+
+    /**
+     * 开户行所属市编号
+     */
+    @ExcelProperty(value = "开户行所属市编号")
+    @ApiModelProperty("开户行所属市编号")
+    private String bankCityCode;
+
+    /**
+     * 开户行所属区编号
+     */
+    @ExcelProperty(value = "开户行所属区编号")
+    @ApiModelProperty("开户行所属区编号")
+    private String bankAreaCode;
+
+    /**
+     * 开户许可证
+     */
+    @FilePathValue
+    @ExcelProperty(value = "开户许可证")
+    @ApiModelProperty("开户许可证")
+    private String openLicenseUrl;
+
+    /**
+     * 结算人身份证正面照片URL
+     */
+    @FilePathValue
+    @ExcelProperty(value = "结算人身份证正面照片URL")
+    @ApiModelProperty("结算人身份证正面照片URL")
+    private String settlementIdCardFrontUrl;
+
+    /**
+     * 结算人身份证反面照片URL
+     */
+    @FilePathValue
+    @ExcelProperty(value = "结算人身份证反面照片URL")
+    @ApiModelProperty("结算人身份证反面照片URL")
+    private String settlementIdCardBackUrl;
+
+    /**
+     * 持卡人姓名
+     */
+    @ExcelProperty(value = "持卡人姓名")
+    @ApiModelProperty("持卡人姓名")
+    private String settlementName;
+
+    /**
+     * 持卡人身份证
+     */
+    @ExcelProperty(value = "持卡人身份证")
+    @ApiModelProperty("持卡人身份证")
+    private String settlementIdCard;
+
+    /**
+     * 身份证起始有效期
+     */
+    @ExcelProperty(value = "身份证起始有效期")
+    @ApiModelProperty("身份证起始有效期")
+    private String settlementIdValidStart;
+
+    /**
+     * 身份证结束有效期
+     */
+    @ExcelProperty(value = "身份证结束有效期")
+    @ApiModelProperty("身份证结束有效期")
+    private String settlementIdValidEnd;
+
+    /**
+     * 持卡人电话
+     */
+    @ExcelProperty(value = "持卡人电话")
+    @ApiModelProperty("持卡人电话")
+    private String settlementPhone;
+
+    /**
+     * 授权委托书URL
+     */
+    @FilePathValue
+    @ExcelProperty(value = "授权委托书URL")
+    @ApiModelProperty("授权委托书URL")
+    private String authorizationLetterUrl;
+
+
+}

+ 2 - 115
ruoyi-business/src/main/java/com/ruoyi/business/domain/vo/BusinessVo.java

@@ -409,120 +409,7 @@ public class BusinessVo extends BaseVo {
     @ApiModelProperty(value = "二维码的路径")
     private String qrCode;
 
-    /**
-     * 账户类型
-     */
-    @ApiModelProperty(value = "账户类型", required = true)
-    private String accountType;
-    /**
-     * 银行卡正面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "银行卡正面图片", required = true)
-    private String cardFrontUrl;
-    /**
-     * 银行卡反面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "银行卡反面图片", required = true)
-    private String cardBackUrl;
-    /**
-     * 开户人姓名
-     */
-    @ApiModelProperty(value = "开户人姓名", required = true)
-    private String accountHolderName;
-    /**
-     * 开户行名称
-     */
-    @ApiModelProperty(value = "开户行名称", required = true)
-    private String bankName;
-    /**
-     * 银行卡号
-     */
-    @ApiModelProperty(value = "银行卡号", required = true)
-    private String bankCardNumber;
-    /**
-     * 开户行支行
-     */
-    @ApiModelProperty(value = "开户行支行", required = true)
-    private String subBranchName;
-    /**
-     * 开户行所在省
-     */
-    @ApiModelProperty(value = "开户行所在省", required = true)
-    private String bankProvinceName;
-    /**
-     * 开户行所在市
-     */
-    @ApiModelProperty(value = "开户行所在市", required = true)
-    private String bankCityName;
-    /**
-     * 开户行所在区
-     */
-    @ApiModelProperty(value = "开户行所在区", required = true)
-    private String bankAreaName;
-    /**
-     * 开户行所在省编号
-     */
-    @ApiModelProperty(value = "开户行所在省编号", required = true)
-    private String bankProvinceCode;
-    /**
-     * 开户行所在市编号
-     */
-    @ApiModelProperty(value = "开户行所在市编号", required = true)
-    private String bankCityCode;
-    /**
-     * 开户行所在区编号
-     */
-    @ApiModelProperty(value = "开户行所在区编号", required = true)
-    private String bankAreaCode;
-    /**
-     * 开户许可证
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "开户许可证", required = true)
-    private String openLicenseUrl;
-    /**
-     * 结算人身份证正面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "结算人身份证正面图片", required = true)
-    private String settlementIdCardFrontUrl;
-    /**
-     * 结算人身份证反面图片
-     */
-    @FilePathValue
-    @ApiModelProperty(value = "结算人身份证反面图片", required = true)
-    private String settlementIdCardBackUrl;
-    /**
-     * 结算人姓名
-     */
-    @ApiModelProperty(value = "结算人姓名", required = true)
-    private String settlementName;
-    /**
-     * 结算人身份证
-     */
-    @ApiModelProperty(value = "结算人身份证", required = true)
-    private String settlementIdCard;
-    /**
-     * 结算人身份证有效期开始
-     */
-    @ApiModelProperty(value = "结算人身份证有效期开始", required = true)
-    private String settlementIdValidStart;
-    /**
-     * 身份证有效期结束
-     */
-    @ApiModelProperty(value = "身份证有效期结束", required = true)
-    private String settlementIdValidEnd;
-    /**
-     * 结算人手机号
-     */
-    @ApiModelProperty(value = "结算人手机号", required = true)
-    private String settlementPhone;
-    /**
-     * 授权委托书URL
-     */
     @FilePathValue
-    @ApiModelProperty(value = "授权委托书URL", required = true)
-    private String authorizationLetterUrl;
+    @ApiModelProperty(value = "商家结算信息")
+    private BusinessSettlementVo settlementInfo;
 }

+ 53 - 0
ruoyi-business/src/main/java/com/ruoyi/business/exception/BusinessSettlementExceptionEnum.java

@@ -0,0 +1,53 @@
+package com.ruoyi.business.exception;
+
+import com.ruoyi.common.enums.IIntegerEnum;
+import java.util.Objects;
+
+
+/**
+ * 异常枚举
+ */
+public enum BusinessSettlementExceptionEnum implements IIntegerEnum {
+
+    // TODO 注意检查错误码,保证系统内唯一
+    BusinessSettlement_IS_NOT_EXISTS(520001, "商家结算信息不存在"),
+
+    ;
+
+    private Integer code;
+
+    private String msg;
+
+    BusinessSettlementExceptionEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    @Override
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public static BusinessSettlementExceptionEnum getByCode(int code, BusinessSettlementExceptionEnum[] values) {
+        for (BusinessSettlementExceptionEnum value : values) {
+            if (Objects.equals(code, value.getCode())) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+}

+ 15 - 0
ruoyi-business/src/main/java/com/ruoyi/business/mapper/BusinessSettlementMapper.java

@@ -0,0 +1,15 @@
+package com.ruoyi.business.mapper;
+
+import com.ruoyi.business.domain.BusinessSettlement;
+import com.ruoyi.business.domain.vo.BusinessSettlementVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 商家结算信息Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-12-11
+ */
+public interface BusinessSettlementMapper extends BaseMapperPlus<BusinessSettlementMapper, BusinessSettlement, BusinessSettlementVo> {
+
+}

+ 78 - 0
ruoyi-business/src/main/java/com/ruoyi/business/service/IBusinessSettlementService.java

@@ -0,0 +1,78 @@
+package com.ruoyi.business.service;
+
+import com.ruoyi.business.domain.BusinessSettlement;
+import com.ruoyi.business.domain.vo.BusinessSettlementVo;
+import com.ruoyi.business.domain.bo.BusinessSettlementBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 商家结算信息Service接口
+ *
+ * @author ruoyi
+ * @date 2025-12-11
+ */
+public interface IBusinessSettlementService {
+
+    /**
+     * 查询商家结算信息分页
+     *
+     * @param bo 商家结算信息
+     * @return 商家结算信息集合
+     */
+    TableDataInfo<BusinessSettlementVo> queryPageList(BusinessSettlementBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询商家结算信息列表
+     *
+     * @param bo 商家结算信息
+     * @return 商家结算信息集合
+     */
+    List<BusinessSettlementVo> queryList(BusinessSettlementBo bo);
+
+    /**
+     * 查询商家结算信息
+     *
+     * @param id 商家结算信息主键
+     * @return 商家结算信息
+     */
+    BusinessSettlementVo queryById(Long id);
+
+    /**
+     * 详情商家结算信息
+     *
+     * @param id 商家结算信息主键
+     * @return 商家结算信息
+     */
+    BusinessSettlement loadById(Long id, Boolean tw);
+
+    /**
+     * 新增商家结算信息
+     *
+     * @param bo 商家结算信息
+     * @return 结果
+     */
+    Boolean insertByBo(BusinessSettlementBo bo);
+
+    /**
+     * 修改商家结算信息
+     *
+     * @param bo 商家结算信息
+     * @return 结果
+     */
+    Boolean updateByBo(BusinessSettlementBo bo);
+
+    /**
+     * 校验并批量删除商家结算信息信息
+     *
+     * @param ids 需要删除的商家结算信息主键集合
+     * @param isValid 是否校验,true-删除前校验,false-不校验
+     * @return 结果
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    BusinessSettlementVo queryByBusinessId(Long businessId);
+}

+ 15 - 1
ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BusinessServiceImpl.java

@@ -28,6 +28,7 @@ import com.ruoyi.base.platform.service.IPlatformInfoService;
 import com.ruoyi.business.domain.Business;
 import com.ruoyi.business.domain.bo.BusinessBalanceRecordBo;
 import com.ruoyi.business.domain.bo.BusinessBo;
+import com.ruoyi.business.domain.bo.BusinessSettlementBo;
 import com.ruoyi.business.domain.bo.BusinessVerifierBo;
 import com.ruoyi.business.domain.vo.BusinessCountByAreaCodeVo;
 import com.ruoyi.business.domain.vo.BusinessVo;
@@ -37,6 +38,7 @@ import com.ruoyi.business.exception.BusinessExceptionEnum;
 import com.ruoyi.business.mapper.BusinessMapper;
 import com.ruoyi.business.service.IBusinessBalanceRecordService;
 import com.ruoyi.business.service.IBusinessService;
+import com.ruoyi.business.service.IBusinessSettlementService;
 import com.ruoyi.business.service.IBusinessVerifierService;
 import com.ruoyi.businessDayBill.service.IBusinessDayBillService;
 import com.ruoyi.common.core.domain.PageQuery;
@@ -90,6 +92,7 @@ public class BusinessServiceImpl implements IBusinessService {
     private final IBusinessBalanceRecordService iBusinessBalanceRecordService;
     private final ISysOssService iSysOssService;
     private final FilePathSplicingUtil filePathSplicingUtil;
+    private final IBusinessSettlementService businessSettlementService;
     @Lazy
     @Resource
     private IAgentAccountCodeService agentAccountCodeService;
@@ -220,7 +223,11 @@ public class BusinessServiceImpl implements IBusinessService {
      */
     @Override
     public BusinessVo queryById(Long businessId) {
-        return baseMapper.selectVoById(businessId);
+        BusinessVo businessVo = baseMapper.selectVoById(businessId);
+        if (ObjectUtil.isNotNull(businessVo)) {
+            businessVo.setSettlementInfo(businessSettlementService.queryByBusinessId(businessId));
+        }
+        return businessVo;
     }
 
     /**
@@ -279,6 +286,13 @@ public class BusinessServiceImpl implements IBusinessService {
             add.setQrCode(generateQr(add.getInviteCode()));
             baseMapper.updateById(add);
 
+            //添加结算卡
+            BusinessSettlementBo settlementInfo = bo.getSettlementInfo();
+            if (ObjectUtil.isNotNull(settlementInfo)) {
+                settlementInfo.setBusinessId(add.getBusinessId());
+                businessSettlementService.insertByBo(settlementInfo);
+            }
+
             bo.setBusinessId(add.getBusinessId());
             //添加核销员
             BusinessVerifierBo verifierBo = new BusinessVerifierBo();

+ 177 - 0
ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BusinessSettlementServiceImpl.java

@@ -0,0 +1,177 @@
+package com.ruoyi.business.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.BeanCopyUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.ruoyi.business.domain.bo.BusinessSettlementBo;
+import com.ruoyi.business.domain.vo.BusinessSettlementVo;
+import com.ruoyi.business.domain.BusinessSettlement;
+import com.ruoyi.business.mapper.BusinessSettlementMapper;
+import com.ruoyi.business.service.IBusinessSettlementService;
+import com.ruoyi.business.exception.BusinessSettlementExceptionEnum;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 商家结算信息Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-12-11
+ */
+@RequiredArgsConstructor
+@Service
+public class BusinessSettlementServiceImpl implements IBusinessSettlementService {
+
+    private final BusinessSettlementMapper baseMapper;
+
+    /**
+     * 查询商家结算信息分页
+     *
+     * @param bo 商家结算信息
+     * @return 商家结算信息
+     */
+    @Override
+    public TableDataInfo<BusinessSettlementVo> queryPageList(BusinessSettlementBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<BusinessSettlement> lqw = buildQueryWrapper(bo);
+        Page<BusinessSettlementVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询商家结算信息列表
+     *
+     * @param bo 商家结算信息
+     * @return 商家结算信息
+     */
+    @Override
+    public List<BusinessSettlementVo> queryList(BusinessSettlementBo bo) {
+        LambdaQueryWrapper<BusinessSettlement> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<BusinessSettlement> buildQueryWrapper(BusinessSettlementBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<BusinessSettlement> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getBusinessId() != null, BusinessSettlement::getBusinessId, bo.getBusinessId());
+        lqw.eq(StringUtils.isNotBlank(bo.getAccountType()), BusinessSettlement::getAccountType, bo.getAccountType());
+        lqw.eq(StringUtils.isNotBlank(bo.getCardFrontUrl()), BusinessSettlement::getCardFrontUrl, bo.getCardFrontUrl());
+        lqw.eq(StringUtils.isNotBlank(bo.getCardBackUrl()), BusinessSettlement::getCardBackUrl, bo.getCardBackUrl());
+        lqw.like(StringUtils.isNotBlank(bo.getAccountHolderName()), BusinessSettlement::getAccountHolderName, bo.getAccountHolderName());
+        lqw.like(StringUtils.isNotBlank(bo.getBankName()), BusinessSettlement::getBankName, bo.getBankName());
+        lqw.eq(StringUtils.isNotBlank(bo.getBankCardNumber()), BusinessSettlement::getBankCardNumber, bo.getBankCardNumber());
+        lqw.like(StringUtils.isNotBlank(bo.getSubBranchName()), BusinessSettlement::getSubBranchName, bo.getSubBranchName());
+        lqw.like(StringUtils.isNotBlank(bo.getBankProvinceName()), BusinessSettlement::getBankProvinceName, bo.getBankProvinceName());
+        lqw.like(StringUtils.isNotBlank(bo.getBankCityName()), BusinessSettlement::getBankCityName, bo.getBankCityName());
+        lqw.like(StringUtils.isNotBlank(bo.getBankAreaName()), BusinessSettlement::getBankAreaName, bo.getBankAreaName());
+        lqw.eq(StringUtils.isNotBlank(bo.getBankProvinceCode()), BusinessSettlement::getBankProvinceCode, bo.getBankProvinceCode());
+        lqw.eq(StringUtils.isNotBlank(bo.getBankCityCode()), BusinessSettlement::getBankCityCode, bo.getBankCityCode());
+        lqw.eq(StringUtils.isNotBlank(bo.getBankAreaCode()), BusinessSettlement::getBankAreaCode, bo.getBankAreaCode());
+        lqw.eq(StringUtils.isNotBlank(bo.getOpenLicenseUrl()), BusinessSettlement::getOpenLicenseUrl, bo.getOpenLicenseUrl());
+        lqw.eq(StringUtils.isNotBlank(bo.getSettlementIdCardFrontUrl()), BusinessSettlement::getSettlementIdCardFrontUrl, bo.getSettlementIdCardFrontUrl());
+        lqw.eq(StringUtils.isNotBlank(bo.getSettlementIdCardBackUrl()), BusinessSettlement::getSettlementIdCardBackUrl, bo.getSettlementIdCardBackUrl());
+        lqw.like(StringUtils.isNotBlank(bo.getSettlementName()), BusinessSettlement::getSettlementName, bo.getSettlementName());
+        lqw.eq(StringUtils.isNotBlank(bo.getSettlementIdCard()), BusinessSettlement::getSettlementIdCard, bo.getSettlementIdCard());
+        lqw.eq(StringUtils.isNotBlank(bo.getSettlementIdValidStart()), BusinessSettlement::getSettlementIdValidStart, bo.getSettlementIdValidStart());
+        lqw.eq(StringUtils.isNotBlank(bo.getSettlementIdValidEnd()), BusinessSettlement::getSettlementIdValidEnd, bo.getSettlementIdValidEnd());
+        lqw.eq(StringUtils.isNotBlank(bo.getSettlementPhone()), BusinessSettlement::getSettlementPhone, bo.getSettlementPhone());
+        lqw.eq(StringUtils.isNotBlank(bo.getAuthorizationLetterUrl()), BusinessSettlement::getAuthorizationLetterUrl, bo.getAuthorizationLetterUrl());
+        return lqw;
+    }
+
+    /**
+     * 查询商家结算信息
+     *
+     * @param id 商家结算信息主键
+     * @return 商家结算信息
+     */
+    @Override
+    public BusinessSettlementVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 详情商家结算信息
+     *
+     * @param id 商家结算信息主键
+     * @return 商家结算信息
+     */
+    @Override
+    public BusinessSettlement loadById(Long id, Boolean tw){
+        BusinessSettlement info = this.baseMapper.selectById(id);
+        if(ObjectUtil.isEmpty(info) && tw){
+            throw new ServiceException(BusinessSettlementExceptionEnum.BusinessSettlement_IS_NOT_EXISTS);
+        }
+        return info;
+    }
+
+    /**
+     * 新增商家结算信息
+     *
+     * @param bo 商家结算信息
+     * @return 结果
+     */
+    @Override
+    public Boolean insertByBo(BusinessSettlementBo bo) {
+        BusinessSettlement add = BeanUtil.toBean(bo, BusinessSettlement.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改商家结算信息
+     *
+     * @param bo 商家结算信息
+     * @return 结果
+     */
+    @Override
+    public Boolean updateByBo(BusinessSettlementBo bo) {
+        BusinessSettlement businessSettlement = baseMapper.selectById(bo.getId());
+        BusinessSettlement update = BeanCopyUtils.copy(bo, businessSettlement);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(BusinessSettlement entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除商家结算信息
+     *
+     * @param ids 需要删除的商家结算信息主键
+     * @return 结果
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    @Override
+    public BusinessSettlementVo queryByBusinessId(Long businessId) {
+        return baseMapper.selectVoOne(new LambdaQueryWrapper<BusinessSettlement>().eq(BusinessSettlement::getBusinessId, businessId));
+    }
+
+}

+ 54 - 0
ruoyi-business/src/main/java/com/ruoyi/business/typehandler/ObjectToSettlementTypeHandler.java

@@ -0,0 +1,54 @@
+package com.ruoyi.business.typehandler;
+
+
+import com.ruoyi.business.domain.bo.BusinessSettlementBo;
+import com.ruoyi.common.utils.JsonUtils;
+import jodd.util.StringUtil;
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ * Created By Mack on 2021/3/17
+ */
+@MappedJdbcTypes(JdbcType.VARCHAR) // 数据库中该字段存储的类型
+@MappedTypes(BusinessSettlementBo.class) // 需要转换的对象
+public class ObjectToSettlementTypeHandler extends BaseTypeHandler<BusinessSettlementBo> {
+
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i, BusinessSettlementBo parameter, JdbcType jdbcType) throws SQLException {
+        ps.setObject(i, parameter);
+    }
+
+    @Override
+    public BusinessSettlementBo getNullableResult(ResultSet rs, String columnName) throws SQLException {
+        String value = rs.getString(columnName);  // 直接以字符串形式读取
+        return getObjs(value);
+    }
+
+    @Override
+    public BusinessSettlementBo getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+        String value = rs.getString(columnIndex);
+        return getObjs(value);
+    }
+
+    @Override
+    public BusinessSettlementBo getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+        String value = cs.getString(columnIndex);
+        return getObjs(value);
+    }
+
+    private BusinessSettlementBo getObjs(String value) {
+        if (StringUtil.isNotBlank(value)) {
+            return JsonUtils.parseObject(value, BusinessSettlementBo.class);
+        }
+        return null;
+    }
+}
+

+ 1 - 22
ruoyi-business/src/main/resources/mapper/business/BusinessApplyMapper.xml

@@ -58,28 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="agentAuditTime" column="agent_audit_time"/>
         <result property="agentAuditUserId" column="agent_audit_user_id"/>
         <result property="agentAuditResult" column="agent_audit_result"/>
-        <result property="accountType" column="account_type"/>
-        <result property="cardFrontUrl" column="card_front_url"/>
-        <result property="cardBackUrl" column="card_back_url"/>
-        <result property="accountHolderName" column="account_holder_name"/>
-        <result property="bankName" column="bank_name"/>
-        <result property="bankCardNumber" column="bank_card_number"/>
-        <result property="subBranchName" column="sub_branch_name"/>
-        <result property="bankProvinceName" column="bank_province_name"/>
-        <result property="bankCityName" column="bank_city_name"/>
-        <result property="bankAreaName" column="bank_area_name"/>
-        <result property="bankProvinceCode" column="bank_province_code"/>
-        <result property="bankCityCode" column="bank_city_code"/>
-        <result property="bankAreaCode" column="bank_area_code"/>
-        <result property="openLicenseUrl" column="open_license_url"/>
-        <result property="settlementIdCardFrontUrl" column="settlement_id_card_front_url"/>
-        <result property="settlementIdCardBackUrl" column="settlement_id_card_back_url"/>
-        <result property="settlementName" column="settlement_name"/>
-        <result property="settlementIdCard" column="settlement_id_card"/>
-        <result property="settlementIdValidStart" column="settlement_id_valid_start"/>
-        <result property="settlementIdValidEnd" column="settlement_id_valid_end"/>
-        <result property="settlementPhone" column="settlement_phone"/>
-        <result property="authorizationLetterUrl" column="authorization_letter_url"/>
+        <result property="settlementInfo" column="settlement_info" typeHandler="com.ruoyi.business.typehandler.ObjectToSettlementTypeHandler"/>
     </resultMap>
 
 

+ 0 - 22
ruoyi-business/src/main/resources/mapper/business/BusinessMapper.xml

@@ -61,28 +61,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="fuKey" column="fu_key"/>
         <result property="fuChannelMchNo" column="fu_channel_mch_no"/>
         <result property="qrCode" column="qr_code"/>
-        <result property="accountType" column="account_type"/>
-        <result property="cardFrontUrl" column="card_front_url"/>
-        <result property="cardBackUrl" column="card_back_url"/>
-        <result property="accountHolderName" column="account_holder_name"/>
-        <result property="bankName" column="bank_name"/>
-        <result property="bankCardNumber" column="bank_card_number"/>
-        <result property="subBranchName" column="sub_branch_name"/>
-        <result property="bankProvinceName" column="bank_province_name"/>
-        <result property="bankCityName" column="bank_city_name"/>
-        <result property="bankAreaName" column="bank_area_name"/>
-        <result property="bankProvinceCode" column="bank_province_code"/>
-        <result property="bankCityCode" column="bank_city_code"/>
-        <result property="bankAreaCode" column="bank_area_code"/>
-        <result property="openLicenseUrl" column="open_license_url"/>
-        <result property="settlementIdCardFrontUrl" column="settlement_id_card_front_url"/>
-        <result property="settlementIdCardBackUrl" column="settlement_id_card_back_url"/>
-        <result property="settlementName" column="settlement_name"/>
-        <result property="settlementIdCard" column="settlement_id_card"/>
-        <result property="settlementIdValidStart" column="settlement_id_valid_start"/>
-        <result property="settlementIdValidEnd" column="settlement_id_valid_end"/>
-        <result property="settlementPhone" column="settlement_phone"/>
-        <result property="authorizationLetterUrl" column="authorization_letter_url"/>
     </resultMap>
 
     <select id="countOfAreaCodeBy" resultType="com.ruoyi.business.domain.vo.BusinessCountByAreaCodeVo">

+ 37 - 0
ruoyi-business/src/main/resources/mapper/business/BusinessSettlementMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.business.mapper.BusinessSettlementMapper">
+
+    <resultMap type="com.ruoyi.business.domain.BusinessSettlement" id="BusinessSettlementResult">
+        <result property="id" column="id"/>
+        <result property="businessId" column="business_id"/>
+        <result property="accountType" column="account_type"/>
+        <result property="cardFrontUrl" column="card_front_url"/>
+        <result property="cardBackUrl" column="card_back_url"/>
+        <result property="accountHolderName" column="account_holder_name"/>
+        <result property="bankName" column="bank_name"/>
+        <result property="bankCardNumber" column="bank_card_number"/>
+        <result property="subBranchName" column="sub_branch_name"/>
+        <result property="bankProvinceName" column="bank_province_name"/>
+        <result property="bankCityName" column="bank_city_name"/>
+        <result property="bankAreaName" column="bank_area_name"/>
+        <result property="bankProvinceCode" column="bank_province_code"/>
+        <result property="bankCityCode" column="bank_city_code"/>
+        <result property="bankAreaCode" column="bank_area_code"/>
+        <result property="openLicenseUrl" column="open_license_url"/>
+        <result property="settlementIdCardFrontUrl" column="settlement_id_card_front_url"/>
+        <result property="settlementIdCardBackUrl" column="settlement_id_card_back_url"/>
+        <result property="settlementName" column="settlement_name"/>
+        <result property="settlementIdCard" column="settlement_id_card"/>
+        <result property="settlementIdValidStart" column="settlement_id_valid_start"/>
+        <result property="settlementIdValidEnd" column="settlement_id_valid_end"/>
+        <result property="settlementPhone" column="settlement_phone"/>
+        <result property="authorizationLetterUrl" column="authorization_letter_url"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+
+</mapper>