瀏覽代碼

字段加解密

gaodm 5 年之前
父節點
當前提交
57c8afebc4

+ 2 - 0
aipt-service/src/main/java/com/diagbot/dto/ConceptBaseDTO.java

@@ -1,5 +1,6 @@
 package com.diagbot.dto;
 
+import com.diagbot.annotation.CryptField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -12,5 +13,6 @@ import lombok.Setter;
 @Setter
 public class ConceptBaseDTO {
     private Long conceptId; // 概念id
+    @CryptField
     private String name;    //概念名称
 }

+ 15 - 5
aipt-service/src/main/java/com/diagbot/facade/PartFacade.java

@@ -1,6 +1,7 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.PartDTO;
 import com.diagbot.dto.PartSymptomDTO;
@@ -13,13 +14,16 @@ import com.diagbot.enums.LexiconRSTypeEnum;
 import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.util.CryptUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.vo.PartSymptomVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.lang.reflect.Field;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -36,6 +40,8 @@ public class PartFacade {
     ConceptFacade conceptFacade;
     @Autowired
     ConceptDetailFacade conceptDetailFacade;
+    @Autowired
+    private CryptConfiguer cryptConfiguer;
 
     /**
      * 根据已选部位返回对应的症状
@@ -49,6 +55,11 @@ public class PartFacade {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
                     "请选择部位");
         }
+        if (cryptConfiguer.cryptFlag) {
+            for (int i = 0; i < partList.size(); i++) {
+                partList.set(i, CryptUtil.encrypt_char(partList.get(i)));
+            }
+        }
         if (partSymptomVO.getSexType() == null) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
                     "请选择性别");
@@ -118,10 +129,10 @@ public class PartFacade {
         // 获取症状的简述信息
         List<ConceptDetail> conceptDetailList = conceptDetailFacade.list(
                 new QueryWrapper<ConceptDetail>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .in("concept_id", symptomList.stream().map(row -> row.getEndId()).distinct().collect(Collectors.toList()))
-                .apply("find_in_set({0},position)", 7));
-        Map<Long, String> descMap = conceptDetailList.stream().collect(Collectors.toMap(row->row.getConceptId(), row->row.getText()));
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .in("concept_id", symptomList.stream().map(row -> row.getEndId()).distinct().collect(Collectors.toList()))
+                        .apply("find_in_set({0},position)", 7));
+        Map<Long, String> descMap = conceptDetailList.stream().collect(Collectors.toMap(row -> row.getConceptId(), row -> row.getText()));
 
 
         // 设置部位下的症状
@@ -159,5 +170,4 @@ public class PartFacade {
         return res;
     }
 
-
 }

+ 2 - 0
common/src/main/java/com/diagbot/annotation/CryptField.java

@@ -2,6 +2,7 @@ package com.diagbot.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
@@ -11,6 +12,7 @@ import java.lang.annotation.Target;
  * @author: gaodm
  * @time: 2019/12/30 18:36
  */
+@Inherited
 @Documented
 @Retention(RetentionPolicy.RUNTIME)
 @Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD })

+ 19 - 2
common/src/main/java/com/diagbot/util/CryptPojoUtils.java

@@ -11,6 +11,8 @@ import com.diagbot.annotation.CryptField;
 import org.apache.commons.lang3.StringUtils;
 
 import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -51,7 +53,7 @@ public class CryptPojoUtils {
             return;
         }
 
-        Field[] declaredFields = t.getClass().getDeclaredFields();
+        Field[] declaredFields = getAllFields(t.getClass());
         try {
             if (declaredFields != null && declaredFields.length > 0) {
                 for (Field field : declaredFields) {
@@ -126,7 +128,7 @@ public class CryptPojoUtils {
             return;
         }
 
-        Field[] declaredFields = t.getClass().getDeclaredFields();
+        Field[] declaredFields = getAllFields(t.getClass());
         try {
             if (declaredFields != null && declaredFields.length > 0) {
                 for (Field field : declaredFields) {
@@ -179,4 +181,19 @@ public class CryptPojoUtils {
                 || o instanceof Integer || o instanceof Long
                 || o instanceof Boolean || o instanceof Map;
     }
+
+    /**
+     * 获取本类及其父类的属性的方法
+     * @param clazz 当前类对象
+     * @return 字段数组
+     */
+    private static Field[] getAllFields(Class<?> clazz) {
+        List<Field> fieldList = new ArrayList<>();
+        while (clazz != null){
+            fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
+            clazz = clazz.getSuperclass();
+        }
+        Field[] fields = new Field[fieldList.size()];
+        return fieldList.toArray(fields);
+    }
 }