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..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, "gov_business_strip"); + generate("Liuxinxin", "expert", PATH_LXX, "expert_sensitive_info_modify_detail_record"); } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/config/ConfigurerAdapter.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/config/ConfigurerAdapter.java new file mode 100644 index 0000000..08a29d3 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/config/ConfigurerAdapter.java @@ -0,0 +1,42 @@ +package com.ningdatech.pmapi.common.config; + +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.fastjson.support.config.FastJsonConfig; +import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.MediaType; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +/** + * @author qinxianyun + */ +@EnableWebMvc +@Configuration +public class ConfigurerAdapter implements WebMvcConfigurer { + + @Override + public void configureMessageConverters(List> converters) { + // 使用 fastjson 序列化,会导致 @JsonIgnore 失效,可以使用 @JSONField(serialize = false) 替换 + FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); + List supportMediaTypeList = new ArrayList<>(); + supportMediaTypeList.add(MediaType.APPLICATION_JSON); + FastJsonConfig config = new FastJsonConfig(); + config.setDateFormat("yyyy-MM-dd HH:mm:ss"); + config.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect); + converter.setFastJsonConfig(config); + converter.setSupportedMediaTypes(supportMediaTypeList); + converter.setDefaultCharset(StandardCharsets.UTF_8); + converters.add(converter); + } +} 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/model/FileBasicInfo.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/model/FileBasicInfo.java index 86eb29b..5acb8da 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/common/model/FileBasicInfo.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/model/FileBasicInfo.java @@ -16,12 +16,9 @@ public class FileBasicInfo { @ApiModelProperty("文件id") private Long fileId; + @ApiModelProperty("文件url") + private String url; + @ApiModelProperty("文件名") private String fileName; - - @ApiModelProperty("文件类型") - private Integer fileType; - - @ApiModelProperty("文件路径") - private String filePath; } 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..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,8 +1,11 @@ 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; +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 +224,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/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/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/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/helper/ExpertInfoSensitiveFieldModifyCheckHelper.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoSensitiveFieldModifyCheckHelper.java new file mode 100644 index 0000000..68ddd4a --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoSensitiveFieldModifyCheckHelper.java @@ -0,0 +1,162 @@ +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.common.model.FileBasicInfo; +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/manage/ExpertManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertManage.java index a55d6f3..754de97 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; @@ -84,10 +85,11 @@ public class ExpertManage { expertInfoService.saveExpertInfo(expertFullInfoSaveCmd); } + ExpertRecommendInfo recommendInfo = request.getRecommendInfo(); // 推荐证明材料 - List recommendedWay = request.getRecommendedWay(); + List recommendedWay = recommendInfo.getRecommendedWay(); // 推荐方式 - List recommendProofFile = request.getRecommendProofFile(); + List recommendProofFile = recommendInfo.getRecommendationProofFile(); expertRecommendProofSubmit(recommendedWay, recommendProofFile); } 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/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 new file mode 100644 index 0000000..4327473 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/expert/model/ModifyApplyExtraInfo.java @@ -0,0 +1,30 @@ +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; + +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/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..a242853 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 @@ -5,9 +5,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; -import java.util.List; /** * @author liuxinxin @@ -33,15 +31,11 @@ public class ExpertUserBasicInfoSubmitRequest { @ApiModelProperty("专业信息") private ExpertProfessionalInfo professionalInfo; - /** - * 补充推荐方式 + * 补充推荐方式 */ - @NotEmpty - @ApiModelProperty("推荐方式") - private List recommendedWay; - - @ApiModelProperty("推荐证明材料") - private List recommendProofFile; + @NotNull + @ApiModelProperty("推荐信息") + private ExpertRecommendInfo recommendInfo; } \ 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/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 e6ba88c..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 @@ -1,26 +1,29 @@ 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.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.constant.*; +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; +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; @@ -48,6 +51,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { private final IExpertAvoidCompanyService iExpertAvoidCompanyService; private final IExpertIntentionWorkRegionService iExpertIntentionWorkRegionService; private final IExpertMetaApplyService iExpertMetaApplyService; + private final IExpertSensitiveInfoModifyDetailRecordService iExpertSensitiveInfoModifyDetailRecordService; /** @@ -404,4 +408,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(JSONObject.toJSONString(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/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 { + +} 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 { + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/contants/DeclaredProjectContant.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/contants/DeclaredProjectContant.java index d482301..e0e62b5 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/contants/DeclaredProjectContant.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/contants/DeclaredProjectContant.java @@ -1,5 +1,7 @@ package com.ningdatech.pmapi.projectdeclared.contants; +import com.alibaba.fastjson.JSONObject; + public interface DeclaredProjectContant { class ProcessDef { @@ -17,4 +19,8 @@ public interface DeclaredProjectContant { class Instance { public static final String PROVINCE_INSTANCE_ID = "PROVINCE_AUDIT"; } + + class Biz { + public static final String CORE_BIZ = "{\"msg\":\"操作成功\",\"code\":0,\"data\":[{\"id\":6366,\"matterOrg\":4,\"matterName\":\"信息化项目年度建设计划申报\",\"matterCode\":\"\",\"attribute\":\"1\",\"busiRate\":\"\",\"otherRate\":\"\",\"useState\":\"1\",\"orgName\":\"市大数据局\",\"oid\":\"40285881636932d30163694f7f4e125d\",\"dingCode\":\"GO_6c383c049d95461f9a0df780140ceb32\",\"areaName\":\"丽水市\",\"systems\":[{\"id\":\"947\",\"uuid\":\"5922bdbb-ae35-4f4d-b6e0-916cf01b9a6a\",\"sysName\":\"丽水市数据中心平台\"}],\"coreMaterials\":[{\"id\":11317,\"comaterialName\":\"次年信息化项目年度计划申请信息(信息化项目年度建设计划申报)\"},{\"id\":66025,\"comaterialName\":\"测试信息\"},{\"id\":70165,\"comaterialName\":\"演示系统信息\"},{\"id\":11318,\"comaterialName\":\"次年信息化项目建议书信息(信息化项目年度建设计划申报)\"},{\"id\":60284,\"comaterialName\":\"测试需求信息\"},{\"id\":60285,\"comaterialName\":\"测试需求的信息\"}],\"page\":null,\"limit\":null,\"startRow\":null},{\"id\":6367,\"matterOrg\":4,\"matterName\":\"信息化项目年度建设计划调整申报\",\"matterCode\":\"\",\"attribute\":\"1\",\"busiRate\":\"\",\"otherRate\":\"\",\"useState\":\"1\",\"orgName\":\"市大数据局\",\"oid\":\"40285881636932d30163694f7f4e125d\",\"dingCode\":\"GO_6c383c049d95461f9a0df780140ceb32\",\"areaName\":\"丽水市\",\"systems\":[],\"coreMaterials\":[{\"id\":11319,\"comaterialName\":\"次年信息化项目年度计划申请信息(信息化项目年度建设计划调整申报)\"},{\"id\":11320,\"comaterialName\":\"次年信息化项目建议书信息(信息化项目年度建设计划调整申报)\"}],\"page\":null,\"limit\":null,\"startRow\":null},{\"id\":6368,\"matterOrg\":4,\"matterName\":\"信息化项目立项\",\"matterCode\":\"\",\"attribute\":\"1\",\"busiRate\":\"\",\"otherRate\":\"\",\"useState\":\"1\",\"orgName\":\"市大数据局\",\"oid\":\"40285881636932d30163694f7f4e125d\",\"dingCode\":\"GO_6c383c049d95461f9a0df780140ceb32\",\"areaName\":\"丽水市\",\"systems\":[{\"id\":\"2095\",\"uuid\":\"2b4a5100-708c-4716-b713-79be1860edf9\",\"sysName\":\"丽水市公共数据管理系统\"}],\"coreMaterials\":[{\"id\":69142,\"comaterialName\":\"演示项目信息\"},{\"id\":11321,\"comaterialName\":\"项目定密正式意见信息\"},{\"id\":11322,\"comaterialName\":\"项目数据资源承诺共享开放目录信息\"},{\"id\":11324,\"comaterialName\":\"项目申请立项正式函信息\"},{\"id\":11323,\"comaterialName\":\"项目建设方案信息(信息化项目立项)\"}],\"page\":null,\"limit\":null,\"startRow\":null},{\"id\":6369,\"matterOrg\":4,\"matterName\":\"信息化项目验收\",\"matterCode\":\"\",\"attribute\":\"1\",\"busiRate\":\"\",\"otherRate\":\"\",\"useState\":\"1\",\"orgName\":\"市大数据局\",\"oid\":\"40285881636932d30163694f7f4e125d\",\"dingCode\":\"GO_6c383c049d95461f9a0df780140ceb32\",\"areaName\":\"丽水市\",\"systems\":[{\"id\":\"1020\",\"uuid\":\"103afdd3-5078-4e8e-9f3e-8890b42d9276\",\"sysName\":\"协同平台\"}],\"coreMaterials\":[{\"id\":11325,\"comaterialName\":\"项目验收申请函信息(电子公文正式件)\"},{\"id\":11329,\"comaterialName\":\"项目初验意见书信息\"},{\"id\":11328,\"comaterialName\":\"第三方测评报告信息(立项批复投资估算>500万)\"},{\"id\":11327,\"comaterialName\":\"项目监理报告信息(立项批复投资估算>200万)\"},{\"id\":11330,\"comaterialName\":\"项目验收完整归档资料信息\"},{\"id\":60411,\"comaterialName\":\"测试数据项数量信息\"},{\"id\":69141,\"comaterialName\":\"演示验收信息\"},{\"id\":11326,\"comaterialName\":\"项目竣工报告信息\"}],\"page\":null,\"limit\":null,\"startRow\":null},{\"id\":6370,\"matterOrg\":4,\"matterName\":\"办公助手人员维护\",\"matterCode\":\"\",\"attribute\":\"1\",\"busiRate\":\"\",\"otherRate\":\"\",\"useState\":\"1\",\"orgName\":\"市大数据局\",\"oid\":\"40285881636932d30163694f7f4e125d\",\"dingCode\":\"GO_6c383c049d95461f9a0df780140ceb32\",\"areaName\":\"丽水市\",\"systems\":[],\"coreMaterials\":[{\"id\":11331,\"comaterialName\":\"办公助手人员变更表单信息\"}],\"page\":null,\"limit\":null,\"startRow\":null},{\"id\":6371,\"matterOrg\":4,\"matterName\":\"办公助手单位新增申请\",\"matterCode\":\"\",\"attribute\":\"1\",\"busiRate\":\"\",\"otherRate\":\"\",\"useState\":\"1\",\"orgName\":\"市大数据局\",\"oid\":\"40285881636932d30163694f7f4e125d\",\"dingCode\":\"GO_6c383c049d95461f9a0df780140ceb32\",\"areaName\":\"丽水市\",\"systems\":[],\"coreMaterials\":[{\"id\":11332,\"comaterialName\":\"办公助手单位新增申请信息\"}],\"page\":null,\"limit\":null,\"startRow\":null},{\"id\":6372,\"matterOrg\":4,\"matterName\":\"办公助手短信数量申请\",\"matterCode\":\"\",\"attribute\":\"1\",\"busiRate\":\"\",\"otherRate\":\"\",\"useState\":\"1\",\"orgName\":\"市大数据局\",\"oid\":\"40285881636932d30163694f7f4e125d\",\"dingCode\":\"GO_6c383c049d95461f9a0df780140ceb32\",\"areaName\":\"丽水市\",\"systems\":[],\"coreMaterials\":[{\"id\":17570,\"comaterialName\":\"办公助手短信数量申请信息\"}],\"page\":null,\"limit\":null,\"startRow\":null},{\"id\":6373,\"matterOrg\":4,\"matterName\":\"办公助手通知公告发布申请\",\"matterCode\":\"\",\"attribute\":\"1\",\"busiRate\":\"\",\"otherRate\":\"\",\"useState\":\"1\",\"orgName\":\"市大数据局\",\"oid\":\"40285881636932d30163694f7f4e125d\",\"dingCode\":\"GO_6c383c049d95461f9a0df780140ceb32\",\"areaName\":\"丽水市\",\"systems\":[],\"coreMaterials\":[{\"id\":11335,\"comaterialName\":\"通知公告发布申请信息\"}],\"page\":null,\"limit\":null,\"startRow\":null},{\"id\":6374,\"matterOrg\":4,\"matterName\":\"丽水市党政机关公文交换系统单位新增\",\"matterCode\":\"\",\"attribute\":\"1\",\"busiRate\":\"\",\"otherRate\":\"\",\"useState\":\"1\",\"orgName\":\"市大数据局\",\"oid\":\"40285881636932d30163694f7f4e125d\",\"dingCode\":\"GO_6c383c049d95461f9a0df780140ceb32\",\"areaName\":\"丽水市\",\"systems\":[],\"coreMaterials\":[{\"id\":11336,\"comaterialName\":\"公文交换系统单位新增信息\"},{\"id\":17572,\"comaterialName\":\"公章替换说明函信息\"},{\"id\":17571,\"comaterialName\":\"机关代字(红头文号)模板信息\"}],\"page\":null,\"limit\":null,\"startRow\":null},{\"id\":6375,\"matterOrg\":4,\"matterName\":\"丽水市党政机关协同办公系统人员维护\",\"matterCode\":\"\",\"attribute\":\"1\",\"busiRate\":\"\",\"otherRate\":\"\",\"useState\":\"1\",\"orgName\":\"市大数据局\",\"oid\":\"40285881636932d30163694f7f4e125d\",\"dingCode\":\"GO_6c383c049d95461f9a0df780140ceb32\",\"areaName\":\"丽水市\",\"systems\":[],\"coreMaterials\":[{\"id\":11337,\"comaterialName\":\"协同办公系统人员变更信息\"}],\"page\":null,\"limit\":null,\"startRow\":null}],\"total\":10}"; + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/controller/DeclaredProjectController.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/controller/DeclaredProjectController.java index bf99653..2503de5 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/controller/DeclaredProjectController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/controller/DeclaredProjectController.java @@ -1,6 +1,8 @@ package com.ningdatech.pmapi.projectdeclared.controller; +import com.alibaba.fastjson.JSONObject; import com.ningdatech.basic.model.PageVo; +import com.ningdatech.pmapi.projectdeclared.contants.DeclaredProjectContant; import com.ningdatech.pmapi.projectdeclared.model.dto.DeclaredProjectListParamDTO; import com.ningdatech.pmapi.projectdeclared.model.dto.DefaultDeclaredDTO; import com.ningdatech.pmapi.projectdeclared.model.dto.ProjectDraftSaveDTO; @@ -36,6 +38,12 @@ public class DeclaredProjectController { return declaredProjectManage.projectLibList(req); } + @ApiOperation(value = "核心业务列表", notes = "核心业务列表") + @GetMapping("/core-biz") + public JSONObject bizList() { + return JSONObject.parseObject(DeclaredProjectContant.Biz.CORE_BIZ); + } + @ApiOperation(value = "申报项目草稿箱列表", notes = "申报项目草稿箱列表") @GetMapping("/draft") public PageVo draft(@ModelAttribute DeclaredProjectListParamDTO params) { diff --git a/pmapi/src/main/resources/application-dev.yml b/pmapi/src/main/resources/application-dev.yml index 18fcf60..8e30898 100644 --- a/pmapi/src/main/resources/application-dev.yml +++ b/pmapi/src/main/resources/application-dev.yml @@ -192,4 +192,4 @@ provincial: pushUrl: /api/v1/foreign/importantPro detailUrl: /api/v1/foreign/importantProView key: 7196317343a64e67895dc0375c098fe7 - secret: 75152a97f20e4c4c854dc6301cf72ad4 \ No newline at end of file + secret: 75152a97f20e4c4c854dc6301cf72ad4