feat: 完成宠物模块重构与社区功能开发
本次提交包含多项核心更新:
1. 重构宠物模块数据结构:拆分皮肤图片为独立表,优化Pet、PetEvolution实体,调整字段类型与冗余字段
2. 新增宠物皮肤图片管理表,支持多进化阶段多图片展示
3. 完善宠物DTO,新增当前形态名称、皮肤信息与图片序列返回
4. 新增社区功能模块:
- 微信端社区Feed流、点赞/取消点赞接口
- 后台社区消息管理接口与服务实现
5. 优化商城与背包模块,替换皮肤图片获取逻辑为从新表读取预览图
6. 重构勋章服务,新增规则校验逻辑
7. 调整命名规范,修复原有控制器命名问题
This commit is contained in:
@ -41,8 +41,12 @@ public class BagSkinBrief
|
||||
{
|
||||
public long SkinId { get; set; }
|
||||
public string SkinName { get; set; } = string.Empty;
|
||||
public string? SkinImage { get; set; }
|
||||
public string Rarity { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 皮肤预览图(取第一张图片)
|
||||
/// </summary>
|
||||
public string? PreviewImage { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
288
QYZH.InteractiveMagazine.Models/Dto/Community/CommunityDto.cs
Normal file
288
QYZH.InteractiveMagazine.Models/Dto/Community/CommunityDto.cs
Normal file
@ -0,0 +1,288 @@
|
||||
namespace QYZH.InteractiveMagazine.Models.Dto;
|
||||
|
||||
#region 后台管理 DTO
|
||||
|
||||
/// <summary>
|
||||
/// 社区消息分页查询输入(后台)
|
||||
/// </summary>
|
||||
public class AdminMessageQueryInput : PageQueryModel
|
||||
{
|
||||
/// <summary>
|
||||
/// 期刊ID
|
||||
/// </summary>
|
||||
public long? JournalId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息类型: Article, Quote, Announcement
|
||||
/// </summary>
|
||||
public string? Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 状态: 0=审核中, 1=已通过, 2=已冻结
|
||||
/// </summary>
|
||||
public int? Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否精选: 0=否, 1=是
|
||||
/// </summary>
|
||||
public int? IsFeatured { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否启用
|
||||
/// </summary>
|
||||
public bool? IsActive { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 内容关键词(模糊查询)
|
||||
/// </summary>
|
||||
public string? Keyword { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户ID
|
||||
/// </summary>
|
||||
public long? UserId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 社区消息详情输出(后台)
|
||||
/// </summary>
|
||||
public class AdminMessageDetailOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 主键ID
|
||||
/// </summary>
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 期刊ID
|
||||
/// </summary>
|
||||
public long JournalId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户ID
|
||||
/// </summary>
|
||||
public long UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户实例期刊ID
|
||||
/// </summary>
|
||||
public long UserJournalId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 期刊任务ID
|
||||
/// </summary>
|
||||
public long JournalTaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户期刊任务回答ID
|
||||
/// </summary>
|
||||
public long JournalTaskAnswerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息内容
|
||||
/// </summary>
|
||||
public string Content { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 配图
|
||||
/// </summary>
|
||||
public string? ImageUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 排序权重
|
||||
/// </summary>
|
||||
public int SortOrder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否启用
|
||||
/// </summary>
|
||||
public bool IsActive { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息类型
|
||||
/// </summary>
|
||||
public string Type { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 点赞数
|
||||
/// </summary>
|
||||
public int LikeCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否精选
|
||||
/// </summary>
|
||||
public int IsFeatured { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 状态: 0=审核中, 1=已通过, 2=已冻结
|
||||
/// </summary>
|
||||
public int Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
public string? CreatedBy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime CreatedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新人
|
||||
/// </summary>
|
||||
public string? UpdatedBy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// </summary>
|
||||
public DateTime? UpdatedAt { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置精选入参
|
||||
/// </summary>
|
||||
public class AdminSetFeaturedInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 是否精选: 0=否, 1=是
|
||||
/// </summary>
|
||||
public int IsFeatured { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置排序权重入参
|
||||
/// </summary>
|
||||
public class AdminSetSortOrderInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 排序权重
|
||||
/// </summary>
|
||||
public int SortOrder { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 冻结/解冻入参
|
||||
/// </summary>
|
||||
public class AdminFreezeInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 状态: 1=解冻(通过), 2=冻结
|
||||
/// </summary>
|
||||
public int Status { get; set; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 微信端 DTO
|
||||
|
||||
/// <summary>
|
||||
/// 微信端社区Feed消息输出
|
||||
/// </summary>
|
||||
public class WxFeedMessageOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 消息ID
|
||||
/// </summary>
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 期刊ID
|
||||
/// </summary>
|
||||
public long JournalId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 作者用户ID
|
||||
/// </summary>
|
||||
public long UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息内容
|
||||
/// </summary>
|
||||
public string Content { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 配图
|
||||
/// </summary>
|
||||
public string? ImageUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息类型
|
||||
/// </summary>
|
||||
public string Type { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 点赞数
|
||||
/// </summary>
|
||||
public int LikeCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否精选
|
||||
/// </summary>
|
||||
public int IsFeatured { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前用户是否已点赞
|
||||
/// </summary>
|
||||
public bool IsLiked { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime CreatedAt { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 微信端社区Feed输出(含游标)
|
||||
/// </summary>
|
||||
public class WxFeedOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 消息列表
|
||||
/// </summary>
|
||||
public List<WxFeedMessageOutput> Messages { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// 下一页游标(为null表示没有更多数据)
|
||||
/// </summary>
|
||||
public long? NextCursor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否还有更多数据
|
||||
/// </summary>
|
||||
public bool HasMore { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 微信端点赞入参
|
||||
/// </summary>
|
||||
public class WxLikeInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 消息ID
|
||||
/// </summary>
|
||||
public long MessageId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 微信端点赞输出
|
||||
/// </summary>
|
||||
public class WxLikeOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 消息ID
|
||||
/// </summary>
|
||||
public long MessageId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前点赞数
|
||||
/// </summary>
|
||||
public int LikeCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否已点赞
|
||||
/// </summary>
|
||||
public bool IsLiked { get; set; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -30,9 +30,13 @@ public class PetSkinBrief
|
||||
{
|
||||
public long SkinId { get; set; }
|
||||
public string SkinName { get; set; } = string.Empty;
|
||||
public string? SkinImage { get; set; }
|
||||
public string? Description { get; set; }
|
||||
public string Rarity { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 皮肤预览图(取当前进化阶段第一张图片)
|
||||
/// </summary>
|
||||
public string? PreviewImage { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -23,7 +23,12 @@ public class PetOutput
|
||||
/// <summary>
|
||||
/// 当前进化形态Id
|
||||
/// </summary>
|
||||
public int CurrentEvolutionId { get; set; }
|
||||
public long CurrentEvolutionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前进化阶段名称
|
||||
/// </summary>
|
||||
public string? EvolutionStageName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前成长值
|
||||
@ -35,6 +40,21 @@ public class PetOutput
|
||||
/// </summary>
|
||||
public int FeedingCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前皮肤Id
|
||||
/// </summary>
|
||||
public long CurrentSkinId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前皮肤名称
|
||||
/// </summary>
|
||||
public string? CurrentSkinName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前形态+当前皮肤 的图片列表(按SortOrder排序)
|
||||
/// </summary>
|
||||
public List<SkinImageOutput> CurrentImages { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// 宠物类型: Normal
|
||||
/// </summary>
|
||||
@ -51,6 +71,27 @@ public class PetOutput
|
||||
public DateTime CreatedAt { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 皮肤图片输出
|
||||
/// </summary>
|
||||
public class SkinImageOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 图片Id
|
||||
/// </summary>
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 图片地址
|
||||
/// </summary>
|
||||
public string ImageUrl { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 图片顺序
|
||||
/// </summary>
|
||||
public int SortOrder { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 喂养宠物输入
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user