From 1dd5d8f8a616f5cf3caa7828d46989c7d3dcafc4 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Thu, 19 Oct 2023 15:01:43 +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 |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 110 insertions(+), 4 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 8d5523a..a4cea02 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;
@@ -31,7 +34,9 @@
 import cn.gistack.system.user.service.IUserDeptService;
 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 +81,8 @@
 	private final ISysClient sysClient;
 	private final BladeTenantProperties tenantProperties;
 
+	private final IPwdClient pwdClient;
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean submit(User user) {
@@ -106,6 +113,44 @@
 		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
+	public boolean save(User entity) {
+		//对User进行加密
+		encryptUserInfo(entity);
+		return super.save(entity);
+	}
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean updateUser(User user) {
@@ -128,6 +173,14 @@
 		return updateById(user);
 	}
 
+	@Override
+	public boolean updateById(User entity) {
+
+		encryptUserInfo(entity);
+
+		return super.updateById(entity);
+	}
+
 	private boolean submitUserDept(User user) {
 		List<Long> deptIdList = Func.toLongList(user.getDeptId());
 		List<UserDept> userDeptList = new ArrayList<>();
@@ -141,10 +194,34 @@
 		return userDeptService.saveBatch(userDeptList);
 	}
 
+	/**
+	 * 自定义分页查询
+	 * @param page
+	 * @param user
+	 * @param deptId
+	 * @param tenantId
+	 * @return
+	 */
 	@Override
-	public IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId) {
-		List<Long> deptIdList = SysCache.getDeptChildIds(deptId);
+	public IPage<UserVO> selectUserPage(IPage<UserVO> page, UserVO user, Long deptId, String tenantId) {
+		List<Long> deptIdList = new ArrayList<>();
+		if (null!=user.getIsDept()) {
+			deptIdList.add(deptId);
+		}else {
+			deptIdList = SysCache.getDeptChildIds(deptId);
+		}
 		return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId));
+	}
+
+	@Override
+	public List<UserVO> getAllUser(UserVO user, Long deptId, String tenantId) {
+		List<Long> deptIdList = new ArrayList<>();
+		if (null!=user.getIsDept()) {
+			deptIdList.add(deptId);
+		}else {
+			deptIdList = SysCache.getDeptChildIds(deptId);
+		}
+		return baseMapper.getAllUser(user, deptIdList, tenantId);
 	}
 
 	@Override
@@ -198,8 +275,11 @@
 
 	@Override
 	public UserInfo userInfo(String tenantId, String account, UserEnum userEnum) {
-		User user = baseMapper.getUser(tenantId, account);
-		return buildUserInfo(user, userEnum);
+		List<User> list = baseMapper.selectUserByPhoneOrAccount(tenantId, account);
+		if (list.size()>0){
+			return buildUserInfo(list.get(0), userEnum);
+		}
+		return buildUserInfo(null, userEnum);
 	}
 
 	private UserInfo buildUserInfo(User user) {
@@ -435,4 +515,30 @@
 		return baseMapper.customizeGetList(user);
 	}
 
+	/**
+	 * 根据手机号码查询用户信息
+	 * @param tenantId
+	 * @param phone
+	 * @return
+	 */
+	@Override
+	public List<User> userInfoByPhone(String tenantId, String phone) {
+		return list(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getPhone, phone).eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED));
+	}
+
+	/**
+	 * 根据手机号码或者账户查询用户信息
+	 * @param tenantId 租户id
+	 * @param key 账户或者手机号
+	 * @return
+	 */
+	@Override
+	public List<User> userInfoByPhoneOrAccount(String tenantId, String key) {
+		return baseMapper.selectUserByPhoneOrAccount(tenantId,key);
+	}
+
+	@Override
+	public List<User> getUserByPhoneIds(String phoneIds) {
+		return baseMapper.getUserByPhoneIds(phoneIds);
+	}
 }

--
Gitblit v1.9.3