feat(role): 添加角色用户关系管理功能并优化处方列表组件 bug#182

- 在SysUserRoleMapper中新增selectUserIdsByRoleId方法查询角色下的用户ID列表
- 在SysRoleServiceImpl中注入ISysMenuService并实现菜单缓存清理逻辑
- 修改updateRole方法在角色权限变更后清除相关用户的菜单缓存
- 更新处方列表组件确保showPopover初始值为false避免自动弹出问题
- 将采购入库页面的按钮文本从"添加记录"改为"采购入库"
- 添加删除验证检查已审批记录不允许删除的功能
This commit is contained in:
2026-03-18 14:26:12 +08:00
parent 0d1710f201
commit 6d87b7c445
5 changed files with 45 additions and 6 deletions

View File

@@ -54,9 +54,17 @@ public interface SysUserRoleMapper {
/**
* 批量取消授权用户角色
*
* @param roleId 角色ID
* @param userIds 需要删除的用户数据ID
* @param roleId 角色 ID
* @param userIds 需要删除的用户数据 ID
* @return 结果
*/
public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
/**
* 通过角色 ID 查询用户 ID 列表
*
* @param roleId 角色 ID
* @return 用户 ID 列表
*/
public List<Long> selectUserIdsByRoleId(Long roleId);
}

View File

@@ -15,6 +15,7 @@ import com.core.system.mapper.SysRoleDeptMapper;
import com.core.system.mapper.SysRoleMapper;
import com.core.system.mapper.SysRoleMenuMapper;
import com.core.system.mapper.SysUserRoleMapper;
import com.core.system.service.ISysMenuService;
import com.core.system.service.ISysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -41,6 +42,9 @@ public class SysRoleServiceImpl implements ISysRoleService {
@Autowired
private SysRoleDeptMapper roleDeptMapper;
@Autowired
private ISysMenuService menuService;
/**
* 根据条件分页查询角色数据
*
@@ -221,11 +225,23 @@ public class SysRoleServiceImpl implements ISysRoleService {
@Override
@Transactional
public int updateRole(SysRole role) {
// 修改角色信息
// 1. 获取该角色下的所有用户 ID在修改权限前查询
List<Long> userIds = userRoleMapper.selectUserIdsByRoleId(role.getRoleId());
// 2. 修改角色信息
roleMapper.updateRole(role);
// 删除角色与菜单关联
// 3. 删除角色与菜单关联
roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId());
return insertRoleMenu(role);
int result = insertRoleMenu(role);
// 4. 清除该角色下所有用户的菜单树缓存
if (userIds != null && !userIds.isEmpty()) {
for (Long userId : userIds) {
menuService.clearMenuCacheByUserId(userId);
}
}
return result;
}
/**

View File

@@ -48,4 +48,10 @@
#{userId}
</foreach>
</delete>
<select id="selectUserIdsByRoleId" resultType="Long">
select user_id
from sys_user_role
where role_id = #{roleId}
</select>
</mapper>