package com.ningdatech.pmapi.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ningdatech.pmapi.sys.model.entity.Role;
import com.ningdatech.pmapi.sys.model.dto.RoleSaveDTO;
import com.ningdatech.pmapi.sys.model.dto.RoleUpdateDTO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 角色
 * </p>
 *
 * @author PoffyZhang
 * @since 2022-09-30
 */
public interface IRoleService extends IService<Role> {


    /**
     * 根据ID删除
     *
     * @param ids id
     * @return 是否成功
     */
    boolean removeByIdWithCache(List<Long> ids);

    /**
     * 查询用户拥有的角色
     *
     * @param userId 用户id
     * @return 角色
     */
    List<Role> findRoleByUserId(Long userId);

    /**
     * 保存角色
     *
     * @param data   角色
     * @param userId 用户id
     */
    void saveRole(RoleSaveDTO data, Long userId);

    /**
     * 修改
     *
     * @param role   角色
     * @param userId 用户id
     */
    void updateRole(RoleUpdateDTO role, Long userId);

    /**
     * 根据角色编码查询用户ID
     *
     * @param codes 角色编码
     * @return 用户id
     */
    List<Long> findUserIdByCode(String[] codes);

    /**
     * 检测角色名重复
     *
     * @param name /
     * @return 存在返回真
     */
    Boolean check(String name);

    /**
     * 校验角色名
     *
     * @param name /
     * @param id   /
     * @return boolean
     */
    Boolean check(String name, Long id);
}
