From 889842eb8b64a0b72c449ce23ff21e4e8c935cae Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期五, 26 七月 2024 16:06:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java |   69 +++++++++++++++++++++++++---------
 1 files changed, 50 insertions(+), 19 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java
index 4374a0a..1c44f0d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java
@@ -1,28 +1,25 @@
 package com.vci.frameworkcore.compatibility.impl;
 
+import com.vci.constant.FrameWorkBtmTypeConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.RoleInfo;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
-import com.vci.frameworkcore.constant.FrameWorkBtmTypeConstant;
-import com.vci.frameworkcore.dto.SmRoleDTO;
+import com.vci.constant.FrameWorkBtmTypeConstant;
+import com.vci.dto.SmRoleDTO;
+import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
 import com.vci.frameworkcore.enumpck.RoleClassifyEnum;
 import com.vci.frameworkcore.enumpck.RoleControlAreaEnum;
-import com.vci.frameworkcore.model.SmRoleForPlatform1;
-import com.vci.frameworkcore.model.dto.SmUserDTO;
-import com.vci.frameworkcore.model.po.SmRolePO;
-import com.vci.frameworkcore.model.po.SmUserPO;
-import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
-import com.vci.frameworkcore.pagemodel.SmRoleVO;
-import com.vci.frameworkcore.pagemodel.SmUserVO;
-import com.vci.frameworkcore.properties.ConfigReader;
+import com.vci.model.SmRoleForPlatform1;
+import com.vci.pagemodel.SmUserVO;
+import com.vci.po.SmRolePO;
+import com.vci.pagemodel.SmRoleVO;
 import com.vci.omd.utils.ObjectTool;
 import com.vci.starter.poi.bo.ReadExcelOption;
 import com.vci.starter.poi.constant.ExcelLangCodeConstant;
 import com.vci.starter.poi.util.ExcelUtil;
 import com.vci.starter.web.constant.QueryOptionConstant;
-import com.vci.starter.web.enumpck.UserSecretEnum;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
 import com.vci.starter.web.util.LangBaseUtil;
@@ -39,6 +36,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -61,6 +59,13 @@
 	 */
 	@Autowired
 	private WebBoServiceI boService;
+
+	/**
+	 * 鐢ㄦ埛鏌ヨ鏈嶅姟
+	 */
+	@Autowired
+	@Lazy
+	private SmUserQueryServiceI smUserQueryServiceI;
 
 	/**
 	 * 骞冲彴璋冪敤瀹㈡埛绔�
@@ -86,7 +91,7 @@
 		if(Func.isEmpty(conditionMap)){
 			return null;
 		}
-		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap,SmRoleForPlatform1.class);
+		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap, SmRoleForPlatform1.class);
 		List<SmRoleForPlatform1> smRoleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, SmRoleForPlatform1.class);
 		if(Func.isNotEmpty(smRoleForPlatform1s) && Func.isNotBlank(smRoleForPlatform1s.get(0).getPluid())){
 			//瑙掕壊鍚嶄笉鑳介噸澶嶆墍浠ョ洿鎺ュ彇绗竴涓厓绱�
@@ -646,16 +651,22 @@
 		VciBaseUtil.alertNotNull(
 				smRoleDTO,"娣诲姞鐨勮鑹插璞�",
 				smRoleDTO.getName(),"瑙掕壊鍚�");
-		//鏌ヨ鏁版嵁搴撲腑鐨勶紝鏍规嵁瑙掕壊鍚嶆煡
+		//鏍规嵁瑙掕壊涓婚敭鏌ヨ锛岀‘淇濅慨鏀圭殑瑙掕壊瀛樺湪
 		Map<String, String> conditionMap = new HashMap<>();
-		conditionMap.put("plname",smRoleDTO.getName());
+		conditionMap.put("pluid",smRoleDTO.getOid());
 		SmRoleVO dbSmRoleVO = getRoleByConditionMap(conditionMap);
 		//鏍规嵁涓婚敭娌℃煡璇㈠埌浜嗙敤鎴�
 		if(Func.isEmpty(dbSmRoleVO) || Func.isBlank(dbSmRoleVO.getOid())){
 			throw new PLException("500", new String[] { "褰撳墠淇敼鐨勮鑹蹭笉瀛樺湪!"});
 		}
-		//瑙掕壊鍚嶇浉绛夛紝浣嗘槸涓婚敭涓嶇浉绛夛紝璇存槑淇敼涓虹殑瑙掕壊鍚嶅凡瀛樺湪锛屼笉鑳介噸澶�
-		if(dbSmRoleVO.getName().equals(smRoleDTO.getName()) && !dbSmRoleVO.getOid().equals(smRoleDTO.getOid())){
+		//鏌ヨ鏁版嵁搴撲腑鐨勶紝鏍规嵁瑙掕壊鍚嶆煡閲�
+		conditionMap.clear();
+		conditionMap.put("plname",smRoleDTO.getName());
+		//鎺掗櫎鎺夊綋鍓嶄慨鏀圭殑鐢ㄦ埛
+		conditionMap.put("pluid",QueryOptionConstant.NOTEQUAL + smRoleDTO.getName());
+		SmRoleVO reapeatSmRoleVO = getRoleByConditionMap(conditionMap);
+		//璇存槑淇敼涓虹殑瑙掕壊鍚嶅凡瀛樺湪锛屼笉鑳介噸澶�
+		if(Func.isNotEmpty(reapeatSmRoleVO) && smRoleDTO.getName().equals(reapeatSmRoleVO)){
 			throw new PLException("500", new String[] { "璇ヨ鑹插悕绉板凡缁忓瓨鍦�,璇蜂慨鏀�!"});
 		}
 		SmRoleDTO smRoleDTO1 = new SmRoleDTO();
@@ -678,11 +689,31 @@
 	@Override
 	public boolean deleteRole(String[] ids) throws PLException {
 		VciBaseUtil.alertNotNull(ids,"瑕佸垹闄ょ殑瑙掕壊涓婚敭");
+		//浣跨敤涓婚敭鍒ゆ柇瑙掕壊鏄惁琚敤鎴峰紩鐢�
+		for (int i = 0; i < ids.length; i++) {
+			String roleName = this.checkIsUsed(ids[i]);
+			if(Func.isNotBlank(roleName)){
+				throw new PLException("500",new String[]{"褰撳墠閫変腑瑕佸垹闄ょ殑瑙掕壊涓瓨鍦ㄣ��"+roleName+"銆戣寮曠敤!"});
+			}
+		}
 		//鍏峰杩炲甫鍒犻櫎鐨勫姛鑳斤紝濡傝鑹茶彍鍗曟巿鏉冭〃閲岄潰鐨勬巿鏉冧俊鎭�
 		return platformClientUtil.getFrameworkService().deleteRole(
 				ids,
 				new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(), null)
 		);
+	}
+
+	/**
+	 * 妫�鏌ヨ鑹叉槸鍚︽湁鍦ㄥ紩鐢�
+	 * @param roleOid
+	 * @return
+	 */
+	private String checkIsUsed(String roleOid){
+		List<SmUserVO> smUserVOS = smUserQueryServiceI.listUserByRoleOid(roleOid, null);
+		if (Func.isNotEmpty(smUserVOS)) {
+			return this.getRoleNameByRoleOid(roleOid);
+		}
+		return null;
 	}
 
 	/**
@@ -692,7 +723,7 @@
 	 * @throws VciBaseException
 	 */
 	@Override
-	public BaseResult importRole(File file) throws VciBaseException {
+	public BaseResult importRole(File file) throws Exception {
 		VciBaseUtil.alertNotNull(file,"excel鏂囦欢");
 		if(!file.exists()){
 			throw new VciBaseException("瀵煎叆鐨別xcel鏂囦欢涓嶅瓨鍦�,{0}",new String[]{file.getPath()});
@@ -732,8 +763,8 @@
 				try {
 					SmRoleDTO smRoleDTO = new SmRoleDTO();
 					BeanUtil.copy(smRolePO,smRoleDTO);
-					//SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
-					String userId = "developer";//loginUser.getUserId();
+					SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+					String userId = loginUser.getUserId();
 					//瑙掕壊绫诲瀷锛岃繖閲岃缃簡浼氬湪changeRoleObjectToRoleInfo涓浆鎹�
 					if(UserTypeEnum.SUPPER_ADMIN.getValue().equals("0")){
 						smRoleDTO.setRoleClassify(RoleClassifyEnum.MANAGE.getValue());

--
Gitblit v1.9.3