using WorkCameraExport.Models;
namespace WorkCameraExport.Services.Interfaces
{
///
/// API 通信服务接口
///
public interface IApiService : IDisposable
{
#region 认证
///
/// 用户登录
///
Task<(bool Success, string Message, LoginResponse? Data)> LoginAsync(
string username, string password, string code = "", string uuid = "");
///
/// 刷新 Token
///
Task RefreshTokenAsync();
///
/// 退出登录
///
void Logout();
///
/// 检查是否已登录
///
bool IsLoggedIn { get; }
///
/// 检查 Token 是否即将过期
///
bool IsTokenExpiringSoon { get; }
#endregion
#region 统计
///
/// 获取统计信息
///
Task<(bool Success, string Message, StatisticsDto? Data)> GetStatisticsAsync();
#endregion
#region 工作记录
///
/// 查询工作记录列表
///
Task<(bool Success, string Message, PagedData? Data)> GetWorkRecordsAsync(
WorkRecordQueryDto query);
///
/// 获取单条工作记录
///
Task<(bool Success, string Message, WorkRecordDto? Data)> GetWorkRecordAsync(int id);
///
/// 新增工作记录
///
Task<(bool Success, string Message, int? Id)> AddWorkRecordAsync(WorkRecordSaveDto record);
///
/// 更新工作记录
///
Task<(bool Success, string Message)> UpdateWorkRecordAsync(WorkRecordSaveDto record);
///
/// 删除工作记录
///
Task<(bool Success, string Message)> DeleteWorkRecordAsync(int id);
#endregion
#region 月报表
///
/// 获取月报表数据
///
Task<(bool Success, string Message, List? Data)> GetMonthlyReportAsync(
MonthReportQueryDto query);
///
/// 获取指定月份的所有图片
///
Task<(bool Success, string Message, List? Data)> GetMonthImagesAsync(
string yearMonth);
#endregion
#region 图片下载
///
/// 下载图片
///
Task<(bool Success, byte[]? Data, string Message)> DownloadImageAsync(
string imageUrl, CancellationToken cancellationToken = default);
#endregion
#region 配置
///
/// 设置服务器地址
///
void SetBaseUrl(string baseUrl);
///
/// 设置认证 Token
///
void SetToken(string token);
///
/// 设置 Token 及其过期时间
///
void SetToken(string token, DateTime expireTime);
///
/// 设置刷新 Token
///
void SetRefreshToken(string refreshToken);
///
/// 获取当前 Token
///
string GetToken();
///
/// 获取 Token 过期时间
///
DateTime GetTokenExpireTime();
#endregion
}
}