zhangqiankun 3 years ago
parent
commit
a7c896f20e

+ 12 - 6
saas-account/src/main/java/com/persagy/account/controller/SaasRoleController.java

@@ -3,7 +3,6 @@ package com.persagy.account.controller;
 import java.util.ArrayList;
 import java.util.List;
 
-import com.persagy.account.pojo.vo.role.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -15,18 +14,23 @@ import org.springframework.web.bind.annotation.RestController;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.collect.Lists;
-import com.persagy.common.constant.SaasCommonConstant;
-import com.persagy.common.enums.ResponseCode;
-import com.persagy.common.utils.ResponseResult;
-import com.persagy.common.utils.ResponseResultUtil;
-import com.persagy.common.utils.StringUtil;
 import com.persagy.account.manage.SaasRoleMenuHandler;
 import com.persagy.account.pojo.dto.SaasGroup;
 import com.persagy.account.pojo.dto.SaasRole;
+import com.persagy.account.pojo.vo.role.SaasRoleCreateVO;
+import com.persagy.account.pojo.vo.role.SaasRoleDeleteVO;
+import com.persagy.account.pojo.vo.role.SaasRolePageVO;
+import com.persagy.account.pojo.vo.role.SaasRoleQueryByNameVO;
+import com.persagy.account.pojo.vo.role.SaasRoleQueryVO;
 import com.persagy.account.service.ISaasAccountRoleService;
 import com.persagy.account.service.ISaasGroupService;
 import com.persagy.account.service.ISaasRoleMenuService;
 import com.persagy.account.service.ISaasRoleService;
+import com.persagy.common.constant.SaasCommonConstant;
+import com.persagy.common.enums.ResponseCode;
+import com.persagy.common.utils.ResponseResult;
+import com.persagy.common.utils.ResponseResultUtil;
+import com.persagy.common.utils.StringUtil;
 
 import cn.hutool.core.collection.CollectionUtil;
 import io.swagger.annotations.Api;
@@ -179,6 +183,7 @@ public class SaasRoleController {
         saasRole.setId(null);
         saasRole.setUpdateUser(createVO.getAccountId());
         
+        this.saasRoleMenuHandler.validRoleMenus(createVO.getAuths());
         result = this.saasRoleMenuHandler.createSaasRole(saasRole, createVO.getAuths());
         return result ? ResponseResultUtil.successResult("保存成功", saasRole.getId()) : ResponseResultUtil.errorResult("保存失败");
     }
@@ -217,6 +222,7 @@ public class SaasRoleController {
         BeanUtils.copyProperties(createVO, saasRole);
         saasRole.setUpdateUser(createVO.getAccountId());
         
+        this.saasRoleMenuHandler.validRoleMenus(createVO.getAuths());
         result = this.saasRoleMenuHandler.updateSaasRole(saasRole, createVO.getAuths());
         return result ? ResponseResultUtil.successResult("更新成功") : ResponseResultUtil.errorResult("更新失败");
     }

+ 3 - 13
saas-account/src/main/java/com/persagy/account/controller/SaasRoleMenuController.java

@@ -12,16 +12,15 @@ import org.springframework.web.bind.annotation.RestController;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.google.common.collect.Lists;
-import com.persagy.common.utils.ResponseResult;
-import com.persagy.common.utils.ResponseResultUtil;
 import com.persagy.account.manage.SaasRoleMenuHandler;
 import com.persagy.account.pojo.dto.SaasRoleMenu;
-import com.persagy.account.pojo.vo.auth.SaasMenuFunctionPageVO;
 import com.persagy.account.pojo.vo.auth.SaasMenuFunctionVO;
 import com.persagy.account.pojo.vo.auth.SaasRoleMenuBatchVO;
 import com.persagy.account.pojo.vo.auth.SaasRoleMenuCreateVO;
 import com.persagy.account.pojo.vo.auth.SaasRoleMenuQueryVO;
 import com.persagy.account.service.ISaasRoleMenuService;
+import com.persagy.common.utils.ResponseResult;
+import com.persagy.common.utils.ResponseResultUtil;
 
 import cn.hutool.core.collection.CollectionUtil;
 import io.swagger.annotations.Api;
@@ -81,21 +80,12 @@ public class SaasRoleMenuController {
 	@ApiOperation(value = "删除新增")
 	@RequestMapping(value = "resetSaasRoleMenu")
     public ResponseResult resetSaasRoleMenu(@RequestBody @Validated SaasRoleMenuBatchVO<SaasMenuFunctionVO> batchVO) {
+		this.saasRoleMenuHandler.validRoleMenus(batchVO.getAuths());
 		boolean result = this.saasRoleMenuHandler.resetSaasRoleMenu(batchVO.getGroupCode(), batchVO.getRoleId(), batchVO.getAuths());
         return result ? ResponseResultUtil.successResult("重置成功") : ResponseResultUtil.errorResult("重置失败");
     }
 	
     /**
-     * 先删后新增,删除此账号角色下的所有菜单功能点的关联关系,并重新新增
-     */
-	@ApiOperation(value = "删除新增页面")
-	@RequestMapping(value = "resetSaasRoleMenuPage")
-    public ResponseResult resetSaasRoleMenuPage(@RequestBody @Validated SaasRoleMenuBatchVO<SaasMenuFunctionPageVO> batchVO) {
-		boolean result = this.saasRoleMenuHandler.resetSaasRoleMenuPage(batchVO.getGroupCode(), batchVO.getRoleId(), batchVO.getAuths());
-        return result ? ResponseResultUtil.successResult("重置成功") : ResponseResultUtil.errorResult("重置失败");
-    }
-    
-    /**
      * 物理删除
      */
     @ApiOperation(value = "删除")

+ 28 - 21
saas-account/src/main/java/com/persagy/account/manage/SaasRoleMenuHandler.java

@@ -2,6 +2,7 @@ package com.persagy.account.manage;
 
 import java.util.ArrayList;
 import java.util.Comparator;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -18,9 +19,9 @@ import com.google.common.collect.Lists;
 import com.persagy.account.pojo.dto.SaasAccountRole;
 import com.persagy.account.pojo.dto.SaasFunction;
 import com.persagy.account.pojo.dto.SaasMenu;
+import com.persagy.account.pojo.dto.SaasProduct;
 import com.persagy.account.pojo.dto.SaasRole;
 import com.persagy.account.pojo.dto.SaasRoleMenu;
-import com.persagy.account.pojo.vo.auth.SaasMenuFunctionPageVO;
 import com.persagy.account.pojo.vo.auth.SaasMenuFunctionVO;
 import com.persagy.account.pojo.vo.menu.SaasMenuQueryVO;
 import com.persagy.account.pojo.vo.role.SaasRoleDeleteVO;
@@ -324,6 +325,31 @@ public class SaasRoleMenuHandler {
 	}
 
 	/**
+	 * 若产品ID,不为空,查询出该产品对应的菜单ID,如果菜单ID为空,抛出异常
+	 * @param auths
+	 */
+	public void validRoleMenus(List<SaasMenuFunctionVO> auths) {
+		if (CollectionUtil.isEmpty(auths)) {
+			return;
+		}
+		Map<String, String> temp = new HashMap<String, String>();
+		for (SaasMenuFunctionVO auth : auths) {
+			if (StringUtil.isNotBlank(auth.getProductId())) {
+				if (temp.containsKey(auth.getProductId())) {
+					auth.setMenuId(temp.get(auth.getProductId()));
+				} else {
+					SaasProduct saasProduct = this.saasProductService.getById(auth.getProductId());
+					if (saasProduct == null) {
+						throw new BusinessException("产品信息缺失");
+					}
+					temp.put(auth.getProductId(), saasProduct.getMenuId());
+					auth.setMenuId(saasProduct.getMenuId());
+				}
+			}
+		}
+	}
+	
+	/**
 	 * 更新角色,同时更新菜单关联关系
 	 * @param saasRole
 	 * @param auths
@@ -339,25 +365,6 @@ public class SaasRoleMenuHandler {
 	}
 
 	/**
-	 * 删除新增角色菜单页面关联关系
-	 * @param groupCode
-	 * @param roleId
-	 * @param auths
-	 * @return
-	 */
-	@Transactional
-	public boolean resetSaasRoleMenuPage(String groupCode, String roleId, List<SaasMenuFunctionPageVO> auths) {
-		LambdaQueryWrapper<SaasRoleMenu> roleMenuWrapper = new SaasRoleMenu.Builder().createQueryWrapper().roleIdEq(roleId).builderQueryWrapper();
-		this.saasRoleMenuService.remove(roleMenuWrapper);
-		// 1.批量新增
-		boolean result = this.saasRoleMenuService.batchCreateSaasRoleMenuPage(groupCode, roleId, auths);
-		if (!result) {
-			throw new BusinessException("重置角色菜单页面功能权限失败");
-		}
-		return result;
-	}
-
-	/**
 	 * 创建菜单,同时设置产品是否已关联菜单
 	 * @param saasMenu
 	 * @return
@@ -461,5 +468,5 @@ public class SaasRoleMenuHandler {
 	    	this.deleteSaasMenu(saasMenu.getId(), saasMenu.getProductId(), updateProduct);
 		}
 	}
-	
+
 }

+ 0 - 10
saas-account/src/main/java/com/persagy/account/mapper/SaasRoleMenuMapper.java

@@ -7,7 +7,6 @@ import org.apache.ibatis.annotations.Param;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.persagy.account.pojo.dto.SaasRoleMenu;
-import com.persagy.account.pojo.vo.auth.SaasMenuFunctionPageVO;
 import com.persagy.account.pojo.vo.auth.SaasMenuFunctionVO;
 
 /**
@@ -32,15 +31,6 @@ public interface SaasRoleMenuMapper extends BaseMapper<SaasRoleMenu> {
 	Integer batchCreateSaasRoleMenu(@Param("groupCode") String groupCode, @Param("roleId") String roleId, @Param("auths") List<SaasMenuFunctionVO> auths);
 
 	/**
-	 * 批量创建角色对应的菜单页面功能权限
-	 * @param groupCode
-	 * @param roleId
-	 * @param auths
-	 * @return
-	 */
-	Integer batchCreateSaasRoleMenuPage(@Param("groupCode") String groupCode, @Param("roleId") String roleId, @Param("auths") List<SaasMenuFunctionPageVO> auths);
-	
-	/**
 	 * 统计出有效的角色数
 	 * 
 	 * @param groupCode

+ 6 - 0
saas-account/src/main/java/com/persagy/account/pojo/vo/auth/SaasMenuFunctionVO.java

@@ -25,6 +25,12 @@ public class SaasMenuFunctionVO {
 	@ApiModelProperty(value = "菜单ID", example = "1001")
 	private String menuId; 		// 菜单ID
 	
+	@ApiModelProperty(value = "产品ID", example = "1001")
+	private String productId; 		// 产品ID
+	
+	@ApiModelProperty(value = "页面ID", example = "1001")
+	private String pageId; 		// 页面ID
+	
 	//@NotBlank(message = "功能ID,不可为空")
 	@ApiModelProperty(value = "功能ID", example = "1001")
 	private String functionId; 	// 功能ID

+ 1 - 11
saas-account/src/main/java/com/persagy/account/service/ISaasRoleMenuService.java

@@ -2,10 +2,9 @@ package com.persagy.account.service;
 
 import java.util.List;
 
-import com.persagy.common.service.ISuperService;
 import com.persagy.account.pojo.dto.SaasRoleMenu;
-import com.persagy.account.pojo.vo.auth.SaasMenuFunctionPageVO;
 import com.persagy.account.pojo.vo.auth.SaasMenuFunctionVO;
+import com.persagy.common.service.ISuperService;
 
 /**
  * 角色-菜单功能关联信息
@@ -27,15 +26,6 @@ public interface ISaasRoleMenuService extends ISuperService<SaasRoleMenu> {
 	boolean batchCreateSaasRoleMenu(String groupCode, String roleId, List<SaasMenuFunctionVO> auths);
 
 	/**
-	 * 批量创建角色对应的菜单页面功能权限
-	 * @param groupCode
-	 * @param roleId
-	 * @param auths
-	 * @return
-	 */
-	boolean batchCreateSaasRoleMenuPage(String groupCode, String roleId, List<SaasMenuFunctionPageVO> auths);
-	
-	/**
 	 * 验证是否允许删除菜单
 	 * @param groupCode
 	 * @param menuId

+ 2 - 10
saas-account/src/main/java/com/persagy/account/service/impl/SaasRoleMenuServiceImpl.java

@@ -7,13 +7,12 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
-import com.persagy.common.constant.SaasCommonConstant;
-import com.persagy.common.service.impl.SuperServiceImpl;
 import com.persagy.account.mapper.SaasRoleMenuMapper;
 import com.persagy.account.pojo.dto.SaasRoleMenu;
-import com.persagy.account.pojo.vo.auth.SaasMenuFunctionPageVO;
 import com.persagy.account.pojo.vo.auth.SaasMenuFunctionVO;
 import com.persagy.account.service.ISaasRoleMenuService;
+import com.persagy.common.constant.SaasCommonConstant;
+import com.persagy.common.service.impl.SuperServiceImpl;
 
 /**
  * 角色-菜单功能关联信息
@@ -34,13 +33,6 @@ public class SaasRoleMenuServiceImpl extends SuperServiceImpl<SaasRoleMenuMapper
 	}
 	
 	@Override
-	@Transactional
-	public boolean batchCreateSaasRoleMenuPage(String groupCode, String roleId, List<SaasMenuFunctionPageVO> auths) {
-		Integer result = this.baseMapper.batchCreateSaasRoleMenuPage(groupCode, roleId, auths);
-		return SqlHelper.retBool(result);
-	}
-
-	@Override
 	public boolean isAllowDeleteMenu(String groupCode, String menuId) {
 		Integer result = this.baseMapper.isAllowDeleteMenu(groupCode, menuId, SaasCommonConstant.STATUS_1);
 		if (result == null || result < 1) {

+ 4 - 4
saas-account/src/main/resources/mapper/SaasRoleMenuMapper.xml

@@ -12,13 +12,13 @@
 	</resultMap>
 	
 	<insert id="batchCreateSaasRoleMenu">
-		INSERT INTO saas_role_menu (GROUP_CODE, ROLE_ID, MENU_ID, FUNCTION_ID) VALUES
+		INSERT INTO saas_role_menu (GROUP_CODE, ROLE_ID, MENU_ID, PAGE_ID,  FUNCTION_ID) VALUES
 		<foreach collection="auths" index="index" item="auth" separator="," >
-			(#{groupCode}, #{roleId}, #{auth.menuId}, #{auth.functionId})
+			(#{groupCode}, #{roleId}, #{auth.menuId}, #{auth.pageId}, #{auth.functionId})
 		</foreach>
 	</insert>
 	
-	<insert id="batchCreateSaasRoleMenuPage">
+	<!-- <insert id="batchCreateSaasRoleMenuPage">
 		INSERT INTO saas_role_menu (GROUP_CODE, ROLE_ID, MENU_ID, PAGE_ID, FUNCTION_ID) VALUES
 		<foreach collection="auths" index="index" item="auth" separator="," >
 			<choose>
@@ -32,7 +32,7 @@
                 </otherwise>
             </choose>
 		</foreach>
-	</insert>
+	</insert> -->
 	
 	<select id="isAllowDeleteMenu" resultType="java.lang.Integer">
 		SELECT COUNT(*) FROM (SELECT * FROM saas_role_menu