package com.sy.coinage.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sy.coinage.core.vo.CacheUserVO;
import com.sy.coinage.sys.req.AdminCopyRoleReq;
import java.util.List;

import com.sy.coinage.core.vo.OptVO;
import com.sy.coinage.sys.model.*;
import com.sy.coinage.sys.req.RoleMenuAddReq;
import com.sy.coinage.sys.vo.PermissionVO;

/**
 * 角色Service
 */
public interface IRoleService extends IService<Role> {

    /**
     * 获取下拉选项
     *
     * @return {@link OptVO}
     */
    List<OptVO> opt(Integer tenantId);

    /**
     * 根据角色id获取已配置的菜单id
     *
     * @param id
     * @return
     */
    List<Integer> menuIds(Integer id);

    /**
     * 角色添加菜单
     *
     * @param req
     */
    void addMenu(RoleMenuAddReq req);

    /**
     * 根据用户id获取菜单按钮操作权限
     *
     * @param userId 用户id
     * @return
     * @author lug 2022年11月22日
     */
    List<PermissionVO> permission(Integer userId);

    void deleteUser(Integer userId, Integer roleId);

    void copy(AdminCopyRoleReq req, CacheUserVO user);

    void validName(Integer id, String name, Integer tenantId);
}
