Files
QYZH.InteractiveMagazine/QYZH.InteractiveMagazine.IService/IPetService.cs
glz 296d87b245 feat: 新增宠物进化分组接口、OSS图片搬运功能及配置更新
1. 新增皮肤按进化阶段分组的输出DTO
2. 新增宠物相关便捷查询接口并实现对应控制器
3. 新增OSS图片搬运辅助类,实现临时文件迁移逻辑
4. 为商品、宠物相关服务添加OSS图片自动迁移功能
5. 调整微信授权同步逻辑移除异步等待
6. 更新配置文件中的微信密钥和OSS存储信息
7. 注册SDK服务到DI容器
2026-06-09 18:02:26 +08:00

173 lines
5.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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>
public interface IPetService : IBaseService<UserPet>
{
/// <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);
// ==================== 后台管理:宠物模板 ====================
/// <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>
Task UpdateTemplateStatusAsync(long id);
// ==================== 后台管理:进化链 ====================
/// <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);
// ==================== 便捷查询接口 ====================
/// <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);
}