From a3bdee9d3c4ac0c3c6c200293e884b5ddf14e67f Mon Sep 17 00:00:00 2001 From: zhangran Date: Mon, 17 Feb 2025 16:32:32 +0800 Subject: [PATCH] =?UTF-8?q?add(REQ-3342)=20=E5=90=8C=E6=AD=A5=E4=BA=91?= =?UTF-8?q?=E7=AD=91=E7=94=A8=E6=88=B7=E5=88=B0third=5Fperson=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- riven-api-v2/pom.xml | 4 + .../v2/common/enums/ThirdPersonTypeEnum.java | 20 +++++ .../v2/thirdparty/feign/ThirdPersonApi.java | 28 ++++++ .../v2/thirdparty/req/ThirdPersonAddReq.java | 66 ++++++++++++++ .../req/ThirdPersonBatchAddReq.java | 30 +++++++ .../v2/thirdparty/req/ThirdPersonQuery.java | 26 ++++++ .../resp/ThirdPersonBatchAddResp.java | 16 ++++ .../cn/axzo/riven/RivenDevApplication.java | 48 ++++++++++ riven-third/pom.xml | 10 +++ .../third/controller/ThirdPersonApiImpl.java | 39 ++++++++ .../axzo/riven/third/dao/ThirdPersonDao.java | 17 +++- .../third/service/ThirdPersonService.java | 13 ++- .../third/service/ThirdPersonStrategy.java | 28 ++++++ .../service/impl/ThirdPersonServiceImpl.java | 16 ++++ .../impl/YunZhuThirdPersonStrategy.java | 90 +++++++++++++++++++ 15 files changed, 446 insertions(+), 5 deletions(-) create mode 100644 riven-api-v2/src/main/java/cn/axzo/riven/api/v2/common/enums/ThirdPersonTypeEnum.java create mode 100644 riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/feign/ThirdPersonApi.java create mode 100644 riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonAddReq.java create mode 100644 riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonBatchAddReq.java create mode 100644 riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonQuery.java create mode 100644 riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/resp/ThirdPersonBatchAddResp.java create mode 100644 riven-server/src/main/java/cn/axzo/riven/RivenDevApplication.java create mode 100644 riven-third/src/main/java/cn/axzo/riven/third/controller/ThirdPersonApiImpl.java create mode 100644 riven-third/src/main/java/cn/axzo/riven/third/service/ThirdPersonStrategy.java create mode 100644 riven-third/src/main/java/cn/axzo/riven/third/service/impl/YunZhuThirdPersonStrategy.java diff --git a/riven-api-v2/pom.xml b/riven-api-v2/pom.xml index b068c11..de400f2 100644 --- a/riven-api-v2/pom.xml +++ b/riven-api-v2/pom.xml @@ -38,5 +38,9 @@ com.alibaba fastjson + + javax.validation + validation-api + \ No newline at end of file diff --git a/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/common/enums/ThirdPersonTypeEnum.java b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/common/enums/ThirdPersonTypeEnum.java new file mode 100644 index 0000000..bee6f39 --- /dev/null +++ b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/common/enums/ThirdPersonTypeEnum.java @@ -0,0 +1,20 @@ +package cn.axzo.riven.api.v2.common.enums; + +import lombok.Getter; + +/** + * @Author zr + * @Date 2025/2/14 17:31 + * @Description 同步平台类型 + **/ +@Getter +public enum ThirdPersonTypeEnum { + YUN_ZHU("云筑"), + ; + + public final String msg; + + ThirdPersonTypeEnum(String msg){ + this.msg = msg; + } +} diff --git a/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/feign/ThirdPersonApi.java b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/feign/ThirdPersonApi.java new file mode 100644 index 0000000..bb2ba2d --- /dev/null +++ b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/feign/ThirdPersonApi.java @@ -0,0 +1,28 @@ +package cn.axzo.riven.api.v2.thirdparty.feign; + +import cn.axzo.foundation.result.ApiResult; +import cn.axzo.riven.api.v2.thirdparty.req.ThirdPersonBatchAddReq; +import cn.axzo.riven.api.v2.thirdparty.resp.ThirdPersonBatchAddResp; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * @Author zr + * @Date 2025/2/14 17:04 + * @Description + **/ + +@FeignClient( + value = "riven", + url = "${axzo.service.riven:http://riven:8080}" +) +public interface ThirdPersonApi { + + @PostMapping("api/riven/thirdPerson/batchAdd") + ApiResult> batchAdd(@RequestBody @Validated ThirdPersonBatchAddReq req ); + +} diff --git a/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonAddReq.java b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonAddReq.java new file mode 100644 index 0000000..9068bcb --- /dev/null +++ b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonAddReq.java @@ -0,0 +1,66 @@ +package cn.axzo.riven.api.v2.thirdparty.req; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Author zr + * @Date 2025/2/17 10:02 + * @Description + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ThirdPersonAddReq { + + @NotNull(message = "PersonId must be not null") + private Long personId; + + /** + * 姓名 + */ + @NotBlank(message = "Name must be not blank") + private String thirdPersonName; + + /** + * 身份证号 + */ + @NotBlank(message = "IdNumber must be not blank") + private String thirdIdNumber; + + /** + * 手机号 + */ + @NotBlank(message = "Phone must be not blank") + private String thirdPersonPhone; + + /** + * 三方性别 + */ + private String thirdSex; + + /** + * 身份证签发单位 + */ + private String thirdAuthority; + + /** + * 三方人脸照片 + */ + private String thirdPersonFaceUrl; + + /** + * 第三方人员唯一标识 + */ + private String thirdUniquePersonId; + /** + * 三方身份证照片 + */ + private String thirdPersonPhoto; +} diff --git a/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonBatchAddReq.java b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonBatchAddReq.java new file mode 100644 index 0000000..e8f0267 --- /dev/null +++ b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonBatchAddReq.java @@ -0,0 +1,30 @@ +package cn.axzo.riven.api.v2.thirdparty.req; + +import cn.axzo.riven.api.v2.common.enums.ThirdPersonTypeEnum; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Author zr + * @Date 2025/2/14 17:06 + * @Description 平台同步类型 + **/ +@Data +public class ThirdPersonBatchAddReq { + + /** + * 同步平台类型 + */ + @NotNull(message = "Type must be not null") + private ThirdPersonTypeEnum type; + + /** + * 同步人员信息 + */ + @NotEmpty(message = "Third persons must be not empty") + private List thirdPersons; + +} diff --git a/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonQuery.java b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonQuery.java new file mode 100644 index 0000000..abd3c46 --- /dev/null +++ b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/req/ThirdPersonQuery.java @@ -0,0 +1,26 @@ +package cn.axzo.riven.api.v2.thirdparty.req; + +import cn.axzo.riven.api.v2.common.enums.ThirdPersonTypeEnum; +import lombok.Data; + +import java.util.List; + +/** + * @Author zr + * @Date 2025/2/17 15:36 + * @Description + **/ +@Data +public class ThirdPersonQuery { + + /** + * 身份证号 + */ + private String idNumber; + private List idNumbers; + + /** + * 类型 + */ + private ThirdPersonTypeEnum type; +} diff --git a/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/resp/ThirdPersonBatchAddResp.java b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/resp/ThirdPersonBatchAddResp.java new file mode 100644 index 0000000..2652285 --- /dev/null +++ b/riven-api-v2/src/main/java/cn/axzo/riven/api/v2/thirdparty/resp/ThirdPersonBatchAddResp.java @@ -0,0 +1,16 @@ +package cn.axzo.riven.api.v2.thirdparty.resp; + +import lombok.Data; + +/** + * @Author zr + * @Date 2025/2/14 17:28 + * @Description + **/ +@Data +public class ThirdPersonBatchAddResp { + // personId + private Long personId; + //第三方人员id + private Long thirdPersonId; +} diff --git a/riven-server/src/main/java/cn/axzo/riven/RivenDevApplication.java b/riven-server/src/main/java/cn/axzo/riven/RivenDevApplication.java new file mode 100644 index 0000000..07da0bc --- /dev/null +++ b/riven-server/src/main/java/cn/axzo/riven/RivenDevApplication.java @@ -0,0 +1,48 @@ +package cn.axzo.riven; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.env.Environment; + +@Slf4j +@SpringBootApplication(scanBasePackages = {"cn.axzo", "com.axzo.framework"}) +@EnableFeignClients(basePackages = {"cn.axzo"}) +@MapperScan({"cn.axzo.riven.dingtalk.**.mapper"}) +public class RivenDevApplication { + public static void main(String[] args) { + System.setProperty("spring.profiles.active","dev"); + System.setProperty("NACOS_HOST","https://dev-nacos.axzo.cn"); + System.setProperty("NACOS_PORT","443"); + System.setProperty("NACOS_NAMESPACE_ID","35eada10-9574-4db8-9fea-bc6a4960b6c7"); + System.setProperty("CUSTOM_ENV","dev"); + + System.setProperty("spring.datasource.url","jdbc:mysql://172.16.2.171:3306/pudge?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=true&verifyServerCertificate=false&rewriteBatchedStatements=true"); + // System.setProperty("spring.datasource.url","jdbc:mysql://172.16.2.171:3306/pudge?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=true&verifyServerCertificate=false&rewriteBatchedStatements=true"); + System.setProperty("spring.redis.port","31270"); + System.setProperty("spring.redis.host","172.16.2.23"); + ConfigurableApplicationContext run = SpringApplication.run(RivenDevApplication.class, args); + Environment env = run.getEnvironment(); + log.info( + "--------------------------------------------------------------------------------------------------------------------\n" + + "Application 【{}】 is running on 【{}】 environment!\n" + + "Api Local: \thttp://127.0.0.1:{}\n" + + "Mysql: \t{}\t username:{}\n" + + "Redis: \t{}:{}\t database:{}\n" + + "RabbitMQ: \t{}\t username:{}", + env.getProperty("spring.application.name"), + env.getProperty("spring.profiles.active"), + env.getProperty("server.port"), + env.getProperty("spring.datasource.url"), + env.getProperty("spring.datasource.username"), + env.getProperty("spring.redis.host"), + env.getProperty("spring.redis.port"), + env.getProperty("spring.redis.database"), + env.getProperty("spring.rabbitmq.addresses"), + env.getProperty("spring.rabbitmq.username") + + "\n----------------------------------------------------------"); + } +} diff --git a/riven-third/pom.xml b/riven-third/pom.xml index 28fc90d..57f097d 100644 --- a/riven-third/pom.xml +++ b/riven-third/pom.xml @@ -97,6 +97,16 @@ alibaba-dingtalk-service-sdk provided + + cn.axzo + riven-api-v2 + 2.0.0-SNAPSHOT + compile + + + cn.axzo.trade + trade-data-security-core + diff --git a/riven-third/src/main/java/cn/axzo/riven/third/controller/ThirdPersonApiImpl.java b/riven-third/src/main/java/cn/axzo/riven/third/controller/ThirdPersonApiImpl.java new file mode 100644 index 0000000..ef6a285 --- /dev/null +++ b/riven-third/src/main/java/cn/axzo/riven/third/controller/ThirdPersonApiImpl.java @@ -0,0 +1,39 @@ +package cn.axzo.riven.third.controller; + +import cn.axzo.basics.common.exception.ServiceException; +import cn.axzo.foundation.result.ApiResult; +import cn.axzo.riven.api.v2.common.enums.ThirdPersonTypeEnum; +import cn.axzo.riven.api.v2.thirdparty.feign.ThirdPersonApi; +import cn.axzo.riven.api.v2.thirdparty.req.ThirdPersonBatchAddReq; +import cn.axzo.riven.api.v2.thirdparty.resp.ThirdPersonBatchAddResp; +import cn.axzo.riven.third.service.ThirdPersonStrategy; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Author zr + * @Date 2025/2/14 17:37 + * @Description + **/ +@Slf4j +@RestController +@RequiredArgsConstructor +public class ThirdPersonApiImpl implements ThirdPersonApi { + + private final List thirdPersonStrategys; + + @Override + public ApiResult> batchAdd(ThirdPersonBatchAddReq req) { + ThirdPersonStrategy thirdPersonStrategy = getThirdPersonStrategy(req.getType()); + List resps = thirdPersonStrategy.saveOrUpdateBatch(req.getThirdPersons()); + return ApiResult.success(resps); + } + + private ThirdPersonStrategy getThirdPersonStrategy(ThirdPersonTypeEnum type) { + return thirdPersonStrategys.stream().filter(item -> item.getType(type)) + .findFirst().orElseThrow(() -> new ServiceException("不支持对应三方用户")); + } +} diff --git a/riven-third/src/main/java/cn/axzo/riven/third/dao/ThirdPersonDao.java b/riven-third/src/main/java/cn/axzo/riven/third/dao/ThirdPersonDao.java index 64b7274..b76c176 100644 --- a/riven-third/src/main/java/cn/axzo/riven/third/dao/ThirdPersonDao.java +++ b/riven-third/src/main/java/cn/axzo/riven/third/dao/ThirdPersonDao.java @@ -1,14 +1,17 @@ package cn.axzo.riven.third.dao; +import cn.axzo.framework.data.mybatisplus.model.BaseEntity; +import cn.axzo.riven.api.v2.thirdparty.req.ThirdPersonQuery; import cn.axzo.riven.third.dao.mapper.ThirdPersonMapper; -import cn.axzo.riven.third.dao.mapper.ThirdProjectMapper; import cn.axzo.riven.third.entity.ThirdPerson; -import cn.axzo.riven.third.entity.ThirdProject; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Objects; + /** * Author: zhongpeng * Date: 2024/6/25 18:08 @@ -16,4 +19,12 @@ import org.springframework.stereotype.Service; @Slf4j @Service public class ThirdPersonDao extends ServiceImpl { + + public List list(ThirdPersonQuery req){ + return lambdaQuery().eq(BaseEntity::getIsDelete, 0L) + .eq(Objects.nonNull(req.getType()), ThirdPerson::getThirdCode, req.getType().name()) + .eq(Objects.nonNull(req.getIdNumber()), ThirdPerson::getThirdIdNumber, req.getIdNumber()) + .in(CollUtil.isNotEmpty(req.getIdNumbers()),ThirdPerson::getThirdIdNumber, req.getIdNumbers()) + .list(); + } } diff --git a/riven-third/src/main/java/cn/axzo/riven/third/service/ThirdPersonService.java b/riven-third/src/main/java/cn/axzo/riven/third/service/ThirdPersonService.java index f3bf0f1..7241ed7 100644 --- a/riven-third/src/main/java/cn/axzo/riven/third/service/ThirdPersonService.java +++ b/riven-third/src/main/java/cn/axzo/riven/third/service/ThirdPersonService.java @@ -1,10 +1,11 @@ package cn.axzo.riven.third.service; +import cn.axzo.riven.api.v2.thirdparty.req.ThirdPersonQuery; import cn.axzo.riven.client.common.enums.ThirdCodeEnum; import cn.axzo.riven.client.res.ThirdPartPersonRes; import cn.axzo.riven.third.entity.ThirdPerson; -import cn.axzo.riven.third.entity.ThirdProject; -import cn.axzo.riven.third.entity.ThirdProjectPerson; + +import java.util.List; /** * Author: zhongpeng @@ -28,4 +29,12 @@ public interface ThirdPersonService { public ThirdPartPersonRes getThirdPartPerson(Long personId, ThirdCodeEnum thirdCode); + /** + * 批量添加三方平台用户 + * @param thirdPersonList + */ + void saveOrUpdateBatch(List thirdPersonList); + + + List list(ThirdPersonQuery req); } diff --git a/riven-third/src/main/java/cn/axzo/riven/third/service/ThirdPersonStrategy.java b/riven-third/src/main/java/cn/axzo/riven/third/service/ThirdPersonStrategy.java new file mode 100644 index 0000000..3ae0845 --- /dev/null +++ b/riven-third/src/main/java/cn/axzo/riven/third/service/ThirdPersonStrategy.java @@ -0,0 +1,28 @@ +package cn.axzo.riven.third.service; + +import cn.axzo.riven.api.v2.common.enums.ThirdPersonTypeEnum; +import cn.axzo.riven.api.v2.thirdparty.req.ThirdPersonAddReq; +import cn.axzo.riven.api.v2.thirdparty.req.ThirdPersonQuery; +import cn.axzo.riven.api.v2.thirdparty.resp.ThirdPersonBatchAddResp; +import cn.axzo.riven.third.entity.ThirdPerson; + +import java.util.List; + +/** + * @Author zr + * @Date 2025/2/14 18:10 + * @Description + **/ +public interface ThirdPersonStrategy { + + Boolean getType(ThirdPersonTypeEnum type); + + List saveOrUpdateBatch(List req); + + /** + * 根据类型查询云筑人员 + * @param req + * @return + */ + List listYunZhu(ThirdPersonQuery req); +} diff --git a/riven-third/src/main/java/cn/axzo/riven/third/service/impl/ThirdPersonServiceImpl.java b/riven-third/src/main/java/cn/axzo/riven/third/service/impl/ThirdPersonServiceImpl.java index 1f00be5..9895658 100644 --- a/riven-third/src/main/java/cn/axzo/riven/third/service/impl/ThirdPersonServiceImpl.java +++ b/riven-third/src/main/java/cn/axzo/riven/third/service/impl/ThirdPersonServiceImpl.java @@ -1,5 +1,6 @@ package cn.axzo.riven.third.service.impl; +import cn.axzo.riven.api.v2.thirdparty.req.ThirdPersonQuery; import cn.axzo.riven.client.common.enums.ThirdCodeEnum; import cn.axzo.riven.client.res.ThirdPartPersonRes; import cn.axzo.riven.third.dao.ThirdPersonDao; @@ -55,6 +56,21 @@ public class ThirdPersonServiceImpl implements ThirdPersonService { return convertToResp(list.get(0)); } + /** + * 批量添加三方平台用户 + * + * @param thirdPersonList + */ + @Override + public void saveOrUpdateBatch(List thirdPersonList) { + thirdPersonDao.saveOrUpdateBatch(thirdPersonList); + } + + @Override + public List list(ThirdPersonQuery req) { + return thirdPersonDao.list(req); + } + private ThirdPartPersonRes convertToResp(ThirdPerson thirdPerson) { if (thirdPerson == null) { return null; diff --git a/riven-third/src/main/java/cn/axzo/riven/third/service/impl/YunZhuThirdPersonStrategy.java b/riven-third/src/main/java/cn/axzo/riven/third/service/impl/YunZhuThirdPersonStrategy.java new file mode 100644 index 0000000..77df7b8 --- /dev/null +++ b/riven-third/src/main/java/cn/axzo/riven/third/service/impl/YunZhuThirdPersonStrategy.java @@ -0,0 +1,90 @@ +package cn.axzo.riven.third.service.impl; + +import cn.axzo.basics.profiles.common.enums.SexType; +import cn.axzo.riven.api.v2.common.enums.ThirdPersonTypeEnum; +import cn.axzo.riven.api.v2.thirdparty.req.ThirdPersonAddReq; +import cn.axzo.riven.api.v2.thirdparty.req.ThirdPersonBatchAddReq; +import cn.axzo.riven.api.v2.thirdparty.req.ThirdPersonQuery; +import cn.axzo.riven.api.v2.thirdparty.resp.ThirdPersonBatchAddResp; +import cn.axzo.riven.third.entity.ThirdPerson; +import cn.axzo.riven.third.service.ThirdPersonService; +import cn.axzo.riven.third.service.ThirdPersonStrategy; +import cn.axzo.trade.datasecurity.core.util.DataSecurityHelper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @Author zr + * @Date 2025/2/14 18:17 + * @Description + **/ +@RequiredArgsConstructor +@Service +@Slf4j +public class YunZhuThirdPersonStrategy implements ThirdPersonStrategy { + + private final ThirdPersonService thirdPersonService; + + @Override + public Boolean getType(ThirdPersonTypeEnum type) { + return Objects.equals(ThirdPersonTypeEnum.YUN_ZHU, type); + } + + @Override + public List saveOrUpdateBatch(List req) { + + List idNumbers = req.stream().map(item -> { + return DataSecurityHelper.encrypt(item.getThirdIdNumber()); + }).distinct().collect(Collectors.toList()); + ThirdPersonQuery query = new ThirdPersonQuery(); + query.setIdNumbers(idNumbers); + query.setType(ThirdPersonTypeEnum.YUN_ZHU); + List thirdPeople = listYunZhu(query); + Map numberPersonMap = thirdPeople.stream() + .collect(Collectors.toMap(ThirdPerson::getThirdIdNumber, Function.identity(), (x, y) -> x)); + + List thirdPersonList = req.stream().map(item -> { + ThirdPerson thirdPerson = new ThirdPerson(); + String idNumberSecurity = DataSecurityHelper.encrypt(item.getThirdIdNumber()); + if (numberPersonMap.containsKey(idNumberSecurity)) { + thirdPerson = numberPersonMap.get(idNumberSecurity); + } + build(thirdPerson, item); + thirdPerson.setThirdUniquePersonId(idNumberSecurity); + thirdPerson.setThirdIdNumber(idNumberSecurity); + return thirdPerson; + }).collect(Collectors.toList()); + thirdPersonService.saveOrUpdateBatch(thirdPersonList); + + return thirdPersonList.stream().map(item ->{ + ThirdPersonBatchAddResp resp = new ThirdPersonBatchAddResp(); + resp.setPersonId(item.getPersonId()); + resp.setThirdPersonId(item.getId()); + return resp; + }).collect(Collectors.toList()); + } + + @Override + public List listYunZhu(ThirdPersonQuery req) { + return thirdPersonService.list(req); + } + + + private void build(ThirdPerson thirdPerson, ThirdPersonAddReq req){ + thirdPerson.setThirdCode(ThirdPersonTypeEnum.YUN_ZHU.name()); + thirdPerson.setThirdPersonName(req.getThirdPersonName()); + thirdPerson.setThirdPersonPhone(DataSecurityHelper.encrypt(req.getThirdPersonPhone())); + thirdPerson.setThirdPersonPhoto(req.getThirdPersonPhoto()); + thirdPerson.setThirdAuthority(req.getThirdAuthority()); + thirdPerson.setThirdPersonFaceUrl(req.getThirdPersonFaceUrl()); + thirdPerson.setThirdSex(req.getThirdSex()); + thirdPerson.setPersonId(req.getPersonId()); + } +}