Files
QYZH.InteractiveMagazine/QYZH.InteractiveMagazine.IService/IPetService.cs
glz e493c85d08 refactor,feat: 批量代码重构与新增业务模块
1. 重命名枚举项与实体字段,修正类型引用
2. 新增IsNull扩展方法与多项字符串处理扩展
3. 新增大量业务DTO、服务接口与枚举定义
4. 重构RabbitMQ服务实现,替换旧版消息队列组件
5. 优化签到服务的宠物喂养事务逻辑
6. 移除冗余的项目引用与旧版消息队列代码
7. 新增Excel导出、导入模板相关工具方法
2026-06-11 17:01:24 +08:00

187 lines
5.8 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="input">喂养输入</param>
/// <returns>喂养结果</returns>
Task<FeedPetOutput> FeedPetInTranAsync(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);
/// <summary>
/// 获取所有皮肤下拉列表仅返回Id和Name按SortOrder排序
/// </summary>
/// <param name="types">皮肤类型列表(可选)</param>
Task<List<SelectOptionDto>> GetAllSkinsForSelectAsync(List<string>? types = null);
}