package com.yx.face.service;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.yx.face.boot.restful.RestDTO;
import com.yx.face.boot.restful.RestResult;
import com.yx.face.model.dto.AdminDTO;
import com.yx.face.model.search.AdminSearch;
import com.yx.face.model.update.AdminUpdate;
import com.yx.face.model.vo.AdminVO;

import java.util.List;
import java.util.Map;


/**
 * @description: 管理人员信息表(Admin)表服务接口 <br>
 * @author: PWB <br>
 * @since: 1.0 <br>
 * @date: 2021-05-21 13:37:05 <br>
 */

public interface AdminService {
    /**
     * @param name     <br>
     * @param password <br>
     * @return com.yixin.review.model.vo.AdminLoginVO <br>
     * @description: login <br>
     * @date: 2021/4/7 16:50 <br>
     * @author: PWB <br>
     */
    AdminVO login(String name, String password);


    /**
     * @return com.yixin.review.boot.restful.RestResult<java.lang.Boolean> <br>
     * @description: 后台管理退出登录 <br>
     * @date: 2021/4/10 14:23 <br>
     * @author: PWB <br>
     */
    Boolean logout();

    /**
     * @param userId <br>
     * @return com.yixin.review.model.vo.AdminLoginVO <br>
     * @description: 获取管理员信息 <br>
     * @date: 2021/4/10 14:23 <br>
     * @author: PWB <br>
     */
    AdminVO getInfo(Integer userId);

    /**
     * @param dto <br>
     * @return java.lang.Boolean <br>
     * @description: 添加/编辑管理员 <br>
     * @date: 2021/4/7 16:50 <br>
     * @author: PWB <br>
     */
    Boolean editAdmin(AdminDTO dto);


    /**
     * @param dto <br>
     * @return com.github.pagehelper.PageInfo<com.yixin.review.model.vo.AdminInfoVO> <br>
     * @description: 获取管理员列表 <br>
     * @date: 2021/4/7 16:50 <br>
     * @author: PWB <br>
     */
    PageInfo<AdminVO> getAdmins(RestDTO<AdminSearch> dto);


    /**
     * @param id <br>
     * @return java.lang.Boolean <br>
     * @description: 删除管理员 <br>
     * @date: 2021/4/7 16:50 <br>
     * @author: PWB <br>
     */
    Boolean deleteAdmin(Long id);


    /**
     * @param id 管理员id <br>
     * @return com.yixin.review.model.vo.AdminAuthVO <br>
     * @description: 获取管理员权限信息 <br>
     * @date: 2021/4/7 17:47 <br>
     * @author: PWB <br>
     */
    AdminVO getAuthInfo(Integer id);


    AdminVO getInfo();

    /*
    * 管理员批量导入
    * */
    RestResult<List<String>> uploadAdminInfoExcel(List<Object> datas);


    List<AdminVO> getAdminlist(JSONObject type);

    Boolean updateAdmin(AdminUpdate adminUpdate);

    /*
     * 大屏获取少量的账号信息
     * */
    AdminVO showDataGetInfo(Integer adminId);
    /*
     * 大屏获取少量的账号信息
     * */
    AdminVO showDataGetInfo();
    /*查询*/
    List<Long> getAdminListSearch(Map<String, Object> map);
    /*根据adminIdList查询到所有的adminVO*/
    List<AdminVO> getByAdminlist(List<Long> list);
}

