From aa6fd3986a72524dea1547f2b1cce85ea71228bd Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 19 Oct 2023 17:16:31 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java |   64 +++++++++++++++++++++++++++++++
 1 files changed, 63 insertions(+), 1 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
index f6607be..63fb876 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
@@ -17,6 +17,9 @@
 package cn.gistack.system.user.service.impl;
 
 
+import cn.gistack.pwd.dto.CBCResultDTO;
+import cn.gistack.pwd.dto.ResultDTO;
+import cn.gistack.pwd.fegin.IPwdClient;
 import cn.gistack.system.cache.DictCache;
 import cn.gistack.system.cache.ParamCache;
 import cn.gistack.system.cache.SysCache;
@@ -29,9 +32,12 @@
 import cn.gistack.system.user.excel.UserExcel;
 import cn.gistack.system.user.mapper.UserMapper;
 import cn.gistack.system.user.service.IUserDeptService;
+import cn.gistack.system.user.service.IUserEncipherService;
 import cn.gistack.system.user.service.IUserOauthService;
 import cn.gistack.system.user.service.IUserService;
+import cn.gistack.system.user.supo.UserSUPO;
 import cn.gistack.system.user.vo.UserVO;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -76,6 +82,10 @@
 	private final ISysClient sysClient;
 	private final BladeTenantProperties tenantProperties;
 
+	private final IPwdClient pwdClient;
+
+	private final IUserEncipherService userEncipherService;
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean submit(User user) {
@@ -106,6 +116,47 @@
 		return save(user) && submitUserDept(user);
 	}
 
+	public Boolean encryptUserInfo(User user){
+		UserSUPO userSUPO = new UserSUPO();
+		userSUPO.setPhone(user.getPhone());
+		userSUPO.setRoleId(user.getRoleId());
+		userSUPO.setDeptId(user.getDeptId());
+
+		String message = JSONObject.toJSONString(userSUPO);
+
+		R<CBCResultDTO> cbcRres = pwdClient.getCBCMacEncipher(message);
+		if (cbcRres.getCode() != 200){
+			return false;
+		}
+		CBCResultDTO data = cbcRres.getData();
+		String keyIndex = data.getKeyIndex();
+		String maced = data.getMaced();
+		String sm4IV = data.getSm4IV();
+
+		user.setKeyindexs(keyIndex);
+		user.setMaced(maced);
+		user.setSm4iv(sm4IV);
+
+		R<ResultDTO> encryptRes = pwdClient.getEncrypt(sm4IV, keyIndex, message);
+		if (encryptRes.getCode() != 200){
+			return false;
+		}
+		user.setEncdata(encryptRes.getData().getData());
+
+		return true;
+	}
+
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean save(User entity) {
+		//对User进行加密
+		encryptUserInfo(entity);
+		boolean saveUser = super.save(entity);
+		boolean saveUserEncipher = userEncipherService.save(new UserEncipher(entity));
+		return saveUserEncipher && saveUser;
+	}
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean updateUser(User user) {
@@ -126,6 +177,17 @@
 	public boolean updateUserInfo(User user) {
 		user.setPassword(null);
 		return updateById(user);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean updateById(User entity) {
+
+		encryptUserInfo(entity);
+		boolean updateUser = super.updateById(entity);
+		boolean updateUserEncipher = userEncipherService.updateById(new UserEncipher(entity));
+
+		return updateUser&&updateUserEncipher;
 	}
 
 	private boolean submitUserDept(User user) {
@@ -328,7 +390,7 @@
 		if (Func.contains(Func.toLongArray(userIds), AuthUtil.getUserId())) {
 			throw new ServiceException("不能删除本账号!");
 		}
-		return deleteLogic(Func.toLongList(userIds));
+		return deleteLogic(Func.toLongList(userIds)) && userEncipherService.deleteLogic(Func.toLongList(userIds));
 	}
 
 	@Override

--
Gitblit v1.9.3