From 90b486ba54098be293a256d9313d201a3bd5221f Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 18 十月 2023 21:31:02 +0800
Subject: [PATCH] 1、编码规则增加显示所有者列,高级查询中增加所有者; 2、用户管理界面添加停用启用按钮。

---
 Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java |   97 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 84 insertions(+), 13 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java
index 4502b3c..b22d722 100644
--- a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java
@@ -23,6 +23,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.cache.NacosConfigCache;
 import com.vci.ubcs.system.cache.ParamCache;
 import com.vci.ubcs.system.cache.SysCache;
 import com.vci.ubcs.system.entity.Strategy;
@@ -45,18 +46,19 @@
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.BladeTenantProperties;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.*;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.DigestUtils;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static com.vci.ubcs.common.constant.CommonConstant.DEFAULT_PARAM_PASSWORD;
 
@@ -75,16 +77,16 @@
 	private final IUserOauthService userOauthService;
 	private final ISysClient sysClient;
 	private final BladeTenantProperties tenantProperties;
-	//鎷垮埌閰嶇疆鐨勮秴绠d
-	@Value("${user-info.id}")
-	private String adminUserId;
-
+	//鎷垮埌閰嶇疆鐨勮秴绠�
+	private final NacosConfigCache nacosConfigCache;
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean submit(User user) {
 		if (StringUtil.isBlank(user.getTenantId())) {
-			user.setTenantId(BladeConstant.ADMIN_TENANT_ID);
+			// user.setTenantId(nacosConfigCache.getAdminUserInfo().getTenantId());
+			// 榛樿璁剧疆涓虹鐞嗙粍涓嬬殑鐢ㄦ埛
+			user.setTenantId(nacosConfigCache.getAdminUserInfo().getTenantId());
 		}
 		String tenantId = user.getTenantId();
 		//Tenant tenant = SysCache.getTenant(tenantId);
@@ -104,7 +106,7 @@
 		Boolean flag = true;
 		for (User user : users){
 			if (StringUtil.isBlank(user.getTenantId())) {
-				user.setTenantId(BladeConstant.ADMIN_TENANT_ID);
+				user.setTenantId(nacosConfigCache.getAdminUserInfo().getTenantId());
 			}
 			String tenantId = user.getTenantId();
 			if (Func.isNotEmpty(user.getPassword())) {
@@ -162,6 +164,21 @@
 	}
 
 	@Override
+	public List<User> selectAllUser(User user, Long deptId){
+		List<Long> deptIdList = SysCache.getDeptChildIds(deptId);
+		List<User> users = baseMapper.selectUserPage(user, deptIdList, (AuthUtil.getTenantId().equals(nacosConfigCache.getAdminUserInfo().getTenantId()) ? StringPool.EMPTY : AuthUtil.getTenantId()));
+		return users;
+	}
+
+	@Override
+	public List<User> selectAllUser(){
+		LambdaQueryWrapper<User> wrapper=	Wrappers.lambdaQuery();
+		wrapper.eq(User::getIsDeleted,0);
+		List<User> users = baseMapper.selectList(wrapper);
+		return users;
+	}
+
+	@Override
 	public IPage<UserVO> selectUserSearch(UserVO user, Query query) {
 		LambdaQueryWrapper<User> queryWrapper = Wrappers.<User>query().lambda();
 		String tenantId = AuthUtil.getTenantId();
@@ -206,13 +223,20 @@
 
 	@Override
 	public UserInfo userInfo(String tenantId, String account) {
-		User user = baseMapper.getUser(tenantId, account);
+		User user = baseMapper.getUser(tenantId, account,null);
 		return buildUserInfo(user);
 	}
 
 	@Override
+	public UserInfo userInfo(String tenantId, String account,String name) {
+		User user = baseMapper.getUser(tenantId, account,name);
+		UserInfo userInfo = buildUserInfo(user);
+		return null;
+	}
+
+	@Override
 	public UserInfo userInfo(String tenantId, String account, UserEnum userEnum) {
-		User user = baseMapper.getUser(tenantId, account);
+		User user = baseMapper.getUser(tenantId, account,null);
 		return buildUserInfo(user, userEnum);
 	}
 
@@ -224,6 +248,7 @@
 		if (ObjectUtil.isEmpty(user)) {
 			return null;
 		}
+		user.setDeptName(Func.join(SysCache.getDeptNames(user.getDeptId())));
 		UserInfo userInfo = new UserInfo();
 		userInfo.setUser(user);
 		if (Func.isNotEmpty(user)) {
@@ -359,6 +384,7 @@
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void importUser(List<UserExcel> data, Boolean isCovered) {
+		ArrayList<User> addUsers = new ArrayList<>();
 		data.forEach(userExcel -> {
 			User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
 			// 璁剧疆鐢ㄦ埛骞冲彴
@@ -386,8 +412,10 @@
 			// 鑾峰彇榛樿瀵嗙爜閰嶇疆
 			String initPassword = ParamCache.getValue(DEFAULT_PARAM_PASSWORD);
 			user.setPassword(initPassword);
-			this.submit(user);
+			addUsers.add(user);
+			//this.submit(user);
 		});
+		this.submitList(addUsers);
 	}
 
 	@Override
@@ -486,17 +514,21 @@
 	@Override
 	public Long checkRenAndExpr(Long userId) {
 		//瓒呯骇绠$悊鍛樼洿鎺ヨ繑鍥炰笉闇�瑕佹彁閱掑瘑鐮佷慨鏀�
-		if(adminUserId.equals(userId)){
+		if(nacosConfigCache.getAdminUserInfo().getUserId().equals(userId)){
 			return 0L;
 		}
 		QueryWrapper<User> wrapper = Wrappers.<User>query().eq("ID", userId);
+		User dbUser = this.getOne(wrapper);
 		//鑾峰彇鍒板瘑鐮佷慨鏀规椂闂�
-		Date pwdUpdateTime = this.getOne(wrapper).getPwdUpdateTime();
+		Date pwdUpdateTime = Func.isNotEmpty(dbUser) ? dbUser.getPwdUpdateTime():new Date();
 		Long pwdupdateday = 0L;
 		if(!Func.isEmpty(pwdUpdateTime)){
 			pwdupdateday = dateToDay(pwdUpdateTime);
 		}
 		Strategy strategy = sysClient.getByUserId(userId).getData();
+		if(Func.isNotEmpty(strategy)){
+			throw new ServiceException("瀵嗙爜绛栫暐鏌ヨ涓虹┖锛岃妫�鏌ュ綋鍓嶇鎴蜂笅鏄惁瀛樺湪榛樿瀵嗙爜绛栫暐锛�");
+		}
 		//鏄惁鎻愰啋閫氳繃鏈�鍚庝竴娆′慨鏀瑰瘑鐮佺殑鏃堕棿鍔犱笂杩囨湡鏃堕棿鍑忓幓褰撳墠鏃堕棿锛屽鏋滃皬浜庤繃鏈熸彁閱掓椂闂村氨杩涜鎻愰啋锛屽鏋�<=0灏辨彁閱掑繀椤讳慨鏀瑰瘑鐮�
 		long reminder = pwdupdateday+strategy.getExpirationTime()-dateToDay(new Date());
 		//鎻愰啋鐢ㄦ埛蹇呴』淇敼瀵嗙爜
@@ -518,7 +550,46 @@
 	}
 
 	/**
-	 * 鏃堕棿鏍煎紡杞ぉ
+	 * 鑾峰彇鍒版寚瀹氳韩浠芥潈闄愮殑鐢ㄦ埛鍒楄〃
+	 * @param user 鐢ㄦ埛鏌ヨ鐨勭敤鎴蜂俊鎭紝濡傜鎴蜂俊鎭紝閫氬父涓鸿嚜鍔ㄦ敞鍏ワ紝鍓嶇鍙�夋嫨涓嶄紶
+	 * @param roleName 瑕佹煡璇㈢殑瑙掕壊韬唤
+	 * @return
+	 */
+	@Override
+	public List<Map<String,String>> getByRoleUserList(BladeUser user, String roleName) {
+		// 鑰冭檻鍒颁竴涓敤鎴峰彲浠ユ嫢鏈夊绉嶈鑹叉潈闄愶紝鑰岀敤鎴峰叧鑱旇鑹叉潈闄愭槸鐢╮ole_id瀛楁鐢ㄩ�楀彿鍒嗛殧瑙掕壊id鐨勶紝鐩存帴閲囩敤瀛愭煡璇㈡潵in鏌ヨ涓嶈兘瀹炵幇锛屾墍浠ュ厛鏌ヨ瑙掕壊id
+		R<String> roleIds = sysClient.getRoleIds(user.getTenantId(), roleName);
+		if(!roleIds.isSuccess()){
+			throw new ServiceException("绯荤粺鏈嶅姟feign鎺ュ彛璋冪敤閿欒锛�");
+		}
+		if(Func.isBlank(roleIds.getData())){
+			return new ArrayList<>();
+		}
+		List<Map<String,String>> list = new ArrayList<>();
+		Arrays.stream(roleIds.getData().split(",")).forEach(item->{
+			list.addAll(this.baseMapper.getUserMap(item,user.getUserId().toString()));
+		});
+		// 鍘婚櫎閲嶅
+		return list.stream().distinct().collect(Collectors.toList());
+	}
+
+	/***
+	 * 鏇存柊鐢ㄦ埛鍚敤鍋滅敤鐘舵��
+	 * @param userIds
+	 * @param status
+	 * @return
+	 */
+	@Override
+	public boolean updateUserStatus(String userIds, boolean status) {
+		Integer userStatus = 0;
+		if(!status){
+			userStatus = 1;
+		}
+		return this.update(Wrappers.<User>lambdaUpdate().in(User::getId, Func.toLongList(userIds)).set(User::getUserStatus,userStatus));
+	}
+
+	/**
+	 * 鏃ユ湡鏃堕棿鏍煎紡杞ぉ
 	 * @param date
 	 * @return
 	 */

--
Gitblit v1.9.3