소스 검색

优化菜单管理

zhouhao 8 년 전
부모
커밋
d0a132cd4d
10개의 변경된 파일58개의 추가작업 그리고 20개의 파일을 삭제
  1. 4 0
      hsweb-system/hsweb-system-menu/hsweb-system-menu-dao/hsweb-system-menu-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/menu/MenuGroupBindMapper.xml
  2. 11 10
      hsweb-system/hsweb-system-menu/hsweb-system-menu-dao/hsweb-system-menu-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/menu/MenuGroupMapper.xml
  3. 1 0
      hsweb-system/hsweb-system-menu/hsweb-system-menu-dao/hsweb-system-menu-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/menu/MenuMapper.xml
  4. 2 2
      hsweb-system/hsweb-system-menu/hsweb-system-menu-entity/src/main/java/org/hswebframework/web/entity/menu/MenuEntity.java
  5. 3 3
      hsweb-system/hsweb-system-menu/hsweb-system-menu-entity/src/main/java/org/hswebframework/web/entity/menu/SimpleMenuEntity.java
  6. 1 0
      hsweb-system/hsweb-system-menu/hsweb-system-menu-service/hsweb-system-menu-service-api/src/main/java/org/hswebframework/web/service/menu/MenuGroupBindService.java
  7. 1 0
      hsweb-system/hsweb-system-menu/hsweb-system-menu-service/hsweb-system-menu-service-api/src/main/java/org/hswebframework/web/service/menu/MenuGroupService.java
  8. 7 1
      hsweb-system/hsweb-system-menu/hsweb-system-menu-service/hsweb-system-menu-service-simple/src/main/java/org/hswebframework/web/service/menu/simple/SimpleMenuGroupBindService.java
  9. 26 4
      hsweb-system/hsweb-system-menu/hsweb-system-menu-service/hsweb-system-menu-service-simple/src/main/java/org/hswebframework/web/service/menu/simple/SimpleMenuGroupService.java
  10. 2 0
      hsweb-system/hsweb-system-menu/hsweb-system-menu-service/hsweb-system-menu-service-simple/src/main/java/org/hswebframework/web/service/menu/simple/SimpleMenuService.java

+ 4 - 0
hsweb-system/hsweb-system-menu/hsweb-system-menu-dao/hsweb-system-menu-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/menu/MenuGroupBindMapper.xml

@@ -57,6 +57,10 @@
         <include refid="BasicMapper.buildUpdateSql"/>
     </update>
 
+    <select id="queryByGroupId" parameterType="String" resultMap="MenuGroupBindResultMap">
+        select * from S_MENU_GROUP_BIND where group_id =#{id}
+    </select>
+
     <select id="query" parameterType="org.hswebframework.web.commons.entity.Entity" resultMap="MenuGroupBindResultMap">
         <include refid="config"/>
         <include refid="BasicMapper.buildSelectSql"/>

+ 11 - 10
hsweb-system/hsweb-system-menu/hsweb-system-menu-dao/hsweb-system-menu-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/menu/MenuGroupMapper.xml

@@ -21,14 +21,15 @@
 <mapper namespace="org.hswebframework.web.dao.menu.MenuGroupDao">
     <resultMap id="MenuGroupResultMap" type="org.hswebframework.web.entity.menu.SimpleMenuGroupEntity">
         <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
-            <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
-            <result property="describe" column="describe" javaType="String" jdbcType="VARCHAR"/>
-            <result property="defaultGroup" column="default_group" javaType="Boolean" jdbcType="DECIMAL"/>
-            <result property="path" column="path" javaType="String" jdbcType="VARCHAR"/>
-            <result property="parentId" column="parent_id" javaType="String" jdbcType="VARCHAR"/>
-            <result property="level" column="level" javaType="Integer" jdbcType="DECIMAL"/>
-            <result property="sortIndex" column="sort_index" javaType="Long" jdbcType="DECIMAL"/>
-            <result property="enabled" column="enabled" javaType="Boolean" jdbcType="DECIMAL"/>
+        <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
+        <result property="describe" column="describe" javaType="String" jdbcType="VARCHAR"/>
+        <result property="defaultGroup" column="default_group" javaType="Boolean" jdbcType="DECIMAL"/>
+        <result property="path" column="path" javaType="String" jdbcType="VARCHAR"/>
+        <result property="parentId" column="parent_id" javaType="String" jdbcType="VARCHAR"/>
+        <result property="level" column="level" javaType="Integer" jdbcType="DECIMAL"/>
+        <result property="sortIndex" column="sort_index" javaType="Long" jdbcType="DECIMAL"/>
+        <result property="enabled" column="enabled" javaType="Boolean" jdbcType="DECIMAL"/>
+        <collection property="bindInfo" column="u_id" select="org.hswebframework.web.dao.menu.MenuGroupBindDao.queryByGroupId"/>
     </resultMap>
 
     <!--用于动态生成sql所需的配置-->
@@ -36,8 +37,8 @@
         <bind name="resultMapId" value="'MenuGroupResultMap'"/>
         <bind name="tableName" value="'S_MENU_GROUP'"/>
     </sql>
-  
-    <insert id="insert" parameterType="org.hswebframework.web.entity.menu.SimpleMenuGroupEntity" >
+
+    <insert id="insert" parameterType="org.hswebframework.web.entity.menu.SimpleMenuGroupEntity">
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 0
hsweb-system/hsweb-system-menu/hsweb-system-menu-dao/hsweb-system-menu-dao-mybatis/src/main/resources/org/hswebframework/web/dao/mybatis/mappers/menu/MenuMapper.xml

@@ -27,6 +27,7 @@
         <result property="parentId" column="parent_id" javaType="String" jdbcType="VARCHAR"/>
         <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
         <result property="path" column="path" javaType="String" jdbcType="VARCHAR"/>
+        <result property="url" column="url" javaType="String" jdbcType="VARCHAR"/>
         <result property="permissionId" column="permission_id" javaType="String" jdbcType="VARCHAR"/>
         <result property="enabled" column="enabled" javaType="boolean" jdbcType="NUMERIC"/>
         <result property="sortIndex" column="sort_index" javaType="long" jdbcType="NUMERIC"/>

+ 2 - 2
hsweb-system/hsweb-system-menu/hsweb-system-menu-entity/src/main/java/org/hswebframework/web/entity/menu/MenuEntity.java

@@ -47,9 +47,9 @@ public interface MenuEntity
 
     void setIcon(String icon);
 
-    boolean isEnabled();
+    Boolean isEnabled();
 
-    void setEnabled(boolean enabled);
+    void setEnabled(Boolean enabled);
 
     void setChildren(List<MenuEntity> children);
 

+ 3 - 3
hsweb-system/hsweb-system-menu/hsweb-system-menu-entity/src/main/java/org/hswebframework/web/entity/menu/SimpleMenuEntity.java

@@ -48,7 +48,7 @@ public class SimpleMenuEntity extends SimpleTreeSortSupportEntity<String>
     private String icon;
 
     //是否启用
-    private boolean enabled = true;
+    private Boolean enabled;
 
     //子菜单
     private List<SimpleMenuEntity> children;
@@ -106,11 +106,11 @@ public class SimpleMenuEntity extends SimpleTreeSortSupportEntity<String>
         this.icon = icon;
     }
 
-    public boolean isEnabled() {
+    public Boolean isEnabled() {
         return enabled;
     }
 
-    public void setEnabled(boolean enabled) {
+    public void setEnabled(Boolean enabled) {
         this.enabled = enabled;
     }
 

+ 1 - 0
hsweb-system/hsweb-system-menu/hsweb-system-menu-service/hsweb-system-menu-service-api/src/main/java/org/hswebframework/web/service/menu/MenuGroupBindService.java

@@ -29,4 +29,5 @@ public interface MenuGroupBindService extends
         CrudService<MenuGroupBindEntity, String>
         , TreeService<MenuGroupBindEntity, String> {
 
+    int deleteByGroupId(String groupId);
 }

+ 1 - 0
hsweb-system/hsweb-system-menu/hsweb-system-menu-service/hsweb-system-menu-service-api/src/main/java/org/hswebframework/web/service/menu/MenuGroupService.java

@@ -17,6 +17,7 @@
 package org.hswebframework.web.service.menu;
 
 import org.hswebframework.web.entity.menu.MenuEntity;
+import org.hswebframework.web.entity.menu.MenuGroupBindEntity;
 import org.hswebframework.web.entity.menu.MenuGroupEntity;
 import org.hswebframework.web.service.CrudService;
 import org.hswebframework.web.service.TreeService;

+ 7 - 1
hsweb-system/hsweb-system-menu/hsweb-system-menu-service/hsweb-system-menu-service-simple/src/main/java/org/hswebframework/web/service/menu/simple/SimpleMenuGroupBindService.java

@@ -35,7 +35,8 @@ public class SimpleMenuGroupBindService extends AbstractTreeSortService<MenuGrou
         implements MenuGroupBindService {
     @Autowired
     private MenuGroupBindDao menuGroupBindDao;
-   @Override
+
+    @Override
     protected IDGenerator<String> getIDGenerator() {
         return IDGenerator.MD5;
     }
@@ -45,4 +46,9 @@ public class SimpleMenuGroupBindService extends AbstractTreeSortService<MenuGrou
         return menuGroupBindDao;
     }
 
+    @Override
+    public int deleteByGroupId(String groupId) {
+        tryValidateProperty(groupId != null, MenuGroupBindEntity.groupId, "group id can not be null");
+        return createDelete().where(MenuGroupBindEntity.groupId, groupId).exec();
+    }
 }

+ 26 - 4
hsweb-system/hsweb-system-menu/hsweb-system-menu-service/hsweb-system-menu-service-simple/src/main/java/org/hswebframework/web/service/menu/simple/SimpleMenuGroupService.java

@@ -16,6 +16,7 @@
  */
 package org.hswebframework.web.service.menu.simple;
 
+import org.hswebframework.web.commons.entity.TreeSupportEntity;
 import org.hswebframework.web.dao.menu.MenuGroupDao;
 import org.hswebframework.web.entity.authorization.PermissionRoleEntity;
 import org.hswebframework.web.entity.authorization.UserEntity;
@@ -42,6 +43,7 @@ import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.function.Consumer;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static org.hswebframework.web.service.menu.simple.CacheConstants.MENU_CACHE_NAME;
@@ -98,16 +100,36 @@ public class SimpleMenuGroupService
 
     @CacheEvict(allEntries = true)
     public String insert(MenuGroupEntity entity) {
+        entity.setEnabled(true);
         String id = super.insert(entity);
         List<MenuGroupBindEntity> bindEntities = entity.getBindInfo();
         if (bindEntities != null && !bindEntities.isEmpty()) {
-            bindEntities.forEach(bind -> bind.setGroupId(entity.getId()));
+            TreeSupportEntity.forEach(bindEntities, bindEntity -> {
+                bindEntity.setGroupId(id);
+                bindEntity.setEnabled(true);
+            });
             menuGroupBindService.insertBatch(bindEntities);
         }
         trySyncRoleInfo(entity);
         return id;
     }
 
+    @Override
+    @CacheEvict(allEntries = true)
+    public int updateByPk(MenuGroupEntity entity) {
+        int size = super.updateByPk(entity);
+        List<MenuGroupBindEntity> bindEntities = entity.getBindInfo();
+        if (bindEntities != null && !bindEntities.isEmpty()) {
+            TreeSupportEntity.forEach(bindEntities, bindEntity -> {
+                bindEntity.setGroupId(entity.getId());
+                bindEntity.setEnabled(true);
+            });
+            menuGroupBindService.deleteByGroupId(entity.getId());
+            menuGroupBindService.insertBatch(bindEntities);
+        }
+        return size;
+    }
+
     @CacheEvict(allEntries = true)
     @Override
     public int updateByPk(List<MenuGroupEntity> data) {
@@ -175,7 +197,8 @@ public class SimpleMenuGroupService
         roleEntity.setDescribe(menuGroupEntity.getDescribe());
         List<MenuGroupBindEntity> bindEntities = menuGroupEntity.getBindInfo();
         if (bindEntities != null && bindEntities.size() > 0) {
-            roleEntity.setPermissions(bindEntities.parallelStream()
+            roleEntity.setPermissions(bindEntities.stream()
+                    .sorted()
                     .map(bind -> {
                                 //转换 MenuGroupBindEntity 为PermissionRoleEntity
                                 PermissionRoleEntity permission = entityFactory.newInstance(PermissionRoleEntity.class, bind);
@@ -185,8 +208,7 @@ public class SimpleMenuGroupService
                                 permission.setPermissionId(menuEntity.getPermissionId());
                                 return permission;
                             }
-                    ).sorted()
-                    .collect(Collectors.toList()));
+                    ).collect(Collectors.toList()));
         }
 
         roleEntityConsumer.accept(roleEntity);

+ 2 - 0
hsweb-system/hsweb-system-menu/hsweb-system-menu-service/hsweb-system-menu-service-simple/src/main/java/org/hswebframework/web/service/menu/simple/SimpleMenuService.java

@@ -68,6 +68,8 @@ public class SimpleMenuService
     @Override
     @CacheEvict(allEntries = true)
     public String insert(MenuEntity entity) {
+        if(entity.isEnabled()==null)
+            entity.setEnabled(true);
         return super.insert(entity);
     }