package com.sptg.permissions.biz.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.sptg.common.core.beans.PageBean;
import com.sptg.permissions.api.dto.AccountDto;
import com.sptg.permissions.api.dto.AccountRoleDto;
import com.sptg.permissions.api.entity.AccountRole;

import java.io.Serializable;
import java.util.List;

/**
 * title: AccountRoleServiceInterface
 * package: com.sptg.permissions.biz.security
 * description: 账号角色-服务层接口
 *
 *                  
 *                 
 */
public interface AccountRoleServiceInterface {


    /**
     * 功能描述: 根据账户Id获取角色Id列表
     * @param accountId 账户Id
     * @return List<Long> 角色Id列表
     *                  
     * date:  2018/10/29 22:12
     */
    List<Long> selectRoleIdListByAccountId(Serializable accountId);

    /**
     * 功能描述: 校验角色Id是否已被使用
     * @param roleId 角色Id
     * @return true：已使用,false：未使用
     *                  
     *                       
     */
    Boolean checkRoleIsWasUse(Long roleId);

    /**
     * 功能描述: 根据角色Id查询，分页绑定的账号列表
     * @param dto 查询条件{ roleId,分页条件为必填 }
     * @param page 分页信息
     * @return Page<AccountRole>
     *                  
     *                       
     */
    Page<AccountRole> pagingQuery(AccountRoleDto dto,Page<AccountRole> page);

    /**
     * 功能描述: 绑定用户
     * @param dto { accountId：必填,roleId：必填 }
     * @return Boolean { true：成功,false：失败 }
     *                  
     *                       
     */
    Boolean bindUser(AccountRoleDto dto);

    /**
     * 功能描述: 解除用户绑定
     * @param dto { accountId:必填,accountIdList:必填 }
     * @return ResultBean<Boolean>
     *                  
     *                       
     */
    Boolean untieUser(AccountRoleDto dto);

    /**
     * 功能描述: 批量插入
     * @param dto 账号信息{ id：必填，roleIds：必填 }
     *                  
     *                       
     */
    void batchInsertByAccount(AccountDto dto);

    /**
     * 功能描述: 批量插入或修改
     * @param dto 账号信息{ id：必填，roleIds：必填 }
     *                  
     *                       
     */
    void batchInsertOrUpdateByAccount(AccountDto dto);

    /**
     * 功能描述: 清空账号下的所有角色
     * @param accountId 账号Id
     *                  
     *                       
     */
    void clearAccountRole(Long accountId);
}
