mirror of
https://github.com/hs-web/hsweb-framework.git
synced 2026-06-01 18:35:37 +08:00
优化菜单管理
This commit is contained in:
@@ -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"/>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,4 +29,5 @@ public interface MenuGroupBindService extends
|
||||
CrudService<MenuGroupBindEntity, String>
|
||||
, TreeService<MenuGroupBindEntity, String> {
|
||||
|
||||
int deleteByGroupId(String groupId);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user