2026-06-04 15:54:30 +08:00
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 宠物服务接口
|
|
|
|
|
|
/// </summary>
|
2026-06-05 18:10:34 +08:00
|
|
|
|
public interface IPetService : IBaseService<UserPet>
|
2026-06-04 15:54:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取用户宠物信息
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="userId">用户Id</param>
|
|
|
|
|
|
/// <returns>宠物信息</returns>
|
|
|
|
|
|
Task<PetOutput?> GetPetByUserIdAsync(long userId);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 为用户创建默认宠物(最低形态、成长值为0、未激活状态)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="userId">用户Id</param>
|
|
|
|
|
|
Task CreateDefaultPetAsync(long userId);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 激活宠物(将状态从 Inactive 改为 Active)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="userId">用户Id</param>
|
|
|
|
|
|
Task ActivatePetAsync(long userId);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 喂养宠物(增加成长值 + 记录喂养记录 + 触发进化检查)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="userId">用户Id</param>
|
|
|
|
|
|
/// <param name="input">喂养输入</param>
|
|
|
|
|
|
/// <returns>喂养结果</returns>
|
|
|
|
|
|
Task<FeedPetOutput> FeedPetAsync(long userId, FeedPetInput input);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取宠物喂养记录列表
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="userId">用户Id</param>
|
|
|
|
|
|
/// <param name="petId">宠物Id</param>
|
|
|
|
|
|
/// <returns>喂养记录列表</returns>
|
|
|
|
|
|
Task<PageListModel<FeedingRecordOutput>> GetFeedingRecordsAsync(long userId, long petId, PageQueryModel pageQuery);
|
2026-06-08 16:57:44 +08:00
|
|
|
|
|
|
|
|
|
|
// ==================== 后台管理:宠物模板 ====================
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 创建宠物模板
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PetTemplateOutput> CreateTemplateAsync(PetTemplateInput input);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 更新宠物模板
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PetTemplateOutput> UpdateTemplateAsync(long id, PetTemplateInput input);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 删除宠物模板(软删除)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task DeleteTemplateAsync(long id);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取单个宠物模板
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PetTemplateOutput> GetTemplateByIdAsync(long id);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 分页查询宠物模板列表
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PageListModel<PetTemplateOutput>> GetTemplatesAsync(PetTemplateQueryInput input);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 更新模板状态(启用/禁用)
|
|
|
|
|
|
/// </summary>
|
2026-06-09 11:41:28 +08:00
|
|
|
|
Task UpdateTemplateStatusAsync(long id);
|
2026-06-08 16:57:44 +08:00
|
|
|
|
|
|
|
|
|
|
// ==================== 后台管理:进化链 ====================
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 创建进化阶段
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PetEvolutionOutput> CreateEvolutionAsync(PetEvolutionInput input);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 更新进化阶段
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PetEvolutionOutput> UpdateEvolutionAsync(long id, PetEvolutionInput input);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 删除进化阶段(软删除)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task DeleteEvolutionAsync(long id);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取单个进化阶段
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PetEvolutionOutput> GetEvolutionByIdAsync(long id);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 分页查询进化阶段列表
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PageListModel<PetEvolutionOutput>> GetEvolutionsAsync(PetEvolutionQueryInput input);
|
|
|
|
|
|
|
|
|
|
|
|
// ==================== 后台管理:皮肤 ====================
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 创建皮肤
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PetSkinOutput> CreateSkinAsync(PetSkinInput input);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 更新皮肤
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PetSkinOutput> UpdateSkinAsync(long id, PetSkinInput input);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 删除皮肤(软删除)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task DeleteSkinAsync(long id);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取单个皮肤(含图片列表)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PetSkinOutput> GetSkinByIdAsync(long id);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 分页查询皮肤列表
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PageListModel<PetSkinOutput>> GetSkinsAsync(PetSkinQueryInput input);
|
|
|
|
|
|
|
|
|
|
|
|
// ==================== 后台管理:皮肤图片 ====================
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 创建皮肤图片
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PetSkinImageOutput> CreateSkinImageAsync(PetSkinImageInput input);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 更新皮肤图片
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<PetSkinImageOutput> UpdateSkinImageAsync(long id, PetSkinImageInput input);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 删除皮肤图片(软删除)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task DeleteSkinImageAsync(long id);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取指定皮肤的所有图片
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<List<PetSkinImageOutput>> GetSkinImagesBySkinIdAsync(long skinId);
|
2026-06-09 18:02:26 +08:00
|
|
|
|
|
|
|
|
|
|
// ==================== 便捷查询接口 ====================
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 根据模板Id获取进化链列表(非分页,按StageLevel排序)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<List<PetEvolutionOutput>> GetEvolutionsByTemplateIdAsync(long templateId);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 根据模板Id获取皮肤列表(非分页,按SortOrder排序)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<List<PetSkinOutput>> GetSkinsByTemplateIdAsync(long templateId);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 根据皮肤Id获取各阶段图片列表(按进化阶段分组,含阶段基本信息)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<List<SkinEvolutionStageOutput>> GetSkinImagesGroupedBySkinIdAsync(long skinId);
|
2026-06-04 15:54:30 +08:00
|
|
|
|
}
|