package com.app.admin.framework.system.permission.authorization.service;

import com.app.admin.framework.system.module.model.SysModule;
import com.app.admin.framework.system.module.view.SysModuleTreeNode;
import com.app.framework.core.support.auth.LoginUser;
import com.app.framework.core.support.view.form.AjaxResult;

import java.util.List;

/**
 * 权限管理
 */
public interface SysAuthorityService {

    /**
     * 用户登录
     *
     * @param username
     *            用户名
     * @param password
     *            登录密码,标准md5加密
     */
    AjaxResult login(String username, String password);

    /**
     * 获取登录用户的所有资源
     * @param loginUser	登录用户
     * @param moduleType	资源类型
     */
    List<SysModule> getLoginUserModule(LoginUser loginUser, Integer moduleType);

    /**
     * 加载角色下的关联模块
     */
    List<SysModuleTreeNode> selectModuleByRoleId(LoginUser loginUser, Long roleId);

    /**
     * 保存角色模块关联
     * @param roleId
     * @param moduleIds
     */
    void saveRoleModuleRelation(Long roleId, Long[] moduleIds);

    /**
     * 删除角色
     * 同时删除与用户对应关系
     * 同时删除角色模块关联关系
     * @param roleId	角色ID
     */
    void deleteRole(Long roleId);


    /**
     * 保存用户角色对应关系
     * @param userId	用户ID
     * @param roleIds	角色ID数组
     */
    void saveUserRoleRelation(Long userId, Long roleIds[]);

    /**
     * 保存角色用户对应关系
     * @param roleId	角色ID
     * @param userIds	用户ID数组
     */
    void saveRoleUserRelation(Long roleId, Long userIds[]);
}
