Browse Source

数据库加密初始化

zhoutg 5 years ago
parent
commit
8f322918e8

+ 29 - 0
docs/028.20200102数据库加密/init_med.sql

@@ -0,0 +1,29 @@
+use `med`;
+
+ALTER TABLE `kl_library_info`
+ADD COLUMN `name_en` varchar(255) NOT NULL DEFAULT '' COMMENT '加密name' AFTER `name`;
+
+ALTER TABLE `kl_library_info`
+ADD COLUMN `name_de` varchar(255) NOT NULL DEFAULT '' COMMENT '解密name_en' AFTER `name`;
+
+ALTER TABLE `kl_library_info`
+ADD COLUMN `spell_en` varchar(100) NOT NULL DEFAULT '' COMMENT '加密spell' AFTER `spell`;
+
+ALTER TABLE `kl_library_info`
+ADD COLUMN `spell_de` varchar(100) NOT NULL DEFAULT '' COMMENT '解密spell_en' AFTER `spell`;
+
+ALTER TABLE `kl_concept`
+ADD COLUMN `lib_name_en` varchar(255) NOT NULL DEFAULT '' COMMENT '加密lib_name' AFTER `lib_name`;
+
+ALTER TABLE `kl_concept`
+ADD COLUMN `lib_name_de` varchar(255) NOT NULL DEFAULT '' COMMENT '解密lib_name_en' AFTER `lib_name`;
+
+-- 删除临时添加字段
+-- ALTER TABLE `kl_library_info` drop `name_en`;
+-- ALTER TABLE `kl_library_info` drop `name_de`;
+-- ALTER TABLE `kl_library_info` drop `spell_en`;
+-- ALTER TABLE `kl_library_info` drop `spell_de`;
+-- ALTER TABLE `kl_concept` drop `lib_name_en`;
+-- ALTER TABLE `kl_concept` drop `lib_name_de`;
+
+

+ 4 - 0
knowledgeman-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -43,6 +43,10 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/lisMapping/getUniqueNameWithList").permitAll()
                 .antMatchers("/conceptDetail/conceptDetailBI").permitAll()
                 .antMatchers("/concept/queryLibTypeCou").permitAll()
+                .antMatchers("/ende/verifyLibrary").permitAll()
+                .antMatchers("/ende/verifyConcept").permitAll()
+                .antMatchers("/ende/dealLibrary").permitAll()
+                .antMatchers("/ende/dealConcept").permitAll()
                 .antMatchers("/**").authenticated();
 //                .antMatchers("/**").permitAll();
     }

+ 4 - 0
knowledgeman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -106,6 +106,10 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/lisMapping/getUniqueNameWithList", request)
                 || matchers("/conceptDetail/conceptDetailBI", request)
                 || matchers("/concept/queryLibTypeCou", request)
+                || matchers("/ende/verifyLibrary", request)
+                || matchers("/ende/verifyConcept", request)
+                || matchers("/ende/dealLibrary", request)
+                || matchers("/ende/dealConcept", request)
                 || matchers("/", request)) {
             return true;
         }

+ 38 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/ConceptEnDeDTO.java

@@ -0,0 +1,38 @@
+package com.diagbot.dto;
+
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 术语表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2019-05-13
+ */
+@Getter
+@Setter
+public class ConceptEnDeDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 名称
+     */
+    private String libName;
+
+
+    private String libNameEn;
+
+    private String libNameDe;
+}

+ 63 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/LibraryInfoEnDeDTO.java

@@ -0,0 +1,63 @@
+package com.diagbot.dto;
+
+
+import lombok.Getter;
+import lombok.Setter;
+import java.io.Serializable;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 术语表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2019-05-13
+ */
+@Getter
+@Setter
+public class LibraryInfoEnDeDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 拼音
+     */
+    private String spell;
+
+
+    private String nameEn;
+
+    private String nameDe;
+
+    private String spellEn;
+
+    private String spellDe;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        LibraryInfoEnDeDTO that = (LibraryInfoEnDeDTO) o;
+        return Objects.equals(id, that.id);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(id);
+    }
+}

+ 105 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/EndeFacade.java

@@ -0,0 +1,105 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.ConceptEnDeDTO;
+import com.diagbot.dto.LibraryInfoEnDeDTO;
+import com.diagbot.mapper.ConceptMapper;
+import com.diagbot.mapper.LibraryInfoMapper;
+import com.diagbot.util.CryptUtil;
+import com.diagbot.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/23 11:37
+ */
+@Component
+public class EndeFacade  {
+
+    @Autowired
+    LibraryInfoMapper libraryInfoMapper;
+
+    @Autowired
+    ConceptMapper conceptMapper;
+
+    public String dealLibrary() {
+        Long t1 = System.currentTimeMillis();
+        List<LibraryInfoEnDeDTO> libraryInfoEnDeDTOList = libraryInfoMapper.getLibraryinfoEnDe();
+        int i = 1;
+        for (LibraryInfoEnDeDTO bean : libraryInfoEnDeDTOList) {
+            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++);
+        }
+        // mapper.updateBatchEn(libraryInfoEnDeDTOList);
+        Long t2 = System.currentTimeMillis();
+        String msg = "总计执行:"  +  (t2 - t1) / 1000  + "秒!";
+        return msg;
+    }
+
+
+    public String verifyLibrary() {
+        Long t1 = System.currentTimeMillis();
+        List<LibraryInfoEnDeDTO> libraryInfoEnDeDTOList = libraryInfoMapper.getLibraryinfoEnDe();
+        int i = 1;
+        for (LibraryInfoEnDeDTO bean : libraryInfoEnDeDTOList) {
+            if (StringUtil.isNotEmpty(bean.getName())) {
+                bean.setNameEn(CryptUtil.encrypt_char(bean.getName()));
+                bean.setNameDe(CryptUtil.decrypt_char(bean.getNameEn()));
+            }
+            if (StringUtil.isNotEmpty(bean.getSpell())) {
+                bean.setSpellEn(CryptUtil.encrypt_char(bean.getSpell()));
+                bean.setSpellDe(CryptUtil.decrypt_char(bean.getSpellEn()));
+            }
+            libraryInfoMapper.updateById(bean);
+            System.out.println(i++);
+        }
+        // mapper.updateBatchEn(libraryInfoEnDeDTOList);
+        Long t2 = System.currentTimeMillis();
+        String msg = "总计执行:"  +  (t2 - t1) / 1000  + "秒!";
+        return msg;
+    }
+
+
+    public String dealConcept() {
+        Long t1 = System.currentTimeMillis();
+        List<ConceptEnDeDTO> conceptEnDeDTOList = conceptMapper.getConceptEnDe();
+        int i = 1;
+        for (ConceptEnDeDTO bean : conceptEnDeDTOList) {
+            if (StringUtil.isNotEmpty(bean.getLibName())) {
+                bean.setLibName(CryptUtil.encrypt_char(bean.getLibName()));
+            }
+            conceptMapper.updateById(bean);
+            System.out.println(i++);
+        }
+        Long t2 = System.currentTimeMillis();
+        String msg = "总计执行:"  +  (t2 - t1) / 1000  + "秒!";
+        return msg;
+    }
+
+
+    public String verifyConcept() {
+        Long t1 = System.currentTimeMillis();
+        List<ConceptEnDeDTO> conceptEnDeDTOList = conceptMapper.getConceptEnDe();
+        int i = 1;
+        for (ConceptEnDeDTO bean : conceptEnDeDTOList) {
+            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++);
+        }
+        Long t2 = System.currentTimeMillis();
+        String msg = "总计执行:"  +  (t2 - t1) / 1000  + "秒!";
+        return msg;
+    }
+}

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

@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.BIItemDTO;
 import com.diagbot.dto.ConceptBaseDTO;
+import com.diagbot.dto.ConceptEnDeDTO;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.GetAllInformationDTO;
 import com.diagbot.dto.GetAllLisConceptDTO;
+import com.diagbot.dto.LibraryInfoEnDeDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.vo.GetAllInformationVO;
@@ -77,5 +79,10 @@ public interface ConceptMapper extends BaseMapper<Concept> {
      * @return
      */
     List<BIItemDTO> queryLibTypeCou();
+
+
+    List<ConceptEnDeDTO> getConceptEnDe();
+
+    void updateById(ConceptEnDeDTO conceptEnDeDTO);
     
 }

+ 8 - 0
knowledgeman-service/src/main/java/com/diagbot/mapper/LibraryInfoMapper.java

@@ -2,7 +2,9 @@ package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.dto.LibraryForDiagnoseDTO;
+import com.diagbot.dto.LibraryInfoEnDeDTO;
 import com.diagbot.dto.RedisWithDiagnoseDTO;
+import com.diagbot.entity.DiagnoseDetail;
 import com.diagbot.entity.LibraryInfo;
 
 import java.util.List;
@@ -26,4 +28,10 @@ public interface LibraryInfoMapper extends BaseMapper<LibraryInfo> {
     public Set<String> getLibraryForStandard();
 
     public List<RedisWithDiagnoseDTO> putRedis();
+
+    List<LibraryInfoEnDeDTO> getLibraryinfoEnDe();
+
+    void updateBatchEn(List<LibraryInfoEnDeDTO> libraryInfoEnDeDTOList);
+
+    void updateById(LibraryInfoEnDeDTO libraryInfoEnDeDTO);
 }

+ 70 - 0
knowledgeman-service/src/main/java/com/diagbot/web/EndeController.java

@@ -0,0 +1,70 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.EndeFacade;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Description: 加解密处理数据
+ * @Author:zhoutg
+ * @time: 2019/8/20 15:35
+ */
+@RestController
+@Api(value = "加解密处理数据", tags = { "加解密处理数据API" })
+@RequestMapping(value = "/ende")
+@SuppressWarnings("unchecked")
+public class EndeController {
+
+    @Autowired
+    EndeFacade endeFacade;
+
+    @ApiOperation(value = "验证library数据,用于验证加密算法[by:zhoutg]",
+            notes = "")
+    @PostMapping("/verifyLibrary")
+    @SysLogger("verifyLibrary")
+    @Transactional
+    public RespDTO<String> verifyLibrary() {
+        String msg = endeFacade.verifyLibrary();
+        return RespDTO.onSuc(msg);
+    }
+
+
+    @ApiOperation(value = "验证concept数据,用于验证加密算法[by:zhoutg]",
+            notes = "")
+    @PostMapping("/verifyConcept")
+    @SysLogger("verifyConcept")
+    @Transactional
+    public RespDTO<String> verifyConcept() {
+        String msg = endeFacade.verifyConcept();
+        return RespDTO.onSuc(msg);
+    }
+
+
+    @ApiOperation(value = "替换library数据,替换真实数据[by:zhoutg]",
+            notes = "")
+    @PostMapping("/dealLibrary")
+    @SysLogger("dealLibrary")
+    @Transactional
+    public RespDTO<String> dealLibrary() {
+        String msg = endeFacade.dealLibrary();
+        return RespDTO.onSuc(msg);
+    }
+
+
+    @ApiOperation(value = "替换concept数据,替换真实数据[by:zhoutg]",
+            notes = "")
+    @PostMapping("/dealConcept")
+    @SysLogger("dealConcept")
+    @Transactional
+    public RespDTO<String> dealConcept() {
+        String msg = endeFacade.dealConcept();
+        return RespDTO.onSuc(msg);
+    }
+}

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

@@ -326,5 +326,25 @@
 		GROUP BY lib_type) b
 		ON a.id=b.lib_type
 	</select>
-    
+
+
+	<select id="getConceptEnDe" resultType="com.diagbot.dto.ConceptEnDeDTO">
+        SELECT id, lib_name from kl_concept
+    </select>
+
+	<update id="updateById">
+		update kl_concept
+		<set>
+			<if test="lib_name != null">
+				lib_name = #{libName},
+			</if>
+			<if test="libNameEn != null">
+				lib_name_en = #{libNameEn},
+			</if>
+			<if test="libNameDe != null">
+				lib_name_de = #{libNameDe},
+			</if>
+		</set>
+		where id = #{id}
+	</update>
 </mapper>

+ 51 - 0
knowledgeman-service/src/main/resources/mapper/LibraryInfoMapper.xml

@@ -40,4 +40,55 @@
         from kl_library_info a where  a.is_deleted = 'N'
         and type_id in (1,5,12,13,14,16,17,18,35,70)
     </select>
+
+    <select id="getLibraryinfoEnDe" resultType="com.diagbot.dto.LibraryInfoEnDeDTO">
+        SELECT id, name, spell from kl_library_info
+    </select>
+
+    <update id="updateBatchEn" parameterType="list">
+        <foreach collection="list" item="item"  separator=";">
+            update kl_library_info
+            <set>
+                <if test="item.nameEn != null">
+                    name_en = #{item.nameEn},
+                </if>
+                <if test="item.spellEn != null">
+                    spell_en = #{item.spellEn},
+                </if>
+                <if test="item.nameDe != null">
+                    name_de = #{item.nameDe},
+                </if>
+                <if test="item.spellDe != null">
+                    spell_de = #{item.spellDe},
+                </if>
+            </set>
+            where id = #{item.id}
+        </foreach>
+    </update>
+
+    <update id="updateById">
+        update kl_library_info
+        <set>
+            <if test="name != null">
+                name = #{name},
+            </if>
+            <if test="spell != null">
+                spell = #{spell},
+            </if>
+            <if test="nameEn != null">
+                name_en = #{nameEn},
+            </if>
+            <if test="spellEn != null">
+                spell_en = #{spellEn},
+            </if>
+            <if test="nameDe != null">
+                name_de = #{nameDe},
+            </if>
+            <if test="spellDe != null">
+                spell_de = #{spellDe},
+            </if>
+        </set>
+        where id = #{id}
+    </update>
+
 </mapper>