refactor: 重构勋章模块,拆分规则独立管理,优化期刊绑定逻辑
1. 新增MedalRule实体类,将勋章条件拆分独立为规则管理 2. 重构Medal相关服务和DTO,支持勋章规则的增删改查 3. 简化Journal绑定逻辑,移除冗余的实例化期刊校验和字段 4. 重命名部分实体类,统一命名前缀 5. 为勋章相关操作添加事务管理,优化异常处理逻辑
This commit is contained in:
@ -13,7 +13,7 @@ public class BindJournalInput
|
||||
/// <summary>
|
||||
/// 实例化期刊Id(扫码解析的具体期刊实例Id,可选)
|
||||
/// </summary>
|
||||
public long? JournalInstanceId { get; set; }
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联类型: Read(已读), Favorite(收藏), Subscribe(订阅),默认 Subscribe
|
||||
@ -41,11 +41,6 @@ public class BindJournalOutput
|
||||
/// </summary>
|
||||
public long JournalId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 实例化期刊Id
|
||||
/// </summary>
|
||||
public long? JournalInstanceId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联类型
|
||||
/// </summary>
|
||||
@ -75,7 +70,7 @@ public class UserJournalQueryInput : PageQueryModel
|
||||
/// <summary>
|
||||
/// 实例化期刊Id
|
||||
/// </summary>
|
||||
public long? JournalInstanceId { get; set; }
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联类型: Read, Favorite, Subscribe
|
||||
|
||||
@ -20,16 +20,6 @@ public class MedalInput
|
||||
/// </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>
|
||||
@ -44,6 +34,11 @@ public class MedalInput
|
||||
/// 书id
|
||||
/// </summary>
|
||||
public long JournalId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 勋章规则列表
|
||||
/// </summary>
|
||||
public List<MedalRuleInput>? Rules { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -71,16 +66,6 @@ public class MedalOutput
|
||||
/// </summary>
|
||||
public string? ImageUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 条件类型
|
||||
/// </summary>
|
||||
public string ConditionType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 条件阈值
|
||||
/// </summary>
|
||||
public int ConditionValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 排序
|
||||
/// </summary>
|
||||
@ -96,6 +81,11 @@ public class MedalOutput
|
||||
/// </summary>
|
||||
public long JournalId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 勋章规则列表
|
||||
/// </summary>
|
||||
public List<MedalRuleOutput>? Rules { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
@ -131,11 +121,148 @@ public class MedalQueryInput : PageQueryModel
|
||||
/// 勋章的类型: Pet, Community
|
||||
/// </summary>
|
||||
public string? Type { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 勋章规则输入
|
||||
/// </summary>
|
||||
public class MedalRuleInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 目标表名(如:JournalPageTask、UserAction等)
|
||||
/// </summary>
|
||||
public string TargetTable { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 条件类型
|
||||
/// 目标字段名(如:TotalScore、LoginDays等)
|
||||
/// </summary>
|
||||
public string? ConditionType { get; set; }
|
||||
public string TargetField { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 比较运算符: >=, >, =, <=, <
|
||||
/// </summary>
|
||||
public string Operator { get; set; } = ">=";
|
||||
|
||||
/// <summary>
|
||||
/// 阈值数量
|
||||
/// </summary>
|
||||
public int ThresholdValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 额外筛选条件(JSON格式)
|
||||
/// </summary>
|
||||
public string? FilterCondition { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间范围类型: All/CurrentMonth/CurrentWeek/Last7Days/Custom
|
||||
/// </summary>
|
||||
public string? DateRangeType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 自定义起始时间
|
||||
/// </summary>
|
||||
public DateTime? DateRangeStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 自定义结束时间
|
||||
/// </summary>
|
||||
public DateTime? DateRangeEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 多规则间的逻辑关系: AND/OR
|
||||
/// </summary>
|
||||
public string LogicOperator { get; set; } = "AND";
|
||||
|
||||
/// <summary>
|
||||
/// 规则执行顺序
|
||||
/// </summary>
|
||||
public int RuleOrder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 规则说明
|
||||
/// </summary>
|
||||
public string? Description { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 勋章规则输出
|
||||
/// </summary>
|
||||
public class MedalRuleOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 规则ID
|
||||
/// </summary>
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联的勋章ID
|
||||
/// </summary>
|
||||
public long MedalId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 目标表名
|
||||
/// </summary>
|
||||
public string TargetTable { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 目标字段名
|
||||
/// </summary>
|
||||
public string TargetField { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 比较运算符
|
||||
/// </summary>
|
||||
public string Operator { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 阈值数量
|
||||
/// </summary>
|
||||
public int ThresholdValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 额外筛选条件
|
||||
/// </summary>
|
||||
public string? FilterCondition { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间范围类型
|
||||
/// </summary>
|
||||
public string? DateRangeType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 自定义起始时间
|
||||
/// </summary>
|
||||
public DateTime? DateRangeStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 自定义结束时间
|
||||
/// </summary>
|
||||
public DateTime? DateRangeEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 多规则间的逻辑关系
|
||||
/// </summary>
|
||||
public string LogicOperator { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 规则执行顺序
|
||||
/// </summary>
|
||||
public int RuleOrder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 规则说明
|
||||
/// </summary>
|
||||
public string? Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime CreatedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// </summary>
|
||||
public DateTime? UpdatedAt { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -163,16 +290,6 @@ public class WxMedalListOutput
|
||||
/// </summary>
|
||||
public string? ImageUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 条件类型
|
||||
/// </summary>
|
||||
public string ConditionType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 条件阈值
|
||||
/// </summary>
|
||||
public int ConditionValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 排序
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user