Commit 4c3e214f by Lizh

feat: P0 Step 1.3+1.4 — SysRole/SysMenu DomainService 新增查询方法

- SysRoleDomainService.selectRoleKeysByUserId 改为 Set<String> 返回类型
- SysRoleMapper + XML 新增 selectRoleListByUserId 查询
- SysMenuDomainService + Mapper + XML 新增 selectMenuTreeByUserId
- PermissionServiceImpl 适配 Set<String> 类型变更

Co-Authored-By: Claude <noreply@anthropic.com>
parent fd58d2d0
......@@ -123,7 +123,7 @@ public class PermissionServiceImpl implements PermissionService {
private boolean hasUserRole(Long userId, String role) {
try {
List<String> userRoles = sysRoleDomainService.selectRoleKeysByUserId(userId);
Set<String> userRoles = sysRoleDomainService.selectRoleKeysByUserId(userId);
if (!CollectionUtils.isEmpty(userRoles)) {
return userRoles.stream()
.anyMatch(r -> SecurityConstants.SUPER_ADMIN_ROLE.equals(r)
......
......@@ -16,4 +16,10 @@ import java.util.List;
@Mapper
public interface SysMenuMapper extends BaseMapper<SysMenuEntity> {
List<String> selectMenuPermsByUserId(@Param("userId") Long userId);
/**
* 根据用户ID查询菜单树
* 管理员(userId=1)返回全部,普通用户按角色权限过滤
*/
List<SysMenuEntity> selectMenuTreeByUserId(@Param("userId") Long userId);
}
......@@ -16,4 +16,9 @@ import java.util.List;
@Mapper
public interface SysRoleMapper extends BaseMapper<SysRoleEntity> {
List<String> selectRoleKeysByUserId(@Param("userId") Long userId);
/**
* 根据用户ID查询角色列表
*/
List<SysRoleEntity> selectRoleListByUserId(@Param("userId") Long userId);
}
......@@ -13,5 +13,13 @@ import java.util.List;
*/
public interface SysMenuDomainService extends IBaseService<SysMenuEntity> {
List<String> selectMenuPermsByUserId(Long userId);
/**
* 根据用户ID查询菜单树(含权限过滤)
*
* @param userId 用户ID
* @return 菜单列表
*/
List<SysMenuEntity> selectMenuTreeByUserId(Long userId);
}
......@@ -4,6 +4,7 @@ import com.jomalls.custom.dal.entity.SysRoleEntity;
import com.jomalls.custom.service.IBaseService;
import java.util.List;
import java.util.Set;
/**
* @author Lizh
......@@ -14,11 +15,11 @@ import java.util.List;
public interface SysRoleDomainService extends IBaseService<SysRoleEntity> {
/**
* 根据用户ID查询角色标识列表
*
* 根据用户ID查询角色权限字符串集合
*
* @param userId 用户ID
* @return 角色标识列表
* @return 角色 key 集合
*/
List<String> selectRoleKeysByUserId(Long userId);
Set<String> selectRoleKeysByUserId(Long userId);
}
......@@ -31,4 +31,9 @@ public class SysMenuDomainServiceImpl extends BaseServiceImpl<SysMenuMapper,SysM
return baseMapper.selectMenuPermsByUserId(userId);
}
@Override
public List<SysMenuEntity> selectMenuTreeByUserId(Long userId) {
return baseMapper.selectMenuTreeByUserId(userId);
}
}
\ No newline at end of file
......@@ -7,8 +7,12 @@ import com.jomalls.custom.service.impl.BaseServiceImpl;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
......@@ -26,7 +30,14 @@ public class SysRoleDomainServiceImpl extends BaseServiceImpl<SysRoleMapper,SysR
}
@Override
public List<String> selectRoleKeysByUserId(Long userId) {
return baseMapper.selectRoleKeysByUserId(userId);
public Set<String> selectRoleKeysByUserId(Long userId) {
List<SysRoleEntity> roles = baseMapper.selectRoleListByUserId(userId);
if (roles == null || roles.isEmpty()) {
return Collections.emptySet();
}
return roles.stream()
.map(SysRoleEntity::getRoleKey)
.filter(StringUtils::hasText)
.collect(Collectors.toSet());
}
}
\ No newline at end of file
......@@ -63,6 +63,23 @@
AND m.perms != ''
</select>
<!-- 根据用户ID查询菜单树 -->
<select id="selectMenuTreeByUserId" resultType="com.jomalls.custom.dal.entity.SysMenuEntity">
SELECT DISTINCT m.* FROM sys_menu m
WHERE m.menu_type IN ('M', 'C')
AND m.status = '0'
AND m.del_flag = '0'
<if test="userId != 1">
AND m.menu_id IN (
SELECT rm.menu_id FROM sys_role_menu rm
WHERE rm.role_id IN (
SELECT ur.role_id FROM sys_user_role ur WHERE ur.user_id = #{userId}
)
)
</if>
ORDER BY m.parent_id, m.order_num
</select>
<!-- 批量插入 -->
<insert id="insertBatchSomeColumn">
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES
......
......@@ -46,6 +46,15 @@
WHERE ur.user_id = #{userId} AND r.del_flag = '0' AND r.status = '0'
</select>
<!-- 根据用户ID查询角色列表 -->
<select id="selectRoleListByUserId" resultType="com.jomalls.custom.dal.entity.SysRoleEntity">
SELECT r.* FROM sys_role r
LEFT JOIN sys_user_role ur ON r.role_id = ur.role_id
WHERE ur.user_id = #{userId}
AND r.status = '0'
AND r.del_flag = '0'
</select>
<!-- 批量插入 -->
<insert id="insertBatchSomeColumn">
INSERT INTO sys_role (role_name, role_key, role_sort, data_scope, menu_check_strictly, dept_check_strictly, status, del_flag, create_by, create_time, update_by, update_time, remark) VALUES
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment