package com.rf.psychological.security;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Profile;

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;

/**
 * @author lpf
 * @description: 属性加密解密转换器, 从String到String进行转换（只做加密解密部分操作）
 * @date 2022/4/7 9:07
 */
@Converter
@Slf4j
@Profile({"prod", "public"})
public class EncryptDecodeConverter implements AttributeConverter<String, String> {

    @Value("${spring.profiles.active}")
    private String profile;

    /**
     * 入库操作，即对入库属性进行加密
     *
     * @param attribute
     * @return
     */
    @Override
    public String convertToDatabaseColumn(String attribute) {
        if ("dev".equals(profile)) {
            return attribute;
        }
        //log.info("原数据：" + attribute);
        return DESede.encryptString(attribute);
    }

    /**
     * 出库查询，即对数据库属性进行解密
     *
     * @param dbData
     * @return
     */
    @Override
    public String convertToEntityAttribute(String dbData) {
        if ("dev".equals(profile)) {
            return dbData;
        }
        //log.info("加密数据：" + dbData);
        return DESede.decryptString(dbData);
    }
}
