/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.um.service;
import java.util.List;
import java.util.Map;
import com.jinhe.tss.component.log.Logable;
import com.jinhe.tss.um.UMConstants;
import com.jinhe.tss.um.entity.Role;
import com.jinhe.tss.um.permission.filter.PermissionFilter4Sort;
import com.jinhe.tss.um.permission.filter.PermissionTag;
public interface IRoleService {
/**
* <p>
* 根据ID查询角色
* </p>
* @param id
* @return Object
*/
Role getRoleById(Long id);
/**
* <p>
* 修改一个Role对象的明细信息、角色对用户信息、角色对用户组的信息
* </p>
* @param role
* @param userIdsStr
* @param groupIdsStr
*/
@Logable(operateTable="角色", operateType="新建/修改",
operateInfo="新建/修改${args[0]}角色(角色对用户信息:${args[1]}、角色对用户组的信息 :${args[2]})"
)
void saveRole2UserAndRole2Group(Role role, String userIdsStr, String groupIdsStr);
/**
* 根据用户组的id查找该组下所有用户
* @param groupId
* 用户组id
* @return
*/
List<?> getUsersByGroupId(Long groupId);
/**
* 保存角色组
* @param entity
* @return
*/
@Logable(operateTable="角色组", operateType="新建/修改",
operateInfo="新建/修改了角色组 ${args[0]}"
)
Role saveRoleGroup(Role entity);
/**
* 删除角色
* @param id
*/
@Logable(operateTable="角色", operateType="删除",
operateInfo="删除 (ID: ${args[0]})角色(组)"
)
void delete(Long id);
/**
* <p>
* 0-停用/1-启用角色
* </p>
* @param id
* @param disabled
*/
@Logable(operateTable="角色", operateType="停用/启动",
operateInfo="停用或启动 (ID: ${args[0]})角色(组)(disabled: ${args[1]})"
)
void disable(Long id, Integer disabled);
/**
* 排序
* @param id
* @param targetId
* @param direction
*/
@Logable(operateTable="角色", operateType="排序", operateInfo="(ID: ${args[0]})节点移动到了(ID: ${args[1]})节点<#if args[2]=1>之下<#else>之上</#if>")
@PermissionTag(
operation = UMConstants.ROLE_SORT_OPERRATION,
resourceType = UMConstants.ROLE_RESOURCE_TYPE_ID,
filter = PermissionFilter4Sort.class)
void sort(Long id, Long targetId, int direction);
/**
* 跨父节点移动
* @param id
* @param targetId
*/
@Logable(operateTable="角色", operateType="移动",
operateInfo="移动(ID: ${args[0]}) 角色至 (ID: ${args[1]}) 角色组 "
)
void move(Long id, Long targetId);
/**
* 获得平台应用系统
* @return
*/
List<?> getPlatformApplication();
/**
* 根据应用id查询资源类型
* @param applicationId
* @return
*/
List<?> getResourceTypeByAppId(String applicationId) ;
/**
* 新建角色使用的信息
* @return
*/
Map<String, Object> getInfo4CreateNewRole();
/**
* 编辑角色使用的信息
* @param roleId
* @return
*/
Map<String, Object> getInfo4UpdateExistRole(Long roleId);
/**
* <p>
* 返回用户被转授予的角色列表:用户拥有的角色以及用户所在组拥有的角色(供转授使用),包括匿名角色<br/>
* 用户只能对自身拥有的角色进行转授,如果是因为转授而获得的角色不能再转授。 <br/>
* 停用的角色虽然可以转授出去,但是使用时会过滤掉的。 <br/>
* </p>
* @param userId
* @return
*/
@PermissionTag(
operation = UMConstants.ROLE_VIEW_OPERRATION,
resourceType = UMConstants.ROLE_RESOURCE_TYPE_ID
)
List<?> getAllVisiableRole();
/**
* <p>
* 获取用户有新建权限的角色组。
* </p>
* @return
*/
@PermissionTag(
operation = UMConstants.ROLE_ADD_OPERRATION,
resourceType = UMConstants.ROLE_RESOURCE_TYPE_ID
)
List<?> getAddableRoleGroups();
// ===========================================================================
// 展示外部资源的授权信息时需要的操作
// 1.从um中取到当前用户的角色信息
// ===========================================================================
/**
* 获取登陆用户的所有权限
* @return
*/
List<Long[]> getRoles4Permission();
}