using QYZH.InteractiveMagazine.Models.Common;
using QYZH.InteractiveMagazine.Models.Dto;
using QYZH.InteractiveMagazine.Models.Dto.Pet;
using QYZH.InteractiveMagazine.Models.Entity;
namespace QYZH.InteractiveMagazine.IService;
///
/// 宠物服务接口
///
public interface IPetService : IBaseService
{
///
/// 获取用户宠物信息
///
/// 用户Id
/// 宠物信息
Task GetPetByUserIdAsync(long userId);
///
/// 为用户创建默认宠物(最低形态、成长值为0、未激活状态)
///
/// 用户Id
Task CreateDefaultPetAsync(long userId);
///
/// 激活宠物(将状态从 Inactive 改为 Active)
///
/// 用户Id
Task ActivatePetAsync(long userId);
///
/// 喂养宠物(增加成长值 + 记录喂养记录 + 触发进化检查)
///
/// 用户Id
/// 喂养输入
/// 喂养结果
Task FeedPetAsync(long userId, FeedPetInput input);
///
/// 获取宠物喂养记录列表
///
/// 用户Id
/// 宠物Id
/// 喂养记录列表
Task> GetFeedingRecordsAsync(long userId, long petId, PageQueryModel pageQuery);
// ==================== 后台管理:宠物模板 ====================
///
/// 创建宠物模板
///
Task CreateTemplateAsync(PetTemplateInput input);
///
/// 更新宠物模板
///
Task UpdateTemplateAsync(long id, PetTemplateInput input);
///
/// 删除宠物模板(软删除)
///
Task DeleteTemplateAsync(long id);
///
/// 获取单个宠物模板
///
Task GetTemplateByIdAsync(long id);
///
/// 分页查询宠物模板列表
///
Task> GetTemplatesAsync(PetTemplateQueryInput input);
///
/// 更新模板状态(启用/禁用)
///
Task UpdateTemplateStatusAsync(long id, string status);
// ==================== 后台管理:进化链 ====================
///
/// 创建进化阶段
///
Task CreateEvolutionAsync(PetEvolutionInput input);
///
/// 更新进化阶段
///
Task UpdateEvolutionAsync(long id, PetEvolutionInput input);
///
/// 删除进化阶段(软删除)
///
Task DeleteEvolutionAsync(long id);
///
/// 获取单个进化阶段
///
Task GetEvolutionByIdAsync(long id);
///
/// 分页查询进化阶段列表
///
Task> GetEvolutionsAsync(PetEvolutionQueryInput input);
// ==================== 后台管理:皮肤 ====================
///
/// 创建皮肤
///
Task CreateSkinAsync(PetSkinInput input);
///
/// 更新皮肤
///
Task UpdateSkinAsync(long id, PetSkinInput input);
///
/// 删除皮肤(软删除)
///
Task DeleteSkinAsync(long id);
///
/// 获取单个皮肤(含图片列表)
///
Task GetSkinByIdAsync(long id);
///
/// 分页查询皮肤列表
///
Task> GetSkinsAsync(PetSkinQueryInput input);
// ==================== 后台管理:皮肤图片 ====================
///
/// 创建皮肤图片
///
Task CreateSkinImageAsync(PetSkinImageInput input);
///
/// 更新皮肤图片
///
Task UpdateSkinImageAsync(long id, PetSkinImageInput input);
///
/// 删除皮肤图片(软删除)
///
Task DeleteSkinImageAsync(long id);
///
/// 获取指定皮肤的所有图片
///
Task> GetSkinImagesBySkinIdAsync(long skinId);
}