package cn.com.ty.lift.system.user.service;

import cn.com.ty.lift.system.user.dao.entity.Role;
import cn.com.ty.lift.system.user.dao.entity.UserRole;
import cn.com.ty.lift.system.user.dao.entity.model.RoleRequest;
import cn.com.xwy.boot.web.dto.RestResponse;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * @author huangyuan
 * @date 2019-12-01
 * @description 角色接口
 */
public interface IRoleService extends IService<Role> {
    /**
     * @param roleRequest 角色请求对象
     * @return
     * @description
     * @date 2019/11/27 10:03 AM
     */
    RestResponse list(RoleRequest roleRequest);

    /**
     * @param roleRequest 角色请求对象
     * @return
     * @description 添加角色
     * @date 2019/11/27 10:03 AM
     */
    RestResponse addRole(RoleRequest roleRequest);

    /**
     * @param roleRequest 角色请求对象
     * @return
     * @description 更新角色
     * @date 2019/11/27 10:03 AM
     */
    RestResponse updateRole(RoleRequest roleRequest);

    /**
     * @param roleRequest 角色请求对象
     * @return
     * @description 删除角色信息
     * @date 2019/11/27 10:03 AM
     */
    RestResponse deleteRole(RoleRequest roleRequest);

    /**
     * @param userRole 用户角色信息
     * @return
     * @description 通过用户id，公司id获取用户菜单信息
     * @date 2019/11/27 10:03 AM
     */
    RestResponse getUserMenus(UserRole userRole);

    /**
     * @param userId    用户id
     * @param companyId 公司id
     * @return
     * @description
     * @date 2019-12-10
     */
    Role getRoleByUserIdAndCompanyId(Long userId, Long companyId);

    /**
     * @param
     * @return
     * @description 通过用户id集合和公司id，获取用户在指定公司的角色列表
     * @date 2019-12-18 10:46
     */
    Map<Long, Role> getUserIdToRoleByUserIdsAndCompanyId(List<Long> userIdList, Long companyId);

    /***
     * @description 获取角色信息
     * @date 2019-12-20 15:47
     * @param
     * @return
     */
    RestResponse info(RoleRequest roleRequest);

    /**
     * @param
     * @return
     * @description 获取公司角色列表
     * @date 2019-12-23 22:55
     */
    RestResponse companyRoleList(RoleRequest roleRequest);

    /**
     * @param defaultAssign       默认分配标识
     * @param defaultRoleList     默认角色列表
     * @param enterpriseAdminRole 企业管理员角色
     * @description
     * @date 2020/4/26 1:26 下午
     */
    boolean assignDefaultMenu(int defaultAssign, List<Role> defaultRoleList, Role enterpriseAdminRole);

    /**
     * @param userId 用户id
     *
     * @return
     * @description
     * @date 2020/4/27 11:36 上午
     */
    List<Role> getRoleByUserIdAndRoleCode(Long userId, String roleCode);
}
