he2802 2 жил өмнө
parent
commit
afdb306392

+ 1 - 0
zhongzheng-admin/src/main/resources/application.yml

@@ -141,6 +141,7 @@ mybatis-plus:
   executorType: SIMPLE
   # 指定外部化 MyBatis Properties 配置,通过该配置可以抽离配置,实现不同环境的配置部署
   configurationProperties: null
+ # typeHandlersPackage: com.zhongzheng.common.type
   configuration:
     # 自动驼峰命名规则(camel case)映射
     # 如果您的数据库命名符合规则无需使用 @TableField 注解指定数据库字段名

+ 1 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysMenu.java

@@ -113,6 +113,7 @@ public class SysMenu implements Serializable
     private String remark;
 
     /** 备注 */
+    @TableField(exist = false)
     private Long tenantId;
 
     /** 请求参数 */

+ 76 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/type/EncryptHandler.java

@@ -0,0 +1,76 @@
+package com.zhongzheng.common.type;
+
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.symmetric.AES;
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+import org.springframework.util.StringUtils;
+
+import java.nio.charset.StandardCharsets;
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+
+@MappedJdbcTypes(JdbcType.VARCHAR)
+@MappedTypes({String.class})
+public class EncryptHandler extends BaseTypeHandler<String> {
+    /**
+     * 线上运行后勿修改,会影响已加密数据解密
+     */
+    private static final byte[] KEYS = "base20230213zzkj".getBytes(StandardCharsets.UTF_8);
+
+    /**
+     * 设置参数
+     */
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
+        if (StringUtils.isEmpty(parameter)) {
+            ps.setString(i, null);
+            return;
+        }
+        AES aes = SecureUtil.aes(KEYS);
+        String encrypt = aes.encryptHex(parameter);
+        ps.setString(i, encrypt);
+    }
+
+    /**
+     * 获取值
+     */
+    @Override
+    public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
+        System.out.println(columnName+"CCOi"+rs.getString(columnName));
+        return decrypt(rs.getString(columnName));
+    }
+
+    /**
+     * 获取值
+     */
+    @Override
+    public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+        return null;
+
+    }
+
+    /**
+     * 获取值
+     */
+    @Override
+    public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+        return null;
+
+    }
+
+    public String decrypt(String value) {
+        if (null == value) {
+            return null;
+        }
+        if (value.length()<20 ) {
+            return value;
+        }
+        return SecureUtil.aes(KEYS).decryptStr(value);
+    }
+}

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/User.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.modules.user.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.zhongzheng.common.type.EncryptHandler;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -19,7 +20,7 @@ import com.zhongzheng.common.annotation.Excel;
 @Data
 @NoArgsConstructor
 @Accessors(chain = true)
-@TableName("user")
+@TableName(value = "user",autoResultMap = true)
 public class User implements Serializable {
 
 private static final long serialVersionUID=1L;
@@ -42,6 +43,7 @@ private static final long serialVersionUID=1L;
     private Integer sex;
 
     /** 身份证号 */
+    @TableField(typeHandler = EncryptHandler.class)
     private String idCard;
 
     /** 手机号码 */

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserVo.java

@@ -1,7 +1,10 @@
 package com.zhongzheng.modules.user.vo;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zhongzheng.common.type.EncryptHandler;
 import com.zhongzheng.common.utils.TelPhoneUtils;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
 import io.swagger.annotations.ApiModel;
@@ -21,6 +24,7 @@ import java.util.List;
  */
 @Data
 @ApiModel("用户视图对象")
+//@TableName(autoResultMap = true)
 public class UserVo {
 	private static final long serialVersionUID = 1L;
 
@@ -47,6 +51,7 @@ public class UserVo {
 	/** 身份证号 */
 	@Excel(name = "身份证号")
 	@ApiModelProperty("身份证号")
+//	@TableField(typeHandler = EncryptHandler.class)
 	private String idCard;
 	/** 手机号码 */
 	@Excel(name = "手机号码")