refactor: 批量新增枚举类型并完成实体、DTO、服务层枚举替换

- 新增30+业务枚举类型覆盖用户、宠物、商城、社区、积分等模块
- 完成实体类、DTO、服务层的字符串枚举替换为强类型枚举
- 修复用户状态枚举名称变更,将Frozen改为Disabled
- 新增批量发布社区消息接口与控制器实现
- 新增操作日志、积分管理、补偿任务相关服务与DTO
This commit is contained in:
glz
2026-06-08 16:57:44 +08:00
parent 698c404b72
commit 78b686f9e5
116 changed files with 4861 additions and 307 deletions

View File

@ -0,0 +1,201 @@
namespace QYZH.InteractiveMagazine.Models.Dto;
/// <summary>
/// 操作类型常量
/// </summary>
public static class OperationLogActionType
{
/// <summary>
/// 手动增加积分
/// </summary>
public const string ManualAddPoints = "ManualAddPoints";
/// <summary>
/// 手动扣除积分
/// </summary>
public const string ManualDeductPoints = "ManualDeductPoints";
/// <summary>
/// 补偿任务手动重试
/// </summary>
public const string CompensationRetry = "CompensationRetry";
/// <summary>
/// 补偿任务标记已解决
/// </summary>
public const string CompensationResolve = "CompensationResolve";
}
/// <summary>
/// 目标类型常量
/// </summary>
public static class OperationLogTargetType
{
/// <summary>
/// 用户
/// </summary>
public const string User = "User";
/// <summary>
/// 补偿任务
/// </summary>
public const string CompensationTask = "CompensationTask";
}
/// <summary>
/// 操作日志分页查询输入
/// </summary>
public class OperationLogQueryInput : PageQueryModel
{
/// <summary>
/// 按操作人用户名筛选(模糊查询)
/// </summary>
public string? OperatorName { get; set; }
/// <summary>
/// 按操作类型筛选
/// </summary>
public string? ActionType { get; set; }
/// <summary>
/// 按目标类型筛选
/// </summary>
public string? TargetType { get; set; }
/// <summary>
/// 按目标记录Id筛选
/// </summary>
public long? TargetId { get; set; }
}
/// <summary>
/// 操作日志输出
/// </summary>
public class OperationLogOutput
{
/// <summary>
/// 记录Id
/// </summary>
public long Id { get; set; }
/// <summary>
/// 操作人Id
/// </summary>
public long OperatorId { get; set; }
/// <summary>
/// 操作人用户名
/// </summary>
public string OperatorName { get; set; } = string.Empty;
/// <summary>
/// 操作类型
/// </summary>
public string ActionType { get; set; } = string.Empty;
/// <summary>
/// 目标类型
/// </summary>
public string TargetType { get; set; } = string.Empty;
/// <summary>
/// 目标记录Id
/// </summary>
public long TargetId { get; set; }
/// <summary>
/// 目标名称
/// </summary>
public string? TargetName { get; set; }
/// <summary>
/// 操作详情
/// </summary>
public string? Detail { get; set; }
/// <summary>
/// IP地址
/// </summary>
public string? IpAddress { get; set; }
/// <summary>
/// 操作时间
/// </summary>
public DateTime CreatedAt { get; set; }
}
/// <summary>
/// 操作日志详情输出
/// </summary>
public class OperationLogDetailOutput
{
/// <summary>
/// 记录Id
/// </summary>
public long Id { get; set; }
/// <summary>
/// 操作类型
/// </summary>
public string ActionType { get; set; } = string.Empty;
/// <summary>
/// 目标类型
/// </summary>
public string TargetType { get; set; } = string.Empty;
/// <summary>
/// 目标记录Id
/// </summary>
public long TargetId { get; set; }
/// <summary>
/// 目标名称
/// </summary>
public string? TargetName { get; set; }
/// <summary>
/// 操作详情
/// </summary>
public string? Detail { get; set; }
/// <summary>
/// IP地址
/// </summary>
public string? IpAddress { get; set; }
/// <summary>
/// 操作时间
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 操作人用户名
/// </summary>
public string OperatorName { get; set; } = string.Empty;
/// <summary>
/// 操作人手机号(管理员表无此字段时可为空)
/// </summary>
public string? OperatorPhone { get; set; }
/// <summary>
/// 操作人角色/类型
/// </summary>
public string? OperatorRole { get; set; }
/// <summary>
/// 被操作人用户名(当 TargetType 为 User 时)
/// </summary>
public string? TargetUserName { get; set; }
/// <summary>
/// 被操作人手机号(当 TargetType 为 User 时)
/// </summary>
public string? TargetUserPhone { get; set; }
/// <summary>
/// 被操作人头像(当 TargetType 为 User 时)
/// </summary>
public string? TargetUserAvatar { get; set; }
}