c0a0ae29 by xu

可信空间修改

1 parent fcb36ea3
Showing 33 changed files with 1575 additions and 0 deletions
1 package com.csbr.qingcloud.portal.controller;
2
3 import com.alibaba.fastjson.JSONObject;
4 import com.alibaba.fastjson2.JSON;
5 import com.csbr.cloud.common.response.CommonRes;
6 import com.csbr.qingcloud.portal.domain.vo.TdsUserIdentityRQVO;
7 import com.csbr.qingcloud.portal.enums.TdsDataTypeEnum;
8 import com.csbr.qingcloud.portal.service.TdsSyncToRegionalNodeCallback;
9 import com.csbr.qingcloud.portal.service.TdsUserIdentityService;
10 import csbr.cloud.entity.annotation.SystemLog;
11 import io.swagger.v3.oas.annotations.Operation;
12 import io.swagger.v3.oas.annotations.tags.Tag;
13 import jakarta.annotation.Resource;
14 import jakarta.validation.Valid;
15 import org.springframework.web.bind.annotation.*;
16
17 /**
18 * @program:
19 * @description: 可信空间数据同步控制器
20 * @author: xup
21 * @create: 2025-08-14 13:21
22 **/
23 @RestController
24 @RequestMapping("/tds-sync")
25 @Tag(name = "可信空间数据同步控制器")
26 public class TdsSyncController {
27
28 @Resource
29 private TdsUserIdentityService tdsUserIdentityService;
30
31 @PostMapping("/biz-sync-regional")
32 @SystemLog(value = "业务节点同步到区域节点")
33 @Operation(summary = "业务节点同步到区域节点",hidden = true)
34 public CommonRes<Boolean> bizSyncRegional(@RequestBody JSONObject data, @RequestParam String zqName,
35 @RequestParam TdsDataTypeEnum dataType) {
36 switch (dataType){
37 case USER ->{
38 tdsUserIdentityService.saveTdsUserIdentity(JSON.parseObject(data.toJSONString(),TdsUserIdentityRQVO.class));
39 break;
40 }
41 }
42 return CommonRes.success(true);
43 }
44
45 @PostMapping("/regional-sync-biz")
46 @SystemLog(value = "区域节点同步审批信息")
47 @Operation(summary = "区域节点同步审批信息",hidden = true)
48 public CommonRes<Boolean> regionalSyncBiz(@RequestParam String bizGuid,
49 @RequestParam Integer identityStatus,
50 @RequestParam String message,
51 @RequestParam TdsDataTypeEnum dataType) {
52 switch (dataType){
53 case USER ->{
54 tdsUserIdentityService.updateTdsUserIdentityStatus(bizGuid,identityStatus,message);
55 break;
56 }
57 }
58 return CommonRes.success(true);
59 }
60 }
1 package com.csbr.qingcloud.portal.controller;
2
3 import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
4 import com.csbr.cloud.common.response.CommonRes;
5 import com.csbr.qingcloud.portal.enums.TdsDataTypeEnum;
6 import com.csbr.qingcloud.portal.service.impl.TdsSyncToRegionalNodeService;
7 import csbr.cloud.entity.annotation.SystemLog;
8 import csbr.cloud.entity.domain.base.vo.PageListVO;
9 import com.csbr.qingcloud.portal.domain.vo.TdsUserIdentityQueryVO;
10 import com.csbr.qingcloud.portal.domain.vo.TdsUserIdentityRQVO;
11 import com.csbr.qingcloud.portal.domain.vo.TdsUserIdentityRSVO;
12 import com.csbr.qingcloud.portal.service.TdsUserIdentityService;
13 import io.swagger.v3.oas.annotations.Operation;
14 import io.swagger.v3.oas.annotations.Parameter;
15 import io.swagger.v3.oas.annotations.tags.Tag;
16 import jakarta.annotation.Resource;
17 import jakarta.validation.Valid;
18 import org.springframework.web.bind.annotation.*;
19
20 import java.util.List;
21
22 /**
23 * @program:
24 * @description: 个人用户身份信息-控制器
25 * @author: xup
26 * @create: 2025-08-14 13:21
27 **/
28 @RestController
29 @RequestMapping("/tds-user-identity")
30 @Tag(name = "个人用户身份信息-控制器")
31 public class TdsUserIdentityController {
32
33 @Resource
34 private TdsUserIdentityService tdsUserIdentityService;
35
36 @Resource
37 private TdsSyncToRegionalNodeService<TdsUserIdentityRQVO> tdsSyncToRegionalNodeService;
38
39 //region 基本操作
40
41 @PostMapping("/save")
42 @SystemLog(value = "个人用户身份信息-新增")
43 @Operation(summary = "个人用户身份信息-新增")
44 public CommonRes<Boolean> saveTdsUserIdentity(@RequestBody @Valid TdsUserIdentityRQVO vo) {
45 tdsUserIdentityService.saveTdsUserIdentity(vo);
46 //数据同步到区域/业务节点
47 tdsSyncToRegionalNodeService.syncToRegionalNode(TdsDataTypeEnum.USER,vo,tdsUserIdentityService);
48 return CommonRes.success(true);
49 }
50
51 @PutMapping("/update")
52 @SystemLog(value = "个人用户身份信息-修改")
53 @Operation(summary = "个人用户身份信息-修改")
54 public CommonRes<Boolean> updateTdsUserIdentity(@RequestBody @Valid TdsUserIdentityRQVO vo) {
55 tdsUserIdentityService.updateTdsUserIdentity(vo);
56 return CommonRes.success(true);
57 }
58
59 @DeleteMapping("/delete")
60 @SystemLog(value = "个人用户身份信息-批量删除")
61 @Operation(summary = "个人用户身份信息-批量删除")
62 public CommonRes<Boolean> removeByGuids(@RequestBody List<String> guids) {
63 tdsUserIdentityService.removeByGuids(guids);
64 return CommonRes.success(true);
65 }
66
67 @PostMapping("/page-list")
68 @SystemLog(value = "个人用户身份信息-分页")
69 @Operation(summary = "个人用户身份信息-分页")
70 public CommonRes<PageListVO<TdsUserIdentityRSVO>> pageList(@RequestBody @Valid TdsUserIdentityQueryVO queryVO) {
71 PageListVO<TdsUserIdentityRSVO> pageVO = tdsUserIdentityService.pageList(queryVO);
72 return CommonRes.success(pageVO);
73 }
74
75 @GetMapping("/detail")
76 @SystemLog(value = "个人用户身份信息-详情")
77 @Operation(
78 summary = "个人用户身份信息-详情",
79 parameters = {
80 @Parameter(name = "guid", description = "个人用户身份信息唯一标识", required = true)}
81 )
82 public CommonRes<TdsUserIdentityRSVO> getTdsUserIdentityDetail(@RequestParam String guid) {
83 TdsUserIdentityRSVO vo = tdsUserIdentityService.getTdsUserIdentityDetail(guid);
84 return CommonRes.success(vo);
85 }
86
87 //endregion
88
89 }
1 package com.csbr.qingcloud.portal.domain.vo;
2
3 import csbr.cloud.entity.domain.base.dto.BasePageDTO;
4 import io.swagger.v3.oas.annotations.media.Schema;
5 import lombok.EqualsAndHashCode;
6 import lombok.Data;
7 import java.util.Date;
8
9 /**
10 * @program:
11 * @description: 个人用户附加信息查询参数
12 * @author: xup
13 * @create: 2025-08-14 13:21
14 **/
15 @EqualsAndHashCode(callSuper = true)
16 @Data
17 @Schema(title = "个人用户附加信息查询参数")
18 public class TdsUserAdditionalQueryVO extends BasePageDTO {
19
20 }
1 package com.csbr.qingcloud.portal.domain.vo;
2
3 import io.swagger.v3.oas.annotations.media.Schema;
4 import com.fasterxml.jackson.annotation.JsonFormat;
5 import jakarta.validation.constraints.Size;
6 import lombok.Data;
7 import java.util.Date;
8
9 /**
10 * @program:
11 * @description: 个人用户附加信息新增、修改参数
12 * @author: xup
13 * @create: 2025-08-14 13:21
14 **/
15 @Data
16 @Schema(title = "个人用户附加信息新增、修改参数")
17 public class TdsUserAdditionalRQVO {
18
19 /**
20 * 系统唯一标识
21 */
22 @Schema(description = "系统唯一标识")
23 private String guid;
24
25 /**
26 * 用户Guid
27 */
28 @Schema(description = "用户Guid")
29 private String userGuid;
30
31 /**
32 * 国籍(来之数据字典国籍)
33 */
34 @Schema(description = "国籍(来之数据字典国籍)")
35 @Size(max = 20, message = "国籍长度超过20")
36 private String nationalityCode;
37
38 /**
39 * 性别
40 */
41 @Schema(description = "性别")
42 @Size(max = 10, message = "性别长度超过10")
43 private String sex;
44
45 /**
46 * 出生年月
47 */
48 @Schema(description = "出生年月")
49 @Size(max = 7, message = "出生年月长度超过7")
50 private String birthdayMonth;
51
52 /**
53 * 社保卡卡号
54 */
55 @Schema(description = "社保卡卡号")
56 @Size(max = 20, message = "社保卡卡号长度超过20")
57 private String socialSecurityCard;
58
59 /**
60 * 社保卡发放地
61 */
62 @Schema(description = "社保卡发放地")
63 @Size(max = 50, message = "社保卡发放地长度超过50")
64 private String socialSecurityIssuance;
65
66 /**
67 * 支付宝账号
68 */
69 @Schema(description = "支付宝账号")
70 @Size(max = 20, message = "支付宝账号长度超过20")
71 private String alipayAccount;
72
73 /**
74 * 微信账号
75 */
76 @Schema(description = "微信账号")
77 @Size(max = 20, message = "微信账号长度超过20")
78 private String wechatAccount;
79
80 /**
81 * 邮箱
82 */
83 @Schema(description = "邮箱")
84 @Size(max = 20, message = "邮箱长度超过20")
85 private String email;
86
87 /**
88 * 联系地址
89 */
90 @Schema(description = "联系地址")
91 @Size(max = 100, message = "联系地址长度超过100")
92 private String contactAddress;
93
94 /**
95 * 其他
96 */
97 @Schema(description = "其他")
98 @Size(max = 100, message = "其他长度超过100")
99 private String other;
100
101 /******** 库表存储属性 需处理 *****/
102
103 /******** 自定义扩展 *****/
104
105 /******** 子对象 *****/
106
107 }
1 package com.csbr.qingcloud.portal.domain.vo;
2
3 import io.swagger.v3.oas.annotations.media.Schema;
4 import com.fasterxml.jackson.annotation.JsonFormat;
5 import lombok.Data;
6 import java.util.Date;
7
8 /**
9 * @program:
10 * @description: 个人用户附加信息返回参数
11 * @author: xup
12 * @create: 2025-08-14 13:21
13 **/
14 @Data
15 @Schema(title = "个人用户附加信息返回参数")
16 public class TdsUserAdditionalRSVO {
17
18 /**
19 * 系统唯一标识
20 */
21 @Schema(description = "系统唯一标识")
22 private String guid;
23
24 /**
25 * 会员Guid
26 */
27 @Schema(description = "会员Guid")
28 private String tenantGuid;
29
30 /**
31 * 用户Guid
32 */
33 @Schema(description = "用户Guid")
34 private String userGuid;
35
36 /**
37 * 国籍(来之数据字典国籍)
38 */
39 @Schema(description = "国籍(来之数据字典国籍)")
40 private String nationalityCode;
41
42 /**
43 * 性别
44 */
45 @Schema(description = "性别")
46 private String sex;
47
48 /**
49 * 出生年月
50 */
51 @Schema(description = "出生年月")
52 private String birthdayMonth;
53
54 /**
55 * 社保卡卡号
56 */
57 @Schema(description = "社保卡卡号")
58 private String socialSecurityCard;
59
60 /**
61 * 社保卡发放地
62 */
63 @Schema(description = "社保卡发放地")
64 private String socialSecurityIssuance;
65
66 /**
67 * 支付宝账号
68 */
69 @Schema(description = "支付宝账号")
70 private String alipayAccount;
71
72 /**
73 * 微信账号
74 */
75 @Schema(description = "微信账号")
76 private String wechatAccount;
77
78 /**
79 * 邮箱
80 */
81 @Schema(description = "邮箱")
82 private String email;
83
84 /**
85 * 联系地址
86 */
87 @Schema(description = "联系地址")
88 private String contactAddress;
89
90 /**
91 * 其他
92 */
93 @Schema(description = "其他")
94 private String other;
95
96 /******** 库表存储属性 需处理 *****/
97
98 /******** 自定义扩展 *****/
99
100 /******** 子对象 *****/
101
102 }
1 package com.csbr.qingcloud.portal.domain.vo;
2
3 import csbr.cloud.entity.domain.base.dto.BasePageDTO;
4 import io.swagger.v3.oas.annotations.media.Schema;
5 import lombok.EqualsAndHashCode;
6 import lombok.Data;
7 import java.util.Date;
8
9 /**
10 * @program:
11 * @description: 个人用户身份信息查询参数
12 * @author: xup
13 * @create: 2025-08-14 13:21
14 **/
15 @EqualsAndHashCode(callSuper = true)
16 @Data
17 @Schema(title = "个人用户身份信息查询参数")
18 public class TdsUserIdentityQueryVO extends BasePageDTO {
19
20 }
1 package com.csbr.qingcloud.portal.domain.vo;
2
3 import io.swagger.v3.oas.annotations.media.Schema;
4 import com.fasterxml.jackson.annotation.JsonFormat;
5 import jakarta.validation.constraints.NotBlank;
6 import jakarta.validation.constraints.NotNull;
7 import jakarta.validation.constraints.Size;
8 import lombok.Data;
9 import java.util.Date;
10
11 /**
12 * @program:
13 * @description: 个人用户身份信息新增、修改参数
14 * @author: xup
15 * @create: 2025-08-14 13:21
16 **/
17 @Data
18 @Schema(title = "个人用户身份信息新增、修改参数")
19 public class TdsUserIdentityRQVO {
20
21 /**
22 * 系统唯一标识
23 */
24 @Schema(description = "系统唯一标识")
25 private String guid;
26
27 /**
28 * 姓名
29 */
30 @Schema(description = "姓名")
31 @Size(max = 50, message = "姓名长度超过50")
32 @NotBlank(message = "姓名为空。")
33 private String name;
34
35 /**
36 * 证件类型(来之数据字典证件类型)
37 */
38 @Schema(description = "证件类型(来之数据字典证件类型)")
39 @Size(max = 20, message = "证件类型长度超过20")
40 @NotBlank(message = "证件类型为空。")
41 private String idTypeCode;
42
43 /**
44 * 证件号码
45 */
46 @Schema(description = "证件号码")
47 @Size(max = 50, message = "证件号码长度超过50")
48 @NotBlank(message = "证件号码为空。")
49 private String idNumber;
50
51 /**
52 * 证件号码有效起始日期
53 */
54 @Schema(description = "证件号码有效起始日期")
55 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
56 @NotNull(message = "证件号码有效起始日期为空。")
57 private Date idNumberStartTime;
58
59 /**
60 * 证件号码有效截止日期
61 */
62 @Schema(description = "证件号码有效截止日期")
63 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
64 @NotNull(message = "证件号码有效截止日期为空。")
65 private Date idNumberEndTime;
66
67 /**
68 * 手机号
69 */
70 @Schema(description = "手机号")
71 @Size(max = 11, message = "手机号长度超过11")
72 @NotBlank(message = "手机号为空。")
73 private String mobile;
74
75 /**
76 * 个人实名认证等级(0 未实名;1 身份证实名核验或社保卡实名核验;2 在实名核验基础上增加人脸识别或其他生物特征核验)
77 */
78 @Schema(description = "个人实名认证等级(0 未实名;1 身份证实名核验或社保卡实名核验;2 在实名核验基础上增加人脸识别或其他生物特征核验)")
79 private Integer authenticationLevel;
80
81 /**
82 * 个人实名认证方式(1 公安部、人社部实名服务;2 国家政务服务平台实名服务;3 微信、支付宝、通讯运营商等第三方平台)
83 */
84 @Schema(description = "个人实名认证方式(1 公安部、人社部实名服务;2 国家政务服务平台实名服务;3 微信、支付宝、通讯运营商等第三方平台)")
85 private Integer authenticationMethod;
86
87 /**
88 * 实名认证时间
89 */
90 @Schema(description = "实名认证时间")
91 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
92 private Date authenticationTime;
93
94 /**
95 * 身份状态(0 不可用 ;1 可用)
96 */
97 @Schema(description = "身份状态(0 不可用 ;1 可用)")
98 private Integer identityStatus =0;
99
100 /******** 库表存储属性 需处理 *****/
101
102 /******** 自定义扩展 *****/
103
104 /******** 子对象 *****/
105 /**
106 * 个人用户附加信息
107 */
108 @Schema(description = "个人用户附加信息")
109 private TdsUserAdditionalRQVO tdsUserAdditional;
110
111 /**
112 * 个人用户可验信息
113 */
114 @Schema(description = "个人用户可验信息")
115 private TdsUserVerifiableRQVO tdsUserVerifiable;
116 }
1 package com.csbr.qingcloud.portal.domain.vo;
2
3 import com.fasterxml.jackson.annotation.JsonFormat;
4 import io.swagger.v3.oas.annotations.media.Schema;
5 import lombok.Data;
6
7 import java.util.Date;
8
9 /**
10 * @program:
11 * @description: 个人用户身份信息返回参数
12 * @author: xup
13 * @create: 2025-08-14 13:21
14 **/
15 @Data
16 @Schema(title = "个人用户身份信息返回参数")
17 public class TdsUserIdentityRSVO {
18
19 /**
20 * 系统唯一标识
21 */
22 @Schema(description = "系统唯一标识")
23 private String guid;
24
25 /**
26 * 姓名
27 */
28 @Schema(description = "姓名")
29 private String name;
30
31 /**
32 * 用户身份标识(由区域/行业功能节点生成,唯一标识用户身份)
33 */
34 @Schema(description = "用户身份标识(由区域/行业功能节点生成,唯一标识用户身份)")
35 private String userIdentity;
36
37 /**
38 * 证件类型(来之数据字典证件类型)
39 */
40 @Schema(description = "证件类型(来之数据字典证件类型)")
41 private String idTypeCode;
42
43 /**
44 * 证件号码
45 */
46 @Schema(description = "证件号码")
47 private String idNumber;
48
49 /**
50 * 证件号码有效起始日期
51 */
52 @Schema(description = "证件号码有效起始日期")
53 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
54 private Date idNumberStartTime;
55
56 /**
57 * 证件号码有效截止日期
58 */
59 @Schema(description = "证件号码有效截止日期")
60 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
61 private Date idNumberEndTime;
62
63 /**
64 * 手机号
65 */
66 @Schema(description = "手机号")
67 private String mobile;
68
69 /**
70 * 个人实名认证等级(0 未实名;1 身份证实名核验或社保卡实名核验;2 在实名核验基础上增加人脸识别或其他生物特征核验)
71 */
72 @Schema(description = "个人实名认证等级(0 未实名;1 身份证实名核验或社保卡实名核验;2 在实名核验基础上增加人脸识别或其他生物特征核验)")
73 private Integer authenticationLevel;
74
75 /**
76 * 个人实名认证方式(1 公安部、人社部实名服务;2 国家政务服务平台实名服务;3 微信、支付宝、通讯运营商等第三方平台)
77 */
78 @Schema(description = "个人实名认证方式(1 公安部、人社部实名服务;2 国家政务服务平台实名服务;3 微信、支付宝、通讯运营商等第三方平台)")
79 private Integer authenticationMethod;
80
81 /**
82 * 实名认证时间
83 */
84 @Schema(description = "实名认证时间")
85 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
86 private Date authenticationTime;
87
88 /**
89 * 身份状态(0 不可用 ;1 可用)
90 */
91 @Schema(description = "身份状态(0 不可用 ;1 可用)")
92 private Integer identityStatus;
93
94 /******** 库表存储属性 需处理 *****/
95
96 /******** 自定义扩展 *****/
97
98 /******** 子对象 *****/
99 /**
100 * 个人用户附加信息
101 */
102 @Schema(description = "个人用户附加信息")
103 private TdsUserAdditionalRSVO tdsUserAdditional;
104
105 /**
106 * 个人用户可验信息
107 */
108 @Schema(description = "个人用户可验信息")
109 private TdsUserVerifiableRSVO tdsUserVerifiable;
110
111 }
1 package com.csbr.qingcloud.portal.domain.vo;
2
3 import csbr.cloud.entity.domain.base.dto.BasePageDTO;
4 import io.swagger.v3.oas.annotations.media.Schema;
5 import lombok.EqualsAndHashCode;
6 import lombok.Data;
7 import java.util.Date;
8
9 /**
10 * @program:
11 * @description: 个人用户可验信息查询参数
12 * @author: xup
13 * @create: 2025-08-14 13:21
14 **/
15 @EqualsAndHashCode(callSuper = true)
16 @Data
17 @Schema(title = "个人用户可验信息查询参数")
18 public class TdsUserVerifiableQueryVO extends BasePageDTO {
19
20 }
1 package com.csbr.qingcloud.portal.domain.vo;
2
3 import com.alibaba.fastjson.JSONObject;
4 import io.swagger.v3.oas.annotations.media.Schema;
5 import com.fasterxml.jackson.annotation.JsonFormat;
6 import jakarta.validation.constraints.Size;
7 import lombok.Data;
8 import java.util.Date;
9 import java.util.Map;
10
11 /**
12 * @program:
13 * @description: 个人用户可验信息新增、修改参数
14 * @author: xup
15 * @create: 2025-08-14 13:21
16 **/
17 @Data
18 @Schema(title = "个人用户可验信息新增、修改参数")
19 public class TdsUserVerifiableRQVO {
20
21 /**
22 * 系统唯一标识
23 */
24 @Schema(description = "系统唯一标识")
25 private String guid;
26
27 /**
28 * 用户Guid
29 */
30 @Schema(description = "用户Guid")
31 private String userGuid;
32
33 /**
34 * 学历/学位证书
35 */
36 @Schema(description = "学历/学位证书")
37 private Map<String,Object> bachelorDegreeCertificate;
38
39 /**
40 * 职业资格证书
41 */
42 @Schema(description = "职业资格证书")
43 private Map<String,Object> professionalCertificate;
44
45 /**
46 * 信用报告摘要
47 */
48 @Schema(description = "信用报告摘要")
49 private Map<String,Object> creditReportSummary;
50
51 /**
52 * 数字作品/知识产权登记
53 */
54 @Schema(description = "数字作品/知识产权登记")
55 private Map<String,Object> intellectualPropertyRegistration;
56
57 /**
58 * 授权委托书
59 */
60 @Schema(description = "授权委托书")
61 private Map<String,Object> powerOfAttorney;
62
63 /**
64 * 其他第三方认证信息
65 */
66 @Schema(description = "其他第三方认证信息")
67 private Map<String,Object> thirdPartyCertification;
68
69 /******** 库表存储属性 需处理 *****/
70
71 /******** 自定义扩展 *****/
72
73 /******** 子对象 *****/
74
75 }
1 package com.csbr.qingcloud.portal.domain.vo;
2
3 import io.swagger.v3.oas.annotations.media.Schema;
4 import com.fasterxml.jackson.annotation.JsonFormat;
5 import lombok.Data;
6 import java.util.Date;
7 import java.util.Map;
8
9 /**
10 * @program:
11 * @description: 个人用户可验信息返回参数
12 * @author: xup
13 * @create: 2025-08-14 13:21
14 **/
15 @Data
16 @Schema(title = "个人用户可验信息返回参数")
17 public class TdsUserVerifiableRSVO {
18
19 /**
20 * 系统唯一标识
21 */
22 @Schema(description = "系统唯一标识")
23 private String guid;
24
25 /**
26 * 用户Guid
27 */
28 @Schema(description = "用户Guid")
29 private String userGuid;
30
31 /**
32 * 学历/学位证书
33 */
34 @Schema(description = "学历/学位证书")
35 private Map<String,Object> bachelorDegreeCertificate;
36
37 /**
38 * 职业资格证书
39 */
40 @Schema(description = "职业资格证书")
41 private Map<String,Object> professionalCertificate;
42
43 /**
44 * 信用报告摘要
45 */
46 @Schema(description = "信用报告摘要")
47 private Map<String,Object> creditReportSummary;
48
49 /**
50 * 数字作品/知识产权登记
51 */
52 @Schema(description = "数字作品/知识产权登记")
53 private Map<String,Object> intellectualPropertyRegistration;
54
55 /**
56 * 授权委托书
57 */
58 @Schema(description = "授权委托书")
59 private Map<String,Object> powerOfAttorney;
60
61 /**
62 * 其他第三方认证信息
63 */
64 @Schema(description = "其他第三方认证信息")
65 private Map<String,Object> thirdPartyCertification;
66
67 /******** 库表存储属性 需处理 *****/
68
69 /******** 自定义扩展 *****/
70
71 /******** 子对象 *****/
72
73 }
1 package com.csbr.qingcloud.portal.enums;
2
3 /**
4 * 可信空间数据类型
5 */
6 public enum TdsDataTypeEnum {
7 //个人用户
8 USER,
9 //法人
10 ENTERPRISE,
11 //经办人
12 OPERATOR;
13 }
1 package com.csbr.qingcloud.portal.mybatis.entity;
2
3 import com.baomidou.mybatisplus.annotation.FieldStrategy;
4 import com.baomidou.mybatisplus.annotation.TableField;
5 import csbr.cloud.entity.domain.base.dao.BaseDO;
6 import jdk.jfr.Name;
7 import lombok.Data;
8 import lombok.EqualsAndHashCode;
9 import lombok.experimental.Accessors;
10 import java.util.Date;
11
12 /**
13 * @program:
14 * @description: 个人用户附加信息实体
15 * @author: xup
16 * @create: 2025-08-14 13:21
17 **/
18 @Data
19 @EqualsAndHashCode(callSuper = true)
20 @Accessors(chain = true)
21 @Name("个人用户附加信息")
22 public class MfTdsUserAdditional extends BaseDO {
23
24 /**
25 * 会员Guid
26 */
27 @Name("会员Guid")
28 private String tenantGuid;
29
30 /**
31 * 用户Guid
32 */
33 @Name("用户Guid")
34 private String userGuid;
35
36 /**
37 * 国籍(来之数据字典国籍)
38 */
39 @Name("国籍(来之数据字典国籍)")
40 private String nationalityCode;
41
42 /**
43 * 性别
44 */
45 @Name("性别")
46 private String sex;
47
48 /**
49 * 出生年月
50 */
51 @Name("出生年月")
52 private String birthdayMonth;
53
54 /**
55 * 社保卡卡号
56 */
57 @Name("社保卡卡号")
58 private String socialSecurityCard;
59
60 /**
61 * 社保卡发放地
62 */
63 @Name("社保卡发放地")
64 private String socialSecurityIssuance;
65
66 /**
67 * 支付宝账号
68 */
69 @Name("支付宝账号")
70 private String alipayAccount;
71
72 /**
73 * 微信账号
74 */
75 @Name("微信账号")
76 private String wechatAccount;
77
78 /**
79 * 邮箱
80 */
81 @Name("邮箱")
82 private String email;
83
84 /**
85 * 联系地址
86 */
87 @Name("联系地址")
88 private String contactAddress;
89
90 /**
91 * 其他
92 */
93 @Name("其他")
94 private String other;
95
96 }
1 package com.csbr.qingcloud.portal.mybatis.entity;
2
3 import com.baomidou.mybatisplus.annotation.FieldStrategy;
4 import com.baomidou.mybatisplus.annotation.TableField;
5 import csbr.cloud.entity.domain.base.dao.BaseDO;
6 import jdk.jfr.Name;
7 import lombok.Data;
8 import lombok.EqualsAndHashCode;
9 import lombok.experimental.Accessors;
10 import java.util.Date;
11
12 /**
13 * @program:
14 * @description: 个人用户身份信息实体
15 * @author: xup
16 * @create: 2025-08-14 13:21
17 **/
18 @Data
19 @EqualsAndHashCode(callSuper = true)
20 @Accessors(chain = true)
21 @Name("个人用户身份信息")
22 public class MfTdsUserIdentity extends BaseDO {
23
24 /**
25 * 会员Guid
26 */
27 @Name("会员Guid")
28 private String tenantGuid;
29
30 /**
31 * 姓名
32 */
33 @Name("姓名")
34 private String name;
35
36 /**
37 * 用户身份标识(由区域/行业功能节点生成,唯一标识用户身份)
38 */
39 @Name("用户身份标识(由区域/行业功能节点生成,唯一标识用户身份)")
40 private String userIdentity;
41
42 /**
43 * 证件类型(来之数据字典证件类型)
44 */
45 @Name("证件类型(来之数据字典证件类型)")
46 private String idTypeCode;
47
48 /**
49 * 证件号码
50 */
51 @Name("证件号码")
52 private String idNumber;
53
54 /**
55 * 证件号码有效起始日期
56 */
57 @Name("证件号码有效起始日期")
58 private Date idNumberStartTime;
59
60 /**
61 * 证件号码有效截止日期
62 */
63 @Name("证件号码有效截止日期")
64 private Date idNumberEndTime;
65
66 /**
67 * 手机号
68 */
69 @Name("手机号")
70 private String mobile;
71
72 /**
73 * 个人实名认证等级(0 未实名;1 身份证实名核验或社保卡实名核验;2 在实名核验基础上增加人脸识别或其他生物特征核验)
74 */
75 @Name("个人实名认证等级(0 未实名;1 身份证实名核验或社保卡实名核验;2 在实名核验基础上增加人脸识别或其他生物特征核验)")
76 private Integer authenticationLevel;
77
78 /**
79 * 个人实名认证方式(1 公安部、人社部实名服务;2 国家政务服务平台实名服务;3 微信、支付宝、通讯运营商等第三方平台)
80 */
81 @Name("个人实名认证方式(1 公安部、人社部实名服务;2 国家政务服务平台实名服务;3 微信、支付宝、通讯运营商等第三方平台)")
82 private Integer authenticationMethod;
83
84 /**
85 * 实名认证时间
86 */
87 @Name("实名认证时间")
88 private Date authenticationTime;
89
90 /**
91 * 身份状态(0 不可用 ;1 可用)
92 */
93 @Name("身份状态(0 不可用 ;1 可用)")
94 private Integer identityStatus;
95
96 }
1 package com.csbr.qingcloud.portal.mybatis.entity;
2
3 import com.baomidou.mybatisplus.annotation.FieldStrategy;
4 import com.baomidou.mybatisplus.annotation.TableField;
5 import csbr.cloud.entity.domain.base.dao.BaseDO;
6 import jdk.jfr.Name;
7 import lombok.Data;
8 import lombok.EqualsAndHashCode;
9 import lombok.experimental.Accessors;
10 import java.util.Date;
11 import java.util.Map;
12
13 /**
14 * @program:
15 * @description: 个人用户可验信息实体
16 * @author: xup
17 * @create: 2025-08-14 13:21
18 **/
19 @Data
20 @EqualsAndHashCode(callSuper = true)
21 @Accessors(chain = true)
22 @Name("个人用户可验信息")
23 public class MfTdsUserVerifiable extends BaseDO {
24
25 /**
26 * 会员Guid
27 */
28 @Name("会员Guid")
29 private String tenantGuid;
30
31 /**
32 * 用户Guid
33 */
34 @Name("用户Guid")
35 private String userGuid;
36
37 /**
38 * 学历/学位证书
39 */
40 @Name("学历/学位证书")
41 private Map<String,Object> bachelorDegreeCertificate;
42
43 /**
44 * 职业资格证书
45 */
46 @Name("职业资格证书")
47 private Map<String,Object> professionalCertificate;
48
49 /**
50 * 信用报告摘要
51 */
52 @Name("信用报告摘要")
53 private Map<String,Object> creditReportSummary;
54
55 /**
56 * 数字作品/知识产权登记
57 */
58 @Name("数字作品/知识产权登记")
59 private Map<String,Object> intellectualPropertyRegistration;
60
61 /**
62 * 授权委托书
63 */
64 @Name("授权委托书")
65 private Map<String,Object> powerOfAttorney;
66
67 /**
68 * 其他第三方认证信息
69 */
70 @Name("其他第三方认证信息")
71 private Map<String,Object> thirdPartyCertification;
72
73 }
1 package com.csbr.qingcloud.portal.mybatis.mapper;
2
3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 import org.apache.ibatis.annotations.Mapper;
5 import com.csbr.qingcloud.portal.mybatis.entity.MfTdsUserAdditional;
6
7 /**
8 * @program:
9 * @description: 个人用户附加信息 Mapper 接口
10 * @author: xup
11 * @create: 2025-08-14 13:21
12 **/
13 @Mapper
14 public interface MfTdsUserAdditionalMapper extends BaseMapper<MfTdsUserAdditional> {
15
16 }
1 package com.csbr.qingcloud.portal.mybatis.mapper;
2
3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 import org.apache.ibatis.annotations.Mapper;
5 import com.csbr.qingcloud.portal.mybatis.entity.MfTdsUserIdentity;
6
7 /**
8 * @program:
9 * @description: 个人用户身份信息 Mapper 接口
10 * @author: xup
11 * @create: 2025-08-14 13:21
12 **/
13 @Mapper
14 public interface MfTdsUserIdentityMapper extends BaseMapper<MfTdsUserIdentity> {
15
16 }
1 package com.csbr.qingcloud.portal.mybatis.mapper;
2
3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 import org.apache.ibatis.annotations.Mapper;
5 import com.csbr.qingcloud.portal.mybatis.entity.MfTdsUserVerifiable;
6
7 /**
8 * @program:
9 * @description: 个人用户可验信息 Mapper 接口
10 * @author: xup
11 * @create: 2025-08-14 13:21
12 **/
13 @Mapper
14 public interface MfTdsUserVerifiableMapper extends BaseMapper<MfTdsUserVerifiable> {
15
16 }
1 package com.csbr.qingcloud.portal.mybatis.service;
2
3 import com.csbr.cloud.base.service.CsbrService;
4 import com.csbr.qingcloud.portal.mybatis.entity.MfTdsUserAdditional;
5
6 /**
7 * @program:
8 * @description: 个人用户附加信息逻辑层接口
9 * @author: xup
10 * @create: 2025-08-14 13:21
11 **/
12 public interface MfTdsUserAdditionalService extends CsbrService<MfTdsUserAdditional> {
13
14 }
1 package com.csbr.qingcloud.portal.mybatis.service;
2
3 import com.csbr.cloud.base.service.CsbrService;
4 import com.csbr.qingcloud.portal.mybatis.entity.MfTdsUserIdentity;
5
6 /**
7 * @program:
8 * @description: 个人用户身份信息逻辑层接口
9 * @author: xup
10 * @create: 2025-08-14 13:21
11 **/
12 public interface MfTdsUserIdentityService extends CsbrService<MfTdsUserIdentity> {
13
14 }
1 package com.csbr.qingcloud.portal.mybatis.service;
2
3 import com.csbr.cloud.base.service.CsbrService;
4 import com.csbr.qingcloud.portal.mybatis.entity.MfTdsUserVerifiable;
5
6 /**
7 * @program:
8 * @description: 个人用户可验信息逻辑层接口
9 * @author: xup
10 * @create: 2025-08-14 13:21
11 **/
12 public interface MfTdsUserVerifiableService extends CsbrService<MfTdsUserVerifiable> {
13
14 }
1 package com.csbr.qingcloud.portal.mybatis.service.impl;
2
3 import com.csbr.cloud.mybatis.service.impl.CsbrServiceImpl;
4 import com.csbr.qingcloud.portal.mybatis.mapper.MfTdsUserAdditionalMapper;
5 import com.csbr.qingcloud.portal.mybatis.entity.MfTdsUserAdditional;
6 import com.csbr.qingcloud.portal.mybatis.service.MfTdsUserAdditionalService;
7 import jakarta.annotation.Resource;
8 import org.springframework.stereotype.Service;
9
10 /**
11 * @program:
12 * @description: 个人用户附加信息逻辑层接口实现
13 * @author: xup
14 * @create: 2025-08-14 13:21
15 **/
16 @Service
17 public class MfTdsUserAdditionalServiceImpl extends CsbrServiceImpl<MfTdsUserAdditionalMapper, MfTdsUserAdditional> implements MfTdsUserAdditionalService {
18
19 @Resource
20 private MfTdsUserAdditionalMapper mfTdsUserAdditionalMapper;
21
22 }
1 package com.csbr.qingcloud.portal.mybatis.service.impl;
2
3 import com.csbr.cloud.mybatis.service.impl.CsbrServiceImpl;
4 import com.csbr.qingcloud.portal.mybatis.mapper.MfTdsUserIdentityMapper;
5 import com.csbr.qingcloud.portal.mybatis.entity.MfTdsUserIdentity;
6 import com.csbr.qingcloud.portal.mybatis.service.MfTdsUserIdentityService;
7 import jakarta.annotation.Resource;
8 import org.springframework.stereotype.Service;
9
10 /**
11 * @program:
12 * @description: 个人用户身份信息逻辑层接口实现
13 * @author: xup
14 * @create: 2025-08-14 13:21
15 **/
16 @Service
17 public class MfTdsUserIdentityServiceImpl extends CsbrServiceImpl<MfTdsUserIdentityMapper, MfTdsUserIdentity> implements MfTdsUserIdentityService {
18
19 @Resource
20 private MfTdsUserIdentityMapper mfTdsUserIdentityMapper;
21
22 }
1 package com.csbr.qingcloud.portal.mybatis.service.impl;
2
3 import com.csbr.cloud.mybatis.service.impl.CsbrServiceImpl;
4 import com.csbr.qingcloud.portal.mybatis.mapper.MfTdsUserVerifiableMapper;
5 import com.csbr.qingcloud.portal.mybatis.entity.MfTdsUserVerifiable;
6 import com.csbr.qingcloud.portal.mybatis.service.MfTdsUserVerifiableService;
7 import jakarta.annotation.Resource;
8 import org.springframework.stereotype.Service;
9
10 /**
11 * @program:
12 * @description: 个人用户可验信息逻辑层接口实现
13 * @author: xup
14 * @create: 2025-08-14 13:21
15 **/
16 @Service
17 public class MfTdsUserVerifiableServiceImpl extends CsbrServiceImpl<MfTdsUserVerifiableMapper, MfTdsUserVerifiable> implements MfTdsUserVerifiableService {
18
19 @Resource
20 private MfTdsUserVerifiableMapper mfTdsUserVerifiableMapper;
21
22 }
1 package com.csbr.qingcloud.portal.service;
2
3 /**
4 * 业务节点同步数据到区域节点回调接口
5 * @param <T>
6 */
7 public interface TdsSyncToRegionalNodeCallback<T> {
8 /**
9 * 业务节点同步数据到区域节点回调接口
10 * @param rqVO
11 */
12 void onTaskComplete(T rqVO);
13 }
1 package com.csbr.qingcloud.portal.service;
2
3 import csbr.cloud.entity.domain.base.vo.PageListVO;
4 import com.csbr.qingcloud.portal.domain.vo.TdsUserAdditionalQueryVO;
5 import com.csbr.qingcloud.portal.domain.vo.TdsUserAdditionalRQVO;
6 import com.csbr.qingcloud.portal.domain.vo.TdsUserAdditionalRSVO;
7
8 import java.util.List;
9
10 /**
11 * @program:
12 * @description: 个人用户附加信息业务逻辑接口
13 * @author: xup
14 * @create: 2025-08-14 13:21
15 **/
16 public interface TdsUserAdditionalService {
17
18 /**
19 * 个人用户附加信息分页查询
20 * @author xup
21 * @date 2025-08-14 13:21
22 * @param queryVO
23 * @return com.csbr.cloud.mybatis.entity.PageListVO<com.csbr.qingcloud.portal.domain.vo.TdsUserAdditionalRSVO>
24 */
25 PageListVO<TdsUserAdditionalRSVO> pageList(TdsUserAdditionalQueryVO queryVO);
26
27 /**
28 * 个人用户附加信息获取详情数据
29 * @author xup
30 * @date 2025-08-14 13:21
31 * @param guid
32 * @return com.csbr.qingcloud.portal.domain.vo.TdsUserAdditionalRSVO
33 */
34 TdsUserAdditionalRSVO getTdsUserAdditionalDetail(String guid);
35
36 /**
37 * 个人用户附加信息数据新增
38 * @author xup
39 * @date 2025-08-14 13:21
40 * @param rqVO
41 * @return boolean
42 */
43 void saveTdsUserAdditional(TdsUserAdditionalRQVO rqVO);
44
45 /**
46 * 个人用户附加信息数据修改
47 * @author xup
48 * @date 2025-08-14 13:21
49 * @param rqVO
50 * @return boolean
51 */
52 void updateTdsUserAdditional(TdsUserAdditionalRQVO rqVO);
53
54 /**
55 * 个人用户附加信息数据删除
56 * @author xup
57 * @date 2025-08-14 13:21
58 * @param guids
59 * @return void
60 */
61 void removeByGuids(List<String> guids);
62
63 /**
64 * 个人用户附加信息数据删除、并有相关的处理操作
65 * @author xup
66 * @date 2025-08-14 13:21
67 * @param guids
68 * @return void
69 */
70 void removeHandleByGuids(List<String> guids);
71
72 /**
73 * 通过UserGuid删除附件信息
74 * @param userGuids
75 */
76 void removeByUserGuids(List<String> userGuids);
77
78 /**
79 * 个人用户附加信息查询
80 * @param userGuid
81 * @return
82 */
83 TdsUserAdditionalRSVO getTdsUserAdditionalByUserGuid(String userGuid);
84 }
1 package com.csbr.qingcloud.portal.service;
2
3 import csbr.cloud.entity.domain.base.vo.PageListVO;
4 import com.csbr.qingcloud.portal.domain.vo.TdsUserIdentityQueryVO;
5 import com.csbr.qingcloud.portal.domain.vo.TdsUserIdentityRQVO;
6 import com.csbr.qingcloud.portal.domain.vo.TdsUserIdentityRSVO;
7
8 import java.util.List;
9
10 /**
11 * @program:
12 * @description: 个人用户身份信息业务逻辑接口
13 * @author: xup
14 * @create: 2025-08-14 13:21
15 **/
16 public interface TdsUserIdentityService extends TdsSyncToRegionalNodeCallback<TdsUserIdentityRQVO> {
17
18 /**
19 * 个人用户身份信息分页查询
20 * @author xup
21 * @date 2025-08-14 13:21
22 * @param queryVO
23 * @return com.csbr.cloud.mybatis.entity.PageListVO<com.csbr.qingcloud.portal.domain.vo.TdsUserIdentityRSVO>
24 */
25 PageListVO<TdsUserIdentityRSVO> pageList(TdsUserIdentityQueryVO queryVO);
26
27 /**
28 * 个人用户身份信息获取详情数据
29 * @author xup
30 * @date 2025-08-14 13:21
31 * @param guid
32 * @return com.csbr.qingcloud.portal.domain.vo.TdsUserIdentityRSVO
33 */
34 TdsUserIdentityRSVO getTdsUserIdentityDetail(String guid);
35
36 /**
37 * 个人用户身份信息数据新增
38 * @author xup
39 * @date 2025-08-14 13:21
40 * @param rqVO
41 * @return boolean
42 */
43 void saveTdsUserIdentity(TdsUserIdentityRQVO rqVO);
44
45 /**
46 * 个人用户身份信息数据修改
47 * @author xup
48 * @date 2025-08-14 13:21
49 * @param rqVO
50 * @return boolean
51 */
52 void updateTdsUserIdentity(TdsUserIdentityRQVO rqVO);
53
54 /**
55 * 个人用户身份信息数据删除
56 * @author xup
57 * @date 2025-08-14 13:21
58 * @param guids
59 * @return void
60 */
61 void removeByGuids(List<String> guids);
62
63 /**
64 * 个人用户身份信息数据删除、并有相关的处理操作
65 * @author xup
66 * @date 2025-08-14 13:21
67 * @param guids
68 * @return void
69 */
70 void removeHandleByGuids(List<String> guids);
71
72 /**
73 * 认证个人用户身份信息
74 * @param bizGuid
75 * @param identityStatus
76 * @param message
77 */
78 void updateTdsUserIdentityStatus(String bizGuid, Integer identityStatus, String message);
79 }
1 package com.csbr.qingcloud.portal.service;
2
3 import csbr.cloud.entity.domain.base.vo.PageListVO;
4 import com.csbr.qingcloud.portal.domain.vo.TdsUserVerifiableQueryVO;
5 import com.csbr.qingcloud.portal.domain.vo.TdsUserVerifiableRQVO;
6 import com.csbr.qingcloud.portal.domain.vo.TdsUserVerifiableRSVO;
7
8 import java.util.List;
9
10 /**
11 * @program:
12 * @description: 个人用户可验信息业务逻辑接口
13 * @author: xup
14 * @create: 2025-08-14 13:21
15 **/
16 public interface TdsUserVerifiableService {
17
18 /**
19 * 个人用户可验信息分页查询
20 * @author xup
21 * @date 2025-08-14 13:21
22 * @param queryVO
23 * @return com.csbr.cloud.mybatis.entity.PageListVO<com.csbr.qingcloud.portal.domain.vo.TdsUserVerifiableRSVO>
24 */
25 PageListVO<TdsUserVerifiableRSVO> pageList(TdsUserVerifiableQueryVO queryVO);
26
27 /**
28 * 个人用户可验信息获取详情数据
29 * @author xup
30 * @date 2025-08-14 13:21
31 * @param guid
32 * @return com.csbr.qingcloud.portal.domain.vo.TdsUserVerifiableRSVO
33 */
34 TdsUserVerifiableRSVO getTdsUserVerifiableDetail(String guid);
35
36 /**
37 * 个人用户可验信息数据新增
38 * @author xup
39 * @date 2025-08-14 13:21
40 * @param rqVO
41 * @return boolean
42 */
43 void saveTdsUserVerifiable(TdsUserVerifiableRQVO rqVO);
44
45 /**
46 * 个人用户可验信息数据修改
47 * @author xup
48 * @date 2025-08-14 13:21
49 * @param rqVO
50 * @return boolean
51 */
52 void updateTdsUserVerifiable(TdsUserVerifiableRQVO rqVO);
53
54 /**
55 * 个人用户可验信息数据删除
56 * @author xup
57 * @date 2025-08-14 13:21
58 * @param guids
59 * @return void
60 */
61 void removeByGuids(List<String> guids);
62
63 /**
64 * 个人用户可验信息数据删除、并有相关的处理操作
65 * @author xup
66 * @date 2025-08-14 13:21
67 * @param guids
68 * @return void
69 */
70 void removeHandleByGuids(List<String> guids);
71
72 void removeByUserGuids(List<String> userGuids);
73
74 /**
75 * 个人用户可验信息查询
76 * @param userGuid
77 * @return
78 */
79 TdsUserVerifiableRSVO getTdsUserVerifiableByUserGuid(String userGuid);
80 }
1 package com.csbr.qingcloud.portal.service.impl;
2
3 import com.alibaba.fastjson.JSON;
4 import com.alibaba.fastjson.JSONObject;
5 import com.csbr.cloud.common.enums.SystemError;
6 import com.csbr.cloud.common.exception.CsbrSystemException;
7 import com.csbr.cloud.common.response.CommonRes;
8 import com.csbr.qingcloud.portal.enums.TdsDataTypeEnum;
9 import com.csbr.qingcloud.portal.service.TdsSyncToRegionalNodeCallback;
10 import com.csbr.qingcloud.portal.util.ZQConfig;
11 import jakarta.annotation.Resource;
12 import lombok.extern.slf4j.Slf4j;
13 import org.apache.hc.client5.http.config.RequestConfig;
14 import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
15 import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
16 import org.apache.hc.core5.util.Timeout;
17 import org.springframework.beans.factory.annotation.Autowired;
18 import org.springframework.http.HttpEntity;
19 import org.springframework.http.HttpHeaders;
20 import org.springframework.http.MediaType;
21 import org.springframework.http.client.ClientHttpRequestFactory;
22 import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
23 import org.springframework.scheduling.annotation.Async;
24 import org.springframework.stereotype.Service;
25 import org.springframework.web.client.RestTemplate;
26
27 /**
28 * 业务节点同步数据到区域节点服务
29 * @param <T>
30 */
31 @Slf4j
32 @Service
33 public class TdsSyncToRegionalNodeService<T> {
34
35 @Resource
36 public ZQConfig zqConfig;
37
38 @Resource
39 private RestTemplate restTemplate;
40
41 /**
42 * 业务节点同步数据到区域节点
43 * @param dataTypeEnum
44 * @param data
45 * @param callback
46 */
47 @Async
48 public void syncToRegionalNode(TdsDataTypeEnum dataTypeEnum,
49 T data,
50 TdsSyncToRegionalNodeCallback<T> callback){
51 HttpHeaders headers = new HttpHeaders();
52 headers.setContentType(MediaType.APPLICATION_JSON);
53 headers.set("appKey", zqConfig.getAppKey());
54 JSONObject jsonObject = new JSONObject();
55 jsonObject.put("data",JSON.parseObject(JSON.toJSONString(data)));
56 jsonObject.put("dataType",dataTypeEnum);
57 jsonObject.put("zqName",zqConfig.getZqName());
58 HttpEntity<JSONObject> requestEntity = new HttpEntity<>(jsonObject, headers);
59 restTemplate.setRequestFactory(getFactory());
60 CommonRes commonRes = restTemplate.postForObject(zqConfig.getTdsRegionalNodeUrl(), requestEntity, CommonRes.class);
61 if (!CommonRes.success().getCode().equals(commonRes.getCode())) {
62 throw new CsbrSystemException(SystemError.ERROR_CODE, commonRes.getMsg());
63 } else {
64 CommonRes commonResData = JSON.parseObject(String.valueOf(commonRes.getData()), CommonRes.class);
65 if (!CommonRes.success().getCode().equals(commonResData.getCode())) {
66 throw new CsbrSystemException(SystemError.ERROR_CODE, commonResData.getMsg());
67 }
68 }
69 callback.onTaskComplete(data);
70 }
71
72 private ClientHttpRequestFactory getFactory() {
73 RequestConfig config = RequestConfig.custom()
74 .setConnectTimeout(Timeout.ofSeconds(5000)) // 连接超时
75 .setConnectionRequestTimeout(Timeout.ofSeconds(5000)) // 从连接池获取连接的超时时间
76 .setResponseTimeout(Timeout.ofSeconds(10000)) // 数据读取超时
77 .build();
78
79 CloseableHttpClient httpClient = HttpClientBuilder.create()
80 .setDefaultRequestConfig(config)
81 .build();
82
83 return new HttpComponentsClientHttpRequestFactory(httpClient);
84 }
85 }
...@@ -4,6 +4,8 @@ import lombok.Data; ...@@ -4,6 +4,8 @@ import lombok.Data;
4 import org.springframework.boot.context.properties.ConfigurationProperties; 4 import org.springframework.boot.context.properties.ConfigurationProperties;
5 import org.springframework.stereotype.Component; 5 import org.springframework.stereotype.Component;
6 6
7 import java.util.Map;
8
7 /** 9 /**
8 * @program: daop-projects 10 * @program: daop-projects
9 * @description: 11 * @description:
...@@ -25,4 +27,9 @@ public class ZQConfig { ...@@ -25,4 +27,9 @@ public class ZQConfig {
25 27
26 private Boolean isMain = false; 28 private Boolean isMain = false;
27 29
30 /**
31 * 可信空间区域节点数据同步URL地址
32 */
33 private String tdsRegionalNodeUrl;
34
28 } 35 }
...\ No newline at end of file ...\ No newline at end of file
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!