package com.itheima.service;  // 定义该接口所属的包为 com.itheima.service

import com.itheima.po.Admin;  // 导入 Admin 类，表示管理员对象
import com.itheima.po.PageInfo;  // 导入 PageInfo 类，用于分页信息封装

import java.util.List;  // 导入 List 类，用于存储多个 Admin 对象

/**
 * 用户Service层接口
 * 本接口提供了管理员相关的业务逻辑处理方法
 */
public interface AdminService {

    /**
     * 通过账号和密码查询用户
     * @param admin 包含账号和密码的 Admin 对象
     * @return 如果找到匹配的管理员，则返回该 Admin 对象，否则返回 null
     */
    public Admin findAdmin(Admin admin);

    /**
     * 查找所有管理员信息
     * @return 返回所有管理员的列表
     */
    public List<Admin> getAll();

    /**
     * 分页查询管理员信息
     * @param a_username 根据用户名进行模糊查询
     * @param a_describe 根据描述进行模糊查询
     * @param a_id 根据管理员 ID 进行查询
     * @param pageIndex 当前页码，表示查询第几页
     * @param pageSize 每页显示的记录数
     * @return 返回分页查询后的 PageInfo 对象，包含当前页数据以及分页信息
     */
    public PageInfo<Admin> findPageInfo(String a_username, String a_describe, Integer a_id, Integer pageIndex, Integer pageSize);

    /**
     * 添加管理员信息
     * @param admin 要添加的 Admin 对象
     * @return 返回影响的行数，通常是 1（成功）或 0（失败）
     */
    public int addAdmin(Admin admin);

    /**
     * 删除管理员信息
     * @param a_id 要删除的管理员 ID
     * @return 返回影响的行数，通常是 1（成功）或 0（失败）
     */
    public int deleteAdmin(Integer a_id);

    /**
     * 更新管理员信息
     * @param admin 包含新管理员信息的 Admin 对象
     * @return 返回影响的行数，通常是 1（成功）或 0（失败）
     */
    public int updateAdmin(Admin admin);

    /**
     * 通过管理员 ID 查找管理员信息
     * @param a_id 管理员的 ID
     * @return 返回对应的 Admin 对象，如果找不到则返回 null
     */
    public Admin findAdminById(Integer a_id);
}
