ソースを参照

数据库加密初始化

zhoutg 5 年 前
コミット
2678ae8407

+ 3 - 1
docs/028.20200102数据库加密/init_med.sql

@@ -1,5 +1,7 @@
 use `med`;
 
+ALTER  TABLE  `kl_library_info`  drop  INDEX  NAME_TYPE_INDEX_UNIQUE;
+
 ALTER TABLE `kl_library_info`
 ADD COLUMN `name_en` varchar(255) NOT NULL DEFAULT '' COMMENT '加密name' AFTER `name`;
 
@@ -25,5 +27,5 @@ ADD COLUMN `lib_name_de` varchar(255) NOT NULL DEFAULT '' COMMENT '解密lib_nam
 -- ALTER TABLE `kl_library_info` drop `spell_de`;
 -- ALTER TABLE `kl_concept` drop `lib_name_en`;
 -- ALTER TABLE `kl_concept` drop `lib_name_de`;
-
+-- ALTER TABLE `kl_library_info` ADD UNIQUE INDEX  NAME_TYPE_INDEX_UNIQUE(`name`, `type_id`);
 

+ 59 - 19
knowledgeman-service/src/main/java/com/diagbot/facade/EndeFacade.java

@@ -9,6 +9,7 @@ import com.diagbot.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -26,20 +27,30 @@ public class EndeFacade  {
     ConceptMapper conceptMapper;
 
     public String dealLibrary() {
+        List<LibraryInfoEnDeDTO> res = new ArrayList<>();
+
         Long t1 = System.currentTimeMillis();
         List<LibraryInfoEnDeDTO> libraryInfoEnDeDTOList = libraryInfoMapper.getLibraryinfoEnDe();
-        int i = 1;
-        for (LibraryInfoEnDeDTO bean : libraryInfoEnDeDTOList) {
+        int z = 1;
+        for (int j = 0; j < libraryInfoEnDeDTOList.size(); j++) {
+            LibraryInfoEnDeDTO bean = libraryInfoEnDeDTOList.get(j);
             if (StringUtil.isNotEmpty(bean.getName())) {
                 bean.setName(CryptUtil.encrypt_char(bean.getName()));
             }
             if (StringUtil.isNotEmpty(bean.getSpell())) {
                 bean.setSpell(CryptUtil.encrypt_char(bean.getSpell()));
             }
-            libraryInfoMapper.updateById(bean);
-            System.out.println(i++);
+
+            if (j < z * 7000) {
+                res.add(bean);
+            } else {
+                libraryInfoMapper.updateBatchEn(res);
+                res.clear();
+                res.add(bean);
+                ++z;
+            }
         }
-        // mapper.updateBatchEn(libraryInfoEnDeDTOList);
+        libraryInfoMapper.updateBatchEn(res);
         Long t2 = System.currentTimeMillis();
         String msg = "总计执行:"  +  (t2 - t1) / 1000  + "秒!";
         return msg;
@@ -47,10 +58,13 @@ public class EndeFacade  {
 
 
     public String verifyLibrary() {
+        List<LibraryInfoEnDeDTO> res = new ArrayList<>();
+
         Long t1 = System.currentTimeMillis();
         List<LibraryInfoEnDeDTO> libraryInfoEnDeDTOList = libraryInfoMapper.getLibraryinfoEnDe();
-        int i = 1;
-        for (LibraryInfoEnDeDTO bean : libraryInfoEnDeDTOList) {
+        int z = 1;
+        for (int j = 0; j < libraryInfoEnDeDTOList.size(); j++) {
+            LibraryInfoEnDeDTO bean = libraryInfoEnDeDTOList.get(j);
             if (StringUtil.isNotEmpty(bean.getName())) {
                 bean.setNameEn(CryptUtil.encrypt_char(bean.getName()));
                 bean.setNameDe(CryptUtil.decrypt_char(bean.getNameEn()));
@@ -59,27 +73,43 @@ public class EndeFacade  {
                 bean.setSpellEn(CryptUtil.encrypt_char(bean.getSpell()));
                 bean.setSpellDe(CryptUtil.decrypt_char(bean.getSpellEn()));
             }
-            libraryInfoMapper.updateById(bean);
-            System.out.println(i++);
+
+            if (j < z * 7000) {
+                res.add(bean);
+            } else {
+                libraryInfoMapper.updateBatchEn(res);
+                res.clear();
+                res.add(bean);
+                ++z;
+            }
         }
-        // mapper.updateBatchEn(libraryInfoEnDeDTOList);
+        libraryInfoMapper.updateBatchEn(res);
         Long t2 = System.currentTimeMillis();
         String msg = "总计执行:"  +  (t2 - t1) / 1000  + "秒!";
         return msg;
     }
 
-
     public String dealConcept() {
+        List<ConceptEnDeDTO> res = new ArrayList<>();
+
         Long t1 = System.currentTimeMillis();
         List<ConceptEnDeDTO> conceptEnDeDTOList = conceptMapper.getConceptEnDe();
-        int i = 1;
-        for (ConceptEnDeDTO bean : conceptEnDeDTOList) {
+        int z = 1;
+        for (int j = 0; j < conceptEnDeDTOList.size(); j++) {
+            ConceptEnDeDTO bean = conceptEnDeDTOList.get(j);
             if (StringUtil.isNotEmpty(bean.getLibName())) {
                 bean.setLibName(CryptUtil.encrypt_char(bean.getLibName()));
             }
-            conceptMapper.updateById(bean);
-            System.out.println(i++);
+            if (j < z * 7000) {
+                res.add(bean);
+            } else {
+                conceptMapper.updateBatchEn(res);
+                res.clear();
+                res.add(bean);
+                ++z;
+            }
         }
+        conceptMapper.updateBatchEn(res);
         Long t2 = System.currentTimeMillis();
         String msg = "总计执行:"  +  (t2 - t1) / 1000  + "秒!";
         return msg;
@@ -87,17 +117,27 @@ public class EndeFacade  {
 
 
     public String verifyConcept() {
+        List<ConceptEnDeDTO> res = new ArrayList<>();
+
         Long t1 = System.currentTimeMillis();
         List<ConceptEnDeDTO> conceptEnDeDTOList = conceptMapper.getConceptEnDe();
-        int i = 1;
-        for (ConceptEnDeDTO bean : conceptEnDeDTOList) {
+        int z = 1;
+        for (int j = 0; j < conceptEnDeDTOList.size(); j++) {
+            ConceptEnDeDTO bean = conceptEnDeDTOList.get(j);
             if (StringUtil.isNotEmpty(bean.getLibName())) {
                 bean.setLibNameEn(CryptUtil.encrypt_char(bean.getLibName()));
                 bean.setLibNameDe(CryptUtil.decrypt_char(bean.getLibNameEn()));
             }
-            conceptMapper.updateById(bean);
-            System.out.println(i++);
+            if (j < z * 7000) {
+                res.add(bean);
+            } else {
+                conceptMapper.updateBatchEn(res);
+                res.clear();
+                res.add(bean);
+                ++z;
+            }
         }
+        conceptMapper.updateBatchEn(res);
         Long t2 = System.currentTimeMillis();
         String msg = "总计执行:"  +  (t2 - t1) / 1000  + "秒!";
         return msg;

+ 2 - 0
knowledgeman-service/src/main/java/com/diagbot/mapper/ConceptMapper.java

@@ -84,5 +84,7 @@ public interface ConceptMapper extends BaseMapper<Concept> {
     List<ConceptEnDeDTO> getConceptEnDe();
 
     void updateById(ConceptEnDeDTO conceptEnDeDTO);
+
+    void updateBatchEn(List<ConceptEnDeDTO> conceptEnDeDTOList);
     
 }

+ 19 - 1
knowledgeman-service/src/main/resources/mapper/ConceptMapper.xml

@@ -335,7 +335,7 @@
 	<update id="updateById">
 		update kl_concept
 		<set>
-			<if test="lib_name != null">
+			<if test="libName != null">
 				lib_name = #{libName},
 			</if>
 			<if test="libNameEn != null">
@@ -347,4 +347,22 @@
 		</set>
 		where id = #{id}
 	</update>
+
+	<update id="updateBatchEn">
+		<foreach collection="list" item="item"  separator=";">
+			update kl_concept
+			<set>
+				<if test="item.libName != null">
+					lib_name = #{item.libName},
+				</if>
+				<if test="item.libNameEn != null">
+					lib_name_en = #{item.libNameEn},
+				</if>
+				<if test="item.libNameDe != null">
+					lib_name_de = #{item.libNameDe},
+				</if>
+			</set>
+			where id = #{item.id}
+		</foreach>
+	</update>
 </mapper>

+ 7 - 1
knowledgeman-service/src/main/resources/mapper/LibraryInfoMapper.xml

@@ -45,10 +45,16 @@
         SELECT id, name, spell from kl_library_info
     </select>
 
-    <update id="updateBatchEn" parameterType="list">
+    <update id="updateBatchEn">
         <foreach collection="list" item="item"  separator=";">
             update kl_library_info
             <set>
+                <if test="item.name != null">
+                    name = #{item.name},
+                </if>
+                <if test="item.spell != null">
+                    spell = #{item.spell},
+                </if>
                 <if test="item.nameEn != null">
                     name_en = #{item.nameEn},
                 </if>