From 8dc2ddc3c8a0e9e9fdf8c62fae5e69792df2e13e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com>
Date: Mon, 12 Dec 2022 09:37:15 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=AF=86=E6=96=B9=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/com/engine/salary/annotation/Encrypt.java | 20 +++
.../engine/salary/biz/AddUpDeductionBiz.java | 10 +-
.../engine/salary/encrypt/EncryptSetting.java | 16 +++
.../engine/salary/encrypt/EncryptUtil.java | 131 ++++++++++++++++++
.../entity/datacollection/AddUpDeduction.java | 7 +
.../datacollection/dto/AddUpDeductionDTO.java | 12 +-
.../impl/AddUpDeductionServiceImpl.java | 6 +-
.../service/impl/TaxAgentServiceImpl.java | 6 -
.../sys/service/SalarySysConfService.java | 2 +
.../impl/SalarySysConfServiceImpl.java | 24 ++--
10 files changed, 207 insertions(+), 27 deletions(-)
create mode 100644 src/com/engine/salary/annotation/Encrypt.java
create mode 100644 src/com/engine/salary/encrypt/EncryptSetting.java
create mode 100644 src/com/engine/salary/encrypt/EncryptUtil.java
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