优化菜单管理

This commit is contained in:
zhouhao
2017-06-04 23:08:32 +08:00
parent 5c7f6f56a6
commit d0a132cd4d
10 changed files with 58 additions and 20 deletions

View File

@@ -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"/>

View File

@@ -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>

View File

@@ -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"/>

View File

@@ -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);

View File

@@ -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;
}

View File

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

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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);

View File

@@ -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);
}