feat: add medal module and optimize community entities

1. 新增勋章管理全流程功能,包含实体、DTO、服务层、控制器
2. 重构DotFile实体继承基础实体类
3. 删除UserJournal的无用JournalInstanceId字段
4. 重构CommunityMessage实体字段并新增点赞数、精选标记字段
5. 新增社区点赞、评论、模板言论实体并替换旧有实体文件
6. 更新gitignore忽略PROJECT_STRUCTURE.md文件
This commit is contained in:
glz
2026-06-05 15:16:49 +08:00
parent 634c4eccfd
commit f9b79417a0
13 changed files with 1118 additions and 92 deletions

View File

@ -0,0 +1,247 @@
namespace QYZH.InteractiveMagazine.Models.Dto;
/// <summary>
/// 勋章创建/更新输入
/// </summary>
public class MedalInput
{
/// <summary>
/// 勋章名称
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 获得条件描述
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 图片地址
/// </summary>
public string? ImageUrl { get; set; }
/// <summary>
/// 条件类型: EvolutionCount, FeedingCount等
/// </summary>
public string ConditionType { get; set; } = string.Empty;
/// <summary>
/// 条件阈值
/// </summary>
public int ConditionValue { get; set; }
/// <summary>
/// 排序
/// </summary>
public int SortOrder { get; set; }
/// <summary>
/// 勋章的类型: Pet, Community
/// </summary>
public string Type { get; set; } = "Pet";
/// <summary>
/// 书id
/// </summary>
public long JournalId { get; set; }
}
/// <summary>
/// 勋章输出
/// </summary>
public class MedalOutput
{
/// <summary>
/// 主键ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 勋章名称
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 获得条件描述
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 图片地址
/// </summary>
public string? ImageUrl { get; set; }
/// <summary>
/// 条件类型
/// </summary>
public string ConditionType { get; set; } = string.Empty;
/// <summary>
/// 条件阈值
/// </summary>
public int ConditionValue { get; set; }
/// <summary>
/// 排序
/// </summary>
public int SortOrder { get; set; }
/// <summary>
/// 勋章的类型
/// </summary>
public string Type { get; set; } = string.Empty;
/// <summary>
/// 书id
/// </summary>
public long JournalId { 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 MedalQueryInput : PageQueryModel
{
/// <summary>
/// 勋章名称(模糊查询)
/// </summary>
public string? Name { get; set; }
/// <summary>
/// 勋章的类型: Pet, Community
/// </summary>
public string? Type { get; set; }
/// <summary>
/// 条件类型
/// </summary>
public string? ConditionType { get; set; }
}
/// <summary>
/// 微信端勋章列表输出(含拥有状态)
/// </summary>
public class WxMedalListOutput
{
/// <summary>
/// 勋章ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 勋章名称
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 获得条件描述
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 图片地址
/// </summary>
public string? ImageUrl { get; set; }
/// <summary>
/// 条件类型
/// </summary>
public string ConditionType { get; set; } = string.Empty;
/// <summary>
/// 条件阈值
/// </summary>
public int ConditionValue { get; set; }
/// <summary>
/// 排序
/// </summary>
public int SortOrder { get; set; }
/// <summary>
/// 勋章的类型
/// </summary>
public string Type { get; set; } = string.Empty;
/// <summary>
/// 是否已拥有
/// </summary>
public bool IsOwned { get; set; }
/// <summary>
/// 获得时间未拥有则为null
/// </summary>
public DateTime? AwardedAt { get; set; }
}
/// <summary>
/// 微信端用户已拥有勋章输出
/// </summary>
public class WxUserMedalOutput
{
/// <summary>
/// 勋章ID
/// </summary>
public long MedalId { get; set; }
/// <summary>
/// 勋章名称
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 获得条件描述
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 图片地址
/// </summary>
public string? ImageUrl { get; set; }
/// <summary>
/// 勋章的类型
/// </summary>
public string Type { get; set; } = string.Empty;
/// <summary>
/// 获得时间
/// </summary>
public DateTime? AwardedAt { get; set; }
/// <summary>
/// 状态: Awarded, Revoked
/// </summary>
public string Status { get; set; } = string.Empty;
}
/// <summary>
/// 微信端激活勋章输入
/// </summary>
public class WxMedalActivateInput
{
/// <summary>
/// 勋章ID
/// </summary>
public long MedalId { get; set; }
}