refactor: 重构项目基础架构与实体体系

- 替换原有自定义生命周期接口为通用基础服务体系
- 将所有实体基类替换为带雪花ID的SqlSugarBaseEntity
- 迁移DTO到Models项目并统一管理
- 移除冗余的Repository层实现,改用通用基础服务
- 添加Yitter.IdGenerator雪花ID生成支持
- 重构SqlSugar数据库上下文与依赖注入配置
- 新增微信用户、用户勋章、背包等实体与配套服务
- 整理分页查询与结果封装类
- 优化WebApi控制器结构
This commit is contained in:
glz
2026-06-02 14:10:43 +08:00
parent 831f8ba7f5
commit 8ed012bba8
51 changed files with 1762 additions and 1141 deletions

View File

@ -6,19 +6,12 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///后台管理员表
///</summary>
[SugarTable("AdminUser")]
public partial class AdminUser : BaseEntity
public partial class AdminUser : SqlSugarBaseEntity
{
public AdminUser(){
}
/// <summary>
/// Desc:主键
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]
public new int Id { get; set; }
/// <summary>
/// Desc:用户名

View File

@ -1,43 +0,0 @@
using SqlSugar;
namespace QYZH.InteractiveMagazine.Models.Entity;
/// <summary>
/// 基础实体类
/// </summary>
public abstract class BaseEntity
{
/// <summary>
/// 主键Id
/// </summary>
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public long Id { get; set; }
/// <summary>
/// 是否已删除
/// </summary>
[SugarColumn(IsIgnore = false)]
public bool IsDeleted { get; set; } = false;
/// <summary>
/// 创建人
/// </summary>
[SugarColumn(Length = 50)]
public string? CreatedBy { get; set; } = "System";
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedAt { get; set; } = DateTime.Now;
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(Length = 50)]
public string? UpdatedBy { get; set; } = "System";
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdatedAt { get; set; } = DateTime.Now;
}

View File

@ -6,19 +6,13 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///签到配置表
///</summary>
[SugarTable("CheckInConfig")]
public partial class CheckInConfig : BaseEntity
public partial class CheckInConfig : SqlSugarBaseEntity
{
public CheckInConfig(){
}
/// <summary>
/// Desc:主键
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]
public new int Id {get;set;}
/// <summary>
/// Desc:连续签到天数

View File

@ -6,18 +6,18 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///签到记录表
///</summary>
[SugarTable("CheckInRecord")]
public partial class CheckInRecord : BaseEntity
public partial class CheckInRecord : SqlSugarBaseEntity
{
public CheckInRecord(){
}
/// <summary>
/// Desc:用户Id
/// Default:
/// Nullable:False
/// </summary>
public long UserId {get;set;}
/// <summary>
/// Desc:用户Id
/// Default:
/// Nullable:False
/// </summary>
public long UserId {get;set;}
/// <summary>
/// Desc:签到日期

View File

@ -6,18 +6,19 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///社区预置消息表
///</summary>
[SugarTable("CommunityMessage")]
public partial class CommunityMessage : BaseEntity
public partial class CommunityMessage : SqlSugarBaseEntity
{
public CommunityMessage(){
}
/// <summary>
/// Desc:期刊Id
/// Default:
/// Nullable:False
/// </summary>
public long JournalId {get;set;}
/// <summary>
/// Desc:期刊Id
/// Default:
/// Nullable:False
/// </summary>
public long JournalId {get;set;}
/// <summary>
/// Desc:消息内容

View File

@ -6,18 +6,18 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///期刊表
///</summary>
[SugarTable("Journal")]
public partial class Journal : BaseEntity
public partial class Journal : SqlSugarBaseEntity
{
public Journal(){
}
/// <summary>
/// Desc:期刊号
/// Default:
/// Nullable:False
/// </summary>
public int IssueNumber {get;set;}
/// <summary>
/// Desc:期刊号
/// Default:
/// Nullable:False
/// </summary>
public int IssueNumber {get;set;}
/// <summary>
/// Desc:期刊标题

View File

@ -6,74 +6,68 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///勋章定义表
///</summary>
[SugarTable("Medal")]
public partial class Medal : BaseEntity
public partial class Medal : SqlSugarBaseEntity
{
public Medal(){
public Medal()
{
}
/// <summary>
/// Desc:主键
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]
public new int Id {get;set;}
}
/// <summary>
/// Desc:勋章名称
/// Default:
/// Nullable:False
/// </summary>
public string Name {get;set;}
/// <summary>
/// Desc:勋章名称
/// Default:
/// Nullable:False
/// </summary>
public string Name { get; set; }
/// <summary>
/// Desc:获得条件描述
/// Default:
/// Nullable:True
/// </summary>
public string Description {get;set;}
/// <summary>
/// Desc:获得条件描述
/// Default:
/// Nullable:True
/// </summary>
public string Description { get; set; }
/// <summary>
/// Desc:图片地址
/// Default:
/// Nullable:True
/// </summary>
public string ImageUrl {get;set;}
/// <summary>
/// Desc:图片地址
/// Default:
/// Nullable:True
/// </summary>
public string ImageUrl { get; set; }
/// <summary>
/// Desc:条件类型: EvolutionCount, FeedingCount等
/// Default:
/// Nullable:False
/// </summary>
public string ConditionType {get;set;}
/// <summary>
/// Desc:条件类型: EvolutionCount, FeedingCount等
/// Default:
/// Nullable:False
/// </summary>
public string ConditionType { get; set; }
/// <summary>
/// Desc:条件阈值
/// Default:
/// Nullable:False
/// </summary>
public int ConditionValue {get;set;}
/// <summary>
/// Desc:条件阈值
/// Default:
/// Nullable:False
/// </summary>
public int ConditionValue { get; set; }
/// <summary>
/// Desc:排序
/// Default:0
/// Nullable:False
/// </summary>
public int SortOrder {get;set;}
/// <summary>
/// Desc:排序
/// Default:0
/// Nullable:False
/// </summary>
public int SortOrder { get; set; }
/// <summary>
/// Desc:勋章的类型: Pet, Community
/// Default:Pet
/// Nullable:False
/// </summary>
public string Type {get;set;}
/// <summary>
/// Desc:勋章的类型: Pet, Community
/// Default:Pet
/// Nullable:False
/// </summary>
public string Type { get; set; }
/// <summary>
/// Desc:状态: Active, Inactive
/// Default:Active
/// Nullable:False
/// </summary>
public string Status {get;set;}
/// <summary>
/// Desc:状态: Active, Inactive
/// Default:Active
/// Nullable:False
/// </summary>
public string Status { get; set; }
}
}

View File

@ -6,18 +6,19 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///模板评论表
///</summary>
[SugarTable("MessageComment")]
public partial class MessageComment : BaseEntity
public partial class MessageComment : SqlSugarBaseEntity
{
public MessageComment(){
}
/// <summary>
/// Desc:用户Id
/// Default:
/// Nullable:False
/// </summary>
public long UserId {get;set;}
/// <summary>
/// Desc:用户Id
/// Default:
/// Nullable:False
/// </summary>
public long UserId {get;set;}
/// <summary>
/// Desc:消息Id

View File

@ -6,18 +6,18 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///点赞记录表
///</summary>
[SugarTable("MessageLike")]
public partial class MessageLike : BaseEntity
public partial class MessageLike : SqlSugarBaseEntity
{
public MessageLike(){
}
/// <summary>
/// Desc:用户Id
/// Default:
/// Nullable:False
/// </summary>
public long UserId {get;set;}
/// <summary>
/// Desc:用户Id
/// Default:
/// Nullable:False
/// </summary>
public long UserId {get;set;}
/// <summary>
/// Desc:消息Id

View File

@ -6,18 +6,18 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///宠物实例表
///</summary>
[SugarTable("Pet")]
public partial class Pet : BaseEntity
public partial class Pet : SqlSugarBaseEntity
{
public Pet(){
}
/// <summary>
/// Desc:用户Id
/// Default:
/// Nullable:False
/// </summary>
public long UserId {get;set;}
/// <summary>
/// Desc:用户Id
/// Default:
/// Nullable:False
/// </summary>
public long UserId {get;set;}
/// <summary>
/// Desc:宠物昵称

View File

@ -6,19 +6,12 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///宠物进化链定义表
///</summary>
[SugarTable("PetEvolution")]
public partial class PetEvolution : BaseEntity
public partial class PetEvolution : SqlSugarBaseEntity
{
public PetEvolution(){
}
/// <summary>
/// Desc:主键
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]
public new int Id {get;set;}
/// <summary>
/// Desc:阶段名称

View File

@ -6,18 +6,19 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///宠物喂养记录表
///</summary>
[SugarTable("PetFeedingRecord")]
public partial class PetFeedingRecord : BaseEntity
public partial class PetFeedingRecord : SqlSugarBaseEntity
{
public PetFeedingRecord(){
}
/// <summary>
/// Desc:宠物Id
/// Default:
/// Nullable:False
/// </summary>
public long PetId {get;set;}
/// <summary>
/// Desc:宠物Id
/// Default:
/// Nullable:False
/// </summary>
public long PetId {get;set;}
/// <summary>
/// Desc:用户Id

View File

@ -6,18 +6,19 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///积分流水记录表
///</summary>
[SugarTable("PointsRecord")]
public partial class PointsRecord : BaseEntity
public partial class PointsRecord : SqlSugarBaseEntity
{
public PointsRecord(){
}
/// <summary>
/// Desc:用户Id
/// Default:
/// Nullable:False
/// </summary>
public long UserId {get;set;}
/// <summary>
/// Desc:用户Id
/// Default:
/// Nullable:False
/// </summary>
public long UserId {get;set;}
/// <summary>
/// Desc:变动数值

View File

@ -6,19 +6,12 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///虚拟商品表
///</summary>
[SugarTable("Product")]
public partial class Product : BaseEntity
public partial class Product : SqlSugarBaseEntity
{
public Product(){
}
/// <summary>
/// Desc:主键
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]
public new int Id {get;set;}
/// <summary>
/// Desc:商品名称

View File

@ -0,0 +1,63 @@
using SqlSugar;
using Yitter.IdGenerator;
namespace QYZH.InteractiveMagazine.Models.Entity
{
public class SqlSugarBaseEntity
{
/// <summary>
/// Desc:主键
/// Default:
/// Nullable:False
/// </summary>
public long Id { get; set; } = YitIdHelper.NextId();
/// <summary>
/// Desc:状态 0禁用 1启用
/// Default:1
/// Nullable:False
/// </summary>
[SugarColumn(ColumnName = "Status")]
public string Status { get; set; }
/// <summary>
/// Desc:是否删除
/// Default:b'0'
/// Nullable:False
/// </summary>
[SugarColumn(ColumnName = "IsDeleted")]
public bool IsDeleted { get; set; } = false;
/// <summary>
/// Desc:创建人
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(ColumnName = "CreatedBy", IsOnlyIgnoreUpdate = true)]
public string CreatedBy { get; set; }
/// <summary>
/// Desc:创建时间
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(ColumnName = "CreatedAt", IsOnlyIgnoreUpdate = true)]
public DateTime CreatedAt { get; set; }
/// <summary>
/// Desc:修改人
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "updatedBy", IsOnlyIgnoreInsert = true)]
public string UpdatedBy { get; set; }
/// <summary>
/// Desc:修改时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "UpdatedAt", IsOnlyIgnoreInsert = true)]
public DateTime? UpdatedAt { get; set; }
}
}

View File

@ -6,19 +6,13 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///固定模板言论表
///</summary>
[SugarTable("TemplateSentence")]
public partial class TemplateSentence : BaseEntity
public partial class TemplateSentence : SqlSugarBaseEntity
{
public TemplateSentence(){
}
/// <summary>
/// Desc:主键
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]
public new int Id {get;set;}
/// <summary>
/// Desc:模板内容

View File

@ -1,71 +0,0 @@
using SqlSugar;
namespace QYZH.InteractiveMagazine.Models.Entity
{
///<summary>
///用户表
///</summary>
[SugarTable("User")]
public partial class User : BaseEntity
{
public User(){
}
/// <summary>
/// Desc:微信OpenId
/// Default:
/// Nullable:False
/// </summary>
public string OpenId {get;set;}
/// <summary>
/// Desc:微信UnionId
/// Default:
/// Nullable:True
/// </summary>
public string UnionId {get;set;}
/// <summary>
/// Desc:昵称
/// Default:
/// Nullable:True
/// </summary>
public string NickName {get;set;}
/// <summary>
/// Desc:头像地址
/// Default:
/// Nullable:True
/// </summary>
public string AvatarUrl {get;set;}
/// <summary>
/// Desc:手机号
/// Default:
/// Nullable:True
/// </summary>
public string Phone {get;set;}
/// <summary>
/// Desc:积分余额
/// Default:0
/// Nullable:False
/// </summary>
public int Points {get;set;}
/// <summary>
/// Desc:用户类型: Normal, VIP
/// Default:Normal
/// Nullable:False
/// </summary>
public string Type {get;set;}
/// <summary>
/// Desc:状态: Active, Disabled
/// Default:Active
/// Nullable:False
/// </summary>
public string Status {get;set;}
}
}

View File

@ -0,0 +1,80 @@
using SqlSugar;
namespace QYZH.InteractiveMagazine.Models.Entity
{
///<summary>
///用户表
///</summary>
[SugarTable("WxUser")]
public partial class WxUser : SqlSugarBaseEntity
{
/// <summary>
/// Desc:微信OpenId
/// Default:
/// Nullable:False
/// </summary>
public string OpenId { get; set; }
/// <summary>
/// Desc:微信UnionId
/// Default:
/// Nullable:True
/// </summary>
public string UnionId { get; set; }
/// <summary>
/// Desc:昵称
/// Default:
/// Nullable:True
/// </summary>
public string NickName { get; set; }
/// <summary>
/// Desc:头像地址
/// Default:
/// Nullable:True
/// </summary>
public string AvatarUrl { get; set; }
/// <summary>
/// Desc:手机号
/// Default:
/// Nullable:True
/// </summary>
public string Phone { get; set; }
/// <summary>
/// Desc:积分余额
/// Default:0
/// Nullable:False
/// </summary>
public int Points { get; set; }
/// <summary>
/// Desc:用户类型: Normal, VIP
/// Default:Normal
/// Nullable:False
/// </summary>
public string Type { get; set; }
/// <summary>
/// Desc:状态: Active, Disabled
/// Default:Active
/// Nullable:False
/// </summary>
public string Status { get; set; }
/// <summary>
/// Desc:密码默认手机后4位
/// Default:Active
/// Nullable:False
/// </summary>
public string Pwd { get; set; }
/// <summary>
/// Desc:当前成长值
/// Default:0
/// Nullable:False
/// </summary>
public int GrowthPoints { get; set; }
}
}

View File

@ -5,10 +5,10 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///<summary>
///用户背包表
///</summary>
[SugarTable("UserBag")]
public partial class UserBag : BaseEntity
[SugarTable("WxUserBag")]
public partial class WxUserBag : SqlSugarBaseEntity
{
public UserBag(){
public WxUserBag(){
}

View File

@ -5,10 +5,10 @@ namespace QYZH.InteractiveMagazine.Models.Entity
///<summary>
///用户勋章表
///</summary>
[SugarTable("UserMedal")]
public partial class UserMedal : BaseEntity
[SugarTable("WxUserMedal")]
public partial class WxUserMedal : SqlSugarBaseEntity
{
public UserMedal(){
public WxUserMedal(){
}