2026-06-08 16:57:44 +08:00
|
|
|
namespace QYZH.InteractiveMagazine.Models.Dto;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 操作类型常量
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static class OperationLogActionType
|
|
|
|
|
{
|
2026-07-09 18:01:37 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 新增
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string Create = "Create";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 修改
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string Update = "Update";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 删除
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string Delete = "Delete";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 状态变更
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string StatusChange = "StatusChange";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 分配
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string Assign = "Assign";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 修改密码
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string ChangePassword = "ChangePassword";
|
|
|
|
|
|
2026-06-08 16:57:44 +08:00
|
|
|
/// <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
|
|
|
|
|
{
|
2026-07-09 18:01:37 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 管理员
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string AdminUser = "AdminUser";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 权限菜单
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string AdminMenu = "AdminMenu";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 管理员角色
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string AdminRole = "AdminRole";
|
|
|
|
|
|
2026-06-08 16:57:44 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 用户
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string User = "User";
|
|
|
|
|
|
2026-07-09 18:01:37 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 社区留言
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string CommunityMessage = "CommunityMessage";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 勋章
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string Medal = "Medal";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// AI 基础提示词
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string AiBasePrompt = "AiBasePrompt";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 签到配置
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string CheckInConfig = "CheckInConfig";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Banner
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string Banner = "Banner";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 素材
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string Material = "Material";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 商品
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string Product = "Product";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 宠物
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string Pet = "Pet";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 宠物进化
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string PetEvolution = "PetEvolution";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 宠物皮肤
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string PetSkin = "PetSkin";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 宠物皮肤图片
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string PetSkinImage = "PetSkinImage";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 用户期刊二维码
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string UserJournalQrCode = "UserJournalQrCode";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 期刊
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string Journal = "Journal";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 期刊目录
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string JournalCatalog = "JournalCatalog";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 期刊书页
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string JournalPage = "JournalPage";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 期刊书页任务
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string JournalPageTask = "JournalPageTask";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 期刊任务答案
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string JournalTaskAnswer = "JournalTaskAnswer";
|
|
|
|
|
|
2026-06-08 16:57:44 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 补偿任务
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string CompensationTask = "CompensationTask";
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-09 18:01:37 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 操作日志记录输入
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class OperationLogRecordInput
|
|
|
|
|
{
|
|
|
|
|
/// <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>
|
|
|
|
|
/// 操作详情 JSON
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string? Detail { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// IP地址
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string? IpAddress { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-08 16:57:44 +08:00
|
|
|
/// <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; }
|
|
|
|
|
}
|