package com.hz.pm.api.sys.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.sys.model.entity.UserRole;

import java.util.Collection;
import java.util.List;

/**
 * <p>
 * 业务接口
 * 角色分配
 * 账号角色绑定
 * </p>
 *
 * @author PoffyZhang
 */
public interface IUserRoleService extends IService<UserRole> {
    /**
     * 初始化超级管理员角色 权限
     *
     * @param userId 用户id
     * @return 是否正确
     */
    boolean initAdmin(Long userId);

    /**
     * 查询角色关联的用户ID
     *
     * @param roleId 角色ID
     * @return 用户ID集合
     * @author WendyYang
     **/
    List<Long> listUserIdByRoleId(Long roleId);

    List<Long> listUserIdByRoleIds(Collection<Long> roleId);

    default UserRole getOne(Long userId, Long roleId) {
        LambdaQueryWrapper<UserRole> eq = Wrappers.lambdaQuery(UserRole.class)
                .eq(UserRole::getUserId, userId)
                .eq(UserRole::getRoleId, roleId)
                .last(BizConst.LIMIT_1);
        return getOne(eq);
    }

    default List<UserRole> listByUserId(Long userId) {
        LambdaQueryWrapper<UserRole> eq = Wrappers.lambdaQuery(UserRole.class)
                .eq(UserRole::getUserId, userId);
        return list(eq);
    }

}
