refactor: 完善枚举系统与状态类型转换,新增枚举管理接口
1. 为所有枚举添加Description特性用于中文描述 2. 移除实体类中冗余的状态字段注释与定义 3. 将所有枚举状态参数改为int类型转换,统一数据交互格式 4. 新增系统管理枚举查询接口与实现,支持获取所有枚举元数据 5. 调整宠物服务模板状态更新接口参数类型
This commit is contained in:
@ -75,7 +75,7 @@ public interface IPetService : IBaseService<UserPet>
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 更新模板状态(启用/禁用)
|
/// 更新模板状态(启用/禁用)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Task UpdateTemplateStatusAsync(long id, string status);
|
Task UpdateTemplateStatusAsync(long id, int status);
|
||||||
|
|
||||||
// ==================== 后台管理:进化链 ====================
|
// ==================== 后台管理:进化链 ====================
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,15 @@
|
|||||||
|
using QYZH.InteractiveMagazine.Models.Dto.SystemManagement;
|
||||||
|
|
||||||
|
namespace QYZH.InteractiveMagazine.IService;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 系统管理服务接口
|
||||||
|
/// </summary>
|
||||||
|
public interface ISystemManagementService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 获取所有枚举信息
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>枚举信息列表</returns>
|
||||||
|
Task<List<EnumInfoOutput>> GetAllEnumsAsync();
|
||||||
|
}
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
|
namespace QYZH.InteractiveMagazine.Models.Dto.SystemManagement;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 枚举信息输出
|
||||||
|
/// </summary>
|
||||||
|
public class EnumInfoOutput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 枚举名称
|
||||||
|
/// </summary>
|
||||||
|
public string EnumName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 枚举项列表
|
||||||
|
/// </summary>
|
||||||
|
public List<EnumItemDto> Items { get; set; } = new();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 枚举项
|
||||||
|
/// </summary>
|
||||||
|
public class EnumItemDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 枚举项名称
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 枚举项值
|
||||||
|
/// </summary>
|
||||||
|
public int Value { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 描述
|
||||||
|
/// </summary>
|
||||||
|
public string? Description { get; set; }
|
||||||
|
}
|
||||||
@ -42,12 +42,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// Nullable:False
|
/// Nullable:False
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public CheckInConfigTypeEnum Type {get;set;}
|
public CheckInConfigTypeEnum Type {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Active, Inactive
|
|
||||||
/// Default:Active
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public CheckInConfigStatusEnum Status {get;set;}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,12 +41,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// Nullable:False
|
/// Nullable:False
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public CommunityMessageCommentTypeEnum Type {get;set;}
|
public CommunityMessageCommentTypeEnum Type {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Published, Hidden
|
|
||||||
/// Default:Published
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public CommunityMessageCommentStatusEnum Status {get;set;}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,12 +35,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// Nullable:False
|
/// Nullable:False
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public CommunityTemplateSentenceTypeEnum Type {get;set;}
|
public CommunityTemplateSentenceTypeEnum Type {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Active, Inactive
|
|
||||||
/// Default:Active
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public CommunityTemplateSentenceStatusEnum Status {get;set;}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -78,12 +78,6 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int MaxRetries { get; set; }
|
public int MaxRetries { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:处理状态 Pending / Processing / Success / Failed / Cancelled
|
|
||||||
/// Default:Pending
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public CompensationTaskStatusEnum Status { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:最后处理时间
|
/// Desc:最后处理时间
|
||||||
|
|||||||
@ -94,12 +94,6 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int TotalUse {get;set;}
|
public int TotalUse {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:Pending / Processing / Success / Failed / Cancelled
|
|
||||||
/// Default:Pending
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public DotFileStatusEnum Status {get;set;}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:
|
/// Desc:
|
||||||
|
|||||||
@ -59,12 +59,6 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int Revision {get;set;}
|
public int Revision {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:Pending / Processing / Success / Failed / Cancelled
|
|
||||||
/// Default:Pending
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public DotFileDetailStatusEnum Status {get;set;}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:
|
/// Desc:
|
||||||
|
|||||||
@ -60,11 +60,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int Quantity { get; set; }
|
public int Quantity { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Success, Refunded
|
|
||||||
/// Default:Success
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public ExchangeRecordStatusEnum Status { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,12 +82,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// Nullable:False
|
/// Nullable:False
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public JournalTypeEnum Type {get;set;}
|
public JournalTypeEnum Type {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Draft, Published, Archived
|
|
||||||
/// Default:Draft
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public JournalStatusEnum Status {get;set;}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,13 +51,6 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int PageNum {get;set;}
|
public int PageNum {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:校验状态(0-未校验 1校验成功 -1校验失败)
|
|
||||||
/// Default:
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public int Status {get;set;}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:页图片
|
/// Desc:页图片
|
||||||
/// Default:
|
/// Default:
|
||||||
|
|||||||
@ -80,12 +80,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// Nullable:False
|
/// Nullable:False
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public PetEvolutionTypeEnum Type { get; set; }
|
public PetEvolutionTypeEnum Type { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Active, Inactive
|
|
||||||
/// Default:Active
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public PetEvolutionStatusEnum Status { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,11 +63,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public PetFeedingRecordTypeEnum Type {get;set;}
|
public PetFeedingRecordTypeEnum Type {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态
|
|
||||||
/// Default:Success
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public PetFeedingRecordStatusEnum Status {get;set;}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,11 +53,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public PetTemplateTypeEnum Type { get; set; }
|
public PetTemplateTypeEnum Type { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Active, Inactive
|
|
||||||
/// Default:Active
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public PetTemplateStatusEnum Status { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,11 +63,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public PointsFlowTypeEnum Type {get;set;}
|
public PointsFlowTypeEnum Type {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Success, Failed, Pending
|
|
||||||
/// Default:Success
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public PointsRecordStatusEnum Status {get;set;}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,11 +55,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public UserBagTypeEnum Type {get;set;}
|
public UserBagTypeEnum Type {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Available, Expired
|
|
||||||
/// Default:Available
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public UserBagStatusEnum Status {get;set;}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,12 +38,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
[SugarColumn(ColumnName = "Type")]
|
[SugarColumn(ColumnName = "Type")]
|
||||||
public UserJournalTypeEnum Type { get; set; }
|
public UserJournalTypeEnum Type { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Active(正常), Inactive(失效)
|
|
||||||
/// Default:Active
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
[SugarColumn(ColumnName = "Status")]
|
|
||||||
public UserJournalStatusEnum Status { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,12 +40,5 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public UserMedalTypeEnum Type {get;set;}
|
public UserMedalTypeEnum Type {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Awarded, Revoked
|
|
||||||
/// Default:Awarded
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public UserMedalStatusEnum Status {get;set;}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -70,13 +70,6 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public UserPetTypeEnum Type { get; set; }
|
public UserPetTypeEnum Type { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Inactive, Active, Sleeping
|
|
||||||
/// Default:Inactive
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public UserPetStatusEnum Status { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 理解力
|
/// 理解力
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -41,13 +41,6 @@ namespace QYZH.InteractiveMagazine.Models.Entity
|
|||||||
/// Nullable:False
|
/// Nullable:False
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public UsersTypeEnum Type { get; set; }
|
public UsersTypeEnum Type { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:状态: Active, Disabled
|
|
||||||
/// Default:Active
|
|
||||||
/// Nullable:False
|
|
||||||
/// </summary>
|
|
||||||
public UserStatusEnum Status { get; set; }
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:微信OpenId
|
/// Desc:微信OpenId
|
||||||
/// Default:
|
/// Default:
|
||||||
|
|||||||
22
QYZH.InteractiveMagazine.Models/Enum/AdminUserStatusEnum.cs
Normal file
22
QYZH.InteractiveMagazine.Models/Enum/AdminUserStatusEnum.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
|
namespace QYZH.InteractiveMagazine.Models.Enum
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 管理员状态枚举
|
||||||
|
/// </summary>
|
||||||
|
public enum AdminUserStatusEnum
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 未激活
|
||||||
|
/// </summary>
|
||||||
|
[Description("未激活")]
|
||||||
|
Inactive = 0,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 激活
|
||||||
|
/// </summary>
|
||||||
|
[Description("激活")]
|
||||||
|
Active = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,13 +10,16 @@ public enum AdminUserTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 编辑员
|
/// 编辑员
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("编辑员")]
|
||||||
Editor = 2,
|
Editor = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 超级管理员
|
/// 超级管理员
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("超级管理员")]
|
||||||
SuperAdmin = 0,
|
SuperAdmin = 0,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 超级管理员
|
/// 管理员
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("管理员")]
|
||||||
Admin = 1
|
Admin = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,10 +10,12 @@ public enum CheckInConfigStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 未激活
|
/// 未激活
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("未激活")]
|
||||||
Inactive = 0,
|
Inactive = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 激活
|
/// 激活
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("激活")]
|
||||||
Active = 1
|
Active = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum CheckInConfigTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 每日签到
|
/// 每日签到
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("每日签到")]
|
||||||
Daily = 1,
|
Daily = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 连续签到
|
/// 连续签到
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("连续签到")]
|
||||||
Streak = 2
|
Streak = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,5 +10,11 @@ public enum CheckInRecordStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 成功
|
/// 成功
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Success = 1
|
[Description("成功")]
|
||||||
|
Success = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// 失败
|
||||||
|
/// </summary>
|
||||||
|
[Description("失败")]
|
||||||
|
Fail = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum CheckInRecordTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 正常签到
|
/// 正常签到
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("正常签到")]
|
||||||
Normal = 1,
|
Normal = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 补签
|
/// 补签
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("补签")]
|
||||||
MakeUp = 2
|
MakeUp = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,10 +10,12 @@ public enum CommunityMessageCommentStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已隐藏
|
/// 已隐藏
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已隐藏")]
|
||||||
Hidden = 0,
|
Hidden = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已发布
|
/// 已发布
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已发布")]
|
||||||
Published = 1
|
Published = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,5 +10,6 @@ public enum CommunityMessageCommentTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 模板评论
|
/// 模板评论
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("模板评论")]
|
||||||
TemplateComment = 1
|
TemplateComment = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,5 +10,6 @@ public enum CommunityMessageLikeTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 点赞
|
/// 点赞
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("点赞")]
|
||||||
Like = 1
|
Like = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,10 +10,12 @@ public enum CommunityTemplateSentenceStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 未激活
|
/// 未激活
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("未激活")]
|
||||||
Inactive = 0,
|
Inactive = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 激活
|
/// 激活
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("激活")]
|
||||||
Active = 1
|
Active = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,13 +10,16 @@ public enum CommunityTemplateSentenceTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 正面
|
/// 正面
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("正面")]
|
||||||
Positive = 1,
|
Positive = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 中性
|
/// 中性
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("中性")]
|
||||||
Neutral = 2,
|
Neutral = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 负面
|
/// 负面
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("负面")]
|
||||||
Negative = 3
|
Negative = 3
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,25 +10,30 @@ public enum CompensationTaskStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 待处理
|
/// 待处理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("待处理")]
|
||||||
Pending = 0,
|
Pending = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 处理中
|
/// 处理中
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("处理中")]
|
||||||
Processing = 1,
|
Processing = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 成功
|
/// 成功
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("成功")]
|
||||||
Success = 2,
|
Success = 2,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 失败
|
/// 失败
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("失败")]
|
||||||
Failed = 3,
|
Failed = 3,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已取消
|
/// 已取消
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已取消")]
|
||||||
Cancelled = 4
|
Cancelled = 4
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,17 +10,21 @@ public enum CompensationTaskTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 宠物喂养补偿
|
/// 宠物喂养补偿
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("宠物喂养补偿")]
|
||||||
PetFeeding = 1,
|
PetFeeding = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户积分补偿
|
/// 用户积分补偿
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("用户积分补偿")]
|
||||||
UserPoints = 2,
|
UserPoints = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户成长值补偿
|
/// 用户成长值补偿
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("用户成长值补偿")]
|
||||||
UserGrowth = 3,
|
UserGrowth = 3,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 发送通知补偿
|
/// 发送通知补偿
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("发送通知补偿")]
|
||||||
SendNotification = 4
|
SendNotification = 4
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,25 +10,30 @@ public enum DotFileDetailStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 待处理
|
/// 待处理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("待处理")]
|
||||||
Pending = 0,
|
Pending = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 处理中
|
/// 处理中
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("处理中")]
|
||||||
Processing = 1,
|
Processing = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 成功
|
/// 成功
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("成功")]
|
||||||
Success = 2,
|
Success = 2,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 失败
|
/// 失败
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("失败")]
|
||||||
Failed = 3,
|
Failed = 3,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已取消
|
/// 已取消
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已取消")]
|
||||||
Cancelled = 4
|
Cancelled = 4
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,25 +10,30 @@ public enum DotFileStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 待处理
|
/// 待处理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("待处理")]
|
||||||
Pending = 0,
|
Pending = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 处理中
|
/// 处理中
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("处理中")]
|
||||||
Processing = 1,
|
Processing = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 成功
|
/// 成功
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("成功")]
|
||||||
Success = 2,
|
Success = 2,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 失败
|
/// 失败
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("失败")]
|
||||||
Failed = 3,
|
Failed = 3,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已取消
|
/// 已取消
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已取消")]
|
||||||
Cancelled = 4
|
Cancelled = 4
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,10 +10,12 @@ public enum ExchangeRecordStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 成功
|
/// 成功
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("成功")]
|
||||||
Success = 1,
|
Success = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已退还
|
/// 已退还
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已退还")]
|
||||||
Refunded = 2
|
Refunded = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum JournalCatalogTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 单元
|
/// 单元
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("单元")]
|
||||||
Unit = 0,
|
Unit = 0,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 页面
|
/// 页面
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("页面")]
|
||||||
Page = 1
|
Page = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,15 +10,18 @@ public enum JournalPageStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 验证失败
|
/// 验证失败
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("验证失败")]
|
||||||
Failed = -1,
|
Failed = -1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 未验证
|
/// 未验证
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("未验证")]
|
||||||
NotVerified = 0,
|
NotVerified = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 验证成功
|
/// 验证成功
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("验证成功")]
|
||||||
Success = 1
|
Success = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,17 +10,21 @@ public enum JournalPageTaskTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 单选题
|
/// 单选题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("单选题")]
|
||||||
SingleChoice = 1,
|
SingleChoice = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 多选题
|
/// 多选题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("多选题")]
|
||||||
MultipleChoice = 2,
|
MultipleChoice = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 填空题
|
/// 填空题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("填空题")]
|
||||||
FillInBlank = 3,
|
FillInBlank = 3,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 问答题
|
/// 问答题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("问答题")]
|
||||||
QuestionAnswer = 4
|
QuestionAnswer = 4
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,15 +10,18 @@ public enum JournalStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 草稿
|
/// 草稿
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("草稿")]
|
||||||
Draft = 0,
|
Draft = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已发布
|
/// 已发布
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已发布")]
|
||||||
Published = 1,
|
Published = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已归档
|
/// 已归档
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已归档")]
|
||||||
Archived = 2
|
Archived = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum JournalTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 普通
|
/// 普通
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("普通")]
|
||||||
Normal = 1,
|
Normal = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 特刊
|
/// 特刊
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("特刊")]
|
||||||
Special = 2
|
Special = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum MedalTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 宠物勋章
|
/// 宠物勋章
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("宠物勋章")]
|
||||||
Pet = 1,
|
Pet = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 社区勋章
|
/// 社区勋章
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("社区勋章")]
|
||||||
Community = 2
|
Community = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,15 +10,18 @@ public enum MessageStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 审核中
|
/// 审核中
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("审核中")]
|
||||||
PendingReview = 0,
|
PendingReview = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已通过
|
/// 已通过
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已通过")]
|
||||||
Approved = 1,
|
Approved = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已冻结
|
/// 已冻结
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已冻结")]
|
||||||
Frozen = 2
|
Frozen = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,15 +10,18 @@ public enum MessageTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 文章
|
/// 文章
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("文章")]
|
||||||
Article = 1,
|
Article = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 引用
|
/// 引用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("引用")]
|
||||||
Quote = 2,
|
Quote = 2,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 公告
|
/// 公告
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("公告")]
|
||||||
Announcement = 3
|
Announcement = 3
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,10 +10,12 @@ public enum PetEvolutionStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 未激活
|
/// 未激活
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("未激活")]
|
||||||
Inactive = 0,
|
Inactive = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 激活
|
/// 激活
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("激活")]
|
||||||
Active = 1
|
Active = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum PetEvolutionTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 普通进化
|
/// 普通进化
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("普通进化")]
|
||||||
Normal = 1,
|
Normal = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 特殊进化
|
/// 特殊进化
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("特殊进化")]
|
||||||
Special = 2
|
Special = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,5 +10,11 @@ public enum PetFeedingRecordStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 成功
|
/// 成功
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Success = 1
|
[Description("成功")]
|
||||||
|
Success = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// 失败
|
||||||
|
/// </summary>
|
||||||
|
[Description("失败")]
|
||||||
|
Fail = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum PetFeedingRecordTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 普通喂养
|
/// 普通喂养
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("普通喂养")]
|
||||||
Normal = 1,
|
Normal = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 特殊喂养
|
/// 特殊喂养
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("特殊喂养")]
|
||||||
Special = 2
|
Special = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum PetSkinImageTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 普通图片
|
/// 普通图片
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("普通图片")]
|
||||||
Normal = 1,
|
Normal = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 特殊图片
|
/// 特殊图片
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("特殊图片")]
|
||||||
Special = 2
|
Special = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,13 +10,16 @@ public enum PetSkinTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 普通皮肤
|
/// 普通皮肤
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("普通皮肤")]
|
||||||
Normal = 1,
|
Normal = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 限定皮肤
|
/// 限定皮肤
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("限定皮肤")]
|
||||||
Limited = 2,
|
Limited = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 活动皮肤
|
/// 活动皮肤
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("活动皮肤")]
|
||||||
Event = 3
|
Event = 3
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,10 +10,12 @@ public enum PetTemplateStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 未激活
|
/// 未激活
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("未激活")]
|
||||||
Inactive = 0,
|
Inactive = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 激活
|
/// 激活
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("激活")]
|
||||||
Active = 1
|
Active = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,13 +10,16 @@ public enum PetTemplateTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 普通
|
/// 普通
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("普通")]
|
||||||
Normal = 1,
|
Normal = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 特殊
|
/// 特殊
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("特殊")]
|
||||||
Special = 2,
|
Special = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 限定
|
/// 限定
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("限定")]
|
||||||
Limited = 3
|
Limited = 3
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,45 +10,54 @@ public enum PointsChangeTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 签到奖励
|
/// 签到奖励
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("签到奖励")]
|
||||||
SignIn,
|
SignIn,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 补签奖励
|
/// 补签奖励
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("补签奖励")]
|
||||||
MakeUpSign,
|
MakeUpSign,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 商城兑换扣除
|
/// 商城兑换扣除
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("商城兑换扣除")]
|
||||||
Exchange,
|
Exchange,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 宠物喂养消耗
|
/// 宠物喂养消耗
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("宠物喂养消耗")]
|
||||||
FeedPet,
|
FeedPet,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 任务奖励(杂志任务等)
|
/// 任务奖励(杂志任务等)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("任务奖励")]
|
||||||
TaskReward,
|
TaskReward,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 注册奖励
|
/// 注册奖励
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("注册奖励")]
|
||||||
RegisterBonus,
|
RegisterBonus,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 勋章奖励
|
/// 勋章奖励
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("勋章奖励")]
|
||||||
MedalBonus,
|
MedalBonus,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统补偿
|
/// 系统补偿
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("系统补偿")]
|
||||||
SystemCompensation,
|
SystemCompensation,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 后台手动调整
|
/// 后台手动调整
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("后台手动调整")]
|
||||||
ManualAdjust
|
ManualAdjust
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,10 +10,12 @@ public enum PointsFlowTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 收入
|
/// 收入
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("收入")]
|
||||||
Income,
|
Income,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 支出
|
/// 支出
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("支出")]
|
||||||
Expense
|
Expense
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,15 +10,18 @@ public enum PointsRecordStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 待处理
|
/// 待处理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("待处理")]
|
||||||
Pending = 0,
|
Pending = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 成功
|
/// 成功
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("成功")]
|
||||||
Success = 1,
|
Success = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 失败
|
/// 失败
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("失败")]
|
||||||
Failed = 2
|
Failed = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum ProductTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 补签卡
|
/// 补签卡
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("补签卡")]
|
||||||
MakeUpCard = 1,
|
MakeUpCard = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 宠物背景
|
/// 宠物背景
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("宠物背景")]
|
||||||
PetBg = 2
|
PetBg = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,10 +10,12 @@ public enum UserBagStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已过期
|
/// 已过期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已过期")]
|
||||||
Expired = 0,
|
Expired = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 可用
|
/// 可用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("可用")]
|
||||||
Available = 1
|
Available = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum UserBagTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 补签卡
|
/// 补签卡
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("补签卡")]
|
||||||
MakeUpCard = 1,
|
MakeUpCard = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 宠物背景
|
/// 宠物背景
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("宠物背景")]
|
||||||
PetBg = 2
|
PetBg = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,10 +10,12 @@ public enum UserJournalStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 失效
|
/// 失效
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("失效")]
|
||||||
Inactive = 0,
|
Inactive = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 正常
|
/// 正常
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("正常")]
|
||||||
Active = 1
|
Active = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,13 +10,16 @@ public enum UserJournalTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已读
|
/// 已读
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已读")]
|
||||||
Read = 1,
|
Read = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 收藏
|
/// 收藏
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("收藏")]
|
||||||
Favorite = 2,
|
Favorite = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 订阅
|
/// 订阅
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("订阅")]
|
||||||
Subscribe = 3
|
Subscribe = 3
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,10 +10,12 @@ public enum UserMedalStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已撤销
|
/// 已撤销
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已撤销")]
|
||||||
Revoked = 0,
|
Revoked = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已授予
|
/// 已授予
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("已授予")]
|
||||||
Awarded = 1
|
Awarded = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum UserMedalTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统授予
|
/// 系统授予
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("系统授予")]
|
||||||
System = 1,
|
System = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 活动奖励
|
/// 活动奖励
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("活动奖励")]
|
||||||
Activity = 2
|
Activity = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,15 +10,18 @@ public enum UserPetStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 未激活
|
/// 未激活
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("未激活")]
|
||||||
Inactive = 0,
|
Inactive = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 激活
|
/// 激活
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("激活")]
|
||||||
Active = 1,
|
Active = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 休眠中
|
/// 休眠中
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("休眠中")]
|
||||||
Sleeping = 2
|
Sleeping = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,5 +10,6 @@ public enum UserPetTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 普通
|
/// 普通
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("普通")]
|
||||||
Normal = 1
|
Normal = 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,10 +10,12 @@ public enum UserStatusEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 启用
|
/// 启用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("启用")]
|
||||||
Active = 1,
|
Active = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 禁用
|
/// 禁用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("禁用")]
|
||||||
Disabled = 2
|
Disabled = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Models.Enum;
|
namespace QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -8,9 +10,11 @@ public enum UsersTypeEnum
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 普通用户
|
/// 普通用户
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("普通用户")]
|
||||||
Normal = 1,
|
Normal = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// VIP用户
|
/// VIP用户
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Description("VIP用户")]
|
||||||
VIP = 2
|
VIP = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@ -117,7 +117,7 @@ public class CheckInService(
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 7. 如果用户有活跃宠物,调用 PetService 喂养(含进化检查),独立事务
|
// 7. 如果用户有活跃宠物,调用 PetService 喂养(含进化检查),独立事务
|
||||||
if (pet != null && pet.Status == UserPetStatusEnum.Active && growthReward > 0)
|
if (pet != null && pet.Status == (int)UserPetStatusEnum.Active && growthReward > 0)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -315,7 +315,7 @@ public class CheckInService(
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 如果有活跃宠物,喂养成长值
|
// 如果有活跃宠物,喂养成长值
|
||||||
if (pet != null && pet.Status == UserPetStatusEnum.Active && growthReward > 0)
|
if (pet != null && pet.Status == (int)UserPetStatusEnum.Active && growthReward > 0)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -391,7 +391,7 @@ public class CheckInService(
|
|||||||
{
|
{
|
||||||
// 查询签到配置(按 DayNumber 升序)
|
// 查询签到配置(按 DayNumber 升序)
|
||||||
var configs = await checkInRecordRepository.Context.Queryable<CheckInConfig>()
|
var configs = await checkInRecordRepository.Context.Queryable<CheckInConfig>()
|
||||||
.Where(c => c.Status == CheckInConfigStatusEnum.Active && !c.IsDeleted)
|
.Where(c => c.Status == (int)CheckInConfigStatusEnum.Active && !c.IsDeleted)
|
||||||
.OrderBy(c => c.DayNumber)
|
.OrderBy(c => c.DayNumber)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
|
|||||||
@ -37,7 +37,7 @@ public class CompensationManageService(
|
|||||||
.LeftJoin<Users>((t, u) => t.UserId == u.Id)
|
.LeftJoin<Users>((t, u) => t.UserId == u.Id)
|
||||||
.WhereIF(input.UserId.HasValue, (t, u) => t.UserId == input.UserId.Value)
|
.WhereIF(input.UserId.HasValue, (t, u) => t.UserId == input.UserId.Value)
|
||||||
.WhereIF(input.TaskType.HasValue, (t, u) => t.TaskType == (int)input.TaskType.Value)
|
.WhereIF(input.TaskType.HasValue, (t, u) => t.TaskType == (int)input.TaskType.Value)
|
||||||
.WhereIF(input.Status.HasValue, (t, u) => t.Status == input.Status.Value)
|
.WhereIF(input.Status.HasValue, (t, u) => t.Status == (int)input.Status)
|
||||||
.WhereIF(!string.IsNullOrWhiteSpace(input.BusinessSource), (t, u) => t.BusinessSource == input.BusinessSource)
|
.WhereIF(!string.IsNullOrWhiteSpace(input.BusinessSource), (t, u) => t.BusinessSource == input.BusinessSource)
|
||||||
.OrderByDescending((t, u) => t.CreatedAt)
|
.OrderByDescending((t, u) => t.CreatedAt)
|
||||||
.Select((t, u) => new CompensationManageOutput
|
.Select((t, u) => new CompensationManageOutput
|
||||||
@ -53,7 +53,7 @@ public class CompensationManageService(
|
|||||||
ErrorSource = t.ErrorSource,
|
ErrorSource = t.ErrorSource,
|
||||||
RetryCount = t.RetryCount,
|
RetryCount = t.RetryCount,
|
||||||
MaxRetries = t.MaxRetries,
|
MaxRetries = t.MaxRetries,
|
||||||
Status = t.Status,
|
Status = (CompensationTaskStatusEnum)t.Status,
|
||||||
ProcessedAt = t.ProcessedAt,
|
ProcessedAt = t.ProcessedAt,
|
||||||
ScheduledAt = t.ScheduledAt,
|
ScheduledAt = t.ScheduledAt,
|
||||||
ResultMessage = t.ResultMessage,
|
ResultMessage = t.ResultMessage,
|
||||||
@ -75,12 +75,12 @@ public class CompensationManageService(
|
|||||||
if (task == null)
|
if (task == null)
|
||||||
throw new BusinessException("补偿任务不存在", 404);
|
throw new BusinessException("补偿任务不存在", 404);
|
||||||
|
|
||||||
if (task.Status != CompensationTaskStatusEnum.Failed && task.Status != CompensationTaskStatusEnum.Cancelled)
|
if (task.Status != (int)CompensationTaskStatusEnum.Failed && task.Status != (int)CompensationTaskStatusEnum.Cancelled)
|
||||||
throw new BusinessException($"只有失败或已取消的任务才能重试,当前状态: {task.Status}", 400);
|
throw new BusinessException($"只有失败或已取消的任务才能重试,当前状态: {task.Status}", 400);
|
||||||
|
|
||||||
// 重置任务状态为 Pending,清零重试次数,设置立即执行
|
// 重置任务状态为 Pending,清零重试次数,设置立即执行
|
||||||
await compensationTaskRepository.Context.Updateable<CompensationTask>()
|
await compensationTaskRepository.Context.Updateable<CompensationTask>()
|
||||||
.SetColumns(t => t.Status == CompensationTaskStatusEnum.Pending)
|
.SetColumns(t => t.Status == (int)CompensationTaskStatusEnum.Pending)
|
||||||
.SetColumns(t => t.RetryCount == 0)
|
.SetColumns(t => t.RetryCount == 0)
|
||||||
.SetColumns(t => t.ScheduledAt == DateTime.Now)
|
.SetColumns(t => t.ScheduledAt == DateTime.Now)
|
||||||
.SetColumns(t => t.ResultMessage == $"管理员手动重试: {input.Reason}")
|
.SetColumns(t => t.ResultMessage == $"管理员手动重试: {input.Reason}")
|
||||||
@ -118,12 +118,12 @@ public class CompensationManageService(
|
|||||||
if (task == null)
|
if (task == null)
|
||||||
throw new BusinessException("补偿任务不存在", 404);
|
throw new BusinessException("补偿任务不存在", 404);
|
||||||
|
|
||||||
if (task.Status == CompensationTaskStatusEnum.Success)
|
if (task.Status == (int)CompensationTaskStatusEnum.Success)
|
||||||
throw new BusinessException("该任务已经是成功状态,无需标记", 400);
|
throw new BusinessException("该任务已经是成功状态,无需标记", 400);
|
||||||
|
|
||||||
// 标记为 Success
|
// 标记为 Success
|
||||||
await compensationTaskRepository.Context.Updateable<CompensationTask>()
|
await compensationTaskRepository.Context.Updateable<CompensationTask>()
|
||||||
.SetColumns(t => t.Status == CompensationTaskStatusEnum.Success)
|
.SetColumns(t => t.Status == (int)CompensationTaskStatusEnum.Success)
|
||||||
.SetColumns(t => t.ResultMessage == $"管理员手动标记已解决: {input.ResolveNote}")
|
.SetColumns(t => t.ResultMessage == $"管理员手动标记已解决: {input.ResolveNote}")
|
||||||
.SetColumns(t => t.ProcessedAt == DateTime.Now)
|
.SetColumns(t => t.ProcessedAt == DateTime.Now)
|
||||||
.SetColumns(t => t.UpdatedBy == operatorName)
|
.SetColumns(t => t.UpdatedBy == operatorName)
|
||||||
@ -172,7 +172,7 @@ public class CompensationManageService(
|
|||||||
ErrorSource = t.ErrorSource,
|
ErrorSource = t.ErrorSource,
|
||||||
RetryCount = t.RetryCount,
|
RetryCount = t.RetryCount,
|
||||||
MaxRetries = t.MaxRetries,
|
MaxRetries = t.MaxRetries,
|
||||||
Status = t.Status,
|
Status = (CompensationTaskStatusEnum)t.Status,
|
||||||
ProcessedAt = t.ProcessedAt,
|
ProcessedAt = t.ProcessedAt,
|
||||||
ScheduledAt = t.ScheduledAt,
|
ScheduledAt = t.ScheduledAt,
|
||||||
ResultMessage = t.ResultMessage,
|
ResultMessage = t.ResultMessage,
|
||||||
|
|||||||
@ -38,7 +38,7 @@ public class CompensationTaskService(
|
|||||||
ErrorSource = input.ErrorSource,
|
ErrorSource = input.ErrorSource,
|
||||||
RetryCount = 0,
|
RetryCount = 0,
|
||||||
MaxRetries = input.MaxRetries > 0 ? input.MaxRetries : 3,
|
MaxRetries = input.MaxRetries > 0 ? input.MaxRetries : 3,
|
||||||
Status = CompensationTaskStatusEnum.Pending,
|
Status = (int)CompensationTaskStatusEnum.Pending,
|
||||||
ScheduledAt = DateTime.Now,
|
ScheduledAt = DateTime.Now,
|
||||||
IsDeleted = false,
|
IsDeleted = false,
|
||||||
CreatedBy = "System",
|
CreatedBy = "System",
|
||||||
@ -62,7 +62,7 @@ public class CompensationTaskService(
|
|||||||
var now = DateTime.Now;
|
var now = DateTime.Now;
|
||||||
|
|
||||||
var tasks = await taskRepository.Queryable()
|
var tasks = await taskRepository.Queryable()
|
||||||
.Where(t => (t.Status == CompensationTaskStatusEnum.Pending || t.Status == CompensationTaskStatusEnum.Processing)
|
.Where(t => (t.Status == (int)CompensationTaskStatusEnum.Pending || t.Status == (int)CompensationTaskStatusEnum.Processing)
|
||||||
&& !t.IsDeleted
|
&& !t.IsDeleted
|
||||||
&& (t.ScheduledAt == null || t.ScheduledAt <= now))
|
&& (t.ScheduledAt == null || t.ScheduledAt <= now))
|
||||||
.OrderBy(t => t.CreatedAt)
|
.OrderBy(t => t.CreatedAt)
|
||||||
@ -79,7 +79,7 @@ public class CompensationTaskService(
|
|||||||
ErrorSource = t.ErrorSource,
|
ErrorSource = t.ErrorSource,
|
||||||
RetryCount = t.RetryCount,
|
RetryCount = t.RetryCount,
|
||||||
MaxRetries = t.MaxRetries,
|
MaxRetries = t.MaxRetries,
|
||||||
Status = t.Status,
|
Status = (CompensationTaskStatusEnum)t.Status,
|
||||||
ProcessedAt = t.ProcessedAt,
|
ProcessedAt = t.ProcessedAt,
|
||||||
ScheduledAt = t.ScheduledAt,
|
ScheduledAt = t.ScheduledAt,
|
||||||
ResultMessage = t.ResultMessage,
|
ResultMessage = t.ResultMessage,
|
||||||
@ -99,10 +99,10 @@ public class CompensationTaskService(
|
|||||||
.Where(t => !t.IsDeleted);
|
.Where(t => !t.IsDeleted);
|
||||||
|
|
||||||
if (input.Status.HasValue)
|
if (input.Status.HasValue)
|
||||||
query = query.Where(t => t.Status == input.Status.Value);
|
query = query.Where(t => t.Status == (int)input.Status);
|
||||||
|
|
||||||
if (input.TaskType.HasValue)
|
if (input.TaskType.HasValue)
|
||||||
query = query.Where(t => t.TaskType == (int)input.TaskType.Value);
|
query = query.Where(t => t.TaskType == (int)input.TaskType);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(input.BusinessSource))
|
if (!string.IsNullOrEmpty(input.BusinessSource))
|
||||||
query = query.Where(t => t.BusinessSource == input.BusinessSource);
|
query = query.Where(t => t.BusinessSource == input.BusinessSource);
|
||||||
@ -122,7 +122,7 @@ public class CompensationTaskService(
|
|||||||
ErrorSource = t.ErrorSource,
|
ErrorSource = t.ErrorSource,
|
||||||
RetryCount = t.RetryCount,
|
RetryCount = t.RetryCount,
|
||||||
MaxRetries = t.MaxRetries,
|
MaxRetries = t.MaxRetries,
|
||||||
Status = t.Status,
|
Status = (CompensationTaskStatusEnum)t.Status,
|
||||||
ProcessedAt = t.ProcessedAt,
|
ProcessedAt = t.ProcessedAt,
|
||||||
ScheduledAt = t.ScheduledAt,
|
ScheduledAt = t.ScheduledAt,
|
||||||
ResultMessage = t.ResultMessage,
|
ResultMessage = t.ResultMessage,
|
||||||
@ -139,7 +139,7 @@ public class CompensationTaskService(
|
|||||||
public async Task UpdateTaskStatusAsync(long taskId, UpdateCompensationStatusInput input)
|
public async Task UpdateTaskStatusAsync(long taskId, UpdateCompensationStatusInput input)
|
||||||
{
|
{
|
||||||
var update = taskRepository.Context.Updateable<CompensationTask>()
|
var update = taskRepository.Context.Updateable<CompensationTask>()
|
||||||
.SetColumns(t => t.Status == input.Status)
|
.SetColumns(t => t.Status == (int)input.Status)
|
||||||
.SetColumns(t => t.ResultMessage == input.ResultMessage)
|
.SetColumns(t => t.ResultMessage == input.ResultMessage)
|
||||||
.SetColumns(t => t.ProcessedAt == DateTime.Now)
|
.SetColumns(t => t.ProcessedAt == DateTime.Now)
|
||||||
.SetColumns(t => t.UpdatedAt == DateTime.Now);
|
.SetColumns(t => t.UpdatedAt == DateTime.Now);
|
||||||
@ -163,7 +163,7 @@ public class CompensationTaskService(
|
|||||||
public async Task CancelTaskAsync(long taskId, string reason)
|
public async Task CancelTaskAsync(long taskId, string reason)
|
||||||
{
|
{
|
||||||
await taskRepository.Context.Updateable<CompensationTask>()
|
await taskRepository.Context.Updateable<CompensationTask>()
|
||||||
.SetColumns(t => t.Status == CompensationTaskStatusEnum.Cancelled)
|
.SetColumns(t => t.Status == (int)CompensationTaskStatusEnum.Cancelled)
|
||||||
.SetColumns(t => t.ResultMessage == reason)
|
.SetColumns(t => t.ResultMessage == reason)
|
||||||
.SetColumns(t => t.UpdatedAt == DateTime.Now)
|
.SetColumns(t => t.UpdatedAt == DateTime.Now)
|
||||||
.Where(t => t.Id == taskId && !t.IsDeleted)
|
.Where(t => t.Id == taskId && !t.IsDeleted)
|
||||||
|
|||||||
@ -314,7 +314,7 @@ public class MedalService(BaseRepository<Medal> medalRepository, ILogger<MedalSe
|
|||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
var userMedals = await Context.Queryable<UserMedal>()
|
var userMedals = await Context.Queryable<UserMedal>()
|
||||||
.Where(um => um.UserId == userId && um.Status == UserMedalStatusEnum.Awarded)
|
.Where(um => um.UserId == userId && um.Status == (int)UserMedalStatusEnum.Awarded)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
var userMedalDict = userMedals.ToDictionary(um => um.MedalId, um => um.AwardedAt);
|
var userMedalDict = userMedals.ToDictionary(um => um.MedalId, um => um.AwardedAt);
|
||||||
@ -341,7 +341,7 @@ public class MedalService(BaseRepository<Medal> medalRepository, ILogger<MedalSe
|
|||||||
|
|
||||||
var result = await Context.Queryable<UserMedal>()
|
var result = await Context.Queryable<UserMedal>()
|
||||||
.InnerJoin<Medal>((um, m) => um.MedalId == m.Id)
|
.InnerJoin<Medal>((um, m) => um.MedalId == m.Id)
|
||||||
.Where((um, m) => um.UserId == userId && um.Status == UserMedalStatusEnum.Awarded)
|
.Where((um, m) => um.UserId == userId && um.Status == (int)UserMedalStatusEnum.Awarded)
|
||||||
.OrderByDescending((um, m) => um.AwardedAt)
|
.OrderByDescending((um, m) => um.AwardedAt)
|
||||||
.Select((um, m) => new WxUserMedalOutput
|
.Select((um, m) => new WxUserMedalOutput
|
||||||
{
|
{
|
||||||
@ -391,7 +391,7 @@ public class MedalService(BaseRepository<Medal> medalRepository, ILogger<MedalSe
|
|||||||
}
|
}
|
||||||
|
|
||||||
var existingUserMedal = await Context.Queryable<UserMedal>()
|
var existingUserMedal = await Context.Queryable<UserMedal>()
|
||||||
.Where(um => um.UserId == userId && um.MedalId == (int)input.MedalId && um.Status == UserMedalStatusEnum.Awarded)
|
.Where(um => um.UserId == userId && um.MedalId == (int)input.MedalId && um.Status == (int)UserMedalStatusEnum.Awarded)
|
||||||
.FirstAsync();
|
.FirstAsync();
|
||||||
|
|
||||||
if (existingUserMedal != null)
|
if (existingUserMedal != null)
|
||||||
@ -405,7 +405,7 @@ public class MedalService(BaseRepository<Medal> medalRepository, ILogger<MedalSe
|
|||||||
MedalId = (int)input.MedalId,
|
MedalId = (int)input.MedalId,
|
||||||
AwardedAt = DateTime.Now,
|
AwardedAt = DateTime.Now,
|
||||||
Type = (UserMedalTypeEnum)medal.Type,
|
Type = (UserMedalTypeEnum)medal.Type,
|
||||||
Status = UserMedalStatusEnum.Awarded,
|
Status = (int)UserMedalStatusEnum.Awarded,
|
||||||
CreatedBy = "System",
|
CreatedBy = "System",
|
||||||
UpdatedBy = "System",
|
UpdatedBy = "System",
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
|
|||||||
@ -109,7 +109,7 @@ public class PetService(
|
|||||||
|
|
||||||
// 查询默认宠物模板(取排序权重最低且状态为Active的模板)
|
// 查询默认宠物模板(取排序权重最低且状态为Active的模板)
|
||||||
var defaultTemplate = await petTemplateRepository.Queryable()
|
var defaultTemplate = await petTemplateRepository.Queryable()
|
||||||
.Where(t => t.Status == PetTemplateStatusEnum.Active && !t.IsDeleted)
|
.Where(t => t.Status == (int)PetTemplateStatusEnum.Active && !t.IsDeleted)
|
||||||
.OrderBy(t => t.SortOrder)
|
.OrderBy(t => t.SortOrder)
|
||||||
.FirstAsync();
|
.FirstAsync();
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ public class PetService(
|
|||||||
var initialEvolution = await petEvolutionRepository.Queryable()
|
var initialEvolution = await petEvolutionRepository.Queryable()
|
||||||
.Where(e => e.TemplateId == defaultTemplate.Id
|
.Where(e => e.TemplateId == defaultTemplate.Id
|
||||||
&& e.PreviousEvolutionId == null
|
&& e.PreviousEvolutionId == null
|
||||||
&& e.Status == PetEvolutionStatusEnum.Active)
|
&& e.Status == (int)PetEvolutionStatusEnum.Active)
|
||||||
.OrderBy(e => e.StageLevel)
|
.OrderBy(e => e.StageLevel)
|
||||||
.FirstAsync();
|
.FirstAsync();
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ public class PetService(
|
|||||||
FeedingCount = 0,
|
FeedingCount = 0,
|
||||||
CurrentSkinId = 0,
|
CurrentSkinId = 0,
|
||||||
Type = UserPetTypeEnum.Normal,
|
Type = UserPetTypeEnum.Normal,
|
||||||
Status = UserPetStatusEnum.Inactive,
|
Status = (int)UserPetStatusEnum.Inactive,
|
||||||
IsDeleted = false,
|
IsDeleted = false,
|
||||||
CreatedBy = userId.ToString(),
|
CreatedBy = userId.ToString(),
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
@ -173,14 +173,14 @@ public class PetService(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pet.Status != UserPetStatusEnum.Inactive)
|
if (pet.Status != (int)UserPetStatusEnum.Inactive)
|
||||||
{
|
{
|
||||||
logger.LogInformation("用户宠物已非未激活状态,跳过激活,UserId: {UserId}, Status: {Status}", userId, pet.Status);
|
logger.LogInformation("用户宠物已非未激活状态,跳过激活,UserId: {UserId}, Status: {Status}", userId, pet.Status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = await petRepository.UpdateAsync(
|
var result = await petRepository.UpdateAsync(
|
||||||
p => new UserPet { Status = UserPetStatusEnum.Active },
|
p => new UserPet { Status = (int)UserPetStatusEnum.Active },
|
||||||
p => p.UserId == userId);
|
p => p.UserId == userId);
|
||||||
|
|
||||||
if (!result)
|
if (!result)
|
||||||
@ -226,7 +226,7 @@ public class PetService(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 校验宠物状态
|
// 校验宠物状态
|
||||||
if (pet.Status != UserPetStatusEnum.Active)
|
if (pet.Status != (int)UserPetStatusEnum.Active)
|
||||||
{
|
{
|
||||||
logger.LogWarning("喂养失败,宠物未激活,PetId: {PetId}, Status: {Status}", input.PetId, pet.Status);
|
logger.LogWarning("喂养失败,宠物未激活,PetId: {PetId}, Status: {Status}", input.PetId, pet.Status);
|
||||||
throw new BusinessException("宠物未激活,无法喂养", 400);
|
throw new BusinessException("宠物未激活,无法喂养", 400);
|
||||||
@ -258,7 +258,7 @@ public class PetService(
|
|||||||
var nextEvolution = await petEvolutionRepository.Queryable()
|
var nextEvolution = await petEvolutionRepository.Queryable()
|
||||||
.Where(e => e.PreviousEvolutionId == pet.CurrentEvolutionId
|
.Where(e => e.PreviousEvolutionId == pet.CurrentEvolutionId
|
||||||
&& e.RequiredGrowth <= growthAfter
|
&& e.RequiredGrowth <= growthAfter
|
||||||
&& e.Status == PetEvolutionStatusEnum.Active)
|
&& e.Status == (int)PetEvolutionStatusEnum.Active)
|
||||||
.OrderBy(e => e.RequiredGrowth, OrderByType.Desc)
|
.OrderBy(e => e.RequiredGrowth, OrderByType.Desc)
|
||||||
.FirstAsync();
|
.FirstAsync();
|
||||||
|
|
||||||
@ -291,7 +291,7 @@ public class PetService(
|
|||||||
GrowthBefore = growthBefore,
|
GrowthBefore = growthBefore,
|
||||||
GrowthAfter = growthAfter,
|
GrowthAfter = growthAfter,
|
||||||
Type = PetFeedingRecordTypeEnum.Normal,
|
Type = PetFeedingRecordTypeEnum.Normal,
|
||||||
Status = PetFeedingRecordStatusEnum.Success,
|
Status = (int)PetFeedingRecordStatusEnum.Success,
|
||||||
IsDeleted = false,
|
IsDeleted = false,
|
||||||
CreatedBy = userId.ToString(),
|
CreatedBy = userId.ToString(),
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
@ -367,7 +367,7 @@ public class PetService(
|
|||||||
IconUrl = input.IconUrl,
|
IconUrl = input.IconUrl,
|
||||||
SortOrder = input.SortOrder,
|
SortOrder = input.SortOrder,
|
||||||
Type = Enum.Parse<PetTemplateTypeEnum>(input.Type, true),
|
Type = Enum.Parse<PetTemplateTypeEnum>(input.Type, true),
|
||||||
Status = PetTemplateStatusEnum.Active,
|
Status = (int)PetTemplateStatusEnum.Active,
|
||||||
CreatedBy = "System",
|
CreatedBy = "System",
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
UpdatedBy = "System",
|
UpdatedBy = "System",
|
||||||
@ -484,13 +484,13 @@ public class PetService(
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 更新模板状态(启用/禁用)
|
/// 更新模板状态(启用/禁用)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task UpdateTemplateStatusAsync(long id, string status)
|
public async Task UpdateTemplateStatusAsync(long id, int status)
|
||||||
{
|
{
|
||||||
var template = await petTemplateRepository.GetByIdAsync(id);
|
var template = await petTemplateRepository.GetByIdAsync(id);
|
||||||
if (template == null || template.IsDeleted)
|
if (template == null || template.IsDeleted)
|
||||||
throw new BusinessException("宠物模板不存在", 404);
|
throw new BusinessException("宠物模板不存在", 404);
|
||||||
|
|
||||||
template.Status = Enum.Parse<PetTemplateStatusEnum>(status, true);
|
template.Status = status;
|
||||||
template.UpdatedBy = "System";
|
template.UpdatedBy = "System";
|
||||||
template.UpdatedAt = DateTime.Now;
|
template.UpdatedAt = DateTime.Now;
|
||||||
await petTemplateRepository.UpdateAsync(template);
|
await petTemplateRepository.UpdateAsync(template);
|
||||||
@ -548,7 +548,7 @@ public class PetService(
|
|||||||
BaseIntelligence = input.BaseIntelligence,
|
BaseIntelligence = input.BaseIntelligence,
|
||||||
BaseCharm = input.BaseCharm,
|
BaseCharm = input.BaseCharm,
|
||||||
Type = Enum.Parse<PetEvolutionTypeEnum>(input.Type, true),
|
Type = Enum.Parse<PetEvolutionTypeEnum>(input.Type, true),
|
||||||
Status = PetEvolutionStatusEnum.Active,
|
Status = (int)PetEvolutionStatusEnum.Active,
|
||||||
CreatedBy = "System",
|
CreatedBy = "System",
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
UpdatedBy = "System",
|
UpdatedBy = "System",
|
||||||
|
|||||||
@ -101,7 +101,7 @@ public class PointsService(
|
|||||||
RelatedId = input.RelatedId,
|
RelatedId = input.RelatedId,
|
||||||
Description = input.Description,
|
Description = input.Description,
|
||||||
Type = PointsFlowTypeEnum.Income,
|
Type = PointsFlowTypeEnum.Income,
|
||||||
Status = PointsRecordStatusEnum.Success,
|
Status = (int)PointsRecordStatusEnum.Success,
|
||||||
IsDeleted = false,
|
IsDeleted = false,
|
||||||
CreatedBy = input.OperatorName ?? user.Name ?? input.UserId.ToString(),
|
CreatedBy = input.OperatorName ?? user.Name ?? input.UserId.ToString(),
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
@ -164,7 +164,7 @@ public class PointsService(
|
|||||||
RelatedId = input.RelatedId,
|
RelatedId = input.RelatedId,
|
||||||
Description = input.Description,
|
Description = input.Description,
|
||||||
Type = PointsFlowTypeEnum.Expense,
|
Type = PointsFlowTypeEnum.Expense,
|
||||||
Status = PointsRecordStatusEnum.Success,
|
Status = (int)PointsRecordStatusEnum.Success,
|
||||||
IsDeleted = false,
|
IsDeleted = false,
|
||||||
CreatedBy = input.OperatorName ?? user.Name ?? input.UserId.ToString(),
|
CreatedBy = input.OperatorName ?? user.Name ?? input.UserId.ToString(),
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
@ -218,12 +218,12 @@ public class PointsService(
|
|||||||
|
|
||||||
// 查询累计收入(Income 类型)
|
// 查询累计收入(Income 类型)
|
||||||
var totalIncome = await Context.Queryable<PointsRecord>()
|
var totalIncome = await Context.Queryable<PointsRecord>()
|
||||||
.Where(r => r.UserId == userId && !r.IsDeleted && r.Type == PointsFlowTypeEnum.Income && r.Status == PointsRecordStatusEnum.Success)
|
.Where(r => r.UserId == userId && !r.IsDeleted && r.Type == PointsFlowTypeEnum.Income && r.Status == (int)PointsRecordStatusEnum.Success)
|
||||||
.SumAsync(r => r.ChangeAmount);
|
.SumAsync(r => r.ChangeAmount);
|
||||||
|
|
||||||
// 查询累计支出(Expense 类型,取绝对值)
|
// 查询累计支出(Expense 类型,取绝对值)
|
||||||
var totalExpense = await Context.Queryable<PointsRecord>()
|
var totalExpense = await Context.Queryable<PointsRecord>()
|
||||||
.Where(r => r.UserId == userId && !r.IsDeleted && r.Type == PointsFlowTypeEnum.Expense && r.Status == PointsRecordStatusEnum.Success)
|
.Where(r => r.UserId == userId && !r.IsDeleted && r.Type == PointsFlowTypeEnum.Expense && r.Status == (int)PointsRecordStatusEnum.Success)
|
||||||
.SumAsync(r => r.ChangeAmount);
|
.SumAsync(r => r.ChangeAmount);
|
||||||
|
|
||||||
return new PointsSummaryOutput
|
return new PointsSummaryOutput
|
||||||
|
|||||||
73
QYZH.InteractiveMagazine.Service/SystemManagementService.cs
Normal file
73
QYZH.InteractiveMagazine.Service/SystemManagementService.cs
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
using System.Reflection;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using QYZH.InteractiveMagazine.IService;
|
||||||
|
using QYZH.InteractiveMagazine.Models.Dto.SystemManagement;
|
||||||
|
|
||||||
|
namespace QYZH.InteractiveMagazine.Service;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 系统管理服务实现
|
||||||
|
/// </summary>
|
||||||
|
public class SystemManagementService : ISystemManagementService
|
||||||
|
{
|
||||||
|
private readonly ILogger<SystemManagementService> _logger;
|
||||||
|
|
||||||
|
public SystemManagementService(ILogger<SystemManagementService> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<List<EnumInfoOutput>> GetAllEnumsAsync()
|
||||||
|
{
|
||||||
|
_logger.LogInformation("开始获取所有枚举信息");
|
||||||
|
|
||||||
|
var enumAssembly = typeof(QYZH.InteractiveMagazine.Models.Enum.AdminUserStatusEnum).Assembly;
|
||||||
|
var enumNamespace = "QYZH.InteractiveMagazine.Models.Enum";
|
||||||
|
|
||||||
|
var enumTypes = enumAssembly.GetTypes()
|
||||||
|
.Where(t => t.IsEnum && t.Namespace == enumNamespace)
|
||||||
|
.OrderBy(t => t.Name)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
var result = new List<EnumInfoOutput>();
|
||||||
|
|
||||||
|
foreach (var enumType in enumTypes)
|
||||||
|
{
|
||||||
|
var enumInfo = new EnumInfoOutput
|
||||||
|
{
|
||||||
|
EnumName = enumType.Name
|
||||||
|
};
|
||||||
|
|
||||||
|
var fields = Enum.GetValues(enumType)
|
||||||
|
.Cast<object>()
|
||||||
|
.Select(value => new
|
||||||
|
{
|
||||||
|
Name = Enum.GetName(enumType, value),
|
||||||
|
Value = Convert.ToInt32(value),
|
||||||
|
Field = enumType.GetField(value.ToString()!)
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
foreach (var field in fields)
|
||||||
|
{
|
||||||
|
var description = field.Field?
|
||||||
|
.GetCustomAttribute<DescriptionAttribute>()?
|
||||||
|
.Description;
|
||||||
|
|
||||||
|
enumInfo.Items.Add(new EnumItemDto
|
||||||
|
{
|
||||||
|
Name = field.Name!,
|
||||||
|
Value = field.Value,
|
||||||
|
Description = description
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
result.Add(enumInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogInformation("获取枚举信息完成,共 {Count} 个枚举", result.Count);
|
||||||
|
|
||||||
|
return Task.FromResult(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -50,7 +50,7 @@ public class UserJournalService(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 校验期刊状态
|
// 校验期刊状态
|
||||||
if (journal.Status != JournalStatusEnum.Published)
|
if (journal.Status != (int)JournalStatusEnum.Published)
|
||||||
{
|
{
|
||||||
logger.LogWarning("绑定期刊失败,期刊未发布,JournalId: {JournalId}, Status: {Status}", input.JournalId, journal.Status);
|
logger.LogWarning("绑定期刊失败,期刊未发布,JournalId: {JournalId}, Status: {Status}", input.JournalId, journal.Status);
|
||||||
throw new BusinessException("该期刊暂未发布,无法绑定", 400);
|
throw new BusinessException("该期刊暂未发布,无法绑定", 400);
|
||||||
@ -77,7 +77,7 @@ public class UserJournalService(
|
|||||||
JournalId = input.JournalId,
|
JournalId = input.JournalId,
|
||||||
Id = input.Id,
|
Id = input.Id,
|
||||||
Type = Enum.Parse<UserJournalTypeEnum>(input.Type, true),
|
Type = Enum.Parse<UserJournalTypeEnum>(input.Type, true),
|
||||||
Status = UserJournalStatusEnum.Active,
|
Status = (int)UserJournalStatusEnum.Active,
|
||||||
IsDeleted = false,
|
IsDeleted = false,
|
||||||
CreatedBy = userId.ToString(),
|
CreatedBy = userId.ToString(),
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
|
|||||||
@ -180,7 +180,7 @@ public class UsersService(
|
|||||||
|
|
||||||
var statusValue = input.Status == 1 ? UserStatusEnum.Active : UserStatusEnum.Disabled;
|
var statusValue = input.Status == 1 ? UserStatusEnum.Active : UserStatusEnum.Disabled;
|
||||||
var result = await UpdateAsync(
|
var result = await UpdateAsync(
|
||||||
u => new Users { Status = statusValue },
|
u => new Users { Status = (int)statusValue },
|
||||||
u => u.Id == id
|
u => u.Id == id
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -72,7 +72,7 @@ public class WeChatAuthService(BaseRepository<Users> usersRepository, IConfigura
|
|||||||
UnionId = wxResponse.UnionId,
|
UnionId = wxResponse.UnionId,
|
||||||
Phone = phone,
|
Phone = phone,
|
||||||
Type = UsersTypeEnum.Normal,
|
Type = UsersTypeEnum.Normal,
|
||||||
Status = UserStatusEnum.Active,
|
Status = (int)UserStatusEnum.Active,
|
||||||
GrowthPoints = 0,
|
GrowthPoints = 0,
|
||||||
Points = 0,
|
Points = 0,
|
||||||
IsLastOnline = true
|
IsLastOnline = true
|
||||||
@ -190,7 +190,7 @@ public class WeChatAuthService(BaseRepository<Users> usersRepository, IConfigura
|
|||||||
throw new BusinessException("无法切换到该用户", 403);
|
throw new BusinessException("无法切换到该用户", 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetUser.Status == UserStatusEnum.Disabled)
|
if (targetUser.Status == (int)UserStatusEnum.Disabled)
|
||||||
{
|
{
|
||||||
throw new BusinessException("目标账号已被禁用", 403);
|
throw new BusinessException("目标账号已被禁用", 403);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -236,7 +236,7 @@ public class WeChatCommunityService(
|
|||||||
private async Task<List<long>> GetUserJournalIds(long userId)
|
private async Task<List<long>> GetUserJournalIds(long userId)
|
||||||
{
|
{
|
||||||
return await Context.Queryable<UserJournal>()
|
return await Context.Queryable<UserJournal>()
|
||||||
.Where(uj => uj.UserId == userId && uj.Status == UserJournalStatusEnum.Active)
|
.Where(uj => uj.UserId == userId && uj.Status == (int)UserJournalStatusEnum.Active)
|
||||||
.Select(uj => uj.JournalId)
|
.Select(uj => uj.JournalId)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -83,7 +83,7 @@ public class WxMallService(
|
|||||||
var skinProductIds = skinProductMap.Select(x => x.ProductId).ToList();
|
var skinProductIds = skinProductMap.Select(x => x.ProductId).ToList();
|
||||||
var bagItems = skinProductIds.Count > 0
|
var bagItems = skinProductIds.Count > 0
|
||||||
? await exchangeRecordRepository.Context.Queryable<UserBag>()
|
? await exchangeRecordRepository.Context.Queryable<UserBag>()
|
||||||
.Where(b => b.UserId == userId && !b.IsDeleted && b.Status == UserBagStatusEnum.Available
|
.Where(b => b.UserId == userId && !b.IsDeleted && b.Status == (int)UserBagStatusEnum.Available
|
||||||
&& skinProductIds.Contains(b.ItemId))
|
&& skinProductIds.Contains(b.ItemId))
|
||||||
.ToListAsync()
|
.ToListAsync()
|
||||||
: new List<UserBag>();
|
: new List<UserBag>();
|
||||||
@ -158,7 +158,7 @@ public class WxMallService(
|
|||||||
}
|
}
|
||||||
|
|
||||||
var owned = await exchangeRecordRepository.Context.Queryable<UserBag>()
|
var owned = await exchangeRecordRepository.Context.Queryable<UserBag>()
|
||||||
.Where(b => b.UserId == userId && b.ItemId == product.Id && !b.IsDeleted && b.Status == UserBagStatusEnum.Available)
|
.Where(b => b.UserId == userId && b.ItemId == product.Id && !b.IsDeleted && b.Status == (int)UserBagStatusEnum.Available)
|
||||||
.AnyAsync();
|
.AnyAsync();
|
||||||
|
|
||||||
return new WxProductOutput
|
return new WxProductOutput
|
||||||
@ -213,7 +213,7 @@ public class WxMallService(
|
|||||||
PointsCost = totalCost,
|
PointsCost = totalCost,
|
||||||
PointsBalance = 0, // 稍后赋值
|
PointsBalance = 0, // 稍后赋值
|
||||||
Quantity = input.Quantity,
|
Quantity = input.Quantity,
|
||||||
Status = ExchangeRecordStatusEnum.Success,
|
Status = (int)ExchangeRecordStatusEnum.Success,
|
||||||
IsDeleted = false,
|
IsDeleted = false,
|
||||||
CreatedBy = userId.ToString(),
|
CreatedBy = userId.ToString(),
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
@ -241,7 +241,7 @@ public class WxMallService(
|
|||||||
|
|
||||||
// 加入背包
|
// 加入背包
|
||||||
var existingBag = await exchangeRecordRepository.Context.Queryable<UserBag>()
|
var existingBag = await exchangeRecordRepository.Context.Queryable<UserBag>()
|
||||||
.Where(b => b.UserId == userId && b.ItemId == product.Id && !b.IsDeleted && b.Status == UserBagStatusEnum.Available)
|
.Where(b => b.UserId == userId && b.ItemId == product.Id && !b.IsDeleted && b.Status == (int)UserBagStatusEnum.Available)
|
||||||
.FirstAsync();
|
.FirstAsync();
|
||||||
|
|
||||||
if (existingBag != null)
|
if (existingBag != null)
|
||||||
@ -264,7 +264,7 @@ public class WxMallService(
|
|||||||
Quantity = input.Quantity,
|
Quantity = input.Quantity,
|
||||||
MetaData = product.MetaData,
|
MetaData = product.MetaData,
|
||||||
Type = Enum.TryParse<UserBagTypeEnum>(product.Type.ToString(), out var bagType) ? bagType : default,
|
Type = Enum.TryParse<UserBagTypeEnum>(product.Type.ToString(), out var bagType) ? bagType : default,
|
||||||
Status = UserBagStatusEnum.Available,
|
Status = (int)UserBagStatusEnum.Available,
|
||||||
IsDeleted = false,
|
IsDeleted = false,
|
||||||
CreatedBy = userId.ToString(),
|
CreatedBy = userId.ToString(),
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
@ -318,7 +318,7 @@ public class WxMallService(
|
|||||||
public async Task<List<UserBagOutput>> GetBagItemsAsync(long userId, string? itemType = null)
|
public async Task<List<UserBagOutput>> GetBagItemsAsync(long userId, string? itemType = null)
|
||||||
{
|
{
|
||||||
var query = exchangeRecordRepository.Context.Queryable<UserBag>()
|
var query = exchangeRecordRepository.Context.Queryable<UserBag>()
|
||||||
.Where(b => b.UserId == userId && !b.IsDeleted && b.Status == UserBagStatusEnum.Available)
|
.Where(b => b.UserId == userId && !b.IsDeleted && b.Status == (int)UserBagStatusEnum.Available)
|
||||||
.WhereIF(!string.IsNullOrEmpty(itemType), b => b.ItemType == itemType)
|
.WhereIF(!string.IsNullOrEmpty(itemType), b => b.ItemType == itemType)
|
||||||
.OrderByDescending(b => b.CreatedAt);
|
.OrderByDescending(b => b.CreatedAt);
|
||||||
|
|
||||||
@ -403,7 +403,7 @@ public class WxMallService(
|
|||||||
throw new BusinessException("背包物品Id无效", 400);
|
throw new BusinessException("背包物品Id无效", 400);
|
||||||
|
|
||||||
var bagItem = await exchangeRecordRepository.Context.Queryable<UserBag>()
|
var bagItem = await exchangeRecordRepository.Context.Queryable<UserBag>()
|
||||||
.Where(b => b.Id == input.BagItemId && b.UserId == userId && !b.IsDeleted && b.Status == UserBagStatusEnum.Available)
|
.Where(b => b.Id == input.BagItemId && b.UserId == userId && !b.IsDeleted && b.Status == (int)UserBagStatusEnum.Available)
|
||||||
.FirstAsync();
|
.FirstAsync();
|
||||||
|
|
||||||
if (bagItem == null)
|
if (bagItem == null)
|
||||||
@ -444,7 +444,7 @@ public class WxMallService(
|
|||||||
if (bagItem.Quantity <= 1)
|
if (bagItem.Quantity <= 1)
|
||||||
{
|
{
|
||||||
await exchangeRecordRepository.Context.Updateable<UserBag>()
|
await exchangeRecordRepository.Context.Updateable<UserBag>()
|
||||||
.SetColumns(b => b.Status == UserBagStatusEnum.Expired)
|
.SetColumns(b => b.Status == (int)UserBagStatusEnum.Expired)
|
||||||
.SetColumns(b => b.Quantity == 0)
|
.SetColumns(b => b.Quantity == 0)
|
||||||
.SetColumns(b => b.UpdatedAt == DateTime.Now)
|
.SetColumns(b => b.UpdatedAt == DateTime.Now)
|
||||||
.Where(b => b.Id == bagItem.Id)
|
.Where(b => b.Id == bagItem.Id)
|
||||||
@ -507,7 +507,7 @@ public class WxMallService(
|
|||||||
|
|
||||||
// 校验背包中是否拥有该皮肤(通过 MetaData 中的 SkinId 判断)
|
// 校验背包中是否拥有该皮肤(通过 MetaData 中的 SkinId 判断)
|
||||||
var hasSkin = await exchangeRecordRepository.Context.Queryable<UserBag>()
|
var hasSkin = await exchangeRecordRepository.Context.Queryable<UserBag>()
|
||||||
.Where(b => b.UserId == userId && !b.IsDeleted && b.Status == UserBagStatusEnum.Available && b.Quantity > 0
|
.Where(b => b.UserId == userId && !b.IsDeleted && b.Status == (int)UserBagStatusEnum.Available && b.Quantity > 0
|
||||||
&& b.ItemType == "PetBg")
|
&& b.ItemType == "PetBg")
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
|
|||||||
@ -145,7 +145,7 @@ public class PetManageController : BaseController
|
|||||||
/// 更新宠物模板状态(启用/禁用)
|
/// 更新宠物模板状态(启用/禁用)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[HttpPut("{id}/status")]
|
[HttpPut("{id}/status")]
|
||||||
public async Task<BaseResponse<object>> UpdateTemplateStatusAsync(long id, [FromBody] string status)
|
public async Task<BaseResponse<object>> UpdateTemplateStatusAsync(long id, [FromBody] int status)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@ -0,0 +1,46 @@
|
|||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using QYZH.InteractiveMagazine.IService;
|
||||||
|
using QYZH.InteractiveMagazine.Models.Dto;
|
||||||
|
using QYZH.InteractiveMagazine.Models.Dto.SystemManagement;
|
||||||
|
using QYZH.InteractiveMagazine.Models.Enum;
|
||||||
|
|
||||||
|
namespace QYZH.InteractiveMagazine.WebApi.Controllers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 系统管理控制器
|
||||||
|
/// </summary>
|
||||||
|
[Route("api/[controller]")]
|
||||||
|
[ApiController]
|
||||||
|
[ApiExplorerSettings(GroupName = nameof(ApiVersionEnum.Platform))]
|
||||||
|
public class SystemManagementController : BaseController
|
||||||
|
{
|
||||||
|
private readonly ISystemManagementService _systemManagementService;
|
||||||
|
private readonly ILogger<SystemManagementController> _logger;
|
||||||
|
|
||||||
|
public SystemManagementController(ISystemManagementService systemManagementService, ILogger<SystemManagementController> logger)
|
||||||
|
{
|
||||||
|
_systemManagementService = systemManagementService;
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取系统中所有枚举信息
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>枚举信息列表</returns>
|
||||||
|
[AllowAnonymous]
|
||||||
|
[HttpGet("enums")]
|
||||||
|
public async Task<BaseResponse<List<EnumInfoOutput>>> GetAllEnumsAsync()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var result = await _systemManagementService.GetAllEnumsAsync();
|
||||||
|
return Success(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "获取枚举信息异常");
|
||||||
|
return BaseResponse<List<EnumInfoOutput>>.Fail("获取枚举信息失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user