
using QYZH.InteractiveMagazine.Models.Dto;
using QYZH.InteractiveMagazine.Models.Entity;

namespace QYZH.InteractiveMagazine.IService;

/// <summary>
/// 管理员用户服务接口
/// </summary>
public interface IAdminUserService : IBaseService<AdminUser>
{
    /// <summary>
    /// 创建管理员
    /// </summary>
    /// <param name="input">管理员输入</param>
    /// <returns>创建的管理员信息</returns>
    Task<AdminUserOutput> CreateAsync(AdminUserInput input);

    /// <summary>
    /// 更新管理员
    /// </summary>
    /// <param name="id">管理员ID</param>
    /// <param name="input">管理员输入</param>
    /// <returns>更新后的管理员信息</returns>
    Task<AdminUserOutput> UpdateAsync(long id, AdminUserInput input);

    /// <summary>
    /// 删除管理员（软删除）
    /// </summary>
    /// <param name="id">管理员ID</param>
    Task DeleteAsync(long id);

    /// <summary>
    /// 根据ID获取管理员
    /// </summary>
    /// <param name="id">管理员ID</param>
    /// <returns>管理员信息</returns>
    Task<AdminUserOutput> GetByIdAsync(long id);

    /// <summary>
    /// 分页查询管理员列表
    /// </summary>
    /// <param name="input">查询条件</param>
    /// <returns>分页结果</returns>
    Task<PageListModel<AdminUserOutput>> GetListAsync(AdminUserQueryInput input);

    /// <summary>
    /// 切换管理员状态（激活/冻结）
    /// </summary>
    /// <param name="id">管理员ID</param>
    /// <param name="status">目标状态：1=激活，0=冻结</param>
    Task ToggleStatusAsync(long id);
}
