package com.fzm.mall.server.admin.auth_center.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fzm.mall.server.admin.auth_center.entity.dto.RoleDTO;
import com.fzm.mall.server.admin.auth_center.entity.dto.RoleEditDTO;
import com.fzm.mall.server.admin.auth_center.entity.vo.AdminRoleDetailVO;
import com.fzm.mall.server.admin.auth_center.entity.vo.AdminRoleListVO;
import com.fzm.mall.server.admin.auth_center.entity.vo.AdminRoleVO;
import com.fzm.mall.server.admin.auth_center.model.AdminRole;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author wangp
 * @date 2021/4/8 13:41
 * @description 管理员角色 服务类
 * @since JDK 1.8
 */
public interface IAdminRoleService extends IService<AdminRole> {

    /**
     * 新增
     *
     * @param adminRole 管理员角色
     */
    void initRole(AdminRole adminRole);

    /**
     * 新增
     *
     * @param roleDTO 角色信息
     */
    void add(RoleDTO roleDTO);

    /**
     * 编辑
     *
     * @param roleEditDTO 角色编辑信息
     */
    void edit(RoleEditDTO roleEditDTO);

    /**
     * 分页查询
     *
     * @param roleId   角色id
     * @param roleName 角色名称
     * @param pageNum  当前页数
     * @param pageSize 每页个数
     * @return 分页信息
     */
    IPage<AdminRoleVO> page(String roleId, String roleName, Integer pageNum, Integer pageSize);

    /**
     * 角色详情
     *
     * @param roleId 角色id
     */
    AdminRoleDetailVO detail(String roleId);

    /**
     * 删除
     *
     * @param roleId 角色id
     */
    void delete(String roleId);

    /**
     * 启用
     *
     * @param roleId 角色id
     */
    void able(String roleId);

    /**
     * 禁用
     *
     * @param roleId 角色id
     */
    void disable(String roleId);

    /**
     * 查询角色列表
     *
     * @param type 管理员类型
     */
    List<AdminRoleListVO> getRoleList(Integer type);

    /**
     * 查询默认角色是否存在
     *
     * @param type 角色类型
     * @return T F
     */
    boolean isDefaultRoleExist(Integer type);

    /**
     * 根据类型查询管理员角色
     *
     * @param type 类型
     * @return 角色
     */
    AdminRole getByType(Integer type);

    /**
     * 根据管角色id查询管理员角色
     *
     * @param roleId 角色id
     * @return 角色
     */
    AdminRole getByRoleId(String roleId);

    /**
     * 根据管角色id查询管理员角色
     *
     * @param roleId 角色id
     * @return 角色
     */
    AdminRole getByRoleIdIsNotDel(String roleId);
}

