diff --git a/src/com/engine/salary/annotation/Encrypt.java b/src/com/engine/salary/annotation/Encrypt.java
new file mode 100644
index 000000000..c61e1de44
--- /dev/null
+++ b/src/com/engine/salary/annotation/Encrypt.java
@@ -0,0 +1,20 @@
+package com.engine.salary.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 加密字段,用于标注需加解密的字段
+ *
Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Encrypt {
+
+}
diff --git a/src/com/engine/salary/biz/AddUpDeductionBiz.java b/src/com/engine/salary/biz/AddUpDeductionBiz.java
index ba1b48ef7..617cda617 100644
--- a/src/com/engine/salary/biz/AddUpDeductionBiz.java
+++ b/src/com/engine/salary/biz/AddUpDeductionBiz.java
@@ -1,5 +1,6 @@
package com.engine.salary.biz;
+import com.engine.salary.encrypt.EncryptUtil;
import com.engine.salary.encrypt.datacollection.AddUpDeductionEncrypt;
import com.engine.salary.encrypt.datacollection.AddUpDeductionRecordStrDTOEncrypt;
import com.engine.salary.encrypt.datacollection.AddUpDeductionStrDTOEncrypt;
@@ -19,6 +20,8 @@ import java.util.stream.Collectors;
public class AddUpDeductionBiz extends BaseBean {
+ private final EncryptUtil encryptUtil = new EncryptUtil();
+
/**
* 关联查询查询列表
@@ -49,7 +52,7 @@ public class AddUpDeductionBiz extends BaseBean {
try {
AddUpDeductionMapper mapper = sqlSession.getMapper(AddUpDeductionMapper.class);
List addUpDeductions = mapper.listSome(param);
- return AddUpDeductionEncrypt.decryptAddUpDeductionList(addUpDeductions);
+ return encryptUtil.decryptList(addUpDeductions, AddUpDeduction.class);
} finally {
sqlSession.close();
}
@@ -135,11 +138,6 @@ public class AddUpDeductionBiz extends BaseBean {
}
-
-
-
-
-
/**
* 处理导入数据
*
diff --git a/src/com/engine/salary/encrypt/EncryptSetting.java b/src/com/engine/salary/encrypt/EncryptSetting.java
new file mode 100644
index 000000000..4954537fd
--- /dev/null
+++ b/src/com/engine/salary/encrypt/EncryptSetting.java
@@ -0,0 +1,16 @@
+package com.engine.salary.encrypt;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class EncryptSetting {
+
+ public boolean open;
+
+}
\ No newline at end of file
diff --git a/src/com/engine/salary/encrypt/EncryptUtil.java b/src/com/engine/salary/encrypt/EncryptUtil.java
new file mode 100644
index 000000000..8cc5c0606
--- /dev/null
+++ b/src/com/engine/salary/encrypt/EncryptUtil.java
@@ -0,0 +1,131 @@
+package com.engine.salary.encrypt;
+
+
+import com.engine.common.util.ServiceUtil;
+import com.engine.salary.annotation.Encrypt;
+import com.engine.salary.exception.SalaryRunTimeException;
+import com.engine.salary.sys.service.SalarySysConfService;
+import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import weaver.hrm.User;
+
+import java.lang.reflect.Field;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Slf4j
+public class EncryptUtil {
+
+ private SalarySysConfService getSalarySysConfService(User user) {
+ return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
+ }
+
+ public T encrypt(T data, Class clazz) {
+ boolean encryptIsOpen = getSalarySysConfService(null).encryptIsOpen();
+ if (!encryptIsOpen) {
+ return data;
+ }
+ try {
+ List fieldList = Arrays.stream(clazz.getDeclaredFields()).filter(field -> field.isAnnotationPresent(Encrypt.class)).collect(Collectors.toList());
+ if (CollectionUtils.isNotEmpty(fieldList)) {
+ for (Field field : fieldList) {
+ Field declaredField = data.getClass().getDeclaredField(field.getName());
+ declaredField.setAccessible(true);
+ String fieldValue = (String) declaredField.get(data);
+ if (StringUtils.isNotBlank(fieldValue)) {
+ String encryptValue = AESEncryptUtil.encrypt(fieldValue);
+ declaredField.set(data, encryptValue);
+ }
+ }
+ }
+ return data;
+ } catch (Exception e) {
+ log.error("加密异常", e);
+ throw new SalaryRunTimeException("加密异常");
+ }
+ }
+
+ public List encryptList(List dataList, Class clazz) {
+ boolean encryptIsOpen = getSalarySysConfService(null).encryptIsOpen();
+ if (!encryptIsOpen) {
+ return dataList;
+ }
+ try {
+ List fieldList = Arrays.stream(clazz.getDeclaredFields()).filter(field -> field.isAnnotationPresent(Encrypt.class)).collect(Collectors.toList());
+ if (CollectionUtils.isNotEmpty(fieldList)) {
+ List