Commit d26b7248 authored by killer's avatar killer

phone数据加密

parent 738586df
...@@ -412,6 +412,13 @@ ...@@ -412,6 +412,13 @@
</exclusions> </exclusions>
</dependency> </dependency>
<!-- 统一加解密包 -->
<dependency>
<groupId>cn.quantgroup</groupId>
<artifactId>security</artifactId>
<version>0.1.2</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package cn.quantgroup.xyqb.config;
import cn.quantgroup.security.AESEncryption;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 统一加解密配置
*
* @author killer
* @date 2022年01月04日
**/
@Configuration
public class SecurityConfig {
@Value("${keystone.security.key}")
private String key;
@Value("${keystone.security.iv}")
private String iv;
@Bean
public AESEncryption encryption() {
return new AESEncryption(key, iv, true);
}
}
package cn.quantgroup.xyqb.controller;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.repository.IUserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
* 测试类
*
* @author killer
* @date 2022年01月04日
**/
@RestController
@RequestMapping("/v1/test")
@RequiredArgsConstructor
public class TestController {
private final IUserRepository userRepository;
@PostMapping(value = "/save/user")
public JsonResult<?> saveUser(@RequestBody User user) {
User result = userRepository.save(user);
return JsonResult.buildSuccessResult("保存成功", result);
}
@GetMapping(value = "/query/user/{id}")
public JsonResult<?> saveUser(@PathVariable("id") Long id) {
User result = userRepository.findById(id);
return JsonResult.buildSuccessResult("查询成功", result);
}
}
...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.entity; ...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.entity;
import cn.quantgroup.user.enums.BizType; import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.user.enums.Relation; import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import cn.quantgroup.xyqb.model.Tuple; import cn.quantgroup.xyqb.model.Tuple;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -10,6 +11,7 @@ import lombok.Data; ...@@ -10,6 +11,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import java.io.Serializable; import java.io.Serializable;
...@@ -31,6 +33,7 @@ public class Contact extends BaseEntity implements Serializable { ...@@ -31,6 +33,7 @@ public class Contact extends BaseEntity implements Serializable {
@Column(name = "name") @Column(name = "name")
private String name; private String name;
@Column(name = "phone_no") @Column(name = "phone_no")
@Convert(converter = EncryptConverter.class)
private String phoneNo; private String phoneNo;
@Column(name = "biz_type") @Column(name = "biz_type")
private BizType bizType = BizType.CASH; private BizType bizType = BizType.CASH;
......
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import java.io.Serializable; import java.io.Serializable;
...@@ -43,12 +45,14 @@ public class ModifyPhoneNo extends BaseEntity implements Serializable { ...@@ -43,12 +45,14 @@ public class ModifyPhoneNo extends BaseEntity implements Serializable {
* 原手机号码 * 原手机号码
*/ */
@Column(name = "prev_phone_no") @Column(name = "prev_phone_no")
@Convert(converter = EncryptConverter.class)
private String prevPhoneNo; private String prevPhoneNo;
/** /**
* 新手机号码 * 新手机号码
*/ */
@Column(name = "cur_phone_no") @Column(name = "cur_phone_no")
@Convert(converter = EncryptConverter.class)
private String curPhoneNo; private String curPhoneNo;
/** /**
......
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import javax.persistence.Column; import javax.persistence.*;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import java.io.Serializable; import java.io.Serializable;
import java.util.Objects; import java.util.Objects;
/** /**
* Created by Miraculous on 15/7/4. * 用户表
*
* @author Miraculous
* @date 2015年07月04日
*/ */
@Getter @Getter
@Setter @Setter
@ToString @ToString
@Entity @Entity
@Table(name = "user", @Table(name = "user", uniqueConstraints = @UniqueConstraint(columnNames = "phone_no"))
uniqueConstraints = @UniqueConstraint(columnNames = "phone_no"))
public class User extends BaseEntity implements Serializable { public class User extends BaseEntity implements Serializable {
private static final long serialVersionUID = -1L; private static final long serialVersionUID = -1L;
//手机号 /**
* 手机号
*/
@Column(name = "phone_no") @Column(name = "phone_no")
@Convert(converter = EncryptConverter.class)
private String phoneNo; private String phoneNo;
//uuid /**
* password
*/
@Column(name = "password") @Column(name = "password")
private String password; private String password;
//第一次用户来源 channel_id /**
* 第一次用户来源 channel_id
*/
@Column(name = "registered_from") @Column(name = "registered_from")
private Long registeredFrom; private Long registeredFrom;
//uuid /**
* uuid
*/
@Column(name = "uuid") @Column(name = "uuid")
private String uuid; private String uuid;
/**
* 是否禁用
*/
@Column(name = "enable") @Column(name = "enable")
private Boolean enable; private Boolean enable;
/** /**
* 是否有密码 * 是否有密码
* *
* @return * @return true/false
*/ */
public boolean getHasPassword() { public boolean getHasPassword() {
return Objects.nonNull(password) && !Objects.equals("", password); return Objects.nonNull(password) && !Objects.equals("", password);
......
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.motan.retbean.XUserDetail; import cn.quantgroup.motan.retbean.XUserDetail;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import cn.quantgroup.xyqb.model.Gender; import cn.quantgroup.xyqb.model.Gender;
import cn.quantgroup.xyqb.model.IdType; import cn.quantgroup.xyqb.model.IdType;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import javax.persistence.Column; import javax.persistence.*;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import java.io.Serializable; import java.io.Serializable;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.Optional; import java.util.Optional;
...@@ -32,6 +30,7 @@ public class UserDetail extends BaseEntity implements Serializable { ...@@ -32,6 +30,7 @@ public class UserDetail extends BaseEntity implements Serializable {
private Long userId; private Long userId;
@Column(name = "phone_no") @Column(name = "phone_no")
@Convert(converter = EncryptConverter.class)
private String phoneNo; private String phoneNo;
@Column(name = "name") @Column(name = "name")
......
...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.entity; ...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.entity;
import cn.quantgroup.user.enums.MaritalStatus; import cn.quantgroup.user.enums.MaritalStatus;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import lombok.*; import lombok.*;
...@@ -24,6 +25,7 @@ public class UserSpouse extends BaseEntity implements Serializable { ...@@ -24,6 +25,7 @@ public class UserSpouse extends BaseEntity implements Serializable {
private Long userId; private Long userId;
@Column(name = "spouse_phone") @Column(name = "spouse_phone")
@Convert(converter = EncryptConverter.class)
private String spousePhone; private String spousePhone;
@Column(name = "spouse_name") @Column(name = "spouse_name")
......
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
...@@ -28,6 +29,7 @@ public class UuidPhoneMapping implements Serializable { ...@@ -28,6 +29,7 @@ public class UuidPhoneMapping implements Serializable {
private String uuid; private String uuid;
@Column(name = "phone_no") @Column(name = "phone_no")
@Convert(converter = EncryptConverter.class)
private String phoneNo; private String phoneNo;
......
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import cn.quantgroup.xyqb.util.EmojiUtil; import cn.quantgroup.xyqb.util.EmojiUtil;
import lombok.Data; import lombok.Data;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -23,6 +24,7 @@ public class WechatUserInfo extends BaseEntity implements Serializable { ...@@ -23,6 +24,7 @@ public class WechatUserInfo extends BaseEntity implements Serializable {
@Column(name = "open_id") @Column(name = "open_id")
private String openId; private String openId;
@Column(name = "phone_no") @Column(name = "phone_no")
@Convert(converter = EncryptConverter.class)
private String phoneNo = ""; private String phoneNo = "";
@Column(name = "app_name") @Column(name = "app_name")
private String appName = "xyqb"; private String appName = "xyqb";
......
package cn.quantgroup.xyqb.entity.converter;
import cn.quantgroup.security.AESEncryption;
import cn.quantgroup.xyqb.util.ApplicationContextHolder;
import org.apache.commons.lang3.StringUtils;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
/**
* 字段加解密转换器
*
* @author killer
* @date 2022年01月04日
**/
@Converter
public class EncryptConverter implements AttributeConverter<String, String> {
@Override
public String convertToDatabaseColumn(String entityAttribute) {
/* 加密 */
if (StringUtils.isBlank(entityAttribute)) {
return entityAttribute;
}
AESEncryption aesEncryption = ApplicationContextHolder.getBean(AESEncryption.class);
return aesEncryption.encryptBase64(entityAttribute);
}
@Override
public String convertToEntityAttribute(String databaseColumn) {
/* 解密 */
if (StringUtils.isBlank(databaseColumn)) {
return databaseColumn;
}
AESEncryption aesEncryption = ApplicationContextHolder.getBean(AESEncryption.class);
return aesEncryption.decryptBase64(databaseColumn);
}
}
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment