From a722853e81c5a5ae912508f9447e7c714d098941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?niohe=C2=B7erbao?= Date: Thu, 9 Mar 2023 09:10:21 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=B8=8A=E7=BA=A7?= =?UTF-8?q?=E6=9D=A1=E7=BA=BF=E5=8D=95=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organization/entity/GovBusinessStrip.java | 6 ++ .../helper/GovBusinessStripHelper.java | 22 +++++++ .../helper/impl/GovBusinessStripHelperImpl.java | 70 ++++++++++++++++++++++ .../service/IDingOrganizationService.java | 17 +++++- .../service/impl/DingOrganizationServiceImpl.java | 26 +++++++- 5 files changed, 136 insertions(+), 5 deletions(-) create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/GovBusinessStripHelper.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/impl/GovBusinessStripHelperImpl.java diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/entity/GovBusinessStrip.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/entity/GovBusinessStrip.java index 6f014f9..4309dff 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/entity/GovBusinessStrip.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/entity/GovBusinessStrip.java @@ -32,7 +32,13 @@ public class GovBusinessStrip implements Serializable { private Long updateBy; + /** + * 条线code + */ private String businessStripCode; + /** + * 条线名称 + */ private String businessStripName; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/GovBusinessStripHelper.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/GovBusinessStripHelper.java new file mode 100644 index 0000000..16c8906 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/GovBusinessStripHelper.java @@ -0,0 +1,22 @@ +package com.ningdatech.pmapi.organization.helper; + +import com.ningdatech.pmapi.organization.model.entity.DingOrganization; + +import java.util.List; + +/** + * @author liuxinxin + * @date 2023/3/8 下午3:23 + */ + +public interface GovBusinessStripHelper { + + /** + * 获取上级条线单位 + * + * @param organizationCode + * @return + */ + List getSupGovBusinessStrip(String organizationCode); + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/impl/GovBusinessStripHelperImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/impl/GovBusinessStripHelperImpl.java new file mode 100644 index 0000000..e3dcb2c --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/impl/GovBusinessStripHelperImpl.java @@ -0,0 +1,70 @@ +package com.ningdatech.pmapi.organization.helper.impl; + +import com.ningdatech.pmapi.organization.helper.GovBusinessStripHelper; +import com.ningdatech.pmapi.organization.model.entity.DingOrganization; +import com.ningdatech.pmapi.organization.service.IDingOrganizationService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Objects; + +/** + * @author liuxinxin + * @date 2023/3/8 下午3:34 + */ + +@Component +@RequiredArgsConstructor +public class GovBusinessStripHelperImpl implements GovBusinessStripHelper { + + private final IDingOrganizationService organizationService; + + @Override + public List getSupGovBusinessStrip(String organizationCode) { + List supGovBusinessStripList = new ArrayList<>(); + + DingOrganization dingOrganization = organizationService.getByOrgCode(organizationCode); + if (Objects.isNull(dingOrganization)) { + return null; + } + String businessStripCodes = dingOrganization.getBusinessStripCodes(); + if (StringUtils.isNotBlank(businessStripCodes)) { + String[] businessStripCodeList = businessStripCodes.split("|"); + for (String businessStripCode : businessStripCodeList) { + DingOrganization supGovBusinessStrip = getSupGovBusinessStrip(dingOrganization.getOrganizationCode(), businessStripCode); + if (Objects.nonNull(supGovBusinessStrip)) { + supGovBusinessStripList.add(supGovBusinessStrip); + } + } + } + return supGovBusinessStripList; + } + + private DingOrganization getSupGovBusinessStrip(String organizationCode, String businessStripCode) { + String tempParentOrgCode = organizationCode; + + HashSet tempParentOrgCodeSet = new HashSet<>(); + while (true) { + if (StringUtils.isBlank(tempParentOrgCode)) { + return null; + } + // 防止脏数据导致死循环 + if (!tempParentOrgCodeSet.add(tempParentOrgCode)) { + return null; + } + DingOrganization parentOrganization = organizationService.getParentOrganization(tempParentOrgCode); + if (Objects.isNull(parentOrganization)) { + return null; + } + String businessStripCodes = parentOrganization.getBusinessStripCodes(); + if (StringUtils.isNotBlank(businessStripCode) && businessStripCodes.contains(businessStripCode)) { + return parentOrganization; + } + tempParentOrgCode = parentOrganization.getParentCode(); + } + } +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/IDingOrganizationService.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/IDingOrganizationService.java index 54794d8..8578c32 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/IDingOrganizationService.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/IDingOrganizationService.java @@ -1,11 +1,11 @@ package com.ningdatech.pmapi.organization.service; -import com.ningdatech.pmapi.organization.model.entity.DingOrganization; import com.baomidou.mybatisplus.extension.service.IService; +import com.ningdatech.pmapi.organization.model.entity.DingOrganization; /** *

- * 服务类 + * 服务类 *

* * @author Lierbao @@ -13,4 +13,17 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IDingOrganizationService extends IService { + /** + * 根据组织code查询组织信息 + * @param orgCode + * @return + */ + DingOrganization getByOrgCode(String orgCode); + + /** + * 根据组织code查询父组织信息 + * @param orgCode + * @return + */ + DingOrganization getParentOrganization(String orgCode); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/impl/DingOrganizationServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/impl/DingOrganizationServiceImpl.java index 8ea2ec7..d4ba1df 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/impl/DingOrganizationServiceImpl.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/impl/DingOrganizationServiceImpl.java @@ -1,14 +1,16 @@ package com.ningdatech.pmapi.organization.service.impl; -import com.ningdatech.pmapi.organization.model.entity.DingOrganization; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ningdatech.pmapi.organization.mapper.DingOrganizationMapper; +import com.ningdatech.pmapi.organization.model.entity.DingOrganization; import com.ningdatech.pmapi.organization.service.IDingOrganizationService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** *

- * 服务实现类 + * 服务实现类 *

* * @author Lierbao @@ -17,4 +19,22 @@ import org.springframework.stereotype.Service; @Service public class DingOrganizationServiceImpl extends ServiceImpl implements IDingOrganizationService { + @Override + public DingOrganization getByOrgCode(String orgCode) { + if (StringUtils.isBlank(orgCode)) { + return null; + } + return this.getOne(Wrappers.lambdaQuery(DingOrganization.class) + .eq(DingOrganization::getOrganizationCode, orgCode)); + } + + @Override + public DingOrganization getParentOrganization(String orgCode) { + DingOrganization dingOrganization = getByOrgCode(orgCode); + if (dingOrganization == null) { + return null; + } + String parentCode = dingOrganization.getParentCode(); + return getByOrgCode(parentCode); + } } From dab7b26d7fcd47b9a48fe4874dc57cdae0e45f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?niohe=C2=B7erbao?= Date: Thu, 9 Mar 2023 10:53:24 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=93=E5=AE=B6=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GeneratorCodeKingbaseConfig.java | 2 +- .../common/model/ExpertRegionModifyDiffBO.java | 19 ++ .../ningdatech/pmapi/common/util/DictUtils.java | 39 ++++ .../pmapi/common/util/ExpertRegionInfoUtils.java | 73 +++++++ .../ningdatech/pmapi/common/util/GzipUtils.java | 89 ++++++++ .../ningdatech/pmapi/common/util/RegionUtils.java | 44 ++++ .../com/ningdatech/pmapi/common/util/StrUtils.java | 11 + .../com/ningdatech/pmapi/common/util/TagUtils.java | 42 ++++ .../expert/assembler/ExpertInfoCmdAssembler.java | 36 ++++ .../constant/ExpertSensitiveFieldTypeEnum.java | 28 +++ .../constant/ExpertUserInfoSensitiveFieldEnum.java | 67 ++++++ .../pmapi/expert/controller/ExpertController.java | 8 + .../ExpertInfoSensitiveFieldModifyCheckHelper.java | 161 +++++++++++++++ .../pmapi/expert/manage/ExpertAdminManage.java | 76 ++++++- .../pmapi/expert/model/ModifyApplyExtraInfo.java | 29 +++ .../pmapi/expert/model/SensitiveModifySegment.java | 87 ++++++++ .../model/bo/ExpertInfoSensitiveFieldCheckBO.java | 78 +++++++ .../expert/model/cmd/ExpertInfoModifyCmd.java | 75 +++---- .../expert/model/dto/ModifyApplyExtraInfoDTO.java | 2 +- .../req/AdminExpertBasicInfoModifyRequest.java | 44 ++++ .../req/ExpertUserBasicInfoSubmitRequest.java | 7 +- .../model/vo/ExpertBasicInfoModifyResultVO.java | 25 +++ .../pmapi/expert/service/ExpertInfoService.java | 8 + .../expert/service/impl/ExpertInfoServiceImpl.java | 226 ++++++++++++++++++++- .../OrganizationMainManageTagController.java | 20 ++ .../entity/OrganizationMainManageTag.java | 89 ++++++++ .../helper/GovBusinessStripHelper.java | 8 + .../helper/impl/GovBusinessStripHelperImpl.java | 5 + .../mapper/OrganizationMainManageTagMapper.java | 16 ++ .../mapper/OrganizationMainManageTagMapper.xml | 5 + .../service/IOrganizationMainManageTagService.java | 16 ++ .../impl/OrganizationMainManageTagServiceImpl.java | 20 ++ 32 files changed, 1409 insertions(+), 46 deletions(-) create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/common/model/ExpertRegionModifyDiffBO.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/common/util/DictUtils.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/common/util/ExpertRegionInfoUtils.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/common/util/GzipUtils.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/common/util/RegionUtils.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/common/util/TagUtils.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/constant/ExpertSensitiveFieldTypeEnum.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/constant/ExpertUserInfoSensitiveFieldEnum.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoSensitiveFieldModifyCheckHelper.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ModifyApplyExtraInfo.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/model/SensitiveModifySegment.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/model/bo/ExpertInfoSensitiveFieldCheckBO.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/AdminExpertBasicInfoModifyRequest.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/model/vo/ExpertBasicInfoModifyResultVO.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/OrganizationMainManageTagController.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/organization/entity/OrganizationMainManageTag.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/organization/mapper/OrganizationMainManageTagMapper.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/organization/mapper/OrganizationMainManageTagMapper.xml create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/organization/service/IOrganizationMainManageTagService.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/organization/service/impl/OrganizationMainManageTagServiceImpl.java diff --git a/ningda-generator/src/main/java/com/ningdatech/generator/config/GeneratorCodeKingbaseConfig.java b/ningda-generator/src/main/java/com/ningdatech/generator/config/GeneratorCodeKingbaseConfig.java index 523c862..375261a 100644 --- a/ningda-generator/src/main/java/com/ningdatech/generator/config/GeneratorCodeKingbaseConfig.java +++ b/ningda-generator/src/main/java/com/ningdatech/generator/config/GeneratorCodeKingbaseConfig.java @@ -56,7 +56,7 @@ public class GeneratorCodeKingbaseConfig { } public static void main(String[] args) { - generate("Liuxinxin", "organization", PATH_LXX, "gov_business_strip"); + generate("Liuxinxin", "organization", PATH_LXX, "organization_main_manage_tag"); } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/model/ExpertRegionModifyDiffBO.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/model/ExpertRegionModifyDiffBO.java new file mode 100644 index 0000000..13a7d0a --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/model/ExpertRegionModifyDiffBO.java @@ -0,0 +1,19 @@ +package com.ningdatech.pmapi.common.model; + +import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; +import lombok.Data; + +import java.util.List; + +/** + * @author liuxinxin + * @date 2022/7/28 下午4:34 + */ +@Data +public class ExpertRegionModifyDiffBO { + + private List addList; + + private List removeList; + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/util/DictUtils.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/DictUtils.java new file mode 100644 index 0000000..e11630d --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/DictUtils.java @@ -0,0 +1,39 @@ +package com.ningdatech.pmapi.common.util; + +import cn.hutool.core.collection.CollUtil; +import com.ningdatech.pmapi.expert.model.DictionaryFieldInfo; + +import java.util.Comparator; +import java.util.List; + +/** + * @author liuxinxin + * @date 2022/7/28 下午2:14 + */ + +public class DictUtils { + + public static Boolean isValueEquals(List list1, List list2) { + if (CollUtil.isEmpty(list1) && CollUtil.isEmpty(list2)) { + return true; + } + boolean collectionStatusNotEquals = (CollUtil.isEmpty(list1) && CollUtil.isNotEmpty(list2)) + || (CollUtil.isEmpty(list2) && CollUtil.isNotEmpty(list1)); + if (collectionStatusNotEquals) { + return false; + } + if (list1.size() != list2.size()) { + return false; + } + list1.sort(Comparator.comparing(DictionaryFieldInfo::getDictionaryFieldName).thenComparing(DictionaryFieldInfo::getDictionaryCode)); + list2.sort(Comparator.comparing(DictionaryFieldInfo::getDictionaryFieldName).thenComparing(DictionaryFieldInfo::getDictionaryCode)); + + for (int i = 0; i < list1.size(); i++) { + if (!StrUtils.trimEquals(list1.get(i).getDictionaryFieldName(), list2.get(i).getDictionaryFieldName()) + || !StrUtils.trimEquals(list1.get(i).getDictionaryCode(), list2.get(i).getDictionaryCode())) { + return false; + } + } + return true; + } +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/util/ExpertRegionInfoUtils.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/ExpertRegionInfoUtils.java new file mode 100644 index 0000000..c36dfde --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/ExpertRegionInfoUtils.java @@ -0,0 +1,73 @@ +package com.ningdatech.pmapi.common.util; + +import com.ningdatech.pmapi.common.model.ExpertRegionModifyDiffBO; +import com.ningdatech.pmapi.expert.model.RegionDtoMapKey; +import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author liuxinxin + * @date 2022/7/28 下午4:33 + */ + +public class ExpertRegionInfoUtils { + + public static ExpertRegionModifyDiffBO modifyDiff(List beforeList, List afterList) { + ExpertRegionModifyDiffBO expertRegionModifyDiffBO = new ExpertRegionModifyDiffBO(); + List addList = new ArrayList<>(); + List removeList = new ArrayList<>(); + if (CollectionUtils.isEmpty(beforeList) && CollectionUtils.isEmpty(afterList)) { + expertRegionModifyDiffBO.setAddList(addList); + expertRegionModifyDiffBO.setRemoveList(removeList); + return expertRegionModifyDiffBO; + } else if (CollectionUtils.isEmpty(beforeList)) { + expertRegionModifyDiffBO.setAddList(afterList); + expertRegionModifyDiffBO.setRemoveList(removeList); + return expertRegionModifyDiffBO; + } else if (CollectionUtils.isEmpty(afterList)) { + expertRegionModifyDiffBO.setAddList(addList); + expertRegionModifyDiffBO.setRemoveList(beforeList); + return expertRegionModifyDiffBO; + } + + List beforeRegionDtoMapKeyList = beforeList.stream().map(r -> { + RegionDtoMapKey regionDtoMapKey = new RegionDtoMapKey(); + regionDtoMapKey.setRegionLevel(r.getRegionLevel()); + regionDtoMapKey.setRegionCode(r.getRegionCode()); + return regionDtoMapKey; + }).collect(Collectors.toList()); + + List afterRegionDtoMapKeyList = afterList.stream().map(r -> { + RegionDtoMapKey regionDtoMapKey = new RegionDtoMapKey(); + regionDtoMapKey.setRegionLevel(r.getRegionLevel()); + regionDtoMapKey.setRegionCode(r.getRegionCode()); + return regionDtoMapKey; + }).collect(Collectors.toList()); + + for (RegionDtoMapKey key : beforeRegionDtoMapKeyList) { + if (!afterRegionDtoMapKeyList.contains(key)) { + ExpertRegionInfo expertRegionInfo = new ExpertRegionInfo(); + expertRegionInfo.setRegionCode(key.getRegionCode()); + expertRegionInfo.setRegionLevel(key.getRegionLevel()); + removeList.add(expertRegionInfo); + } + } + + for (RegionDtoMapKey key : afterRegionDtoMapKeyList) { + if (!beforeRegionDtoMapKeyList.contains(key)) { + ExpertRegionInfo expertRegionInfo = new ExpertRegionInfo(); + expertRegionInfo.setRegionCode(key.getRegionCode()); + expertRegionInfo.setRegionLevel(key.getRegionLevel()); + addList.add(expertRegionInfo); + } + } + + expertRegionModifyDiffBO.setAddList(addList); + expertRegionModifyDiffBO.setRemoveList(removeList); + return expertRegionModifyDiffBO; + } +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/util/GzipUtils.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/GzipUtils.java new file mode 100644 index 0000000..5eed3e7 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/GzipUtils.java @@ -0,0 +1,89 @@ +package com.ningdatech.pmapi.common.util; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; + +/** + *

+ * 压缩为Gzip + *

+ * + * @author WendyYang + */ +public class GzipUtils { + /** + * 使用gzip进行压缩 + */ + public static String compress(String primStr) { + if (primStr == null || primStr.length() == 0) { + return primStr; + } + ByteArrayOutputStream out = new ByteArrayOutputStream(); + GZIPOutputStream gzip = null; + try { + gzip = new GZIPOutputStream(out); + gzip.write(primStr.getBytes()); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + if (gzip != null) { + try { + gzip.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + return new sun.misc.BASE64Encoder().encode(out.toByteArray()); + } + + /** + * 使用gzip进行解压缩 + */ + public static String uncompress(String compressedStr) { + if (compressedStr == null) { + return null; + } + ByteArrayOutputStream out = new ByteArrayOutputStream(); + ByteArrayInputStream in = null; + GZIPInputStream ginzip = null; + byte[] compressed = null; + String decompressed = null; + try { + compressed = new sun.misc.BASE64Decoder().decodeBuffer(compressedStr); + in = new ByteArrayInputStream(compressed); + ginzip = new GZIPInputStream(in); + + byte[] buffer = new byte[1024]; + int offset = -1; + while ((offset = ginzip.read(buffer)) != -1) { + out.write(buffer, 0, offset); + } + decompressed = out.toString(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (ginzip != null) { + try { + ginzip.close(); + } catch (IOException e) { + } + } + if (in != null) { + try { + in.close(); + } catch (IOException e) { + } + } + try { + out.close(); + } catch (IOException e) { + } + } + return decompressed; + } + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/util/RegionUtils.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/RegionUtils.java new file mode 100644 index 0000000..82e3b38 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/RegionUtils.java @@ -0,0 +1,44 @@ +package com.ningdatech.pmapi.common.util; + +import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Comparator; +import java.util.List; + +/** + * @author liuxinxin + * @date 2022/7/28 下午2:27 + */ + +public class RegionUtils { + + public static Boolean isValueEquals(ExpertRegionInfo regionInfo1, ExpertRegionInfo regionInfo2) { + return regionInfo1.getRegionCode().equals(regionInfo2.getRegionCode()) + && regionInfo1.getRegionLevel().equals(regionInfo2.getRegionLevel()); + } + + public static Boolean isValueEquals(List list1, List list2) { + if (CollectionUtils.isEmpty(list1) && CollectionUtils.isEmpty(list2)) { + return true; + } + boolean collectionStatusNotEquals = (CollectionUtils.isEmpty(list1) && CollectionUtils.isNotEmpty(list2)) + || (CollectionUtils.isEmpty(list2) && CollectionUtils.isNotEmpty(list1)); + if (collectionStatusNotEquals) { + return false; + } + if (list1.size() != list2.size()) { + return false; + } + list1.sort(Comparator.comparing(ExpertRegionInfo::getRegionCode).thenComparing(ExpertRegionInfo::getRegionLevel)); + list2.sort(Comparator.comparing(ExpertRegionInfo::getRegionCode).thenComparing(ExpertRegionInfo::getRegionLevel)); + + for (int i = 0; i < list1.size(); i++) { + if (!StrUtils.trimEquals(list1.get(i).getRegionCode(), list2.get(i).getRegionCode()) + || !list1.get(i).getRegionLevel().equals(list2.get(i).getRegionLevel())) { + return false; + } + } + return true; + } +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/util/StrUtils.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/StrUtils.java index f034ed1..86982a4 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/common/util/StrUtils.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/StrUtils.java @@ -26,4 +26,15 @@ public class StrUtils extends StrUtil { return split(str, StrPool.COMMA); } + public static boolean trimEquals(String str1, String str2) { + if (isNotBlank(str1)) { + str1 = str1.trim(); + } + if (isNotBlank(str2)) { + str2 = str2.trim(); + } + return equals(str1, str2); + } + + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/util/TagUtils.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/TagUtils.java new file mode 100644 index 0000000..1a00c92 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/TagUtils.java @@ -0,0 +1,42 @@ +package com.ningdatech.pmapi.common.util; + +import com.ningdatech.pmapi.expert.model.TagFieldInfo; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Comparator; +import java.util.List; + +/** + * @author liuxinxin + * @date 2022/7/28 下午2:14 + */ +public class TagUtils { + + private TagUtils() { + } + + public static Boolean isValueEquals(List list1, List list2) { + if (CollectionUtils.isEmpty(list1) && CollectionUtils.isEmpty(list2)) { + return true; + } + + boolean collectionStatusNotEquals = (CollectionUtils.isEmpty(list1) && CollectionUtils.isNotEmpty(list2)) + || (CollectionUtils.isEmpty(list2) && CollectionUtils.isNotEmpty(list1)); + if (collectionStatusNotEquals) { + return false; + } + if (list1.size() != list2.size()) { + return false; + } + list1.sort(Comparator.comparing(TagFieldInfo::getTagFieldName).thenComparing(TagFieldInfo::getTagCode)); + list2.sort(Comparator.comparing(TagFieldInfo::getTagFieldName).thenComparing(TagFieldInfo::getTagCode)); + + for (int i = 0; i < list1.size(); i++) { + if (!StrUtils.trimEquals(list1.get(i).getTagFieldName(), list2.get(i).getTagFieldName()) + || !StrUtils.trimEquals(list1.get(i).getTagCode(), list2.get(i).getTagCode())) { + return false; + } + } + return true; + } +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertInfoCmdAssembler.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertInfoCmdAssembler.java index f22c6e8..73b98be 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertInfoCmdAssembler.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertInfoCmdAssembler.java @@ -2,7 +2,9 @@ package com.ningdatech.pmapi.expert.assembler; import com.ningdatech.pmapi.expert.model.*; +import com.ningdatech.pmapi.expert.model.bo.ExpertInfoSensitiveFieldCheckBO; import com.ningdatech.pmapi.expert.model.cmd.ExpertFullInfoSaveCmd; +import com.ningdatech.pmapi.expert.model.cmd.ExpertInfoModifyCmd; import com.ningdatech.pmapi.expert.model.dto.*; import com.ningdatech.pmapi.meta.constant.DictExpertInfoTypeEnum; import com.ningdatech.pmapi.meta.constant.ExpertTagEnum; @@ -221,4 +223,38 @@ public class ExpertInfoCmdAssembler { return expertUserFullInfoDTO; } + public static ExpertInfoModifyCmd buildExpertInfoModifyCmd(Long userId + , ExpertBasicInfo expertBasicInfo, ExpertEduInfo expertEduInfo + , ExpertJobInfo expertJobInfo, ExpertProfessionalInfo expertProfessionalInfo + , ExpertRecommendInfo recommendInfo + , ExpertOtherInfo otherInfo + , ExpertInfoSensitiveFieldCheckBO expertInfoSensitiveFieldCheckBO + , ModifyApplyExtraInfo modifyApplyExtraInfo) { + ExpertInfoModifyCmd expertInfoModifyCmd = new ExpertInfoModifyCmd(); + ExpertUserFullInfoDTO expertUserInfoDTO = buildExpertUserFullInfoDTO(expertBasicInfo, expertEduInfo, expertJobInfo, expertProfessionalInfo, recommendInfo, otherInfo); + + List expertDictionaryList = buildExpertDictionaryList(expertBasicInfo, expertEduInfo, expertJobInfo, expertProfessionalInfo, recommendInfo); + List expertTagList = buildExpertTagList(expertProfessionalInfo, expertBasicInfo, otherInfo); + // 专家履职意向(区域编码) + List expertIntentionWorkRegionInfo = buildExpertRegionList(expertBasicInfo); + List expertAvoidCompanyList = buildExpertAvoidCompanyList(expertProfessionalInfo); + + if (Objects.nonNull(modifyApplyExtraInfo)) { + ModifyApplyExtraInfoDTO modifyApplyExtraInfoDTO = new ModifyApplyExtraInfoDTO(); + modifyApplyExtraInfoDTO.setEvidenceList(modifyApplyExtraInfo.getEvidenceList()); + modifyApplyExtraInfoDTO.setFactSheet(modifyApplyExtraInfo.getFactSheet()); + expertInfoModifyCmd.setModifyApplyExtraInfo(modifyApplyExtraInfoDTO); + } + + expertInfoModifyCmd.setUserId(userId); + expertInfoModifyCmd.setExpertUserInfoDTO(expertUserInfoDTO); + expertInfoModifyCmd.setExpertDictionaryList(expertDictionaryList); + expertInfoModifyCmd.setExpertTagList(expertTagList); + expertInfoModifyCmd.setExpertIntentionWorkRegionInfo(expertIntentionWorkRegionInfo); + expertInfoModifyCmd.setExpertAvoidCompanyList(expertAvoidCompanyList); + expertInfoModifyCmd.setExpertInfoSensitiveFieldCheckBO(expertInfoSensitiveFieldCheckBO); + return expertInfoModifyCmd; + } + + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/constant/ExpertSensitiveFieldTypeEnum.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/constant/ExpertSensitiveFieldTypeEnum.java new file mode 100644 index 0000000..5a3880d --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/constant/ExpertSensitiveFieldTypeEnum.java @@ -0,0 +1,28 @@ +package com.ningdatech.pmapi.expert.constant; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author liuxinxin + * @date 2022/7/28 上午11:19 + */ +@AllArgsConstructor +@Getter +public enum ExpertSensitiveFieldTypeEnum { + + /** + * 专家敏感信息修改 + */ + expert_sensitive_info_field, + + /** + * 专家层级修改 + */ + expert_region_field, + + /** + * 专家履职意向修改 + */ + expert_intention_field; +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/constant/ExpertUserInfoSensitiveFieldEnum.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/constant/ExpertUserInfoSensitiveFieldEnum.java new file mode 100644 index 0000000..962cade --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/constant/ExpertUserInfoSensitiveFieldEnum.java @@ -0,0 +1,67 @@ +package com.ningdatech.pmapi.expert.constant; + + +import com.ningdatech.pmapi.expert.model.DictionaryFieldInfo; +import com.ningdatech.pmapi.expert.model.TagFieldInfo; +import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; +import java.util.List; + +/** + * @author liuxinxin + * @date 2022/7/27 下午3:34 + * 专家修改信息需要审核的字段 + */ +@AllArgsConstructor +@Getter +public enum ExpertUserInfoSensitiveFieldEnum { + + // 手机号码 + phone_no("phone_no", "手机号码", String.class, UnitType.single), + // 电子邮箱 + email("email", "电子邮箱", String.class, UnitType.single), + // 专家层级 + expert_region("expert_region", "专家层级", ExpertRegionInfo.class, UnitType.single), + // 履职意向 + expert_intention_work_region("expert_intention_work_region", "履职意向", ExpertRegionInfo.class, UnitType.list), + // 工作单位(单位code和单位法人编号是关联的) + company("company", "工作单位", String.class, UnitType.single), + legal_entity_code("legal_entity_code", "单位法人编号", String.class, UnitType.single), + // 行政职级 + administrative_rank("administrative_rank", "行政职级", DictionaryFieldInfo.class, UnitType.list), + // 职称级别 + title_level("title_level", "职称级别", DictionaryFieldInfo.class, UnitType.list), + // 擅长方向 + good_at("good_at", "擅长方向", TagFieldInfo.class, UnitType.list), + // 技术专长 + technical_expertise("technical_expertise", "技术专长", TagFieldInfo.class, UnitType.list), + // 行业领域 + industry_sector("industry_sector", "行业领域", TagFieldInfo.class, UnitType.list), + // 其他标签 + other("other", "其他标签", TagFieldInfo.class, UnitType.list); + + private final String key; + private final String value; + private final Class aClass; + private final UnitType type; + + public static List getSensitiveDictionaryList() { + return Arrays.asList(administrative_rank.name(), title_level.name()); + } + + @AllArgsConstructor + public enum UnitType { + /** + * 单个 + */ + single, + + /** + * list + */ + list; + } +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertController.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertController.java index b8a43cd..1bb6a08 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertController.java @@ -5,8 +5,10 @@ import com.ningdatech.basic.model.PageVo; import com.ningdatech.pmapi.expert.manage.ExpertAdminManage; import com.ningdatech.pmapi.expert.manage.ExpertManage; import com.ningdatech.pmapi.expert.model.ExpertAdminExpertManageQuery; +import com.ningdatech.pmapi.expert.model.req.AdminExpertBasicInfoModifyRequest; import com.ningdatech.pmapi.expert.model.req.ExpertUserBasicInfoSubmitRequest; import com.ningdatech.pmapi.expert.model.vo.ExpertAdminExpertManageListVO; +import com.ningdatech.pmapi.expert.model.vo.ExpertBasicInfoModifyResultVO; import com.ningdatech.pmapi.expert.model.vo.ExpertFullInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -51,4 +53,10 @@ public class ExpertController { return expertAdminManage.getExpertLibraryList(expertAdminExpertManageQuery); } + @PostMapping("/basic-info-modify") + @ApiOperation("专家信息编辑") + public ExpertBasicInfoModifyResultVO expertBasicInfoModify(@Valid @RequestBody AdminExpertBasicInfoModifyRequest request) { +// ExpertUserInfoValidator.expertBasicInfoModifyRequestValidate(request); + return expertAdminManage.adminModifyExpertBasicInfo(request); + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoSensitiveFieldModifyCheckHelper.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoSensitiveFieldModifyCheckHelper.java new file mode 100644 index 0000000..9e7005e --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoSensitiveFieldModifyCheckHelper.java @@ -0,0 +1,161 @@ +package com.ningdatech.pmapi.expert.helper; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ningdatech.basic.exception.BizException; +import com.ningdatech.file.entity.vo.result.AttachFileVo; +import com.ningdatech.file.service.FileService; +import com.ningdatech.pmapi.expert.assembler.ExpertUserInfoAssembler; +import com.ningdatech.pmapi.expert.constant.ExpertSensitiveFieldTypeEnum; +import com.ningdatech.pmapi.expert.constant.ExpertUserInfoSensitiveFieldEnum; +import com.ningdatech.pmapi.expert.entity.ExpertIntentionWorkRegion; +import com.ningdatech.pmapi.expert.model.*; +import com.ningdatech.pmapi.expert.model.bo.ExpertInfoSensitiveFieldCheckBO; +import com.ningdatech.pmapi.expert.model.dto.ExpertFullInfoAllDTO; +import com.ningdatech.pmapi.expert.model.dto.ExpertUserFullInfoDTO; +import com.ningdatech.pmapi.expert.service.ExpertInfoService; +import com.ningdatech.pmapi.expert.service.IExpertIntentionWorkRegionService; +import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * @author liuxinxin + * @date 2022/7/28 上午10:09 + */ +@Component +@RequiredArgsConstructor +public class ExpertInfoSensitiveFieldModifyCheckHelper { + + private final ExpertInfoService expertInfoService; + private final ExpertInfoCommonHelper expertInfoCommonHelper; + private final FileService fileService; + private final ExpertUserInfoAssembler expertUserInfoAssembler; + private final IExpertIntentionWorkRegionService iExpertIntentionWorkRegionService; + + + public ExpertInfoSensitiveFieldCheckBO expertInfoSensitiveFieldModifyCheck(ExpertBasicInfo applyBasicInfo + , ExpertEduInfo applyEduInfo, ExpertJobInfo applyJobInfo, ExpertProfessionalInfo applyProfessionalInfo, Long expertUserId) { + + ExpertFullInfoAllDTO expertUserFullInfoAll = expertInfoService.getExpertUserFullInfoAll(expertUserId); + if (Objects.isNull(expertUserFullInfoAll)) { + throw new BizException("当前账号尚未有专家相关信息,无法更新"); + } + List attachFiles = fileService.getByIds(expertInfoCommonHelper.getExpertFileIdList(expertUserFullInfoAll)); + + ExpertUserFullInfoDTO expertUserInfoDTO = expertUserFullInfoAll.getExpertUserInfoDTO(); + // 字典字典段map + Map> dictionaryFieldInfoMap = + expertUserInfoAssembler.buildDictionaryFieldInfoMap(expertUserFullInfoAll.getExpertDictionaryList()); + // 专家文件资料map + Map fileBasicInfoMap = ExpertUserInfoAssembler.buildFileBasicInfoMap(attachFiles); + // 专家标签字段map + Map> tagFieldInfoMap = expertUserInfoAssembler.buildTagFieldInfoMap(expertUserFullInfoAll.getExpertTagList()); + ExpertBasicInfo originalBasicInfo = expertUserInfoAssembler + .buildExpertBasicInfo(expertUserInfoDTO, dictionaryFieldInfoMap + , tagFieldInfoMap, expertUserFullInfoAll.getExpertIntentionWorkRegionInfo(), fileBasicInfoMap); + + ExpertJobInfo originalJobInfo = ExpertUserInfoAssembler.buildExpertJobInfo(expertUserInfoDTO, dictionaryFieldInfoMap); + ExpertProfessionalInfo originalProfessionalInfo = ExpertUserInfoAssembler.buildExpertProfessionalInfo(expertUserInfoDTO + , dictionaryFieldInfoMap, tagFieldInfoMap, fileBasicInfoMap, expertUserFullInfoAll.getExpertAvoidCompanyList()); + + + // 敏感字段 手机号/电子邮箱/专家层级/履职意向/工作单位/单位法人编号/行政职级/职称级别/擅长方向/技术专长/行业领域/其他标签 + // 敏感信息字段修改 + List sensitiveModifySegmentList = new ArrayList<>(); + sensitiveModifySegmentList + .add(new SensitiveModifySegment(ExpertUserInfoSensitiveFieldEnum.phone_no + , originalBasicInfo.getPhoneNo(), applyBasicInfo.getPhoneNo())); + sensitiveModifySegmentList + .add(new SensitiveModifySegment(ExpertUserInfoSensitiveFieldEnum.email + , originalBasicInfo.getEmail(), applyBasicInfo.getEmail())); + sensitiveModifySegmentList + .add(new SensitiveModifySegment(ExpertUserInfoSensitiveFieldEnum.company + , originalJobInfo.getCompany(), applyJobInfo.getCompany())); + sensitiveModifySegmentList + .add(new SensitiveModifySegment(ExpertUserInfoSensitiveFieldEnum.legal_entity_code + , originalJobInfo.getLegalEntityCode(), applyJobInfo.getLegalEntityCode())); + sensitiveModifySegmentList + .add(new SensitiveModifySegment(ExpertUserInfoSensitiveFieldEnum.administrative_rank + , originalJobInfo.getAdministrativeRank() + , assemblerDictionaryFieldInfoList(applyJobInfo.getAdministrativeRank(), ExpertUserInfoSensitiveFieldEnum.administrative_rank.getKey()))); + sensitiveModifySegmentList + .add(new SensitiveModifySegment(ExpertUserInfoSensitiveFieldEnum.title_level + , originalProfessionalInfo.getTitleLevel() + , assemblerDictionaryFieldInfoList(applyProfessionalInfo.getTitleLevel(), ExpertUserInfoSensitiveFieldEnum.title_level.getKey()))); + sensitiveModifySegmentList + .add(new SensitiveModifySegment(ExpertUserInfoSensitiveFieldEnum.good_at + , originalProfessionalInfo.getGoodAt() + , assemblerTagFieldInfoList(applyProfessionalInfo.getGoodAt(), ExpertUserInfoSensitiveFieldEnum.good_at.getKey()))); + sensitiveModifySegmentList + .add(new SensitiveModifySegment(ExpertUserInfoSensitiveFieldEnum.technical_expertise + , originalProfessionalInfo.getTechnicalExpertise() + , assemblerTagFieldInfoList(applyProfessionalInfo.getTechnicalExpertise(), ExpertUserInfoSensitiveFieldEnum.technical_expertise.getKey()))); + sensitiveModifySegmentList + .add(new SensitiveModifySegment(ExpertUserInfoSensitiveFieldEnum.industry_sector + , originalProfessionalInfo.getIndustrySector() + , assemblerTagFieldInfoList(applyProfessionalInfo.getIndustrySector(), ExpertUserInfoSensitiveFieldEnum.industry_sector.getKey()))); + sensitiveModifySegmentList + .add(new SensitiveModifySegment(ExpertUserInfoSensitiveFieldEnum.other + , originalProfessionalInfo.getOther() + , assemblerTagFieldInfoList(applyProfessionalInfo.getOther(), ExpertUserInfoSensitiveFieldEnum.other.getKey()))); + // 专家层级修改 + sensitiveModifySegmentList + .add(new SensitiveModifySegment(ExpertSensitiveFieldTypeEnum.expert_region_field, ExpertUserInfoSensitiveFieldEnum.expert_region + , originalBasicInfo.getExpertRegionInfo(), applyBasicInfo.getExpertRegionInfo())); + // 履职意向修改 + sensitiveModifySegmentList + .add(new SensitiveModifySegment( + ExpertSensitiveFieldTypeEnum.expert_intention_field, ExpertUserInfoSensitiveFieldEnum.expert_intention_work_region + , originalBasicInfo.getExpertIntentionWorkRegions(), applyBasicInfo.getExpertIntentionWorkRegions())); + + return new ExpertInfoSensitiveFieldCheckBO(sensitiveModifySegmentList); + } + + public ExpertInfoSensitiveFieldCheckBO intentionWorkRegionsModifyCheck(Long expertUserId, List applyExpertIntentionWorkRegions) { + List sensitiveModifySegmentList = new ArrayList<>(); + + LambdaQueryWrapper expertIntentionWorkRegionEq = Wrappers.lambdaQuery(ExpertIntentionWorkRegion.class) + .eq(ExpertIntentionWorkRegion::getUserId, expertUserId); + List expertIntentionWorkRegions = iExpertIntentionWorkRegionService.list(expertIntentionWorkRegionEq); + + List currentExpertIntentionWorkRegions = new ArrayList<>(); + if (CollUtil.isNotEmpty(expertIntentionWorkRegions)) { + expertIntentionWorkRegions.forEach(r -> { + ExpertRegionInfo expertRegionInfo = new ExpertRegionInfo(); + expertRegionInfo.setRegionLevel(r.getRegionLevel()); + expertRegionInfo.setRegionCode(r.getRegionCode()); + currentExpertIntentionWorkRegions.add(expertRegionInfo); + }); + } + // 履职意向修改 + sensitiveModifySegmentList + .add(new SensitiveModifySegment( + ExpertSensitiveFieldTypeEnum.expert_intention_field, ExpertUserInfoSensitiveFieldEnum.expert_intention_work_region + , currentExpertIntentionWorkRegions, applyExpertIntentionWorkRegions)); + + return new ExpertInfoSensitiveFieldCheckBO(sensitiveModifySegmentList); + } + + + private List assemblerDictionaryFieldInfoList(List dictionaryFieldInfoList, String fieldName) { + if (CollUtil.isNotEmpty(dictionaryFieldInfoList)) { + dictionaryFieldInfoList.forEach(r -> r.setDictionaryFieldName(fieldName)); + } + return dictionaryFieldInfoList; + } + + private List assemblerTagFieldInfoList(List tagFieldInfoList, String fieldName) { + if (CollUtil.isNotEmpty(tagFieldInfoList)) { + tagFieldInfoList.forEach(r -> r.setTagFieldName(fieldName)); + } + return tagFieldInfoList; + } + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertAdminManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertAdminManage.java index 49655b7..e581bd6 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertAdminManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertAdminManage.java @@ -1,16 +1,32 @@ package com.ningdatech.pmapi.expert.manage; import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.model.PageVo; +import com.ningdatech.pmapi.common.enumeration.BoolDisplayEnum; import com.ningdatech.pmapi.common.helper.RegionLimitHelper; +import com.ningdatech.pmapi.expert.assembler.ExpertInfoCmdAssembler; import com.ningdatech.pmapi.expert.constant.ExpertAccountStatusEnum; +import com.ningdatech.pmapi.expert.constant.ExpertApplyStatusEnum; +import com.ningdatech.pmapi.expert.constant.ExpertApplyTypeEnum; import com.ningdatech.pmapi.expert.constant.QueryExpertAccountStatusEnum; +import com.ningdatech.pmapi.expert.entity.ExpertMetaApply; +import com.ningdatech.pmapi.expert.helper.ExpertInfoSensitiveFieldModifyCheckHelper; import com.ningdatech.pmapi.expert.helper.PermissionCheckHelper; -import com.ningdatech.pmapi.expert.model.ExpertAdminExpertManageQuery; +import com.ningdatech.pmapi.expert.model.*; +import com.ningdatech.pmapi.expert.model.bo.ExpertInfoSensitiveFieldCheckBO; import com.ningdatech.pmapi.expert.model.cmd.ExpertAdminExpertManageQueryCmd; +import com.ningdatech.pmapi.expert.model.cmd.ExpertInfoModifyCmd; import com.ningdatech.pmapi.expert.model.query.ExpertDictionaryQuery; import com.ningdatech.pmapi.expert.model.query.ExpertTagQuery; +import com.ningdatech.pmapi.expert.model.req.AdminExpertBasicInfoModifyRequest; +import com.ningdatech.pmapi.expert.model.req.MetaApplyResultRequest; import com.ningdatech.pmapi.expert.model.vo.ExpertAdminExpertManageListVO; +import com.ningdatech.pmapi.expert.model.vo.ExpertBasicInfoModifyResultVO; +import com.ningdatech.pmapi.expert.service.ExpertInfoService; +import com.ningdatech.pmapi.expert.service.IExpertMetaApplyService; import com.ningdatech.pmapi.meta.constant.DictExpertInfoTypeEnum; import com.ningdatech.pmapi.meta.constant.ExpertTagEnum; import com.ningdatech.pmapi.meta.model.bo.RegionContainsBO; @@ -34,6 +50,10 @@ public class ExpertAdminManage { private final PermissionCheckHelper permissionCheckHelper; private final RegionLimitHelper regionLimitHelper; + private final IExpertMetaApplyService iExpertMetaApplyService; + private final ExpertInfoSensitiveFieldModifyCheckHelper expertInfoSensitiveFieldModifyCheckHelper; + private final ExpertInfoService expertInfoService; + private final ExpertMetaApplyManage expertMetaApplyManage; /** * 专家管理员使用 专家库列表查询 @@ -139,4 +159,58 @@ public class ExpertAdminManage { return expertAdminExpertManageQueryCmd; } + + /** + * 专家管理员修改专家的个人信息接口(包含专家层级变更) + * + * @param request + * @return + */ + public ExpertBasicInfoModifyResultVO adminModifyExpertBasicInfo(AdminExpertBasicInfoModifyRequest request) { + Long adminUserId = LoginUserUtil.getUserId(); + Long expertUserId = request.getExpertUserId(); + // 校验当前是否有信息变更审核 如有,无法变更信息 + LambdaQueryWrapper infoModifyEq = Wrappers.lambdaQuery(ExpertMetaApply.class) + .eq(ExpertMetaApply::getUserId, expertUserId) + .eq(ExpertMetaApply::getApplyType, ExpertApplyTypeEnum.EXPERT_INFO_MODIFY.getKey()) + .eq(ExpertMetaApply::getApplyStatus, ExpertApplyStatusEnum.PENDING_REVIEW.getKey()) + .eq(ExpertMetaApply::getDisplayEnable, BoolDisplayEnum.Y.name()); + ExpertMetaApply infoModifyApply = iExpertMetaApplyService.getOne(infoModifyEq); + if (Objects.nonNull(infoModifyApply)) { + throw new BizException("该账号还有信息修审核审核未审批,请撤销或审批后处理"); + } + // 校验当前是否有层级变更审核,如有需要审核通过或撤销审核后重新提交 + LambdaQueryWrapper expertStorageEq = Wrappers.lambdaQuery(ExpertMetaApply.class) + .eq(ExpertMetaApply::getUserId, expertUserId) + .eq(ExpertMetaApply::getApplyType, ExpertApplyTypeEnum.EXPERT_STORAGE.getKey()) + .eq(ExpertMetaApply::getApplyStatus, ExpertApplyStatusEnum.PENDING_REVIEW.getKey()) + .eq(ExpertMetaApply::getDisplayEnable, BoolDisplayEnum.Y.name()); + ExpertMetaApply expertStorageApply = iExpertMetaApplyService.getOne(expertStorageEq); + if (Objects.nonNull(expertStorageApply)) { + throw new BizException("当前账号还有入库审核未审批,请撤销或审批后处理"); + } + + ExpertBasicInfo basicInfo = request.getBasicInfo(); + ExpertEduInfo eduInfo = request.getEduInfo(); + ExpertJobInfo jobInfo = request.getJobInfo(); + ExpertProfessionalInfo professionalInfo = request.getProfessionalInfo(); + ExpertRecommendInfo recommendInfo = request.getRecommendInfo(); + ExpertOtherInfo otherInfo = request.getExpertOtherInfo(); + + ExpertInfoSensitiveFieldCheckBO expertInfoSensitiveFieldCheckBO = + expertInfoSensitiveFieldModifyCheckHelper.expertInfoSensitiveFieldModifyCheck(basicInfo, eduInfo, jobInfo, professionalInfo, expertUserId); + ExpertInfoModifyCmd expertInfoModifyCmd = ExpertInfoCmdAssembler + .buildExpertInfoModifyCmd(expertUserId, basicInfo, eduInfo, jobInfo, professionalInfo, recommendInfo, otherInfo, expertInfoSensitiveFieldCheckBO, null); + List applyIdList = expertInfoService.adminModifyExpertInfo(expertInfoModifyCmd, adminUserId); + + // 批量通过专家管理员审核 + for (Long applyId : applyIdList) { + MetaApplyResultRequest applyResult = new MetaApplyResultRequest(); + applyResult.setApplyId(applyId); + applyResult.setAuditOpinion("同意"); + applyResult.setApplyResult(true); + expertMetaApplyManage.metaApplyResult(applyResult); + } + return new ExpertBasicInfoModifyResultVO(false); + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ModifyApplyExtraInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ModifyApplyExtraInfo.java new file mode 100644 index 0000000..ff1965c --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ModifyApplyExtraInfo.java @@ -0,0 +1,29 @@ +package com.ningdatech.pmapi.expert.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author liuxinxin + * @date 2022/7/27 下午4:18 + * 提交修改申请额外信息 + */ +@Data +@ApiModel("提交修改申请额外信息") +public class ModifyApplyExtraInfo { + + /** + * 情况说明 + */ + @ApiModelProperty("申请说明") + private String factSheet; + + /** + * 证明材料 + */ + @ApiModelProperty("证明材料") + private List evidenceList; +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/SensitiveModifySegment.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/SensitiveModifySegment.java new file mode 100644 index 0000000..bfe93d0 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/SensitiveModifySegment.java @@ -0,0 +1,87 @@ +package com.ningdatech.pmapi.expert.model; + + +import com.ningdatech.pmapi.common.util.DictUtils; +import com.ningdatech.pmapi.common.util.RegionUtils; +import com.ningdatech.pmapi.common.util.StrUtils; +import com.ningdatech.pmapi.common.util.TagUtils; +import com.ningdatech.pmapi.expert.constant.ExpertSensitiveFieldTypeEnum; +import com.ningdatech.pmapi.expert.constant.ExpertUserInfoSensitiveFieldEnum; +import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.List; + +/** + * @author liuxinxin + * @date 2022/7/28 上午11:28 + */ +@Data +@ApiModel("需要审核字段部分") +public class SensitiveModifySegment { + + public SensitiveModifySegment(ExpertUserInfoSensitiveFieldEnum fieldName, Object original, Object apply) { + this.fieldName = fieldName; + this.original = original; + this.apply = apply; + } + + public SensitiveModifySegment(ExpertSensitiveFieldTypeEnum fieldType, ExpertUserInfoSensitiveFieldEnum fieldName, Object original, Object apply) { + this.fieldType = fieldType; + this.fieldName = fieldName; + this.original = original; + this.apply = apply; + } + + + private ExpertSensitiveFieldTypeEnum fieldType = ExpertSensitiveFieldTypeEnum.expert_sensitive_info_field; + + private ExpertUserInfoSensitiveFieldEnum fieldName; + + private Object original; + + private Object apply; + + public Boolean isValueEquals() { + switch (fieldName) { + case phone_no: + case email: + case company: + case legal_entity_code: { + return StrUtils.trimEquals((String) this.original, (String) this.apply); + } + case administrative_rank: + case title_level: { + return DictUtils.isValueEquals((List) this.original + , (List) this.apply); + } + case good_at: + case technical_expertise: + case industry_sector: + case other: { + return TagUtils.isValueEquals((List) this.original, (List) this.apply); + } + case expert_region: + return RegionUtils.isValueEquals((ExpertRegionInfo) this.original, (ExpertRegionInfo) this.apply); + case expert_intention_work_region: + return RegionUtils.isValueEquals((List) this.original, (List) this.apply); + default: + return this.original.equals(this.apply); + } + } + + public static Boolean isModify(List segmentList) { + if (CollectionUtils.isEmpty(segmentList)) { + return false; + } + for (SensitiveModifySegment segment : segmentList) { + if (!segment.isValueEquals()) { + return true; + } + } + return false; + } + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/bo/ExpertInfoSensitiveFieldCheckBO.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/bo/ExpertInfoSensitiveFieldCheckBO.java new file mode 100644 index 0000000..bb0e530 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/bo/ExpertInfoSensitiveFieldCheckBO.java @@ -0,0 +1,78 @@ +package com.ningdatech.pmapi.expert.model.bo; + + +import com.ningdatech.pmapi.expert.constant.ExpertSensitiveFieldTypeEnum; +import com.ningdatech.pmapi.expert.model.SensitiveModifySegment; +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author liuxinxin + * @date 2022/7/28 上午11:18 + */ +@Data +public class ExpertInfoSensitiveFieldCheckBO { + + private Boolean hasModify; + + /** + * 专家敏感信息是否修改 + */ + private Boolean isExpertSensitiveInfoModify; + + /** + * 专家敏感信息原值和申请值 + */ + private List expertSensitiveInfoFieldSegmentList; + + /** + * 专家层级是否修改 + */ + private Boolean isExpertRegionModify; + /** + * 专家层级修改原值和申请值 + */ + private List expertRegionFieldSegmentList; + + /** + * 专家履职意向是否修改 + */ + private Boolean isExpertIntentionModify; + + /** + * 专家履职意向修改原值和申请值 + */ + private List expertIntentionFieldSegmentList; + + public ExpertInfoSensitiveFieldCheckBO(List sensitiveModifySegmentList) { + Map> collect = sensitiveModifySegmentList + .stream().collect(Collectors.groupingBy(SensitiveModifySegment::getFieldType)); + + this.expertSensitiveInfoFieldSegmentList = collect.get(ExpertSensitiveFieldTypeEnum.expert_sensitive_info_field); + if (CollectionUtils.isEmpty(expertSensitiveInfoFieldSegmentList)) { + this.expertSensitiveInfoFieldSegmentList = new ArrayList<>(); + } + this.isExpertSensitiveInfoModify = SensitiveModifySegment.isModify(expertSensitiveInfoFieldSegmentList); + + this.expertRegionFieldSegmentList = collect.get(ExpertSensitiveFieldTypeEnum.expert_region_field); + if (CollectionUtils.isEmpty(expertRegionFieldSegmentList)) { + this.expertRegionFieldSegmentList = new ArrayList<>(); + } + this.isExpertRegionModify = SensitiveModifySegment.isModify(expertRegionFieldSegmentList); + + this.expertIntentionFieldSegmentList = collect.get(ExpertSensitiveFieldTypeEnum.expert_intention_field); + if (CollectionUtils.isEmpty(expertIntentionFieldSegmentList)) { + this.expertIntentionFieldSegmentList = new ArrayList<>(); + } + this.isExpertIntentionModify = SensitiveModifySegment.isModify(expertIntentionFieldSegmentList); + + this.hasModify = this.isExpertSensitiveInfoModify || this.isExpertRegionModify || this.isExpertIntentionModify; + } + + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertInfoModifyCmd.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertInfoModifyCmd.java index 28a82cd..978d955 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertInfoModifyCmd.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertInfoModifyCmd.java @@ -1,37 +1,38 @@ -//package com.ningdatech.pmapi.expert.model.cmd; -// -//import com.ningdatech.emapi.expert.entity.bo.ExpertInfoSensitiveFieldCheckBO; -//import com.ningdatech.emapi.expert.entity.dto.*; -//import lombok.Data; -// -//import java.util.List; -// -///** -// * @author liuxinxin -// * @date 2022/7/28 下午2:43 -// */ -//@Data -//public class ExpertInfoModifyCmd { -// -// private Long userId; -// -// private ExpertUserFullInfoDTO expertUserInfoDTO; -// -// private List expertDictionaryList; -// -// private List expertTagList; -// -// /** -// * 专家履职意向(区域编码) -// */ -// private List expertIntentionWorkRegionInfo; -// -// /** -// * 回避单位列表 -// */ -// private List expertAvoidCompanyList; -// -// private ExpertInfoSensitiveFieldCheckBO expertInfoSensitiveFieldCheckBO; -// -// private ModifyApplyExtraInfoDTO modifyApplyExtraInfo; -//} +package com.ningdatech.pmapi.expert.model.cmd; + + +import com.ningdatech.pmapi.expert.model.bo.ExpertInfoSensitiveFieldCheckBO; +import com.ningdatech.pmapi.expert.model.dto.*; +import lombok.Data; + +import java.util.List; + +/** + * @author liuxinxin + * @date 2022/7/28 下午2:43 + */ +@Data +public class ExpertInfoModifyCmd { + + private Long userId; + + private ExpertUserFullInfoDTO expertUserInfoDTO; + + private List expertDictionaryList; + + private List expertTagList; + + /** + * 专家履职意向(区域编码) + */ + private List expertIntentionWorkRegionInfo; + + /** + * 回避单位列表 + */ + private List expertAvoidCompanyList; + + private ExpertInfoSensitiveFieldCheckBO expertInfoSensitiveFieldCheckBO; + + private ModifyApplyExtraInfoDTO modifyApplyExtraInfo; +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ModifyApplyExtraInfoDTO.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ModifyApplyExtraInfoDTO.java index 082c5fc..7cb05ea 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ModifyApplyExtraInfoDTO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ModifyApplyExtraInfoDTO.java @@ -1,6 +1,6 @@ package com.ningdatech.pmapi.expert.model.dto; -import com.ningdatech.pmapi.common.model.FileBasicInfo; +import com.ningdatech.pmapi.expert.model.FileBasicInfo; import lombok.Data; import javax.validation.constraints.NotBlank; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/AdminExpertBasicInfoModifyRequest.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/AdminExpertBasicInfoModifyRequest.java new file mode 100644 index 0000000..43342ad --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/AdminExpertBasicInfoModifyRequest.java @@ -0,0 +1,44 @@ +package com.ningdatech.pmapi.expert.model.req; + + +import com.ningdatech.pmapi.expert.model.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author liuxinxin + * @date 2022/8/19 下午6:40 + */ +@Data +@ApiModel("专家管理员专家信息更新请求") +public class AdminExpertBasicInfoModifyRequest { + + @ApiModelProperty("专家用户id") + private Long expertUserId; + + @NotNull + @ApiModelProperty("基本信息") + private ExpertBasicInfo basicInfo; + + @NotNull + @ApiModelProperty("学历信息") + private ExpertEduInfo eduInfo; + + @NotNull + @ApiModelProperty("职业信息") + private ExpertJobInfo jobInfo; + + @NotNull + @ApiModelProperty("专业信息") + private ExpertProfessionalInfo professionalInfo; + + @NotNull + @ApiModelProperty("推荐信息") + private ExpertRecommendInfo recommendInfo; + + @ApiModelProperty("其他信息") + private ExpertOtherInfo expertOtherInfo; +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertUserBasicInfoSubmitRequest.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertUserBasicInfoSubmitRequest.java index 7fc78e7..674a010 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertUserBasicInfoSubmitRequest.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertUserBasicInfoSubmitRequest.java @@ -33,9 +33,8 @@ public class ExpertUserBasicInfoSubmitRequest { @ApiModelProperty("专业信息") private ExpertProfessionalInfo professionalInfo; - /** - * 补充推荐方式 + * 补充推荐方式 */ @NotEmpty @ApiModelProperty("推荐方式") @@ -44,4 +43,8 @@ public class ExpertUserBasicInfoSubmitRequest { @ApiModelProperty("推荐证明材料") private List recommendProofFile; + /** + * 其他信息 + */ + } \ No newline at end of file diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/vo/ExpertBasicInfoModifyResultVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/vo/ExpertBasicInfoModifyResultVO.java new file mode 100644 index 0000000..db79252 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/vo/ExpertBasicInfoModifyResultVO.java @@ -0,0 +1,25 @@ +package com.ningdatech.pmapi.expert.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author liuxinxin + * @date 2022/7/27 下午4:29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("专家信息修改是否需要额外材料") +public class ExpertBasicInfoModifyResultVO { + + /** + * 是否需要提交额外材料 + */ + @ApiModelProperty("是否需要额外材料-涉及修改需要审核数据需要提供额外材料") + private Boolean needExtraInfo; + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/ExpertInfoService.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/ExpertInfoService.java index 1b17c9d..56060b4 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/ExpertInfoService.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/ExpertInfoService.java @@ -1,6 +1,7 @@ package com.ningdatech.pmapi.expert.service; import com.ningdatech.pmapi.expert.model.cmd.ExpertFullInfoSaveCmd; +import com.ningdatech.pmapi.expert.model.cmd.ExpertInfoModifyCmd; import com.ningdatech.pmapi.expert.model.cmd.ExpertRecommendProofSaveCmd; import com.ningdatech.pmapi.expert.model.cmd.ExpertStorageDealCmd; import com.ningdatech.pmapi.expert.model.dto.ExpertFullInfoAllDTO; @@ -39,5 +40,12 @@ public interface ExpertInfoService { * 批量获取用户全量信息 **/ List listExpertUserFullInfoAll(List userIds); + + + /** + * 管理员修改专家信息 + */ + List adminModifyExpertInfo(ExpertInfoModifyCmd cmd, Long adminUserId); + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertInfoServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertInfoServiceImpl.java index e6ba88c..e7f2f2e 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertInfoServiceImpl.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertInfoServiceImpl.java @@ -1,26 +1,32 @@ package com.ningdatech.pmapi.expert.service.impl; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ningdatech.basic.util.CollUtils; import com.ningdatech.pmapi.common.enumeration.BoolDisplayEnum; +import com.ningdatech.pmapi.common.model.ExpertRegionModifyDiffBO; +import com.ningdatech.pmapi.common.util.ExpertRegionInfoUtils; +import com.ningdatech.pmapi.common.util.GzipUtils; import com.ningdatech.pmapi.expert.assembler.ExpertUserInfoAssembler; -import com.ningdatech.pmapi.expert.constant.ExpertAccountStatusEnum; -import com.ningdatech.pmapi.expert.constant.ExpertApplyStatusEnum; -import com.ningdatech.pmapi.expert.constant.ExpertApplyTypeEnum; -import com.ningdatech.pmapi.expert.constant.ExpertUserInfoStepEnum; +import com.ningdatech.pmapi.expert.constant.*; import com.ningdatech.pmapi.expert.entity.ExpertAvoidCompany; import com.ningdatech.pmapi.expert.entity.ExpertIntentionWorkRegion; import com.ningdatech.pmapi.expert.entity.ExpertMetaApply; import com.ningdatech.pmapi.expert.entity.ExpertUserFullInfo; +import com.ningdatech.pmapi.expert.model.SensitiveModifySegment; +import com.ningdatech.pmapi.expert.model.bo.ExpertInfoSensitiveFieldCheckBO; import com.ningdatech.pmapi.expert.model.cmd.ExpertFullInfoSaveCmd; +import com.ningdatech.pmapi.expert.model.cmd.ExpertInfoModifyCmd; import com.ningdatech.pmapi.expert.model.cmd.ExpertRecommendProofSaveCmd; import com.ningdatech.pmapi.expert.model.cmd.ExpertStorageDealCmd; import com.ningdatech.pmapi.expert.model.dto.*; import com.ningdatech.pmapi.expert.service.*; import com.ningdatech.pmapi.meta.constant.DictExpertInfoTypeEnum; +import com.ningdatech.pmapi.meta.constant.ExpertTagEnum; +import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; import com.ningdatech.pmapi.meta.model.entity.ExpertDictionary; import com.ningdatech.pmapi.meta.model.entity.ExpertTag; import com.ningdatech.pmapi.meta.service.IExpertDictionaryService; @@ -404,4 +410,216 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { .collect(Collectors.toList()); } + @Override + @Transactional(rollbackFor = Exception.class) + public List adminModifyExpertInfo(ExpertInfoModifyCmd cmd, Long adminUserId) { + Long userId = cmd.getUserId(); + List expertAvoidCompanyList = cmd.getExpertAvoidCompanyList(); + List expertDictionaryList = cmd.getExpertDictionaryList(); + List expertTagList = cmd.getExpertTagList(); + ExpertUserFullInfoDTO expertUserInfoDTO = cmd.getExpertUserInfoDTO(); + List applyIdList = new ArrayList<>(); + + ExpertUserFullInfo originalExpertUserFullInfo = iExpertUserFullInfoService.getByUserId(userId); + ExpertUserFullInfo saveExpertUserFullInfo = buildSaveExpertUserFullInfo(expertUserInfoDTO); + if (Objects.nonNull(originalExpertUserFullInfo)) { + saveExpertUserFullInfo.setId(originalExpertUserFullInfo.getId()); + // 删除所有专家字典字段(需审核敏感字段不删除) + LambdaQueryWrapper expertDictionaryRemove = Wrappers.lambdaQuery(ExpertDictionary.class) + .eq(ExpertDictionary::getUserId, userId).notIn(ExpertDictionary::getExpertInfoField, ExpertUserInfoSensitiveFieldEnum.getSensitiveDictionaryList()); + iExpertDictionaryService.remove(expertDictionaryRemove); + + + // 保存专家来源标签 + if (CollUtil.isNotEmpty(expertTagList)) { + // 删除专家来源标签 重新存入 + iExpertTagService.remove(Wrappers.lambdaQuery(ExpertTag.class) + .eq(ExpertTag::getUserId, userId) + .eq(ExpertTag::getExpertInfoField, ExpertTagEnum.EXPERT_SOURCE.getKey())); + + List saveExpertTagList = buildSaveExpertTagList(userId, expertTagList); + saveExpertTagList = saveExpertTagList.stream() + .filter(r -> ExpertTagEnum.EXPERT_SOURCE.getKey().equals(r.getExpertInfoField())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(saveExpertTagList)) { + iExpertTagService.saveBatch(saveExpertTagList); + } + } + } + + saveExpertUserFullInfo.setRecommendationProofFileIdList(JSONObject.toJSONString(expertUserInfoDTO.getRecommendationProofFileIdList())); + saveExpertUserFullInfo.setUserId(userId); + // 专家提交修改,以下字段需要审批后才能更新 + saveExpertUserFullInfo.setPhoneNo(null); + saveExpertUserFullInfo.setEmail(null); + saveExpertUserFullInfo.setRegionLevel(null); + saveExpertUserFullInfo.setRegionCode(null); + saveExpertUserFullInfo.setCompany(null); + saveExpertUserFullInfo.setLegalEntityCode(null); + iExpertUserFullInfoService.saveOrUpdate(saveExpertUserFullInfo); + + // 保存所有专家字典字段 + List saveExpertDictionaryList = buildSaveExpertDictionaryList(userId, expertDictionaryList); + saveExpertDictionaryList = saveExpertDictionaryList + .stream().filter(r -> !ExpertUserInfoSensitiveFieldEnum.getSensitiveDictionaryList().contains(r.getExpertInfoField())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(saveExpertDictionaryList)) { + iExpertDictionaryService.saveBatch(saveExpertDictionaryList); + } + + // 保存所有专家回避单位 + List saveExpertAvoidCompanyList = buildSaveExpertAvoidCompanyList(userId, expertAvoidCompanyList); + if (CollectionUtils.isNotEmpty(saveExpertAvoidCompanyList)) { + // 删除回避单位 + LambdaQueryWrapper expertAvoidCompanyRemove = Wrappers.lambdaQuery(ExpertAvoidCompany.class) + .eq(ExpertAvoidCompany::getUserId, userId); + iExpertAvoidCompanyService.remove(expertAvoidCompanyRemove); + // 重新保存 + iExpertAvoidCompanyService.saveBatch(saveExpertAvoidCompanyList); + } + // 敏感字段申请 + ExpertInfoSensitiveFieldCheckBO expertInfoSensitiveFieldCheckBO = cmd.getExpertInfoSensitiveFieldCheckBO(); + ModifyApplyExtraInfoDTO modifyApplyExtraInfo = cmd.getModifyApplyExtraInfo(); + if (expertInfoSensitiveFieldCheckBO.getHasModify()) { + // TODO 提交审核前判断是否已经有审核未审核,如果有,无法创建新的审核请求 + if (expertInfoSensitiveFieldCheckBO.getIsExpertSensitiveInfoModify()) { + // 创建信息修改审核 + List expertSensitiveInfoFieldSegmentList = expertInfoSensitiveFieldCheckBO.getExpertSensitiveInfoFieldSegmentList(); + Long expertInfoModifyApplyId = createExpertInfoModifyApply(expertSensitiveInfoFieldSegmentList, originalExpertUserFullInfo, modifyApplyExtraInfo); + applyIdList.add(expertInfoModifyApplyId); + } + if (expertInfoSensitiveFieldCheckBO.getIsExpertRegionModify()) { + // 创建层级变更审核 + List expertRegionFieldSegmentList = expertInfoSensitiveFieldCheckBO.getExpertRegionFieldSegmentList(); + Long expertRegionModifyApplyId = createExpertRegionModifyApply(expertRegionFieldSegmentList, originalExpertUserFullInfo, modifyApplyExtraInfo); + applyIdList.add(expertRegionModifyApplyId); + } + + if (expertInfoSensitiveFieldCheckBO.getIsExpertIntentionModify()) { + // 创建专家履职意向变更审核 + List expertIntentionFieldSegmentList = expertInfoSensitiveFieldCheckBO.getExpertIntentionFieldSegmentList(); + SensitiveModifySegment segment = expertIntentionFieldSegmentList.get(0); + List apply = (List) segment.getApply(); + List original = (List) segment.getOriginal(); + ExpertRegionModifyDiffBO expertRegionModifyDiffBO = ExpertRegionInfoUtils.modifyDiff(original, apply); + List addList = expertRegionModifyDiffBO.getAddList(); + List removeList = expertRegionModifyDiffBO.getRemoveList(); + + for (ExpertRegionInfo expertRegionInfo : addList) { + Long expertIntentionModifyApplyId = createExpertIntentionModifyApply(originalExpertUserFullInfo.getUserId() + , modifyApplyExtraInfo, expertRegionInfo, ExpertApplyTypeEnum.EXPERT_INTENTION_JOIN); + applyIdList.add(expertIntentionModifyApplyId); + } + for (ExpertRegionInfo expertRegionInfo : removeList) { + Long expertIntentionModifyApplyId = createExpertIntentionModifyApply(originalExpertUserFullInfo.getUserId() + , modifyApplyExtraInfo, expertRegionInfo, ExpertApplyTypeEnum.EXPERT_INTENTION_LEAVE); + applyIdList.add(expertIntentionModifyApplyId); + } + } + // 专家管理修改批量通过审核 + // 专家批量通过审核由 facade层调用其他逻辑实现 + } + return applyIdList; + } + + + /** + * 创建信息修改审核 + */ + @Transactional(rollbackFor = Exception.class) + public Long createExpertInfoModifyApply(List expertSensitiveInfoFieldSegmentList + , ExpertUserFullInfo originalExpertUserFullInfo, ModifyApplyExtraInfoDTO modifyApplyExtraInfo) { + expertSensitiveInfoFieldSegmentList = expertSensitiveInfoFieldSegmentList.stream().filter(r -> !r.isValueEquals()).collect(Collectors.toList()); + String compressedModifyJsonStr = GzipUtils.compress(JSONObject.toJSONString(expertSensitiveInfoFieldSegmentList)); + + ExpertMetaApply expertMetaApply = new ExpertMetaApply(); + expertMetaApply.setApplyType(ExpertApplyTypeEnum.EXPERT_INFO_MODIFY.getKey()); + expertMetaApply.setApplyStatus(ExpertApplyStatusEnum.PENDING_REVIEW.getKey()); + expertMetaApply.setRegionCode(originalExpertUserFullInfo.getRegionCode()); + expertMetaApply.setRegionLevel(originalExpertUserFullInfo.getRegionLevel()); + expertMetaApply.setUserId(originalExpertUserFullInfo.getUserId()); + expertMetaApply.setDisplayEnable(BoolDisplayEnum.Y.name()); + if (Objects.nonNull(modifyApplyExtraInfo)) { + expertMetaApply.setExtraMaterial(JSONObject.toJSONString(modifyApplyExtraInfo)); + } + iExpertMetaApplyService.save(expertMetaApply); + + ExpertSensitiveInfoModifyDetailRecord expertSensitiveInfoModifyDetailRecord = new ExpertSensitiveInfoModifyDetailRecord(); + expertSensitiveInfoModifyDetailRecord.setCreateOn(LocalDateTime.now()); + expertSensitiveInfoModifyDetailRecord.setUpdateOn(LocalDateTime.now()); + expertSensitiveInfoModifyDetailRecord.setMetaApplyId(expertMetaApply.getId()); + expertSensitiveInfoModifyDetailRecord.setUserId(originalExpertUserFullInfo.getUserId()); + expertSensitiveInfoModifyDetailRecord.setOriginalJson(compressedModifyJsonStr); + expertSensitiveInfoModifyDetailRecord.setModifyJson(compressedModifyJsonStr); + if (Objects.nonNull(modifyApplyExtraInfo)) { + expertSensitiveInfoModifyDetailRecord.setExtraMaterial(JSONUtils.toJson(modifyApplyExtraInfo)); + } + iExpertSensitiveInfoModifyDetailRecordService.save(expertSensitiveInfoModifyDetailRecord); + return expertMetaApply.getId(); + } + + private Long createExpertIntentionModifyApply(Long expertUserId, ModifyApplyExtraInfoDTO modifyApplyExtraInfo + , ExpertRegionInfo expertIntention, ExpertApplyTypeEnum applyTypeEnum) { + ExpertMetaApply expertMetaApply = new ExpertMetaApply(); + expertMetaApply.setApplyType(applyTypeEnum.getKey()); + expertMetaApply.setApplyStatus(ExpertApplyStatusEnum.PENDING_REVIEW.getKey()); + expertMetaApply.setRegionCode(expertIntention.getRegionCode()); + expertMetaApply.setRegionLevel(expertIntention.getRegionLevel()); + expertMetaApply.setUserId(expertUserId); + expertMetaApply.setDisplayEnable(BoolDisplayEnum.Y.name()); + if (Objects.nonNull(modifyApplyExtraInfo)) { + expertMetaApply.setExtraMaterial(JSONObject.toJSONString(modifyApplyExtraInfo)); + } + iExpertMetaApplyService.save(expertMetaApply); + + ExpertSensitiveInfoModifyDetailRecord expertSensitiveInfoModifyDetailRecord = new ExpertSensitiveInfoModifyDetailRecord(); + expertSensitiveInfoModifyDetailRecord.setCreateOn(LocalDateTime.now()); + expertSensitiveInfoModifyDetailRecord.setUserId(expertUserId); + expertSensitiveInfoModifyDetailRecord.setUpdateOn(LocalDateTime.now()); + expertSensitiveInfoModifyDetailRecord.setMetaApplyId(expertMetaApply.getId()); + if (Objects.nonNull(modifyApplyExtraInfo)) { + expertSensitiveInfoModifyDetailRecord.setExtraMaterial(JSONObject.toJSONString(modifyApplyExtraInfo)); + } + iExpertSensitiveInfoModifyDetailRecordService.save(expertSensitiveInfoModifyDetailRecord); + return expertMetaApply.getId(); + } + + /** + * 创建层级变更审核 + * + * @param expertRegionFieldSegmentList + * @param originalExpertUserFullInfo + * @param modifyApplyExtraInfo + */ + private Long createExpertRegionModifyApply(List expertRegionFieldSegmentList + , ExpertUserFullInfo originalExpertUserFullInfo, ModifyApplyExtraInfoDTO modifyApplyExtraInfo) { + String compressedModifyJsonStr = GzipUtils.compress(JSONObject.toJSONString(expertRegionFieldSegmentList)); + SensitiveModifySegment segment = expertRegionFieldSegmentList.get(0); + ExpertRegionInfo apply = (ExpertRegionInfo) segment.getApply(); + + ExpertMetaApply expertMetaApply = new ExpertMetaApply(); + expertMetaApply.setApplyType(ExpertApplyTypeEnum.EXPERT_STORAGE.getKey()); + expertMetaApply.setApplyStatus(ExpertApplyStatusEnum.PENDING_REVIEW.getKey()); + expertMetaApply.setRegionCode(apply.getRegionCode()); + expertMetaApply.setRegionLevel(apply.getRegionLevel()); + expertMetaApply.setUserId(originalExpertUserFullInfo.getUserId()); + expertMetaApply.setDisplayEnable(BoolDisplayEnum.Y.name()); + if (Objects.nonNull(modifyApplyExtraInfo)) { + expertMetaApply.setExtraMaterial(JSONObject.toJSONString(modifyApplyExtraInfo)); + } + iExpertMetaApplyService.save(expertMetaApply); + + ExpertSensitiveInfoModifyDetailRecord expertSensitiveInfoModifyDetailRecord = new ExpertSensitiveInfoModifyDetailRecord(); + expertSensitiveInfoModifyDetailRecord.setCreateOn(LocalDateTime.now()); + expertSensitiveInfoModifyDetailRecord.setUpdateOn(LocalDateTime.now()); + expertSensitiveInfoModifyDetailRecord.setUserId(originalExpertUserFullInfo.getUserId()); + expertSensitiveInfoModifyDetailRecord.setMetaApplyId(expertMetaApply.getId()); + expertSensitiveInfoModifyDetailRecord.setOriginalJson(compressedModifyJsonStr); + expertSensitiveInfoModifyDetailRecord.setModifyJson(compressedModifyJsonStr); + if (Objects.nonNull(modifyApplyExtraInfo)) { + expertSensitiveInfoModifyDetailRecord.setExtraMaterial(JSONObject.toJSONString(modifyApplyExtraInfo)); + } + iExpertSensitiveInfoModifyDetailRecordService.save(expertSensitiveInfoModifyDetailRecord); + return expertMetaApply.getId(); + } + + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/OrganizationMainManageTagController.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/OrganizationMainManageTagController.java new file mode 100644 index 0000000..582b106 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/OrganizationMainManageTagController.java @@ -0,0 +1,20 @@ +package com.ningdatech.pmapi.organization.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; + +/** + *

+ * 前端控制器 + *

+ * + * @author Liuxinxin + * @since 2023-03-09 + */ +@Controller +@RequestMapping("/pmapi.organization/organization-main-manage-tag") +public class OrganizationMainManageTagController { + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/entity/OrganizationMainManageTag.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/entity/OrganizationMainManageTag.java new file mode 100644 index 0000000..9aab1d6 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/entity/OrganizationMainManageTag.java @@ -0,0 +1,89 @@ +package com.ningdatech.pmapi.organization.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.time.LocalDateTime; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + *

+ * + *

+ * + * @author Liuxinxin + * @since 2023-03-09 + */ +@TableName("organization_main_manage_tag") +@ApiModel(value = "OrganizationMainManageTag对象", description = "") +public class OrganizationMainManageTag implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + private LocalDateTime createOn; + + private LocalDateTime updateOn; + + private Long createBy; + + private Long updateBy; + + private String organizationCode; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + public LocalDateTime getCreateOn() { + return createOn; + } + + public void setCreateOn(LocalDateTime createOn) { + this.createOn = createOn; + } + public LocalDateTime getUpdateOn() { + return updateOn; + } + + public void setUpdateOn(LocalDateTime updateOn) { + this.updateOn = updateOn; + } + public Long getCreateBy() { + return createBy; + } + + public void setCreateBy(Long createBy) { + this.createBy = createBy; + } + public Long getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(Long updateBy) { + this.updateBy = updateBy; + } + public String getOrganizationCode() { + return organizationCode; + } + + public void setOrganizationCode(String organizationCode) { + this.organizationCode = organizationCode; + } + + @Override + public String toString() { + return "OrganizationMainManageTag{" + + "id=" + id + + ", createOn=" + createOn + + ", updateOn=" + updateOn + + ", createBy=" + createBy + + ", updateBy=" + updateBy + + ", organizationCode=" + organizationCode + + "}"; + } +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/GovBusinessStripHelper.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/GovBusinessStripHelper.java index 16c8906..6f82002 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/GovBusinessStripHelper.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/GovBusinessStripHelper.java @@ -19,4 +19,12 @@ public interface GovBusinessStripHelper { */ List getSupGovBusinessStrip(String organizationCode); + + /** + * 获取上级主管单位 + * + * @param organizationCode + * @return + */ + DingOrganization getSupMainManageOrganization(String organizationCode); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/impl/GovBusinessStripHelperImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/impl/GovBusinessStripHelperImpl.java index e3dcb2c..24e4366 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/impl/GovBusinessStripHelperImpl.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/helper/impl/GovBusinessStripHelperImpl.java @@ -67,4 +67,9 @@ public class GovBusinessStripHelperImpl implements GovBusinessStripHelper { tempParentOrgCode = parentOrganization.getParentCode(); } } + + @Override + public DingOrganization getSupMainManageOrganization(String organizationCode) { + return null; + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/mapper/OrganizationMainManageTagMapper.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/mapper/OrganizationMainManageTagMapper.java new file mode 100644 index 0000000..e636198 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/mapper/OrganizationMainManageTagMapper.java @@ -0,0 +1,16 @@ +package com.ningdatech.pmapi.organization.mapper; + +import com.ningdatech.pmapi.organization.entity.OrganizationMainManageTag; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author Liuxinxin + * @since 2023-03-09 + */ +public interface OrganizationMainManageTagMapper extends BaseMapper { + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/mapper/OrganizationMainManageTagMapper.xml b/pmapi/src/main/java/com/ningdatech/pmapi/organization/mapper/OrganizationMainManageTagMapper.xml new file mode 100644 index 0000000..2551432 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/mapper/OrganizationMainManageTagMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/IOrganizationMainManageTagService.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/IOrganizationMainManageTagService.java new file mode 100644 index 0000000..f899be6 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/IOrganizationMainManageTagService.java @@ -0,0 +1,16 @@ +package com.ningdatech.pmapi.organization.service; + +import com.ningdatech.pmapi.organization.entity.OrganizationMainManageTag; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author Liuxinxin + * @since 2023-03-09 + */ +public interface IOrganizationMainManageTagService extends IService { + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/impl/OrganizationMainManageTagServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/impl/OrganizationMainManageTagServiceImpl.java new file mode 100644 index 0000000..7b19125 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/service/impl/OrganizationMainManageTagServiceImpl.java @@ -0,0 +1,20 @@ +package com.ningdatech.pmapi.organization.service.impl; + +import com.ningdatech.pmapi.organization.entity.OrganizationMainManageTag; +import com.ningdatech.pmapi.organization.mapper.OrganizationMainManageTagMapper; +import com.ningdatech.pmapi.organization.service.IOrganizationMainManageTagService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author Liuxinxin + * @since 2023-03-09 + */ +@Service +public class OrganizationMainManageTagServiceImpl extends ServiceImpl implements IOrganizationMainManageTagService { + +} From 75722fb33197c20e3ba9645137816b926a2fdc5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?niohe=C2=B7erbao?= Date: Thu, 9 Mar 2023 10:56:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=93=E5=AE=B6=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GeneratorCodeKingbaseConfig.java | 2 +- ...tSensitiveInfoModifyDetailRecordController.java | 20 +++++++++++ .../ExpertSensitiveInfoModifyDetailRecord.java | 41 ++++++++++++++++++++++ ...xpertSensitiveInfoModifyDetailRecordMapper.java | 16 +++++++++ ...ExpertSensitiveInfoModifyDetailRecordMapper.xml | 5 +++ ...pertSensitiveInfoModifyDetailRecordService.java | 16 +++++++++ .../expert/service/impl/ExpertInfoServiceImpl.java | 8 ++--- ...SensitiveInfoModifyDetailRecordServiceImpl.java | 20 +++++++++++ 8 files changed, 122 insertions(+), 6 deletions(-) create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertSensitiveInfoModifyDetailRecordController.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/entity/ExpertSensitiveInfoModifyDetailRecord.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/mapper/ExpertSensitiveInfoModifyDetailRecordMapper.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/mapper/ExpertSensitiveInfoModifyDetailRecordMapper.xml create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/service/IExpertSensitiveInfoModifyDetailRecordService.java create mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertSensitiveInfoModifyDetailRecordServiceImpl.java diff --git a/ningda-generator/src/main/java/com/ningdatech/generator/config/GeneratorCodeKingbaseConfig.java b/ningda-generator/src/main/java/com/ningdatech/generator/config/GeneratorCodeKingbaseConfig.java index 375261a..19ead9c 100644 --- a/ningda-generator/src/main/java/com/ningdatech/generator/config/GeneratorCodeKingbaseConfig.java +++ b/ningda-generator/src/main/java/com/ningdatech/generator/config/GeneratorCodeKingbaseConfig.java @@ -56,7 +56,7 @@ public class GeneratorCodeKingbaseConfig { } public static void main(String[] args) { - generate("Liuxinxin", "organization", PATH_LXX, "organization_main_manage_tag"); + generate("Liuxinxin", "expert", PATH_LXX, "expert_sensitive_info_modify_detail_record"); } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertSensitiveInfoModifyDetailRecordController.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertSensitiveInfoModifyDetailRecordController.java new file mode 100644 index 0000000..8df2d60 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertSensitiveInfoModifyDetailRecordController.java @@ -0,0 +1,20 @@ +package com.ningdatech.pmapi.expert.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; + +/** + *

+ * 前端控制器 + *

+ * + * @author Liuxinxin + * @since 2023-03-09 + */ +@Controller +@RequestMapping("/pmapi.expert/expert-sensitive-info-modify-detail-record") +public class ExpertSensitiveInfoModifyDetailRecordController { + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/entity/ExpertSensitiveInfoModifyDetailRecord.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/entity/ExpertSensitiveInfoModifyDetailRecord.java new file mode 100644 index 0000000..f76b499 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/entity/ExpertSensitiveInfoModifyDetailRecord.java @@ -0,0 +1,41 @@ +package com.ningdatech.pmapi.expert.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author Liuxinxin + * @since 2023-03-09 + */ +@Data +@TableName("expert_sensitive_info_modify_detail_record") +@ApiModel(value = "ExpertSensitiveInfoModifyDetailRecord对象", description = "") +public class ExpertSensitiveInfoModifyDetailRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + private LocalDateTime createOn; + + private LocalDateTime updateOn; + + private Long userId; + + private String originalJson; + + private String modifyJson; + + private Long metaApplyId; + + private String extraMaterial; + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/mapper/ExpertSensitiveInfoModifyDetailRecordMapper.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/mapper/ExpertSensitiveInfoModifyDetailRecordMapper.java new file mode 100644 index 0000000..691f1c5 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/mapper/ExpertSensitiveInfoModifyDetailRecordMapper.java @@ -0,0 +1,16 @@ +package com.ningdatech.pmapi.expert.mapper; + +import com.ningdatech.pmapi.expert.entity.ExpertSensitiveInfoModifyDetailRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author Liuxinxin + * @since 2023-03-09 + */ +public interface ExpertSensitiveInfoModifyDetailRecordMapper extends BaseMapper { + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/mapper/ExpertSensitiveInfoModifyDetailRecordMapper.xml b/pmapi/src/main/java/com/ningdatech/pmapi/expert/mapper/ExpertSensitiveInfoModifyDetailRecordMapper.xml new file mode 100644 index 0000000..7a7b93a --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/mapper/ExpertSensitiveInfoModifyDetailRecordMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/IExpertSensitiveInfoModifyDetailRecordService.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/IExpertSensitiveInfoModifyDetailRecordService.java new file mode 100644 index 0000000..1e7b5db --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/IExpertSensitiveInfoModifyDetailRecordService.java @@ -0,0 +1,16 @@ +package com.ningdatech.pmapi.expert.service; + +import com.ningdatech.pmapi.expert.entity.ExpertSensitiveInfoModifyDetailRecord; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author Liuxinxin + * @since 2023-03-09 + */ +public interface IExpertSensitiveInfoModifyDetailRecordService extends IService { + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertInfoServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertInfoServiceImpl.java index e7f2f2e..880542b 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertInfoServiceImpl.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertInfoServiceImpl.java @@ -12,10 +12,7 @@ import com.ningdatech.pmapi.common.util.ExpertRegionInfoUtils; import com.ningdatech.pmapi.common.util.GzipUtils; import com.ningdatech.pmapi.expert.assembler.ExpertUserInfoAssembler; import com.ningdatech.pmapi.expert.constant.*; -import com.ningdatech.pmapi.expert.entity.ExpertAvoidCompany; -import com.ningdatech.pmapi.expert.entity.ExpertIntentionWorkRegion; -import com.ningdatech.pmapi.expert.entity.ExpertMetaApply; -import com.ningdatech.pmapi.expert.entity.ExpertUserFullInfo; +import com.ningdatech.pmapi.expert.entity.*; import com.ningdatech.pmapi.expert.model.SensitiveModifySegment; import com.ningdatech.pmapi.expert.model.bo.ExpertInfoSensitiveFieldCheckBO; import com.ningdatech.pmapi.expert.model.cmd.ExpertFullInfoSaveCmd; @@ -54,6 +51,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { private final IExpertAvoidCompanyService iExpertAvoidCompanyService; private final IExpertIntentionWorkRegionService iExpertIntentionWorkRegionService; private final IExpertMetaApplyService iExpertMetaApplyService; + private final IExpertSensitiveInfoModifyDetailRecordService iExpertSensitiveInfoModifyDetailRecordService; /** @@ -550,7 +548,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { expertSensitiveInfoModifyDetailRecord.setOriginalJson(compressedModifyJsonStr); expertSensitiveInfoModifyDetailRecord.setModifyJson(compressedModifyJsonStr); if (Objects.nonNull(modifyApplyExtraInfo)) { - expertSensitiveInfoModifyDetailRecord.setExtraMaterial(JSONUtils.toJson(modifyApplyExtraInfo)); + expertSensitiveInfoModifyDetailRecord.setExtraMaterial(JSONObject.toJSONString(modifyApplyExtraInfo)); } iExpertSensitiveInfoModifyDetailRecordService.save(expertSensitiveInfoModifyDetailRecord); return expertMetaApply.getId(); diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertSensitiveInfoModifyDetailRecordServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertSensitiveInfoModifyDetailRecordServiceImpl.java new file mode 100644 index 0000000..cc3a924 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertSensitiveInfoModifyDetailRecordServiceImpl.java @@ -0,0 +1,20 @@ +package com.ningdatech.pmapi.expert.service.impl; + +import com.ningdatech.pmapi.expert.entity.ExpertSensitiveInfoModifyDetailRecord; +import com.ningdatech.pmapi.expert.mapper.ExpertSensitiveInfoModifyDetailRecordMapper; +import com.ningdatech.pmapi.expert.service.IExpertSensitiveInfoModifyDetailRecordService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author Liuxinxin + * @since 2023-03-09 + */ +@Service +public class ExpertSensitiveInfoModifyDetailRecordServiceImpl extends ServiceImpl implements IExpertSensitiveInfoModifyDetailRecordService { + +} From e8abacb26f3e017f814a53ce859cb8f736ebb7fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?niohe=C2=B7erbao?= Date: Thu, 9 Mar 2023 11:10:36 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=93=E5=AE=B6=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../expert/assembler/ExpertInfoCmdAssembler.java | 1 + .../expert/assembler/ExpertUserInfoAssembler.java | 18 +--------------- .../ExpertInfoSensitiveFieldModifyCheckHelper.java | 1 + .../pmapi/expert/manage/ExpertManage.java | 1 + .../pmapi/expert/model/ExpertBasicInfo.java | 1 + .../pmapi/expert/model/ExpertEduInfo.java | 1 + .../pmapi/expert/model/ExpertProfessionalInfo.java | 1 + .../pmapi/expert/model/ExpertRecommendInfo.java | 1 + .../pmapi/expert/model/ExtraMaterialDO.java | 1 + .../pmapi/expert/model/FileBasicInfo.java | 24 ---------------------- .../pmapi/expert/model/ModifyApplyExtraInfo.java | 1 + .../expert/model/dto/ModifyApplyExtraInfoDTO.java | 2 +- .../req/ExpertUserBasicInfoSubmitRequest.java | 1 + 13 files changed, 12 insertions(+), 42 deletions(-) delete mode 100644 pmapi/src/main/java/com/ningdatech/pmapi/expert/model/FileBasicInfo.java diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertInfoCmdAssembler.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertInfoCmdAssembler.java index 73b98be..7dca681 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertInfoCmdAssembler.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertInfoCmdAssembler.java @@ -1,6 +1,7 @@ package com.ningdatech.pmapi.expert.assembler; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import com.ningdatech.pmapi.expert.model.*; import com.ningdatech.pmapi.expert.model.bo.ExpertInfoSensitiveFieldCheckBO; import com.ningdatech.pmapi.expert.model.cmd.ExpertFullInfoSaveCmd; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertUserInfoAssembler.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertUserInfoAssembler.java index 3231f86..9053101 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertUserInfoAssembler.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertUserInfoAssembler.java @@ -1,26 +1,10 @@ package com.ningdatech.pmapi.expert.assembler; -//import com.ningdatech.emapi.common.enumeration.BoolDisplayEnum; -//import com.ningdatech.emapi.common.helper.RegionCache; -//import com.ningdatech.emapi.common.utils.JSONObject; -//import com.ningdatech.emapi.expert.constants.DictExpertInfoTypeEnum; -//import com.ningdatech.emapi.expert.constants.ExpertApplyTypeEnum; -//import com.ningdatech.emapi.expert.constants.ExpertTagEnum; -//import com.ningdatech.emapi.expert.entity.*; -//import com.ningdatech.emapi.expert.entity.domain.*; -//import com.ningdatech.emapi.expert.entity.dto.*; -//import com.ningdatech.emapi.expert.entity.vo.ExpertFullInfoVO; -//import com.ningdatech.emapi.sys.file.entity.FileBasicInfo; -//import com.ningdatech.emapi.sys.file.entity.vo.result.AttachFileVo; -//import com.ningdatech.emapi.sys.meta.entity.RegionDtoMapKey; -//import com.ningdatech.emapi.sys.meta.entity.dto.DictionaryDTO; -//import com.ningdatech.emapi.sys.meta.entity.dto.TagDTO; -//import com.ningdatech.emapi.sys.meta.helper.DictionaryCache; -//import com.ningdatech.emapi.sys.meta.helper.TagCache; import com.alibaba.fastjson.JSONObject; import com.ningdatech.file.entity.vo.result.AttachFileVo; import com.ningdatech.pmapi.common.enumeration.BoolDisplayEnum; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import com.ningdatech.pmapi.expert.constant.ExpertApplyTypeEnum; import com.ningdatech.pmapi.expert.entity.ExpertAvoidCompany; import com.ningdatech.pmapi.expert.entity.ExpertIntentionWorkRegion; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoSensitiveFieldModifyCheckHelper.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoSensitiveFieldModifyCheckHelper.java index 9e7005e..68ddd4a 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoSensitiveFieldModifyCheckHelper.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoSensitiveFieldModifyCheckHelper.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ningdatech.basic.exception.BizException; import com.ningdatech.file.entity.vo.result.AttachFileVo; import com.ningdatech.file.service.FileService; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import com.ningdatech.pmapi.expert.assembler.ExpertUserInfoAssembler; import com.ningdatech.pmapi.expert.constant.ExpertSensitiveFieldTypeEnum; import com.ningdatech.pmapi.expert.constant.ExpertUserInfoSensitiveFieldEnum; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertManage.java index a55d6f3..5e701fd 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertManage.java @@ -3,6 +3,7 @@ package com.ningdatech.pmapi.expert.manage; import com.ningdatech.basic.exception.BizException; import com.ningdatech.file.entity.vo.result.AttachFileVo; import com.ningdatech.file.service.FileService; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import com.ningdatech.pmapi.expert.assembler.ExpertInfoCmdAssembler; import com.ningdatech.pmapi.expert.assembler.ExpertUserInfoAssembler; import com.ningdatech.pmapi.expert.constant.ExpertAccountStatusEnum; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertBasicInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertBasicInfo.java index 5687d1e..56a64b4 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertBasicInfo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertBasicInfo.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.expert.model; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertEduInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertEduInfo.java index 00dda08..d9c66bd 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertEduInfo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertEduInfo.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.expert.model; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertProfessionalInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertProfessionalInfo.java index 6c0ed92..98e92d9 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertProfessionalInfo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertProfessionalInfo.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.expert.model; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertRecommendInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertRecommendInfo.java index 86056aa..f56e0b5 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertRecommendInfo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExpertRecommendInfo.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.expert.model; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExtraMaterialDO.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExtraMaterialDO.java index a0e8abf..70561dd 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExtraMaterialDO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ExtraMaterialDO.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.expert.model; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/FileBasicInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/FileBasicInfo.java deleted file mode 100644 index 8a3ffb4..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/FileBasicInfo.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ningdatech.pmapi.expert.model; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * @author liuxinxin - * @date 2022/7/25 下午1:55 - * 用于包装使用 - */ -@Data -@ApiModel("文件信息基类") -public class FileBasicInfo { - - @ApiModelProperty("文件id") - private Long fileId; - - @ApiModelProperty("文件url") - private String url; - - @ApiModelProperty("文件名") - private String fileName; -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ModifyApplyExtraInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ModifyApplyExtraInfo.java index ff1965c..4327473 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ModifyApplyExtraInfo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ModifyApplyExtraInfo.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.expert.model; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ModifyApplyExtraInfoDTO.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ModifyApplyExtraInfoDTO.java index 7cb05ea..082c5fc 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ModifyApplyExtraInfoDTO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ModifyApplyExtraInfoDTO.java @@ -1,6 +1,6 @@ package com.ningdatech.pmapi.expert.model.dto; -import com.ningdatech.pmapi.expert.model.FileBasicInfo; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import lombok.Data; import javax.validation.constraints.NotBlank; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertUserBasicInfoSubmitRequest.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertUserBasicInfoSubmitRequest.java index 674a010..2354a51 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertUserBasicInfoSubmitRequest.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertUserBasicInfoSubmitRequest.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.expert.model.req; +import com.ningdatech.pmapi.common.model.FileBasicInfo; import com.ningdatech.pmapi.expert.model.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty;