فهرست منبع

用户信息接口

zrd 4 ماه پیش
والد
کامیت
fc870b53e9
41فایلهای تغییر یافته به همراه3050 افزوده شده و 1 حذف شده
  1. 6 1
      yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java
  2. 93 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userbusinesslicense/UserBusinessLicenseController.java
  3. 67 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userbusinesslicense/vo/UserBusinessLicensePageReqVO.java
  4. 76 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userbusinesslicense/vo/UserBusinessLicenseRespVO.java
  5. 64 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userbusinesslicense/vo/UserBusinessLicenseSaveReqVO.java
  6. 93 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/useridcard/UserIdcardController.java
  7. 66 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/useridcard/vo/UserIdcardPageReqVO.java
  8. 76 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/useridcard/vo/UserIdcardRespVO.java
  9. 64 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/useridcard/vo/UserIdcardSaveReqVO.java
  10. 93 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userinformation/UserInformationController.java
  11. 45 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userinformation/vo/UserInformationPageReqVO.java
  12. 51 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userinformation/vo/UserInformationRespVO.java
  13. 36 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userinformation/vo/UserInformationSaveReqVO.java
  14. 93 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userpersonalcredit/UserPersonalCreditController.java
  15. 194 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userpersonalcredit/vo/UserPersonalCreditPageReqVO.java
  16. 245 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userpersonalcredit/vo/UserPersonalCreditRespVO.java
  17. 198 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userpersonalcredit/vo/UserPersonalCreditSaveReqVO.java
  18. 67 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserBusinessLicenseController.java
  19. 67 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserIdcardController.java
  20. 66 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserInformationController.java
  21. 67 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserPersonalCreditController.java
  22. 89 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/userbusinesslicense/UserBusinessLicenseDO.java
  23. 89 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/useridcard/UserIdcardDO.java
  24. 58 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/userinformation/UserInformationDO.java
  25. 259 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/userpersonalcredit/UserPersonalCreditDO.java
  26. 36 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/userbusinesslicense/UserBusinessLicenseMapper.java
  27. 36 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/useridcard/UserIdcardMapper.java
  28. 31 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/userinformation/UserInformationMapper.java
  29. 81 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/userpersonalcredit/UserPersonalCreditMapper.java
  30. 54 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userbusinesslicense/UserBusinessLicenseService.java
  31. 70 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userbusinesslicense/UserBusinessLicenseServiceImpl.java
  32. 54 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/useridcard/UserIdcardService.java
  33. 70 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/useridcard/UserIdcardServiceImpl.java
  34. 54 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userinformation/UserInformationService.java
  35. 70 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userinformation/UserInformationServiceImpl.java
  36. 54 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpersonalcredit/UserPersonalCreditService.java
  37. 70 0
      yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpersonalcredit/UserPersonalCreditServiceImpl.java
  38. 12 0
      yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/userbusinesslicense/UserBusinessLicenseMapper.xml
  39. 12 0
      yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/useridcard/UserIdcardMapper.xml
  40. 12 0
      yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/userinformation/UserInformationMapper.xml
  41. 12 0
      yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/userpersonalcredit/UserPersonalCreditMapper.xml

+ 6 - 1
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java

@@ -54,5 +54,10 @@ public interface ErrorCodeConstants {
     //========== 用户分组 1-004-012-000 ==========
     ErrorCode GROUP_NOT_EXISTS = new ErrorCode(1_004_012_000, "用户分组不存在");
     ErrorCode GROUP_HAS_USER = new ErrorCode(1_004_012_001, "用户分组下存在用户,无法删除");
-
+    ErrorCode USER_BUSINESS_LICENSE_NOT_EXISTS = new ErrorCode(1_004_012_003, "营业执照信息不存在");
+    ErrorCode USER_PERSONAL_CREDIT_NOT_EXISTS = new ErrorCode(1_004_012_004, "个人信用报告不存在");
+    ErrorCode USER_IDCARD_NOT_EXISTS = new ErrorCode(1_004_012_005, "身份证信息不存在");
+    
+    
+    ErrorCode USER_INFORMATION_NOT_EXISTS = new ErrorCode(1_004_012_006, "用户信息不存在");
 }

+ 93 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userbusinesslicense/UserBusinessLicenseController.java

@@ -0,0 +1,93 @@
+package cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo.UserBusinessLicensePageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo.UserBusinessLicenseRespVO;
+import cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo.UserBusinessLicenseSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userbusinesslicense.UserBusinessLicenseDO;
+import cn.iocoder.yudao.module.member.service.userbusinesslicense.UserBusinessLicenseService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 营业执照信息")
+@RestController
+@RequestMapping("/member/user-business-license")
+@Validated
+public class UserBusinessLicenseController {
+    
+    @Resource
+    private UserBusinessLicenseService userBusinessLicenseService;
+    
+    @PostMapping("/create")
+    @Operation(summary = "创建营业执照信息")
+    @PreAuthorize("@ss.hasPermission('member:user-business-license:create')")
+    public CommonResult<Long> createUserBusinessLicense(@Valid @RequestBody UserBusinessLicenseSaveReqVO createReqVO) {
+        return success(userBusinessLicenseService.createUserBusinessLicense(createReqVO));
+    }
+    
+    @PutMapping("/update")
+    @Operation(summary = "更新营业执照信息")
+    @PreAuthorize("@ss.hasPermission('member:user-business-license:update')")
+    public CommonResult<Boolean> updateUserBusinessLicense(@Valid @RequestBody UserBusinessLicenseSaveReqVO updateReqVO) {
+        userBusinessLicenseService.updateUserBusinessLicense(updateReqVO);
+        return success(true);
+    }
+    
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除营业执照信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('member:user-business-license:delete')")
+    public CommonResult<Boolean> deleteUserBusinessLicense(@RequestParam("id") Long id) {
+        userBusinessLicenseService.deleteUserBusinessLicense(id);
+        return success(true);
+    }
+    
+    @GetMapping("/get")
+    @Operation(summary = "获得营业执照信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('member:user-business-license:query')")
+    public CommonResult<UserBusinessLicenseRespVO> getUserBusinessLicense(@RequestParam("id") Long id) {
+        UserBusinessLicenseDO userBusinessLicense = userBusinessLicenseService.getUserBusinessLicense(id);
+        return success(BeanUtils.toBean(userBusinessLicense, UserBusinessLicenseRespVO.class));
+    }
+    
+    @GetMapping("/page")
+    @Operation(summary = "获得营业执照信息分页")
+    @PreAuthorize("@ss.hasPermission('member:user-business-license:query')")
+    public CommonResult<PageResult<UserBusinessLicenseRespVO>> getUserBusinessLicensePage(@Valid UserBusinessLicensePageReqVO pageReqVO) {
+        PageResult<UserBusinessLicenseDO> pageResult = userBusinessLicenseService.getUserBusinessLicensePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserBusinessLicenseRespVO.class));
+    }
+    
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出营业执照信息 Excel")
+    @PreAuthorize("@ss.hasPermission('member:user-business-license:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportUserBusinessLicenseExcel(@Valid UserBusinessLicensePageReqVO pageReqVO,
+                                               HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<UserBusinessLicenseDO> list = userBusinessLicenseService.getUserBusinessLicensePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "营业执照信息.xls", "数据", UserBusinessLicenseRespVO.class,
+                BeanUtils.toBean(list, UserBusinessLicenseRespVO.class));
+    }
+    
+}

+ 67 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userbusinesslicense/vo/UserBusinessLicensePageReqVO.java

@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serial;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 营业执照信息分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class UserBusinessLicensePageReqVO extends PageParam {
+    
+    @Serial
+    private static final long serialVersionUID = -3647350011013942497L;
+    @Schema(description = "统一社会信用代码")
+    private String unifiedSocialCreditCode;
+    
+    @Schema(description = "名称", example = "李四")
+    private String businessName;
+    
+    @Schema(description = "类型", example = "1")
+    private String businessType;
+    
+    @Schema(description = "法定代表人")
+    private String legalRepresentative;
+    
+    @Schema(description = "注册资本")
+    private String registeredCapital;
+    
+    @Schema(description = "成立日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDate[] establishmentDate;
+    
+    @Schema(description = "住所")
+    private String businessAddress;
+    
+    @Schema(description = "经营范围")
+    private String businessScope;
+    
+    @Schema(description = "登记机关")
+    private String registrationAuthority;
+    
+    @Schema(description = "发证日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDate[] issueDate;
+    
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+    
+    @Schema(description = "相关照片")
+    private List<String> infoImages;
+    
+    @Schema(description = "数据使用状态 0 使用 1 作废  2 异常", example = "2")
+    private String infoStatus;
+    
+}

+ 76 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userbusinesslicense/vo/UserBusinessLicenseRespVO.java

@@ -0,0 +1,76 @@
+package cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo;
+
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Schema(description = "管理后台 - 营业执照信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class UserBusinessLicenseRespVO {
+    
+    @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6369")
+    @ExcelProperty("自增主键")
+    private Long id;
+    
+    @Schema(description = "统一社会信用代码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("统一社会信用代码")
+    private String unifiedSocialCreditCode;
+    
+    @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+    @ExcelProperty("名称")
+    private String businessName;
+    
+    @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("类型")
+    private String businessType;
+    
+    @Schema(description = "法定代表人", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("法定代表人")
+    private String legalRepresentative;
+    
+    @Schema(description = "注册资本", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("注册资本")
+    private String registeredCapital;
+    
+    @Schema(description = "成立日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("成立日期")
+    private LocalDate establishmentDate;
+    
+    @Schema(description = "住所", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("住所")
+    private String businessAddress;
+    
+    @Schema(description = "经营范围", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("经营范围")
+    private String businessScope;
+    
+    @Schema(description = "登记机关", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("登记机关")
+    private String registrationAuthority;
+    
+    @Schema(description = "发证日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("发证日期")
+    private LocalDate issueDate;
+    
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+    
+    @Schema(description = "相关照片")
+    @ExcelProperty("相关照片")
+    private List<String> infoImages;
+    
+    @Schema(description = "数据使用状态 0 使用 1 作废  2 异常", example = "2")
+    @ExcelProperty(value = "数据使用状态 0 使用 1 作废  2 异常", converter = DictConvert.class)
+    @DictFormat("info_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private String infoStatus;
+    
+}

+ 64 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userbusinesslicense/vo/UserBusinessLicenseSaveReqVO.java

@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.util.List;
+
+@Schema(description = "管理后台 - 营业执照信息新增/修改 Request VO")
+@Data
+public class UserBusinessLicenseSaveReqVO {
+    
+    @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6369")
+    private Long id;
+    
+    @Schema(description = "统一社会信用代码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "统一社会信用代码不能为空")
+    private String unifiedSocialCreditCode;
+    
+    @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+    @NotEmpty(message = "名称不能为空")
+    private String businessName;
+    
+    @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotEmpty(message = "类型不能为空")
+    private String businessType;
+    
+    @Schema(description = "法定代表人", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "法定代表人不能为空")
+    private String legalRepresentative;
+    
+    @Schema(description = "注册资本", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "注册资本不能为空")
+    private String registeredCapital;
+    
+    @Schema(description = "成立日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "成立日期不能为空")
+    private LocalDate establishmentDate;
+    
+    @Schema(description = "住所", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "住所不能为空")
+    private String businessAddress;
+    
+    @Schema(description = "经营范围", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "经营范围不能为空")
+    private String businessScope;
+    
+    @Schema(description = "登记机关", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "登记机关不能为空")
+    private String registrationAuthority;
+    
+    @Schema(description = "发证日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "发证日期不能为空")
+    private LocalDate issueDate;
+    
+    @Schema(description = "相关照片")
+    private List<String> infoImages;
+    
+    @Schema(description = "数据使用状态 0 使用 1 作废  2 异常", example = "2")
+    private String infoStatus;
+    
+}

+ 93 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/useridcard/UserIdcardController.java

@@ -0,0 +1,93 @@
+package cn.iocoder.yudao.module.member.controller.admin.useridcard;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.member.controller.admin.useridcard.vo.UserIdcardPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.useridcard.vo.UserIdcardRespVO;
+import cn.iocoder.yudao.module.member.controller.admin.useridcard.vo.UserIdcardSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.useridcard.UserIdcardDO;
+import cn.iocoder.yudao.module.member.service.useridcard.UserIdcardService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 身份证信息")
+@RestController
+@RequestMapping("/member/user-idcard")
+@Validated
+public class UserIdcardController {
+    
+    @Resource
+    private UserIdcardService userIdcardService;
+    
+    @PostMapping("/create")
+    @Operation(summary = "创建身份证信息")
+    @PreAuthorize("@ss.hasPermission('member:user-idcard:create')")
+    public CommonResult<Long> createUserIdcard(@Valid @RequestBody UserIdcardSaveReqVO createReqVO) {
+        return success(userIdcardService.createUserIdcard(createReqVO));
+    }
+    
+    @PutMapping("/update")
+    @Operation(summary = "更新身份证信息")
+    @PreAuthorize("@ss.hasPermission('member:user-idcard:update')")
+    public CommonResult<Boolean> updateUserIdcard(@Valid @RequestBody UserIdcardSaveReqVO updateReqVO) {
+        userIdcardService.updateUserIdcard(updateReqVO);
+        return success(true);
+    }
+    
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除身份证信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('member:user-idcard:delete')")
+    public CommonResult<Boolean> deleteUserIdcard(@RequestParam("id") Long id) {
+        userIdcardService.deleteUserIdcard(id);
+        return success(true);
+    }
+    
+    @GetMapping("/get")
+    @Operation(summary = "获得身份证信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('member:user-idcard:query')")
+    public CommonResult<UserIdcardRespVO> getUserIdcard(@RequestParam("id") Long id) {
+        UserIdcardDO userIdcard = userIdcardService.getUserIdcard(id);
+        return success(BeanUtils.toBean(userIdcard, UserIdcardRespVO.class));
+    }
+    
+    @GetMapping("/page")
+    @Operation(summary = "获得身份证信息分页")
+    @PreAuthorize("@ss.hasPermission('member:user-idcard:query')")
+    public CommonResult<PageResult<UserIdcardRespVO>> getUserIdcardPage(@Valid UserIdcardPageReqVO pageReqVO) {
+        PageResult<UserIdcardDO> pageResult = userIdcardService.getUserIdcardPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserIdcardRespVO.class));
+    }
+    
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出身份证信息 Excel")
+    @PreAuthorize("@ss.hasPermission('member:user-idcard:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportUserIdcardExcel(@Valid UserIdcardPageReqVO pageReqVO,
+                                      HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<UserIdcardDO> list = userIdcardService.getUserIdcardPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "身份证信息.xls", "数据", UserIdcardRespVO.class,
+                BeanUtils.toBean(list, UserIdcardRespVO.class));
+    }
+    
+}

+ 66 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/useridcard/vo/UserIdcardPageReqVO.java

@@ -0,0 +1,66 @@
+package cn.iocoder.yudao.module.member.controller.admin.useridcard.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serial;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 身份证信息分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class UserIdcardPageReqVO extends PageParam {
+    
+    @Serial
+    private static final long serialVersionUID = 9190181133220586952L;
+    @Schema(description = "用户编号", example = "15205")
+    private Long userId;
+    
+    @Schema(description = "姓名", example = "赵六")
+    private String name;
+    
+    @Schema(description = "性别")
+    private String gender;
+    
+    @Schema(description = "民族")
+    private String ethnicity;
+    
+    @Schema(description = "出生日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDate[] birthDate;
+    
+    @Schema(description = "住址")
+    private String address;
+    
+    @Schema(description = "公民身份号码")
+    private String idCardNumber;
+    
+    @Schema(description = "签发机关")
+    private String issuingAuthority;
+    
+    @Schema(description = "有效期开始日期")
+    private LocalDate validityStart;
+    
+    @Schema(description = "有效期结束日期")
+    private LocalDate validityEnd;
+    
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+    
+    @Schema(description = "相关照片")
+    private List<String> infoImages;
+    
+    @Schema(description = "数据使用状态 0 使用 1 作废  2 异常", example = "2")
+    private String infoStatus;
+    
+}

+ 76 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/useridcard/vo/UserIdcardRespVO.java

@@ -0,0 +1,76 @@
+package cn.iocoder.yudao.module.member.controller.admin.useridcard.vo;
+
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Schema(description = "管理后台 - 身份证信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class UserIdcardRespVO {
+    
+    @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "27390")
+    @ExcelProperty("自增主键")
+    private Long id;
+    
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15205")
+    @ExcelProperty("用户编号")
+    private Long userId;
+    
+    @Schema(description = "姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
+    @ExcelProperty("姓名")
+    private String name;
+    
+    @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("性别")
+    private String gender;
+    
+    @Schema(description = "民族", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("民族")
+    private String ethnicity;
+    
+    @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("出生日期")
+    private LocalDate birthDate;
+    
+    @Schema(description = "住址", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("住址")
+    private String address;
+    
+    @Schema(description = "公民身份号码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("公民身份号码")
+    private String idCardNumber;
+    
+    @Schema(description = "签发机关", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("签发机关")
+    private String issuingAuthority;
+    
+    @Schema(description = "有效期开始日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("有效期开始日期")
+    private LocalDate validityStart;
+    
+    @Schema(description = "有效期结束日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("有效期结束日期")
+    private LocalDate validityEnd;
+    
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+    
+    @Schema(description = "相关照片")
+    @ExcelProperty("相关照片")
+    private List<String> infoImages;
+    
+    @Schema(description = "数据使用状态 0 使用 1 作废  2 异常", example = "2")
+    @ExcelProperty(value = "数据使用状态 0 使用 1 作废  2 异常", converter = DictConvert.class)
+    @DictFormat("info_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private String infoStatus;
+    
+}

+ 64 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/useridcard/vo/UserIdcardSaveReqVO.java

@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.member.controller.admin.useridcard.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.util.List;
+
+@Schema(description = "管理后台 - 身份证信息新增/修改 Request VO")
+@Data
+public class UserIdcardSaveReqVO {
+    
+    @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "27390")
+    private Long id;
+    
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15205")
+    @NotNull(message = "用户编号不能为空")
+    private Long userId;
+    
+    @Schema(description = "姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
+    @NotEmpty(message = "姓名不能为空")
+    private String name;
+    
+    @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "性别不能为空")
+    private String gender;
+    
+    @Schema(description = "民族", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "民族不能为空")
+    private String ethnicity;
+    
+    @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "出生日期不能为空")
+    private LocalDate birthDate;
+    
+    @Schema(description = "住址", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "住址不能为空")
+    private String address;
+    
+    @Schema(description = "公民身份号码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "公民身份号码不能为空")
+    private String idCardNumber;
+    
+    @Schema(description = "签发机关", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "签发机关不能为空")
+    private String issuingAuthority;
+    
+    @Schema(description = "有效期开始日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "有效期开始日期不能为空")
+    private LocalDate validityStart;
+    
+    @Schema(description = "有效期结束日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "有效期结束日期不能为空")
+    private LocalDate validityEnd;
+    
+    @Schema(description = "相关照片")
+    private List<String> infoImages;
+    
+    @Schema(description = "数据使用状态 0 使用 1 作废  2 异常", example = "2")
+    private String infoStatus;
+    
+}

+ 93 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userinformation/UserInformationController.java

@@ -0,0 +1,93 @@
+package cn.iocoder.yudao.module.member.controller.admin.userinformation;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.member.controller.admin.userinformation.vo.UserInformationPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userinformation.vo.UserInformationRespVO;
+import cn.iocoder.yudao.module.member.controller.admin.userinformation.vo.UserInformationSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userinformation.UserInformationDO;
+import cn.iocoder.yudao.module.member.service.userinformation.UserInformationService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 用户信息")
+@RestController
+@RequestMapping("/member/user-information")
+@Validated
+public class UserInformationController {
+    
+    @Resource
+    private UserInformationService userInformationService;
+    
+    @PostMapping("/create")
+    @Operation(summary = "创建用户信息")
+    @PreAuthorize("@ss.hasPermission('member:user-information:create')")
+    public CommonResult<Long> createUserInformation(@Valid @RequestBody UserInformationSaveReqVO createReqVO) {
+        return success(userInformationService.createUserInformation(createReqVO));
+    }
+    
+    @PutMapping("/update")
+    @Operation(summary = "更新用户信息")
+    @PreAuthorize("@ss.hasPermission('member:user-information:update')")
+    public CommonResult<Boolean> updateUserInformation(@Valid @RequestBody UserInformationSaveReqVO updateReqVO) {
+        userInformationService.updateUserInformation(updateReqVO);
+        return success(true);
+    }
+    
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除用户信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('member:user-information:delete')")
+    public CommonResult<Boolean> deleteUserInformation(@RequestParam("id") Long id) {
+        userInformationService.deleteUserInformation(id);
+        return success(true);
+    }
+    
+    @GetMapping("/get")
+    @Operation(summary = "获得用户信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('member:user-information:query')")
+    public CommonResult<UserInformationRespVO> getUserInformation(@RequestParam("id") Long id) {
+        UserInformationDO userInformation = userInformationService.getUserInformation(id);
+        return success(BeanUtils.toBean(userInformation, UserInformationRespVO.class));
+    }
+    
+    @GetMapping("/page")
+    @Operation(summary = "获得用户信息分页")
+    @PreAuthorize("@ss.hasPermission('member:user-information:query')")
+    public CommonResult<PageResult<UserInformationRespVO>> getUserInformationPage(@Valid UserInformationPageReqVO pageReqVO) {
+        PageResult<UserInformationDO> pageResult = userInformationService.getUserInformationPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserInformationRespVO.class));
+    }
+    
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出用户信息 Excel")
+    @PreAuthorize("@ss.hasPermission('member:user-information:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportUserInformationExcel(@Valid UserInformationPageReqVO pageReqVO,
+                                           HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<UserInformationDO> list = userInformationService.getUserInformationPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "用户信息.xls", "数据", UserInformationRespVO.class,
+                BeanUtils.toBean(list, UserInformationRespVO.class));
+    }
+    
+}

+ 45 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userinformation/vo/UserInformationPageReqVO.java

@@ -0,0 +1,45 @@
+package cn.iocoder.yudao.module.member.controller.admin.userinformation.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 用户信息分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class UserInformationPageReqVO extends PageParam {
+    
+    @Schema(description = "用户编号", example = "11938")
+    private Long userId;
+    
+    @Schema(description = "个人征信信息")
+    private String creditInformation;
+    
+    @Schema(description = "个人身份证信息")
+    private String idCardInformation;
+    
+    @Schema(description = "个人营业执照信息")
+    private String businessLicenseInformation;
+    
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+    
+    @Schema(description = "征信id", example = "23300")
+    private Long creditId;
+    
+    @Schema(description = "身份证ID", example = "32207")
+    private Long idCardId;
+    
+    @Schema(description = "营业执照id", example = "25990")
+    private Long businessLicenseId;
+    
+}

+ 51 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userinformation/vo/UserInformationRespVO.java

@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.member.controller.admin.userinformation.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 用户信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class UserInformationRespVO {
+    
+    @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4876")
+    @ExcelProperty("自增主键")
+    private Long id;
+    
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11938")
+    @ExcelProperty("用户编号")
+    private Long userId;
+    
+    @Schema(description = "个人征信信息")
+    @ExcelProperty("个人征信信息")
+    private String creditInformation;
+    
+    @Schema(description = "个人身份证信息")
+    @ExcelProperty("个人身份证信息")
+    private String idCardInformation;
+    
+    @Schema(description = "个人营业执照信息")
+    @ExcelProperty("个人营业执照信息")
+    private String businessLicenseInformation;
+    
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+    
+    @Schema(description = "征信id", example = "23300")
+    @ExcelProperty("征信id")
+    private Long creditId;
+    
+    @Schema(description = "身份证ID", example = "32207")
+    @ExcelProperty("身份证ID")
+    private Long idCardId;
+    
+    @Schema(description = "营业执照id", example = "25990")
+    @ExcelProperty("营业执照id")
+    private Long businessLicenseId;
+    
+}

+ 36 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userinformation/vo/UserInformationSaveReqVO.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.member.controller.admin.userinformation.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 用户信息新增/修改 Request VO")
+@Data
+public class UserInformationSaveReqVO {
+    
+    @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4876")
+    private Long id;
+    
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11938")
+    @NotNull(message = "用户编号不能为空")
+    private Long userId;
+    
+    @Schema(description = "个人征信信息")
+    private String creditInformation;
+    
+    @Schema(description = "个人身份证信息")
+    private String idCardInformation;
+    
+    @Schema(description = "个人营业执照信息")
+    private String businessLicenseInformation;
+    
+    @Schema(description = "征信id", example = "23300")
+    private Long creditId;
+    
+    @Schema(description = "身份证ID", example = "32207")
+    private Long idCardId;
+    
+    @Schema(description = "营业执照id", example = "25990")
+    private Long businessLicenseId;
+    
+}

+ 93 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userpersonalcredit/UserPersonalCreditController.java

@@ -0,0 +1,93 @@
+package cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo.UserPersonalCreditPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo.UserPersonalCreditRespVO;
+import cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo.UserPersonalCreditSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userpersonalcredit.UserPersonalCreditDO;
+import cn.iocoder.yudao.module.member.service.userpersonalcredit.UserPersonalCreditService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 个人信用报告")
+@RestController
+@RequestMapping("/member/user-personal-credit")
+@Validated
+public class UserPersonalCreditController {
+    
+    @Resource
+    private UserPersonalCreditService userPersonalCreditService;
+    
+    @PostMapping("/create")
+    @Operation(summary = "创建个人信用报告")
+    @PreAuthorize("@ss.hasPermission('member:user-personal-credit:create')")
+    public CommonResult<Long> createUserPersonalCredit(@Valid @RequestBody UserPersonalCreditSaveReqVO createReqVO) {
+        return success(userPersonalCreditService.createUserPersonalCredit(createReqVO));
+    }
+    
+    @PutMapping("/update")
+    @Operation(summary = "更新个人信用报告")
+    @PreAuthorize("@ss.hasPermission('member:user-personal-credit:update')")
+    public CommonResult<Boolean> updateUserPersonalCredit(@Valid @RequestBody UserPersonalCreditSaveReqVO updateReqVO) {
+        userPersonalCreditService.updateUserPersonalCredit(updateReqVO);
+        return success(true);
+    }
+    
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除个人信用报告")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('member:user-personal-credit:delete')")
+    public CommonResult<Boolean> deleteUserPersonalCredit(@RequestParam("id") Long id) {
+        userPersonalCreditService.deleteUserPersonalCredit(id);
+        return success(true);
+    }
+    
+    @GetMapping("/get")
+    @Operation(summary = "获得个人信用报告")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('member:user-personal-credit:query')")
+    public CommonResult<UserPersonalCreditRespVO> getUserPersonalCredit(@RequestParam("id") Long id) {
+        UserPersonalCreditDO userPersonalCredit = userPersonalCreditService.getUserPersonalCredit(id);
+        return success(BeanUtils.toBean(userPersonalCredit, UserPersonalCreditRespVO.class));
+    }
+    
+    @GetMapping("/page")
+    @Operation(summary = "获得个人信用报告分页")
+    @PreAuthorize("@ss.hasPermission('member:user-personal-credit:query')")
+    public CommonResult<PageResult<UserPersonalCreditRespVO>> getUserPersonalCreditPage(@Valid UserPersonalCreditPageReqVO pageReqVO) {
+        PageResult<UserPersonalCreditDO> pageResult = userPersonalCreditService.getUserPersonalCreditPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserPersonalCreditRespVO.class));
+    }
+    
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出个人信用报告 Excel")
+    @PreAuthorize("@ss.hasPermission('member:user-personal-credit:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportUserPersonalCreditExcel(@Valid UserPersonalCreditPageReqVO pageReqVO,
+                                              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<UserPersonalCreditDO> list = userPersonalCreditService.getUserPersonalCreditPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "个人信用报告.xls", "数据", UserPersonalCreditRespVO.class,
+                BeanUtils.toBean(list, UserPersonalCreditRespVO.class));
+    }
+    
+}

+ 194 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userpersonalcredit/vo/UserPersonalCreditPageReqVO.java

@@ -0,0 +1,194 @@
+package cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serial;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 个人信用报告分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class UserPersonalCreditPageReqVO extends PageParam {
+    
+    @Serial
+    private static final long serialVersionUID = 6579195932076771946L;
+    @Schema(description = "用户编号", example = "2698")
+    private Long userId;
+    
+    @Schema(description = "报告编号")
+    private String reportNumber;
+    
+    @Schema(description = "报告时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] reportTime;
+    
+    @Schema(description = "被查询者姓名", example = "芋艿")
+    private String name;
+    
+    @Schema(description = "被查询者证件类型", example = "2")
+    private String idCardType;
+    
+    @Schema(description = "被查询者证件号码")
+    private String idCardNumber;
+    
+    @Schema(description = "查询机构")
+    private String queryOrganization;
+    
+    @Schema(description = "查询原因", example = "不香")
+    private String queryReason;
+    
+    @Schema(description = "异议信息提示")
+    private String disputeInfo;
+    
+    @Schema(description = "性别")
+    private String gender;
+    
+    @Schema(description = "出生日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDate[] birthDate;
+    
+    @Schema(description = "婚姻状况", example = "1")
+    private String maritalStatus;
+    
+    @Schema(description = "就业状况", example = "1")
+    private String employmentStatus;
+    
+    @Schema(description = "学历")
+    private String education;
+    
+    @Schema(description = "学位")
+    private String degree;
+    
+    @Schema(description = "国籍")
+    private String nationality;
+    
+    @Schema(description = "电子邮箱")
+    private String email;
+    
+    @Schema(description = "通讯地址")
+    private String communicationAddress;
+    
+    @Schema(description = "户籍地址")
+    private String householdAddress;
+    
+    @Schema(description = "信贷交易业务类型", example = "1")
+    private String loanType;
+    
+    @Schema(description = "信贷交易账户数", example = "8424")
+    private Integer loanAccountCount;
+    
+    @Schema(description = "首笔业务发放月份")
+    private String firstLoanMonth;
+    
+    @Schema(description = "非循环贷管理机构数", example = "28403")
+    private Integer nonCyclicLoanManagementCount;
+    
+    @Schema(description = "非循环贷账户数", example = "2665")
+    private Integer nonCyclicLoanAccountCount;
+    
+    @Schema(description = "非循环贷授信总额")
+    private BigDecimal nonCyclicLoanCreditTotal;
+    
+    @Schema(description = "非循环贷余额")
+    private BigDecimal nonCyclicLoanBalance;
+    
+    @Schema(description = "非循环贷近6个月平均应还款")
+    private BigDecimal nonCyclicLoanAvgRepayment;
+    
+    @Schema(description = "循环贷账户一管理机构数")
+    private Integer cyclicLoanManagementCount1;
+    
+    @Schema(description = "循环贷账户一账户数")
+    private Integer cyclicLoanAccountCount1;
+    
+    @Schema(description = "循环贷账户一授信总额")
+    private BigDecimal cyclicLoanCreditTotal1;
+    
+    @Schema(description = "循环贷账户一余额")
+    private BigDecimal cyclicLoanBalance1;
+    
+    @Schema(description = "循环贷账户一近6个月平均应还款")
+    private BigDecimal cyclicLoanAvgRepayment1;
+    
+    @Schema(description = "循环贷账户二管理机构数")
+    private Integer cyclicLoanManagementCount2;
+    
+    @Schema(description = "循环贷账户二账户数")
+    private Integer cyclicLoanAccountCount2;
+    
+    @Schema(description = "循环贷账户二授信总额")
+    private BigDecimal cyclicLoanCreditTotal2;
+    
+    @Schema(description = "循环贷账户二余额")
+    private BigDecimal cyclicLoanBalance2;
+    
+    @Schema(description = "循环贷账户二近6个月平均应还款")
+    private BigDecimal cyclicLoanAvgRepayment2;
+    
+    @Schema(description = "贷记卡发卡机构数", example = "25366")
+    private Integer creditCardIssuerCount;
+    
+    @Schema(description = "贷记卡账户数", example = "7106")
+    private Integer creditCardAccountCount;
+    
+    @Schema(description = "贷记卡授信总额")
+    private BigDecimal creditCardCreditTotal;
+    
+    @Schema(description = "贷记卡单家机构最高授信额")
+    private BigDecimal creditCardMaxCredit;
+    
+    @Schema(description = "贷记卡单家机构最低授信额")
+    private BigDecimal creditCardMinCredit;
+    
+    @Schema(description = "贷记卡已用额度")
+    private BigDecimal creditCardUsedLimit;
+    
+    @Schema(description = "贷记卡近6个月平均使用额度")
+    private BigDecimal creditCardAvgUsage;
+    
+    @Schema(description = "最近1个月内的查询机构数")
+    private Integer queryOrganizationCountLastMonth;
+    
+    @Schema(description = "最近1个月内的查询次数")
+    private Integer queryCountLastMonth;
+    
+    @Schema(description = "最近2年内的查询次数")
+    private Integer queryCountLastTwoYears;
+    
+    @Schema(description = "贷款审批次数", example = "32608")
+    private Integer loanApprovalCount;
+    
+    @Schema(description = "信用卡审批次数", example = "6059")
+    private Integer creditCardApprovalCount;
+    
+    @Schema(description = "贷后管理次数", example = "13849")
+    private Integer postLoanManagementCount;
+    
+    @Schema(description = "担保资格审查次数", example = "2978")
+    private Integer guaranteeQualificationCount;
+    
+    @Schema(description = "特约商户实名审查次数", example = "6412")
+    private Integer specialMerchantCount;
+    
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+    
+    @Schema(description = "相关照片")
+    private List<String> infoImages;
+    
+    @Schema(description = "数据使用状态 0 使用 1 作废  2 异常", example = "2")
+    private String infoStatus;
+    
+}

+ 245 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userpersonalcredit/vo/UserPersonalCreditRespVO.java

@@ -0,0 +1,245 @@
+package cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo;
+
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Schema(description = "管理后台 - 个人信用报告 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class UserPersonalCreditRespVO {
+    
+    @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21601")
+    @ExcelProperty("自增主键")
+    private Long id;
+    
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2698")
+    @ExcelProperty("用户编号")
+    private Long userId;
+    
+    @Schema(description = "报告编号", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("报告编号")
+    private String reportNumber;
+    
+    @Schema(description = "报告时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("报告时间")
+    private LocalDateTime reportTime;
+    
+    @Schema(description = "被查询者姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
+    @ExcelProperty("被查询者姓名")
+    private String name;
+    
+    @Schema(description = "被查询者证件类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty("被查询者证件类型")
+    private String idCardType;
+    
+    @Schema(description = "被查询者证件号码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("被查询者证件号码")
+    private String idCardNumber;
+    
+    @Schema(description = "查询机构", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("查询机构")
+    private String queryOrganization;
+    
+    @Schema(description = "查询原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "不香")
+    @ExcelProperty("查询原因")
+    private String queryReason;
+    
+    @Schema(description = "异议信息提示")
+    @ExcelProperty("异议信息提示")
+    private String disputeInfo;
+    
+    @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("性别")
+    private String gender;
+    
+    @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("出生日期")
+    private LocalDate birthDate;
+    
+    @Schema(description = "婚姻状况", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("婚姻状况")
+    private String maritalStatus;
+    
+    @Schema(description = "就业状况", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("就业状况")
+    private String employmentStatus;
+    
+    @Schema(description = "学历", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("学历")
+    private String education;
+    
+    @Schema(description = "学位")
+    @ExcelProperty("学位")
+    private String degree;
+    
+    @Schema(description = "国籍", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("国籍")
+    private String nationality;
+    
+    @Schema(description = "电子邮箱")
+    @ExcelProperty("电子邮箱")
+    private String email;
+    
+    @Schema(description = "通讯地址", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("通讯地址")
+    private String communicationAddress;
+    
+    @Schema(description = "户籍地址", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("户籍地址")
+    private String householdAddress;
+    
+    @Schema(description = "信贷交易业务类型", example = "1")
+    @ExcelProperty("信贷交易业务类型")
+    private String loanType;
+    
+    @Schema(description = "信贷交易账户数", example = "8424")
+    @ExcelProperty("信贷交易账户数")
+    private Integer loanAccountCount;
+    
+    @Schema(description = "首笔业务发放月份")
+    @ExcelProperty("首笔业务发放月份")
+    private String firstLoanMonth;
+    
+    @Schema(description = "非循环贷管理机构数", example = "28403")
+    @ExcelProperty("非循环贷管理机构数")
+    private Integer nonCyclicLoanManagementCount;
+    
+    @Schema(description = "非循环贷账户数", example = "2665")
+    @ExcelProperty("非循环贷账户数")
+    private Integer nonCyclicLoanAccountCount;
+    
+    @Schema(description = "非循环贷授信总额")
+    @ExcelProperty("非循环贷授信总额")
+    private BigDecimal nonCyclicLoanCreditTotal;
+    
+    @Schema(description = "非循环贷余额")
+    @ExcelProperty("非循环贷余额")
+    private BigDecimal nonCyclicLoanBalance;
+    
+    @Schema(description = "非循环贷近6个月平均应还款")
+    @ExcelProperty("非循环贷近6个月平均应还款")
+    private BigDecimal nonCyclicLoanAvgRepayment;
+    
+    @Schema(description = "循环贷账户一管理机构数")
+    @ExcelProperty("循环贷账户一管理机构数")
+    private Integer cyclicLoanManagementCount1;
+    
+    @Schema(description = "循环贷账户一账户数")
+    @ExcelProperty("循环贷账户一账户数")
+    private Integer cyclicLoanAccountCount1;
+    
+    @Schema(description = "循环贷账户一授信总额")
+    @ExcelProperty("循环贷账户一授信总额")
+    private BigDecimal cyclicLoanCreditTotal1;
+    
+    @Schema(description = "循环贷账户一余额")
+    @ExcelProperty("循环贷账户一余额")
+    private BigDecimal cyclicLoanBalance1;
+    
+    @Schema(description = "循环贷账户一近6个月平均应还款")
+    @ExcelProperty("循环贷账户一近6个月平均应还款")
+    private BigDecimal cyclicLoanAvgRepayment1;
+    
+    @Schema(description = "循环贷账户二管理机构数")
+    @ExcelProperty("循环贷账户二管理机构数")
+    private Integer cyclicLoanManagementCount2;
+    
+    @Schema(description = "循环贷账户二账户数")
+    @ExcelProperty("循环贷账户二账户数")
+    private Integer cyclicLoanAccountCount2;
+    
+    @Schema(description = "循环贷账户二授信总额")
+    @ExcelProperty("循环贷账户二授信总额")
+    private BigDecimal cyclicLoanCreditTotal2;
+    
+    @Schema(description = "循环贷账户二余额")
+    @ExcelProperty("循环贷账户二余额")
+    private BigDecimal cyclicLoanBalance2;
+    
+    @Schema(description = "循环贷账户二近6个月平均应还款")
+    @ExcelProperty("循环贷账户二近6个月平均应还款")
+    private BigDecimal cyclicLoanAvgRepayment2;
+    
+    @Schema(description = "贷记卡发卡机构数", example = "25366")
+    @ExcelProperty("贷记卡发卡机构数")
+    private Integer creditCardIssuerCount;
+    
+    @Schema(description = "贷记卡账户数", example = "7106")
+    @ExcelProperty("贷记卡账户数")
+    private Integer creditCardAccountCount;
+    
+    @Schema(description = "贷记卡授信总额")
+    @ExcelProperty("贷记卡授信总额")
+    private BigDecimal creditCardCreditTotal;
+    
+    @Schema(description = "贷记卡单家机构最高授信额")
+    @ExcelProperty("贷记卡单家机构最高授信额")
+    private BigDecimal creditCardMaxCredit;
+    
+    @Schema(description = "贷记卡单家机构最低授信额")
+    @ExcelProperty("贷记卡单家机构最低授信额")
+    private BigDecimal creditCardMinCredit;
+    
+    @Schema(description = "贷记卡已用额度")
+    @ExcelProperty("贷记卡已用额度")
+    private BigDecimal creditCardUsedLimit;
+    
+    @Schema(description = "贷记卡近6个月平均使用额度")
+    @ExcelProperty("贷记卡近6个月平均使用额度")
+    private BigDecimal creditCardAvgUsage;
+    
+    @Schema(description = "最近1个月内的查询机构数")
+    @ExcelProperty("最近1个月内的查询机构数")
+    private Integer queryOrganizationCountLastMonth;
+    
+    @Schema(description = "最近1个月内的查询次数")
+    @ExcelProperty("最近1个月内的查询次数")
+    private Integer queryCountLastMonth;
+    
+    @Schema(description = "最近2年内的查询次数")
+    @ExcelProperty("最近2年内的查询次数")
+    private Integer queryCountLastTwoYears;
+    
+    @Schema(description = "贷款审批次数", example = "32608")
+    @ExcelProperty("贷款审批次数")
+    private Integer loanApprovalCount;
+    
+    @Schema(description = "信用卡审批次数", example = "6059")
+    @ExcelProperty("信用卡审批次数")
+    private Integer creditCardApprovalCount;
+    
+    @Schema(description = "贷后管理次数", example = "13849")
+    @ExcelProperty("贷后管理次数")
+    private Integer postLoanManagementCount;
+    
+    @Schema(description = "担保资格审查次数", example = "2978")
+    @ExcelProperty("担保资格审查次数")
+    private Integer guaranteeQualificationCount;
+    
+    @Schema(description = "特约商户实名审查次数", example = "6412")
+    @ExcelProperty("特约商户实名审查次数")
+    private Integer specialMerchantCount;
+    
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+    
+    @Schema(description = "相关照片")
+    @ExcelProperty("相关照片")
+    private List<String> infoImages;
+    
+    @Schema(description = "数据使用状态 0 使用 1 作废  2 异常", example = "2")
+    @ExcelProperty(value = "数据使用状态 0 使用 1 作废  2 异常", converter = DictConvert.class)
+    @DictFormat("info_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private String infoStatus;
+    
+}

+ 198 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/userpersonalcredit/vo/UserPersonalCreditSaveReqVO.java

@@ -0,0 +1,198 @@
+package cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Schema(description = "管理后台 - 个人信用报告新增/修改 Request VO")
+@Data
+public class UserPersonalCreditSaveReqVO {
+    
+    @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21601")
+    private Long id;
+    
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2698")
+    @NotNull(message = "用户编号不能为空")
+    private Long userId;
+    
+    @Schema(description = "报告编号", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "报告编号不能为空")
+    private String reportNumber;
+    
+    @Schema(description = "报告时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "报告时间不能为空")
+    private LocalDateTime reportTime;
+    
+    @Schema(description = "被查询者姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
+    @NotEmpty(message = "被查询者姓名不能为空")
+    private String name;
+    
+    @Schema(description = "被查询者证件类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotEmpty(message = "被查询者证件类型不能为空")
+    private String idCardType;
+    
+    @Schema(description = "被查询者证件号码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "被查询者证件号码不能为空")
+    private String idCardNumber;
+    
+    @Schema(description = "查询机构", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "查询机构不能为空")
+    private String queryOrganization;
+    
+    @Schema(description = "查询原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "不香")
+    @NotEmpty(message = "查询原因不能为空")
+    private String queryReason;
+    
+    @Schema(description = "异议信息提示")
+    private String disputeInfo;
+    
+    @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "性别不能为空")
+    private String gender;
+    
+    @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "出生日期不能为空")
+    private LocalDate birthDate;
+    
+    @Schema(description = "婚姻状况", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotEmpty(message = "婚姻状况不能为空")
+    private String maritalStatus;
+    
+    @Schema(description = "就业状况", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotEmpty(message = "就业状况不能为空")
+    private String employmentStatus;
+    
+    @Schema(description = "学历", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "学历不能为空")
+    private String education;
+    
+    @Schema(description = "学位")
+    private String degree;
+    
+    @Schema(description = "国籍", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "国籍不能为空")
+    private String nationality;
+    
+    @Schema(description = "电子邮箱")
+    private String email;
+    
+    @Schema(description = "通讯地址", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "通讯地址不能为空")
+    private String communicationAddress;
+    
+    @Schema(description = "户籍地址", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "户籍地址不能为空")
+    private String householdAddress;
+    
+    @Schema(description = "信贷交易业务类型", example = "1")
+    private String loanType;
+    
+    @Schema(description = "信贷交易账户数", example = "8424")
+    private Integer loanAccountCount;
+    
+    @Schema(description = "首笔业务发放月份")
+    private String firstLoanMonth;
+    
+    @Schema(description = "非循环贷管理机构数", example = "28403")
+    private Integer nonCyclicLoanManagementCount;
+    
+    @Schema(description = "非循环贷账户数", example = "2665")
+    private Integer nonCyclicLoanAccountCount;
+    
+    @Schema(description = "非循环贷授信总额")
+    private BigDecimal nonCyclicLoanCreditTotal;
+    
+    @Schema(description = "非循环贷余额")
+    private BigDecimal nonCyclicLoanBalance;
+    
+    @Schema(description = "非循环贷近6个月平均应还款")
+    private BigDecimal nonCyclicLoanAvgRepayment;
+    
+    @Schema(description = "循环贷账户一管理机构数")
+    private Integer cyclicLoanManagementCount1;
+    
+    @Schema(description = "循环贷账户一账户数")
+    private Integer cyclicLoanAccountCount1;
+    
+    @Schema(description = "循环贷账户一授信总额")
+    private BigDecimal cyclicLoanCreditTotal1;
+    
+    @Schema(description = "循环贷账户一余额")
+    private BigDecimal cyclicLoanBalance1;
+    
+    @Schema(description = "循环贷账户一近6个月平均应还款")
+    private BigDecimal cyclicLoanAvgRepayment1;
+    
+    @Schema(description = "循环贷账户二管理机构数")
+    private Integer cyclicLoanManagementCount2;
+    
+    @Schema(description = "循环贷账户二账户数")
+    private Integer cyclicLoanAccountCount2;
+    
+    @Schema(description = "循环贷账户二授信总额")
+    private BigDecimal cyclicLoanCreditTotal2;
+    
+    @Schema(description = "循环贷账户二余额")
+    private BigDecimal cyclicLoanBalance2;
+    
+    @Schema(description = "循环贷账户二近6个月平均应还款")
+    private BigDecimal cyclicLoanAvgRepayment2;
+    
+    @Schema(description = "贷记卡发卡机构数", example = "25366")
+    private Integer creditCardIssuerCount;
+    
+    @Schema(description = "贷记卡账户数", example = "7106")
+    private Integer creditCardAccountCount;
+    
+    @Schema(description = "贷记卡授信总额")
+    private BigDecimal creditCardCreditTotal;
+    
+    @Schema(description = "贷记卡单家机构最高授信额")
+    private BigDecimal creditCardMaxCredit;
+    
+    @Schema(description = "贷记卡单家机构最低授信额")
+    private BigDecimal creditCardMinCredit;
+    
+    @Schema(description = "贷记卡已用额度")
+    private BigDecimal creditCardUsedLimit;
+    
+    @Schema(description = "贷记卡近6个月平均使用额度")
+    private BigDecimal creditCardAvgUsage;
+    
+    @Schema(description = "最近1个月内的查询机构数")
+    private Integer queryOrganizationCountLastMonth;
+    
+    @Schema(description = "最近1个月内的查询次数")
+    private Integer queryCountLastMonth;
+    
+    @Schema(description = "最近2年内的查询次数")
+    private Integer queryCountLastTwoYears;
+    
+    @Schema(description = "贷款审批次数", example = "32608")
+    private Integer loanApprovalCount;
+    
+    @Schema(description = "信用卡审批次数", example = "6059")
+    private Integer creditCardApprovalCount;
+    
+    @Schema(description = "贷后管理次数", example = "13849")
+    private Integer postLoanManagementCount;
+    
+    @Schema(description = "担保资格审查次数", example = "2978")
+    private Integer guaranteeQualificationCount;
+    
+    @Schema(description = "特约商户实名审查次数", example = "6412")
+    private Integer specialMerchantCount;
+    
+    @Schema(description = "相关照片")
+    private List<String> infoImages;
+    
+    @Schema(description = "数据使用状态 0 使用 1 作废  2 异常", example = "2")
+    private String infoStatus;
+    
+}

+ 67 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserBusinessLicenseController.java

@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.member.controller.app.user;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo.UserBusinessLicensePageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo.UserBusinessLicenseRespVO;
+import cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo.UserBusinessLicenseSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userbusinesslicense.UserBusinessLicenseDO;
+import cn.iocoder.yudao.module.member.service.userbusinesslicense.UserBusinessLicenseService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "APP - 营业执照信息")
+@RestController
+@RequestMapping("/member/user-business-license")
+@Validated
+public class AppUserBusinessLicenseController {
+    
+    @Resource
+    private UserBusinessLicenseService userBusinessLicenseService;
+    
+    @PostMapping("/create")
+    @Operation(summary = "创建营业执照信息")
+    public CommonResult<Long> createUserBusinessLicense(@Valid @RequestBody UserBusinessLicenseSaveReqVO createReqVO) {
+        return success(userBusinessLicenseService.createUserBusinessLicense(createReqVO));
+    }
+    
+    @PutMapping("/update")
+    @Operation(summary = "更新营业执照信息")
+    public CommonResult<Boolean> updateUserBusinessLicense(@Valid @RequestBody UserBusinessLicenseSaveReqVO updateReqVO) {
+        userBusinessLicenseService.updateUserBusinessLicense(updateReqVO);
+        return success(true);
+    }
+    
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除营业执照信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    public CommonResult<Boolean> deleteUserBusinessLicense(@RequestParam("id") Long id) {
+        userBusinessLicenseService.deleteUserBusinessLicense(id);
+        return success(true);
+    }
+    
+    @GetMapping("/get")
+    @Operation(summary = "获得营业执照信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<UserBusinessLicenseRespVO> getUserBusinessLicense(@RequestParam("id") Long id) {
+        UserBusinessLicenseDO userBusinessLicense = userBusinessLicenseService.getUserBusinessLicense(id);
+        return success(BeanUtils.toBean(userBusinessLicense, UserBusinessLicenseRespVO.class));
+    }
+    
+    @GetMapping("/page")
+    @Operation(summary = "获得营业执照信息分页")
+    public CommonResult<PageResult<UserBusinessLicenseRespVO>> getUserBusinessLicensePage(@Valid UserBusinessLicensePageReqVO pageReqVO) {
+        PageResult<UserBusinessLicenseDO> pageResult = userBusinessLicenseService.getUserBusinessLicensePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserBusinessLicenseRespVO.class));
+    }
+    
+    
+}

+ 67 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserIdcardController.java

@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.member.controller.app.user;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.member.controller.admin.useridcard.vo.UserIdcardPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.useridcard.vo.UserIdcardRespVO;
+import cn.iocoder.yudao.module.member.controller.admin.useridcard.vo.UserIdcardSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.useridcard.UserIdcardDO;
+import cn.iocoder.yudao.module.member.service.useridcard.UserIdcardService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "APP - 身份证信息")
+@RestController
+@RequestMapping("/member/user-idcard")
+@Validated
+public class AppUserIdcardController {
+    
+    @Resource
+    private UserIdcardService userIdcardService;
+    
+    @PostMapping("/create")
+    @Operation(summary = "创建身份证信息")
+    public CommonResult<Long> createUserIdcard(@Valid @RequestBody UserIdcardSaveReqVO createReqVO) {
+        return success(userIdcardService.createUserIdcard(createReqVO));
+    }
+    
+    @PutMapping("/update")
+    @Operation(summary = "更新身份证信息")
+    public CommonResult<Boolean> updateUserIdcard(@Valid @RequestBody UserIdcardSaveReqVO updateReqVO) {
+        userIdcardService.updateUserIdcard(updateReqVO);
+        return success(true);
+    }
+    
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除身份证信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    public CommonResult<Boolean> deleteUserIdcard(@RequestParam("id") Long id) {
+        userIdcardService.deleteUserIdcard(id);
+        return success(true);
+    }
+    
+    @GetMapping("/get")
+    @Operation(summary = "获得身份证信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<UserIdcardRespVO> getUserIdcard(@RequestParam("id") Long id) {
+        UserIdcardDO userIdcard = userIdcardService.getUserIdcard(id);
+        return success(BeanUtils.toBean(userIdcard, UserIdcardRespVO.class));
+    }
+    
+    @GetMapping("/page")
+    @Operation(summary = "获得身份证信息分页")
+    public CommonResult<PageResult<UserIdcardRespVO>> getUserIdcardPage(@Valid UserIdcardPageReqVO pageReqVO) {
+        PageResult<UserIdcardDO> pageResult = userIdcardService.getUserIdcardPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserIdcardRespVO.class));
+    }
+    
+    
+}

+ 66 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserInformationController.java

@@ -0,0 +1,66 @@
+package cn.iocoder.yudao.module.member.controller.app.user;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.member.controller.admin.userinformation.vo.UserInformationPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userinformation.vo.UserInformationRespVO;
+import cn.iocoder.yudao.module.member.controller.admin.userinformation.vo.UserInformationSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userinformation.UserInformationDO;
+import cn.iocoder.yudao.module.member.service.userinformation.UserInformationService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "APP - 用户信息")
+@RestController
+@RequestMapping("/member/user-information")
+@Validated
+public class AppUserInformationController {
+    
+    @Resource
+    private UserInformationService userInformationService;
+    
+    @PostMapping("/create")
+    @Operation(summary = "创建用户信息")
+    public CommonResult<Long> createUserInformation(@Valid @RequestBody UserInformationSaveReqVO createReqVO) {
+        return success(userInformationService.createUserInformation(createReqVO));
+    }
+    
+    @PutMapping("/update")
+    @Operation(summary = "更新用户信息")
+    public CommonResult<Boolean> updateUserInformation(@Valid @RequestBody UserInformationSaveReqVO updateReqVO) {
+        userInformationService.updateUserInformation(updateReqVO);
+        return success(true);
+    }
+    
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除用户信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    public CommonResult<Boolean> deleteUserInformation(@RequestParam("id") Long id) {
+        userInformationService.deleteUserInformation(id);
+        return success(true);
+    }
+    
+    @GetMapping("/get")
+    @Operation(summary = "获得用户信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<UserInformationRespVO> getUserInformation(@RequestParam("id") Long id) {
+        UserInformationDO userInformation = userInformationService.getUserInformation(id);
+        return success(BeanUtils.toBean(userInformation, UserInformationRespVO.class));
+    }
+    
+    @GetMapping("/page")
+    @Operation(summary = "获得用户信息分页")
+    public CommonResult<PageResult<UserInformationRespVO>> getUserInformationPage(@Valid UserInformationPageReqVO pageReqVO) {
+        PageResult<UserInformationDO> pageResult = userInformationService.getUserInformationPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserInformationRespVO.class));
+    }
+    
+}

+ 67 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppUserPersonalCreditController.java

@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.member.controller.app.user;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo.UserPersonalCreditPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo.UserPersonalCreditRespVO;
+import cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo.UserPersonalCreditSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userpersonalcredit.UserPersonalCreditDO;
+import cn.iocoder.yudao.module.member.service.userpersonalcredit.UserPersonalCreditService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "APP - 个人信用报告")
+@RestController
+@RequestMapping("/member/user-personal-credit")
+@Validated
+public class AppUserPersonalCreditController {
+    
+    @Resource
+    private UserPersonalCreditService userPersonalCreditService;
+    
+    @PostMapping("/create")
+    @Operation(summary = "创建个人信用报告")
+    public CommonResult<Long> createUserPersonalCredit(@Valid @RequestBody UserPersonalCreditSaveReqVO createReqVO) {
+        return success(userPersonalCreditService.createUserPersonalCredit(createReqVO));
+    }
+    
+    @PutMapping("/update")
+    @Operation(summary = "更新个人信用报告")
+    public CommonResult<Boolean> updateUserPersonalCredit(@Valid @RequestBody UserPersonalCreditSaveReqVO updateReqVO) {
+        userPersonalCreditService.updateUserPersonalCredit(updateReqVO);
+        return success(true);
+    }
+    
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除个人信用报告")
+    @Parameter(name = "id", description = "编号", required = true)
+    public CommonResult<Boolean> deleteUserPersonalCredit(@RequestParam("id") Long id) {
+        userPersonalCreditService.deleteUserPersonalCredit(id);
+        return success(true);
+    }
+    
+    @GetMapping("/get")
+    @Operation(summary = "获得个人信用报告")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<UserPersonalCreditRespVO> getUserPersonalCredit(@RequestParam("id") Long id) {
+        UserPersonalCreditDO userPersonalCredit = userPersonalCreditService.getUserPersonalCredit(id);
+        return success(BeanUtils.toBean(userPersonalCredit, UserPersonalCreditRespVO.class));
+    }
+    
+    @GetMapping("/page")
+    @Operation(summary = "获得个人信用报告分页")
+    public CommonResult<PageResult<UserPersonalCreditRespVO>> getUserPersonalCreditPage(@Valid UserPersonalCreditPageReqVO pageReqVO) {
+        PageResult<UserPersonalCreditDO> pageResult = userPersonalCreditService.getUserPersonalCreditPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserPersonalCreditRespVO.class));
+    }
+    
+    
+}

+ 89 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/userbusinesslicense/UserBusinessLicenseDO.java

@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.member.dal.dataobject.userbusinesslicense;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.*;
+
+import java.io.Serial;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * 营业执照信息 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("member_user_business_license")
+@KeySequence("member_user_business_license_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserBusinessLicenseDO extends BaseDO {
+    
+    @Serial
+    private static final long serialVersionUID = -1788146406730399171L;
+    /**
+     * 自增主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 统一社会信用代码
+     */
+    private String unifiedSocialCreditCode;
+    /**
+     * 名称
+     */
+    private String businessName;
+    /**
+     * 类型
+     */
+    private String businessType;
+    /**
+     * 法定代表人
+     */
+    private String legalRepresentative;
+    /**
+     * 注册资本
+     */
+    private String registeredCapital;
+    /**
+     * 成立日期
+     */
+    private LocalDate establishmentDate;
+    /**
+     * 住所
+     */
+    private String businessAddress;
+    /**
+     * 经营范围
+     */
+    private String businessScope;
+    /**
+     * 登记机关
+     */
+    private String registrationAuthority;
+    /**
+     * 发证日期
+     */
+    private LocalDate issueDate;
+    /**
+     * 相关照片
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> infoImages;
+    /**
+     * 数据使用状态 0 使用 1 作废  2 异常
+     * <p>
+     * 枚举 {@link TODO info_status 对应的类}
+     */
+    private String infoStatus;
+    
+}

+ 89 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/useridcard/UserIdcardDO.java

@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.member.dal.dataobject.useridcard;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.*;
+
+import java.io.Serial;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * 身份证信息 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("member_user_idcard")
+@KeySequence("member_user_idcard_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserIdcardDO extends BaseDO {
+    
+    @Serial
+    private static final long serialVersionUID = 7757492938176961133L;
+    /**
+     * 自增主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户编号
+     */
+    private Long userId;
+    /**
+     * 姓名
+     */
+    private String name;
+    /**
+     * 性别
+     */
+    private String gender;
+    /**
+     * 民族
+     */
+    private String ethnicity;
+    /**
+     * 出生日期
+     */
+    private LocalDate birthDate;
+    /**
+     * 住址
+     */
+    private String address;
+    /**
+     * 公民身份号码
+     */
+    private String idCardNumber;
+    /**
+     * 签发机关
+     */
+    private String issuingAuthority;
+    /**
+     * 有效期开始日期
+     */
+    private LocalDate validityStart;
+    /**
+     * 有效期结束日期
+     */
+    private LocalDate validityEnd;
+    /**
+     * 相关照片
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> infoImages;
+    /**
+     * 数据使用状态 0 使用 1 作废  2 异常
+     * <p>
+     * 枚举 {@link TODO info_status 对应的类}
+     */
+    private String infoStatus;
+    
+}

+ 58 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/userinformation/UserInformationDO.java

@@ -0,0 +1,58 @@
+package cn.iocoder.yudao.module.member.dal.dataobject.userinformation;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 用户信息 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("member_user_information")
+@KeySequence("member_user_information_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserInformationDO extends BaseDO {
+    
+    /**
+     * 自增主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户编号
+     */
+    private Long userId;
+    /**
+     * 个人征信信息
+     */
+    private String creditInformation;
+    /**
+     * 个人身份证信息
+     */
+    private String idCardInformation;
+    /**
+     * 个人营业执照信息
+     */
+    private String businessLicenseInformation;
+    /**
+     * 征信id
+     */
+    private Long creditId;
+    /**
+     * 身份证ID
+     */
+    private Long idCardId;
+    /**
+     * 营业执照id
+     */
+    private Long businessLicenseId;
+    
+}

+ 259 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/userpersonalcredit/UserPersonalCreditDO.java

@@ -0,0 +1,259 @@
+package cn.iocoder.yudao.module.member.dal.dataobject.userpersonalcredit;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.*;
+
+import java.io.Serial;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 个人信用报告 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("member_user_personal_credit")
+@KeySequence("member_user_personal_credit_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserPersonalCreditDO extends BaseDO {
+    
+    @Serial
+    private static final long serialVersionUID = -7902956472200513384L;
+    /**
+     * 自增主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户编号
+     */
+    private Long userId;
+    /**
+     * 报告编号
+     */
+    private String reportNumber;
+    /**
+     * 报告时间
+     */
+    private LocalDateTime reportTime;
+    /**
+     * 被查询者姓名
+     */
+    private String name;
+    /**
+     * 被查询者证件类型
+     */
+    private String idCardType;
+    /**
+     * 被查询者证件号码
+     */
+    private String idCardNumber;
+    /**
+     * 查询机构
+     */
+    private String queryOrganization;
+    /**
+     * 查询原因
+     */
+    private String queryReason;
+    /**
+     * 异议信息提示
+     */
+    private String disputeInfo;
+    /**
+     * 性别
+     */
+    private String gender;
+    /**
+     * 出生日期
+     */
+    private LocalDate birthDate;
+    /**
+     * 婚姻状况
+     */
+    private String maritalStatus;
+    /**
+     * 就业状况
+     */
+    private String employmentStatus;
+    /**
+     * 学历
+     */
+    private String education;
+    /**
+     * 学位
+     */
+    private String degree;
+    /**
+     * 国籍
+     */
+    private String nationality;
+    /**
+     * 电子邮箱
+     */
+    private String email;
+    /**
+     * 通讯地址
+     */
+    private String communicationAddress;
+    /**
+     * 户籍地址
+     */
+    private String householdAddress;
+    /**
+     * 信贷交易业务类型
+     */
+    private String loanType;
+    /**
+     * 信贷交易账户数
+     */
+    private Integer loanAccountCount;
+    /**
+     * 首笔业务发放月份
+     */
+    private String firstLoanMonth;
+    /**
+     * 非循环贷管理机构数
+     */
+    private Integer nonCyclicLoanManagementCount;
+    /**
+     * 非循环贷账户数
+     */
+    private Integer nonCyclicLoanAccountCount;
+    /**
+     * 非循环贷授信总额
+     */
+    private BigDecimal nonCyclicLoanCreditTotal;
+    /**
+     * 非循环贷余额
+     */
+    private BigDecimal nonCyclicLoanBalance;
+    /**
+     * 非循环贷近6个月平均应还款
+     */
+    private BigDecimal nonCyclicLoanAvgRepayment;
+    /**
+     * 循环贷账户一管理机构数
+     */
+    private Integer cyclicLoanManagementCount1;
+    /**
+     * 循环贷账户一账户数
+     */
+    private Integer cyclicLoanAccountCount1;
+    /**
+     * 循环贷账户一授信总额
+     */
+    private BigDecimal cyclicLoanCreditTotal1;
+    /**
+     * 循环贷账户一余额
+     */
+    private BigDecimal cyclicLoanBalance1;
+    /**
+     * 循环贷账户一近6个月平均应还款
+     */
+    private BigDecimal cyclicLoanAvgRepayment1;
+    /**
+     * 循环贷账户二管理机构数
+     */
+    private Integer cyclicLoanManagementCount2;
+    /**
+     * 循环贷账户二账户数
+     */
+    private Integer cyclicLoanAccountCount2;
+    /**
+     * 循环贷账户二授信总额
+     */
+    private BigDecimal cyclicLoanCreditTotal2;
+    /**
+     * 循环贷账户二余额
+     */
+    private BigDecimal cyclicLoanBalance2;
+    /**
+     * 循环贷账户二近6个月平均应还款
+     */
+    private BigDecimal cyclicLoanAvgRepayment2;
+    /**
+     * 贷记卡发卡机构数
+     */
+    private Integer creditCardIssuerCount;
+    /**
+     * 贷记卡账户数
+     */
+    private Integer creditCardAccountCount;
+    /**
+     * 贷记卡授信总额
+     */
+    private BigDecimal creditCardCreditTotal;
+    /**
+     * 贷记卡单家机构最高授信额
+     */
+    private BigDecimal creditCardMaxCredit;
+    /**
+     * 贷记卡单家机构最低授信额
+     */
+    private BigDecimal creditCardMinCredit;
+    /**
+     * 贷记卡已用额度
+     */
+    private BigDecimal creditCardUsedLimit;
+    /**
+     * 贷记卡近6个月平均使用额度
+     */
+    private BigDecimal creditCardAvgUsage;
+    /**
+     * 最近1个月内的查询机构数
+     */
+    private Integer queryOrganizationCountLastMonth;
+    /**
+     * 最近1个月内的查询次数
+     */
+    private Integer queryCountLastMonth;
+    /**
+     * 最近2年内的查询次数
+     */
+    private Integer queryCountLastTwoYears;
+    /**
+     * 贷款审批次数
+     */
+    private Integer loanApprovalCount;
+    /**
+     * 信用卡审批次数
+     */
+    private Integer creditCardApprovalCount;
+    /**
+     * 贷后管理次数
+     */
+    private Integer postLoanManagementCount;
+    /**
+     * 担保资格审查次数
+     */
+    private Integer guaranteeQualificationCount;
+    /**
+     * 特约商户实名审查次数
+     */
+    private Integer specialMerchantCount;
+    /**
+     * 相关照片
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> infoImages;
+    /**
+     * 数据使用状态 0 使用 1 作废  2 异常
+     * <p>
+     * 枚举 {@link TODO info_status 对应的类}
+     */
+    private String infoStatus;
+    
+}

+ 36 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/userbusinesslicense/UserBusinessLicenseMapper.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.member.dal.mysql.userbusinesslicense;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo.UserBusinessLicensePageReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userbusinesslicense.UserBusinessLicenseDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 营业执照信息 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface UserBusinessLicenseMapper extends BaseMapperX<UserBusinessLicenseDO> {
+    
+    default PageResult<UserBusinessLicenseDO> selectPage(UserBusinessLicensePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<UserBusinessLicenseDO>()
+                .eqIfPresent(UserBusinessLicenseDO::getUnifiedSocialCreditCode, reqVO.getUnifiedSocialCreditCode())
+                .likeIfPresent(UserBusinessLicenseDO::getBusinessName, reqVO.getBusinessName())
+                .eqIfPresent(UserBusinessLicenseDO::getBusinessType, reqVO.getBusinessType())
+                .eqIfPresent(UserBusinessLicenseDO::getLegalRepresentative, reqVO.getLegalRepresentative())
+                .eqIfPresent(UserBusinessLicenseDO::getRegisteredCapital, reqVO.getRegisteredCapital())
+                .betweenIfPresent(UserBusinessLicenseDO::getEstablishmentDate, reqVO.getEstablishmentDate())
+                .eqIfPresent(UserBusinessLicenseDO::getBusinessAddress, reqVO.getBusinessAddress())
+                .eqIfPresent(UserBusinessLicenseDO::getBusinessScope, reqVO.getBusinessScope())
+                .eqIfPresent(UserBusinessLicenseDO::getRegistrationAuthority, reqVO.getRegistrationAuthority())
+                .betweenIfPresent(UserBusinessLicenseDO::getIssueDate, reqVO.getIssueDate())
+                .betweenIfPresent(UserBusinessLicenseDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(UserBusinessLicenseDO::getInfoImages, reqVO.getInfoImages())
+                .eqIfPresent(UserBusinessLicenseDO::getInfoStatus, reqVO.getInfoStatus())
+                .orderByDesc(UserBusinessLicenseDO::getId));
+    }
+    
+}

+ 36 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/useridcard/UserIdcardMapper.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.member.dal.mysql.useridcard;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.member.controller.admin.useridcard.vo.UserIdcardPageReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.useridcard.UserIdcardDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 身份证信息 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface UserIdcardMapper extends BaseMapperX<UserIdcardDO> {
+    
+    default PageResult<UserIdcardDO> selectPage(UserIdcardPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<UserIdcardDO>()
+                .eqIfPresent(UserIdcardDO::getUserId, reqVO.getUserId())
+                .likeIfPresent(UserIdcardDO::getName, reqVO.getName())
+                .eqIfPresent(UserIdcardDO::getGender, reqVO.getGender())
+                .eqIfPresent(UserIdcardDO::getEthnicity, reqVO.getEthnicity())
+                .betweenIfPresent(UserIdcardDO::getBirthDate, reqVO.getBirthDate())
+                .eqIfPresent(UserIdcardDO::getAddress, reqVO.getAddress())
+                .eqIfPresent(UserIdcardDO::getIdCardNumber, reqVO.getIdCardNumber())
+                .eqIfPresent(UserIdcardDO::getIssuingAuthority, reqVO.getIssuingAuthority())
+                .eqIfPresent(UserIdcardDO::getValidityStart, reqVO.getValidityStart())
+                .eqIfPresent(UserIdcardDO::getValidityEnd, reqVO.getValidityEnd())
+                .betweenIfPresent(UserIdcardDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(UserIdcardDO::getInfoImages, reqVO.getInfoImages())
+                .eqIfPresent(UserIdcardDO::getInfoStatus, reqVO.getInfoStatus())
+                .orderByDesc(UserIdcardDO::getId));
+    }
+    
+}

+ 31 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/userinformation/UserInformationMapper.java

@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.member.dal.mysql.userinformation;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.member.controller.admin.userinformation.vo.UserInformationPageReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userinformation.UserInformationDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户信息 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface UserInformationMapper extends BaseMapperX<UserInformationDO> {
+    
+    default PageResult<UserInformationDO> selectPage(UserInformationPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<UserInformationDO>()
+                .eqIfPresent(UserInformationDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(UserInformationDO::getCreditInformation, reqVO.getCreditInformation())
+                .eqIfPresent(UserInformationDO::getIdCardInformation, reqVO.getIdCardInformation())
+                .eqIfPresent(UserInformationDO::getBusinessLicenseInformation, reqVO.getBusinessLicenseInformation())
+                .betweenIfPresent(UserInformationDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(UserInformationDO::getCreditId, reqVO.getCreditId())
+                .eqIfPresent(UserInformationDO::getIdCardId, reqVO.getIdCardId())
+                .eqIfPresent(UserInformationDO::getBusinessLicenseId, reqVO.getBusinessLicenseId())
+                .orderByDesc(UserInformationDO::getId));
+    }
+    
+}

+ 81 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/userpersonalcredit/UserPersonalCreditMapper.java

@@ -0,0 +1,81 @@
+package cn.iocoder.yudao.module.member.dal.mysql.userpersonalcredit;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo.UserPersonalCreditPageReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userpersonalcredit.UserPersonalCreditDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 个人信用报告 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface UserPersonalCreditMapper extends BaseMapperX<UserPersonalCreditDO> {
+    
+    default PageResult<UserPersonalCreditDO> selectPage(UserPersonalCreditPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<UserPersonalCreditDO>()
+                .eqIfPresent(UserPersonalCreditDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(UserPersonalCreditDO::getReportNumber, reqVO.getReportNumber())
+                .betweenIfPresent(UserPersonalCreditDO::getReportTime, reqVO.getReportTime())
+                .likeIfPresent(UserPersonalCreditDO::getName, reqVO.getName())
+                .eqIfPresent(UserPersonalCreditDO::getIdCardType, reqVO.getIdCardType())
+                .eqIfPresent(UserPersonalCreditDO::getIdCardNumber, reqVO.getIdCardNumber())
+                .eqIfPresent(UserPersonalCreditDO::getQueryOrganization, reqVO.getQueryOrganization())
+                .eqIfPresent(UserPersonalCreditDO::getQueryReason, reqVO.getQueryReason())
+                .eqIfPresent(UserPersonalCreditDO::getDisputeInfo, reqVO.getDisputeInfo())
+                .eqIfPresent(UserPersonalCreditDO::getGender, reqVO.getGender())
+                .betweenIfPresent(UserPersonalCreditDO::getBirthDate, reqVO.getBirthDate())
+                .eqIfPresent(UserPersonalCreditDO::getMaritalStatus, reqVO.getMaritalStatus())
+                .eqIfPresent(UserPersonalCreditDO::getEmploymentStatus, reqVO.getEmploymentStatus())
+                .eqIfPresent(UserPersonalCreditDO::getEducation, reqVO.getEducation())
+                .eqIfPresent(UserPersonalCreditDO::getDegree, reqVO.getDegree())
+                .eqIfPresent(UserPersonalCreditDO::getNationality, reqVO.getNationality())
+                .eqIfPresent(UserPersonalCreditDO::getEmail, reqVO.getEmail())
+                .eqIfPresent(UserPersonalCreditDO::getCommunicationAddress, reqVO.getCommunicationAddress())
+                .eqIfPresent(UserPersonalCreditDO::getHouseholdAddress, reqVO.getHouseholdAddress())
+                .eqIfPresent(UserPersonalCreditDO::getLoanType, reqVO.getLoanType())
+                .eqIfPresent(UserPersonalCreditDO::getLoanAccountCount, reqVO.getLoanAccountCount())
+                .eqIfPresent(UserPersonalCreditDO::getFirstLoanMonth, reqVO.getFirstLoanMonth())
+                .eqIfPresent(UserPersonalCreditDO::getNonCyclicLoanManagementCount,
+                        reqVO.getNonCyclicLoanManagementCount())
+                .eqIfPresent(UserPersonalCreditDO::getNonCyclicLoanAccountCount, reqVO.getNonCyclicLoanAccountCount())
+                .eqIfPresent(UserPersonalCreditDO::getNonCyclicLoanCreditTotal, reqVO.getNonCyclicLoanCreditTotal())
+                .eqIfPresent(UserPersonalCreditDO::getNonCyclicLoanBalance, reqVO.getNonCyclicLoanBalance())
+                .eqIfPresent(UserPersonalCreditDO::getNonCyclicLoanAvgRepayment, reqVO.getNonCyclicLoanAvgRepayment())
+                .eqIfPresent(UserPersonalCreditDO::getCyclicLoanManagementCount1, reqVO.getCyclicLoanManagementCount1())
+                .eqIfPresent(UserPersonalCreditDO::getCyclicLoanAccountCount1, reqVO.getCyclicLoanAccountCount1())
+                .eqIfPresent(UserPersonalCreditDO::getCyclicLoanCreditTotal1, reqVO.getCyclicLoanCreditTotal1())
+                .eqIfPresent(UserPersonalCreditDO::getCyclicLoanBalance1, reqVO.getCyclicLoanBalance1())
+                .eqIfPresent(UserPersonalCreditDO::getCyclicLoanAvgRepayment1, reqVO.getCyclicLoanAvgRepayment1())
+                .eqIfPresent(UserPersonalCreditDO::getCyclicLoanManagementCount2, reqVO.getCyclicLoanManagementCount2())
+                .eqIfPresent(UserPersonalCreditDO::getCyclicLoanAccountCount2, reqVO.getCyclicLoanAccountCount2())
+                .eqIfPresent(UserPersonalCreditDO::getCyclicLoanCreditTotal2, reqVO.getCyclicLoanCreditTotal2())
+                .eqIfPresent(UserPersonalCreditDO::getCyclicLoanBalance2, reqVO.getCyclicLoanBalance2())
+                .eqIfPresent(UserPersonalCreditDO::getCyclicLoanAvgRepayment2, reqVO.getCyclicLoanAvgRepayment2())
+                .eqIfPresent(UserPersonalCreditDO::getCreditCardIssuerCount, reqVO.getCreditCardIssuerCount())
+                .eqIfPresent(UserPersonalCreditDO::getCreditCardAccountCount, reqVO.getCreditCardAccountCount())
+                .eqIfPresent(UserPersonalCreditDO::getCreditCardCreditTotal, reqVO.getCreditCardCreditTotal())
+                .eqIfPresent(UserPersonalCreditDO::getCreditCardMaxCredit, reqVO.getCreditCardMaxCredit())
+                .eqIfPresent(UserPersonalCreditDO::getCreditCardMinCredit, reqVO.getCreditCardMinCredit())
+                .eqIfPresent(UserPersonalCreditDO::getCreditCardUsedLimit, reqVO.getCreditCardUsedLimit())
+                .eqIfPresent(UserPersonalCreditDO::getCreditCardAvgUsage, reqVO.getCreditCardAvgUsage())
+                .eqIfPresent(UserPersonalCreditDO::getQueryOrganizationCountLastMonth,
+                        reqVO.getQueryOrganizationCountLastMonth())
+                .eqIfPresent(UserPersonalCreditDO::getQueryCountLastMonth, reqVO.getQueryCountLastMonth())
+                .eqIfPresent(UserPersonalCreditDO::getQueryCountLastTwoYears, reqVO.getQueryCountLastTwoYears())
+                .eqIfPresent(UserPersonalCreditDO::getLoanApprovalCount, reqVO.getLoanApprovalCount())
+                .eqIfPresent(UserPersonalCreditDO::getCreditCardApprovalCount, reqVO.getCreditCardApprovalCount())
+                .eqIfPresent(UserPersonalCreditDO::getPostLoanManagementCount, reqVO.getPostLoanManagementCount())
+                .eqIfPresent(UserPersonalCreditDO::getGuaranteeQualificationCount,
+                        reqVO.getGuaranteeQualificationCount())
+                .eqIfPresent(UserPersonalCreditDO::getSpecialMerchantCount, reqVO.getSpecialMerchantCount())
+                .betweenIfPresent(UserPersonalCreditDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(UserPersonalCreditDO::getInfoImages, reqVO.getInfoImages())
+                .eqIfPresent(UserPersonalCreditDO::getInfoStatus, reqVO.getInfoStatus())
+                .orderByDesc(UserPersonalCreditDO::getId));
+    }
+    
+}

+ 54 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userbusinesslicense/UserBusinessLicenseService.java

@@ -0,0 +1,54 @@
+package cn.iocoder.yudao.module.member.service.userbusinesslicense;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo.UserBusinessLicensePageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo.UserBusinessLicenseSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userbusinesslicense.UserBusinessLicenseDO;
+import jakarta.validation.Valid;
+
+/**
+ * 营业执照信息 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface UserBusinessLicenseService {
+    
+    /**
+     * 创建营业执照信息
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createUserBusinessLicense(@Valid UserBusinessLicenseSaveReqVO createReqVO);
+    
+    /**
+     * 更新营业执照信息
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateUserBusinessLicense(@Valid UserBusinessLicenseSaveReqVO updateReqVO);
+    
+    /**
+     * 删除营业执照信息
+     *
+     * @param id 编号
+     */
+    void deleteUserBusinessLicense(Long id);
+    
+    /**
+     * 获得营业执照信息
+     *
+     * @param id 编号
+     * @return 营业执照信息
+     */
+    UserBusinessLicenseDO getUserBusinessLicense(Long id);
+    
+    /**
+     * 获得营业执照信息分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 营业执照信息分页
+     */
+    PageResult<UserBusinessLicenseDO> getUserBusinessLicensePage(UserBusinessLicensePageReqVO pageReqVO);
+    
+}

+ 70 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userbusinesslicense/UserBusinessLicenseServiceImpl.java

@@ -0,0 +1,70 @@
+package cn.iocoder.yudao.module.member.service.userbusinesslicense;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo.UserBusinessLicensePageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userbusinesslicense.vo.UserBusinessLicenseSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userbusinesslicense.UserBusinessLicenseDO;
+import cn.iocoder.yudao.module.member.dal.mysql.userbusinesslicense.UserBusinessLicenseMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.USER_BUSINESS_LICENSE_NOT_EXISTS;
+
+/**
+ * 营业执照信息 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class UserBusinessLicenseServiceImpl implements UserBusinessLicenseService {
+    
+    @Resource
+    private UserBusinessLicenseMapper userBusinessLicenseMapper;
+    
+    @Override
+    public Long createUserBusinessLicense(UserBusinessLicenseSaveReqVO createReqVO) {
+        // 插入
+        UserBusinessLicenseDO userBusinessLicense = BeanUtils.toBean(createReqVO, UserBusinessLicenseDO.class);
+        userBusinessLicenseMapper.insert(userBusinessLicense);
+        // 返回
+        return userBusinessLicense.getId();
+    }
+    
+    @Override
+    public void updateUserBusinessLicense(UserBusinessLicenseSaveReqVO updateReqVO) {
+        // 校验存在
+        validateUserBusinessLicenseExists(updateReqVO.getId());
+        // 更新
+        UserBusinessLicenseDO updateObj = BeanUtils.toBean(updateReqVO, UserBusinessLicenseDO.class);
+        userBusinessLicenseMapper.updateById(updateObj);
+    }
+    
+    @Override
+    public void deleteUserBusinessLicense(Long id) {
+        // 校验存在
+        validateUserBusinessLicenseExists(id);
+        // 删除
+        userBusinessLicenseMapper.deleteById(id);
+    }
+    
+    private void validateUserBusinessLicenseExists(Long id) {
+        if (userBusinessLicenseMapper.selectById(id) == null) {
+            throw exception(USER_BUSINESS_LICENSE_NOT_EXISTS);
+        }
+    }
+    
+    @Override
+    public UserBusinessLicenseDO getUserBusinessLicense(Long id) {
+        return userBusinessLicenseMapper.selectById(id);
+    }
+    
+    @Override
+    public PageResult<UserBusinessLicenseDO> getUserBusinessLicensePage(UserBusinessLicensePageReqVO pageReqVO) {
+        return userBusinessLicenseMapper.selectPage(pageReqVO);
+    }
+    
+}

+ 54 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/useridcard/UserIdcardService.java

@@ -0,0 +1,54 @@
+package cn.iocoder.yudao.module.member.service.useridcard;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.member.controller.admin.useridcard.vo.UserIdcardPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.useridcard.vo.UserIdcardSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.useridcard.UserIdcardDO;
+import jakarta.validation.Valid;
+
+/**
+ * 身份证信息 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface UserIdcardService {
+    
+    /**
+     * 创建身份证信息
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createUserIdcard(@Valid UserIdcardSaveReqVO createReqVO);
+    
+    /**
+     * 更新身份证信息
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateUserIdcard(@Valid UserIdcardSaveReqVO updateReqVO);
+    
+    /**
+     * 删除身份证信息
+     *
+     * @param id 编号
+     */
+    void deleteUserIdcard(Long id);
+    
+    /**
+     * 获得身份证信息
+     *
+     * @param id 编号
+     * @return 身份证信息
+     */
+    UserIdcardDO getUserIdcard(Long id);
+    
+    /**
+     * 获得身份证信息分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 身份证信息分页
+     */
+    PageResult<UserIdcardDO> getUserIdcardPage(UserIdcardPageReqVO pageReqVO);
+    
+}

+ 70 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/useridcard/UserIdcardServiceImpl.java

@@ -0,0 +1,70 @@
+package cn.iocoder.yudao.module.member.service.useridcard;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.member.controller.admin.useridcard.vo.UserIdcardPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.useridcard.vo.UserIdcardSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.useridcard.UserIdcardDO;
+import cn.iocoder.yudao.module.member.dal.mysql.useridcard.UserIdcardMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.USER_IDCARD_NOT_EXISTS;
+
+/**
+ * 身份证信息 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class UserIdcardServiceImpl implements UserIdcardService {
+    
+    @Resource
+    private UserIdcardMapper userIdcardMapper;
+    
+    @Override
+    public Long createUserIdcard(UserIdcardSaveReqVO createReqVO) {
+        // 插入
+        UserIdcardDO userIdcard = BeanUtils.toBean(createReqVO, UserIdcardDO.class);
+        userIdcardMapper.insert(userIdcard);
+        // 返回
+        return userIdcard.getId();
+    }
+    
+    @Override
+    public void updateUserIdcard(UserIdcardSaveReqVO updateReqVO) {
+        // 校验存在
+        validateUserIdcardExists(updateReqVO.getId());
+        // 更新
+        UserIdcardDO updateObj = BeanUtils.toBean(updateReqVO, UserIdcardDO.class);
+        userIdcardMapper.updateById(updateObj);
+    }
+    
+    @Override
+    public void deleteUserIdcard(Long id) {
+        // 校验存在
+        validateUserIdcardExists(id);
+        // 删除
+        userIdcardMapper.deleteById(id);
+    }
+    
+    private void validateUserIdcardExists(Long id) {
+        if (userIdcardMapper.selectById(id) == null) {
+            throw exception(USER_IDCARD_NOT_EXISTS);
+        }
+    }
+    
+    @Override
+    public UserIdcardDO getUserIdcard(Long id) {
+        return userIdcardMapper.selectById(id);
+    }
+    
+    @Override
+    public PageResult<UserIdcardDO> getUserIdcardPage(UserIdcardPageReqVO pageReqVO) {
+        return userIdcardMapper.selectPage(pageReqVO);
+    }
+    
+}

+ 54 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userinformation/UserInformationService.java

@@ -0,0 +1,54 @@
+package cn.iocoder.yudao.module.member.service.userinformation;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.member.controller.admin.userinformation.vo.UserInformationPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userinformation.vo.UserInformationSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userinformation.UserInformationDO;
+import jakarta.validation.Valid;
+
+/**
+ * 用户信息 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface UserInformationService {
+    
+    /**
+     * 创建用户信息
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createUserInformation(@Valid UserInformationSaveReqVO createReqVO);
+    
+    /**
+     * 更新用户信息
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateUserInformation(@Valid UserInformationSaveReqVO updateReqVO);
+    
+    /**
+     * 删除用户信息
+     *
+     * @param id 编号
+     */
+    void deleteUserInformation(Long id);
+    
+    /**
+     * 获得用户信息
+     *
+     * @param id 编号
+     * @return 用户信息
+     */
+    UserInformationDO getUserInformation(Long id);
+    
+    /**
+     * 获得用户信息分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 用户信息分页
+     */
+    PageResult<UserInformationDO> getUserInformationPage(UserInformationPageReqVO pageReqVO);
+    
+}

+ 70 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userinformation/UserInformationServiceImpl.java

@@ -0,0 +1,70 @@
+package cn.iocoder.yudao.module.member.service.userinformation;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.member.controller.admin.userinformation.vo.UserInformationPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userinformation.vo.UserInformationSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userinformation.UserInformationDO;
+import cn.iocoder.yudao.module.member.dal.mysql.userinformation.UserInformationMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.USER_INFORMATION_NOT_EXISTS;
+
+/**
+ * 用户信息 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class UserInformationServiceImpl implements UserInformationService {
+    
+    @Resource
+    private UserInformationMapper userInformationMapper;
+    
+    @Override
+    public Long createUserInformation(UserInformationSaveReqVO createReqVO) {
+        // 插入
+        UserInformationDO userInformation = BeanUtils.toBean(createReqVO, UserInformationDO.class);
+        userInformationMapper.insert(userInformation);
+        // 返回
+        return userInformation.getId();
+    }
+    
+    @Override
+    public void updateUserInformation(UserInformationSaveReqVO updateReqVO) {
+        // 校验存在
+        validateUserInformationExists(updateReqVO.getId());
+        // 更新
+        UserInformationDO updateObj = BeanUtils.toBean(updateReqVO, UserInformationDO.class);
+        userInformationMapper.updateById(updateObj);
+    }
+    
+    @Override
+    public void deleteUserInformation(Long id) {
+        // 校验存在
+        validateUserInformationExists(id);
+        // 删除
+        userInformationMapper.deleteById(id);
+    }
+    
+    private void validateUserInformationExists(Long id) {
+        if (userInformationMapper.selectById(id) == null) {
+            throw exception(USER_INFORMATION_NOT_EXISTS);
+        }
+    }
+    
+    @Override
+    public UserInformationDO getUserInformation(Long id) {
+        return userInformationMapper.selectById(id);
+    }
+    
+    @Override
+    public PageResult<UserInformationDO> getUserInformationPage(UserInformationPageReqVO pageReqVO) {
+        return userInformationMapper.selectPage(pageReqVO);
+    }
+    
+}

+ 54 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpersonalcredit/UserPersonalCreditService.java

@@ -0,0 +1,54 @@
+package cn.iocoder.yudao.module.member.service.userpersonalcredit;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo.UserPersonalCreditPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo.UserPersonalCreditSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userpersonalcredit.UserPersonalCreditDO;
+import jakarta.validation.Valid;
+
+/**
+ * 个人信用报告 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface UserPersonalCreditService {
+    
+    /**
+     * 创建个人信用报告
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createUserPersonalCredit(@Valid UserPersonalCreditSaveReqVO createReqVO);
+    
+    /**
+     * 更新个人信用报告
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateUserPersonalCredit(@Valid UserPersonalCreditSaveReqVO updateReqVO);
+    
+    /**
+     * 删除个人信用报告
+     *
+     * @param id 编号
+     */
+    void deleteUserPersonalCredit(Long id);
+    
+    /**
+     * 获得个人信用报告
+     *
+     * @param id 编号
+     * @return 个人信用报告
+     */
+    UserPersonalCreditDO getUserPersonalCredit(Long id);
+    
+    /**
+     * 获得个人信用报告分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 个人信用报告分页
+     */
+    PageResult<UserPersonalCreditDO> getUserPersonalCreditPage(UserPersonalCreditPageReqVO pageReqVO);
+    
+}

+ 70 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/userpersonalcredit/UserPersonalCreditServiceImpl.java

@@ -0,0 +1,70 @@
+package cn.iocoder.yudao.module.member.service.userpersonalcredit;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo.UserPersonalCreditPageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.userpersonalcredit.vo.UserPersonalCreditSaveReqVO;
+import cn.iocoder.yudao.module.member.dal.dataobject.userpersonalcredit.UserPersonalCreditDO;
+import cn.iocoder.yudao.module.member.dal.mysql.userpersonalcredit.UserPersonalCreditMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.USER_PERSONAL_CREDIT_NOT_EXISTS;
+
+/**
+ * 个人信用报告 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class UserPersonalCreditServiceImpl implements UserPersonalCreditService {
+    
+    @Resource
+    private UserPersonalCreditMapper userPersonalCreditMapper;
+    
+    @Override
+    public Long createUserPersonalCredit(UserPersonalCreditSaveReqVO createReqVO) {
+        // 插入
+        UserPersonalCreditDO userPersonalCredit = BeanUtils.toBean(createReqVO, UserPersonalCreditDO.class);
+        userPersonalCreditMapper.insert(userPersonalCredit);
+        // 返回
+        return userPersonalCredit.getId();
+    }
+    
+    @Override
+    public void updateUserPersonalCredit(UserPersonalCreditSaveReqVO updateReqVO) {
+        // 校验存在
+        validateUserPersonalCreditExists(updateReqVO.getId());
+        // 更新
+        UserPersonalCreditDO updateObj = BeanUtils.toBean(updateReqVO, UserPersonalCreditDO.class);
+        userPersonalCreditMapper.updateById(updateObj);
+    }
+    
+    @Override
+    public void deleteUserPersonalCredit(Long id) {
+        // 校验存在
+        validateUserPersonalCreditExists(id);
+        // 删除
+        userPersonalCreditMapper.deleteById(id);
+    }
+    
+    private void validateUserPersonalCreditExists(Long id) {
+        if (userPersonalCreditMapper.selectById(id) == null) {
+            throw exception(USER_PERSONAL_CREDIT_NOT_EXISTS);
+        }
+    }
+    
+    @Override
+    public UserPersonalCreditDO getUserPersonalCredit(Long id) {
+        return userPersonalCreditMapper.selectById(id);
+    }
+    
+    @Override
+    public PageResult<UserPersonalCreditDO> getUserPersonalCreditPage(UserPersonalCreditPageReqVO pageReqVO) {
+        return userPersonalCreditMapper.selectPage(pageReqVO);
+    }
+    
+}

+ 12 - 0
yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/userbusinesslicense/UserBusinessLicenseMapper.xml

@@ -0,0 +1,12 @@
+<?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="cn.iocoder.yudao.module.member.dal.mysql.userbusinesslicense.UserBusinessLicenseMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/useridcard/UserIdcardMapper.xml

@@ -0,0 +1,12 @@
+<?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="cn.iocoder.yudao.module.member.dal.mysql.useridcard.UserIdcardMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/userinformation/UserInformationMapper.xml

@@ -0,0 +1,12 @@
+<?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="cn.iocoder.yudao.module.member.dal.mysql.userinformation.UserInformationMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/userpersonalcredit/UserPersonalCreditMapper.xml

@@ -0,0 +1,12 @@
+<?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="cn.iocoder.yudao.module.member.dal.mysql.userpersonalcredit.UserPersonalCreditMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>