重构一下数据库

This commit is contained in:
2026-01-18 20:35:21 +08:00
parent 485307e7de
commit ff4e069a7e
20 changed files with 477 additions and 131 deletions

View File

@@ -2,7 +2,7 @@ gfcli:
gen: gen:
dao: dao:
- link: "mysql:root:123456@tcp(127.0.0.1:3306)/trangleagent" - link: "mysql:root:123456@tcp(127.0.0.1:3306)/trangleagent"
table: "forum_posts,forum_comments" table: "forum_sections,forum_posts,forum_comments,forum_boards,department,containment_repo,users,login_field,trpg_room,role_cards"
descriptionTag: true descriptionTag: true
jsonCase: "CamelLower" # 生成json字段时字段名使用驼峰命名 jsonCase: "CamelLower" # 生成json字段时字段名使用驼峰命名
docker: docker:

View File

@@ -0,0 +1,22 @@
// =================================================================================
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
// =================================================================================
package dao
import (
"TrangleAgent/internal/dao/internal"
)
// forumBoardsDao is the data access object for the table forum_boards.
// You can define custom methods on it to extend its functionality as needed.
type forumBoardsDao struct {
*internal.ForumBoardsDao
}
var (
// ForumBoards is a globally accessible object for table forum_boards operations.
ForumBoards = forumBoardsDao{internal.NewForumBoardsDao()}
)
// Add your custom methods and functionality below.

View File

@@ -0,0 +1,22 @@
// =================================================================================
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
// =================================================================================
package dao
import (
"TrangleAgent/internal/dao/internal"
)
// forumSectionsDao is the data access object for the table forum_sections.
// You can define custom methods on it to extend its functionality as needed.
type forumSectionsDao struct {
*internal.ForumSectionsDao
}
var (
// ForumSections is a globally accessible object for table forum_sections operations.
ForumSections = forumSectionsDao{internal.NewForumSectionsDao()}
)
// Add your custom methods and functionality below.

View File

@@ -0,0 +1,103 @@
// ==========================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal
import (
"context"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
)
// ForumBoardsDao is the data access object for the table forum_boards.
type ForumBoardsDao struct {
table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO.
columns ForumBoardsColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
}
// ForumBoardsColumns defines and stores column names for the table forum_boards.
type ForumBoardsColumns struct {
Id string // 版块ID主键
SectionId string // 所属频道ID关联 forum_sections.id无外键可为空=不分区)
Name string // 版块名称
Description string // 版块简介
CoverImage string // 版块封面图URL
Status string // 状态normal=正常 hidden=隐藏 deleted=删除
DisplayOrder string // 排序值(越大越靠前)
PostCount string // 帖子总数(冗余)
TodayPostCount string // 今日发帖数(冗余,可选)
LastPostId string // 最后一篇帖子ID冗余可选
LastPostAt string // 最后发帖时间(冗余,可选)
CreatedAt string // 创建时间
UpdatedAt string // 更新时间
}
// forumBoardsColumns holds the columns for the table forum_boards.
var forumBoardsColumns = ForumBoardsColumns{
Id: "id",
SectionId: "section_id",
Name: "name",
Description: "description",
CoverImage: "cover_image",
Status: "status",
DisplayOrder: "display_order",
PostCount: "post_count",
TodayPostCount: "today_post_count",
LastPostId: "last_post_id",
LastPostAt: "last_post_at",
CreatedAt: "created_at",
UpdatedAt: "updated_at",
}
// NewForumBoardsDao creates and returns a new DAO object for table data access.
func NewForumBoardsDao(handlers ...gdb.ModelHandler) *ForumBoardsDao {
return &ForumBoardsDao{
group: "default",
table: "forum_boards",
columns: forumBoardsColumns,
handlers: handlers,
}
}
// DB retrieves and returns the underlying raw database management object of the current DAO.
func (dao *ForumBoardsDao) DB() gdb.DB {
return g.DB(dao.group)
}
// Table returns the table name of the current DAO.
func (dao *ForumBoardsDao) Table() string {
return dao.table
}
// Columns returns all column names of the current DAO.
func (dao *ForumBoardsDao) Columns() ForumBoardsColumns {
return dao.columns
}
// Group returns the database configuration group name of the current DAO.
func (dao *ForumBoardsDao) Group() string {
return dao.group
}
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *ForumBoardsDao) Ctx(ctx context.Context) *gdb.Model {
model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
}
// Transaction wraps the transaction logic using function f.
// It rolls back the transaction and returns the error if function f returns a non-nil error.
// It commits the transaction and returns nil if function f returns nil.
//
// Note: Do not commit or roll back the transaction in function f,
// as it is automatically handled by this function.
func (dao *ForumBoardsDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) {
return dao.Ctx(ctx).Transaction(ctx, f)
}

View File

@@ -21,32 +21,32 @@ type ForumCommentsDao struct {
// ForumCommentsColumns defines and stores column names for the table forum_comments. // ForumCommentsColumns defines and stores column names for the table forum_comments.
type ForumCommentsColumns struct { type ForumCommentsColumns struct {
Id string // 评论ID主键 Id string // 评论ID主键
UserId string // 评论发布者ID关联users.id无外键 PostId string // 所属帖子ID关联 forum_posts.id无外键
PostId string // 所属帖子ID关联forum_posts.id无外键 UserId string // 评论发布者ID关联 users.id无外键
ParentId string // 父评论IDNULL=评论非NULL=回复某条评论 ParentId string // 父评论IDNULL=一级评论非NULL=二级评论指向一级评论ID无外键
Content string // 评论内容支持emoji ReplyToUserId string // 回复的用户ID可选用于展示“回复@xxx”无外键
Status string // 评论状态normal=正常 deleted=软删除 audit=审核中 reject=审核驳回 Content string // 评论内容支持emoji
LikeCount string // 点赞数 Status string // 状态normal=正常 deleted=软删 audit=审核中 reject=驳回
ReplyCount string // 回复数(冗余字段 LikeCount string // 点赞数(冗余)
CreatedAt string // 评论创建时间 CreatedAt string // 创建时间
UpdatedAt string // 评论更新时间 UpdatedAt string // 更新时间
DeletedAt string // 软删除时间 DeletedAt string // 软删除时间
} }
// forumCommentsColumns holds the columns for the table forum_comments. // forumCommentsColumns holds the columns for the table forum_comments.
var forumCommentsColumns = ForumCommentsColumns{ var forumCommentsColumns = ForumCommentsColumns{
Id: "id", Id: "id",
UserId: "user_id", PostId: "post_id",
PostId: "post_id", UserId: "user_id",
ParentId: "parent_id", ParentId: "parent_id",
Content: "content", ReplyToUserId: "reply_to_user_id",
Status: "status", Content: "content",
LikeCount: "like_count", Status: "status",
ReplyCount: "reply_count", LikeCount: "like_count",
CreatedAt: "created_at", CreatedAt: "created_at",
UpdatedAt: "updated_at", UpdatedAt: "updated_at",
DeletedAt: "deleted_at", DeletedAt: "deleted_at",
} }
// NewForumCommentsDao creates and returns a new DAO object for table data access. // NewForumCommentsDao creates and returns a new DAO object for table data access.

View File

@@ -21,34 +21,46 @@ type ForumPostsDao struct {
// ForumPostsColumns defines and stores column names for the table forum_posts. // ForumPostsColumns defines and stores column names for the table forum_posts.
type ForumPostsColumns struct { type ForumPostsColumns struct {
Id string // 帖子ID主键 Id string // 帖子ID主键
UserId string // 发帖用户ID关联users.id无外键 BoardId string // 所属版块ID关联 forum_boards.id无外键
Title string // 帖子标题 UserId string // 发帖用户ID关联 users.id无外键
Content string // 帖子正文(支持富文本/emoji Title string // 帖子标题
CoverImage string // 帖子封面图URL Content string // 帖子正文(支持富文本/emoji
Status string // 帖子状态normal=正常 deleted=软删除 audit=审核中 reject=审核驳回 CoverImage string // 帖子封面图URL
ViewCount string // 浏览量(冗余字段) Status string // 状态normal=正常 deleted=软删 audit=审核中 reject=驳回
LikeCount string // 点赞数(冗余字段) IsPinned string // 是否置顶0否 1是
CommentCount string // 评论数(冗余字段) IsEssence string // 是否精华0否 1是
CreatedAt string // 发帖时间 ViewCount string // 浏览量(冗余)
UpdatedAt string // 更新时间 LikeCount string // 点赞数(冗余)
DeletedAt string // 软删除时间 CommentCount string // 评论数(冗余)
CollectCount string // 收藏数(冗余,可选)
LastCommentId string // 最后一条评论ID冗余可选
LastCommentAt string // 最后评论时间(冗余,可选)
CreatedAt string // 发帖时间
UpdatedAt string // 更新时间
DeletedAt string // 软删除时间
} }
// forumPostsColumns holds the columns for the table forum_posts. // forumPostsColumns holds the columns for the table forum_posts.
var forumPostsColumns = ForumPostsColumns{ var forumPostsColumns = ForumPostsColumns{
Id: "id", Id: "id",
UserId: "user_id", BoardId: "board_id",
Title: "title", UserId: "user_id",
Content: "content", Title: "title",
CoverImage: "cover_image", Content: "content",
Status: "status", CoverImage: "cover_image",
ViewCount: "view_count", Status: "status",
LikeCount: "like_count", IsPinned: "is_pinned",
CommentCount: "comment_count", IsEssence: "is_essence",
CreatedAt: "created_at", ViewCount: "view_count",
UpdatedAt: "updated_at", LikeCount: "like_count",
DeletedAt: "deleted_at", CommentCount: "comment_count",
CollectCount: "collect_count",
LastCommentId: "last_comment_id",
LastCommentAt: "last_comment_at",
CreatedAt: "created_at",
UpdatedAt: "updated_at",
DeletedAt: "deleted_at",
} }
// NewForumPostsDao creates and returns a new DAO object for table data access. // NewForumPostsDao creates and returns a new DAO object for table data access.

View File

@@ -0,0 +1,93 @@
// ==========================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal
import (
"context"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
)
// ForumSectionsDao is the data access object for the table forum_sections.
type ForumSectionsDao struct {
table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO.
columns ForumSectionsColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
}
// ForumSectionsColumns defines and stores column names for the table forum_sections.
type ForumSectionsColumns struct {
Id string // 频道/分区ID主键
Name string // 频道名称
Description string // 频道简介
Icon string // 频道图标URL
Status string // 状态normal=正常 hidden=隐藏 deleted=删除
DisplayOrder string // 排序值(越大越靠前)
CreatedAt string // 创建时间
UpdatedAt string // 更新时间
}
// forumSectionsColumns holds the columns for the table forum_sections.
var forumSectionsColumns = ForumSectionsColumns{
Id: "id",
Name: "name",
Description: "description",
Icon: "icon",
Status: "status",
DisplayOrder: "display_order",
CreatedAt: "created_at",
UpdatedAt: "updated_at",
}
// NewForumSectionsDao creates and returns a new DAO object for table data access.
func NewForumSectionsDao(handlers ...gdb.ModelHandler) *ForumSectionsDao {
return &ForumSectionsDao{
group: "default",
table: "forum_sections",
columns: forumSectionsColumns,
handlers: handlers,
}
}
// DB retrieves and returns the underlying raw database management object of the current DAO.
func (dao *ForumSectionsDao) DB() gdb.DB {
return g.DB(dao.group)
}
// Table returns the table name of the current DAO.
func (dao *ForumSectionsDao) Table() string {
return dao.table
}
// Columns returns all column names of the current DAO.
func (dao *ForumSectionsDao) Columns() ForumSectionsColumns {
return dao.columns
}
// Group returns the database configuration group name of the current DAO.
func (dao *ForumSectionsDao) Group() string {
return dao.group
}
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *ForumSectionsDao) Ctx(ctx context.Context) *gdb.Model {
model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
}
// Transaction wraps the transaction logic using function f.
// It rolls back the transaction and returns the error if function f returns a non-nil error.
// It commits the transaction and returns nil if function f returns nil.
//
// Note: Do not commit or roll back the transaction in function f,
// as it is automatically handled by this function.
func (dao *ForumSectionsDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) {
return dao.Ctx(ctx).Transaction(ctx, f)
}

View File

@@ -27,16 +27,12 @@ type UsersColumns struct {
Nickname string // 昵称 Nickname string // 昵称
Gender string // 性别0未知 1男 2女 Gender string // 性别0未知 1男 2女
BirthDate string // 生日 BirthDate string // 生日
UserType string // 用户类型:normal普通用户vip为VIP用户 UserType string // 用户类型:1 user 2 admin
VipStartAt string // VIP开始时间
VipEndAt string // VIP结束时间
CreatedAt string // 创建时间 CreatedAt string // 创建时间
UpdatedAt string // 更新时间 UpdatedAt string // 更新时间
RealityRole string // 现实身份/角色 RealityRole string // 现实身份/角色
AbnormalRole string // 异常身份/角色 AbnormalRole string // 异常身份/角色
JobTitle string // 职位 JobTitle string // 职位
Commendation string //
Admonition string //
Email string // Email string //
RedTrace string // 红轨 RedTrace string // 红轨
YellowTrace string // 黄轨 YellowTrace string // 黄轨
@@ -52,15 +48,11 @@ var usersColumns = UsersColumns{
Gender: "gender", Gender: "gender",
BirthDate: "birth_date", BirthDate: "birth_date",
UserType: "user_type", UserType: "user_type",
VipStartAt: "vip_start_at",
VipEndAt: "vip_end_at",
CreatedAt: "created_at", CreatedAt: "created_at",
UpdatedAt: "updated_at", UpdatedAt: "updated_at",
RealityRole: "reality_role", RealityRole: "reality_role",
AbnormalRole: "abnormal_role", AbnormalRole: "abnormal_role",
JobTitle: "job_title", JobTitle: "job_title",
Commendation: "Commendation",
Admonition: "Admonition",
Email: "email", Email: "email",
RedTrace: "red_trace", RedTrace: "red_trace",
YellowTrace: "yellow_trace", YellowTrace: "yellow_trace",

View File

@@ -0,0 +1,28 @@
// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package do
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
)
// ForumBoards is the golang structure of table forum_boards for DAO operations like Where/Data.
type ForumBoards struct {
g.Meta `orm:"table:forum_boards, do:true"`
Id any // 版块ID主键
SectionId any // 所属频道ID关联 forum_sections.id无外键可为空=不分区)
Name any // 版块名称
Description any // 版块简介
CoverImage any // 版块封面图URL
Status any // 状态normal=正常 hidden=隐藏 deleted=删除
DisplayOrder any // 排序值(越大越靠前)
PostCount any // 帖子总数(冗余)
TodayPostCount any // 今日发帖数(冗余,可选)
LastPostId any // 最后一篇帖子ID冗余可选
LastPostAt *gtime.Time // 最后发帖时间(冗余,可选)
CreatedAt *gtime.Time // 创建时间
UpdatedAt *gtime.Time // 更新时间
}

View File

@@ -11,16 +11,16 @@ import (
// ForumComments is the golang structure of table forum_comments for DAO operations like Where/Data. // ForumComments is the golang structure of table forum_comments for DAO operations like Where/Data.
type ForumComments struct { type ForumComments struct {
g.Meta `orm:"table:forum_comments, do:true"` g.Meta `orm:"table:forum_comments, do:true"`
Id any // 评论ID主键 Id any // 评论ID主键
UserId any // 评论发布者ID关联users.id无外键 PostId any // 所属帖子ID关联 forum_posts.id无外键
PostId any // 所属帖子ID关联forum_posts.id无外键 UserId any // 评论发布者ID关联 users.id无外键
ParentId any // 父评论IDNULL=评论非NULL=回复某条评论 ParentId any // 父评论IDNULL=一级评论非NULL=二级评论指向一级评论ID无外键
Content any // 评论内容支持emoji ReplyToUserId any // 回复的用户ID可选用于展示“回复@xxx”无外键
Status any // 评论状态normal=正常 deleted=软删除 audit=审核中 reject=审核驳回 Content any // 评论内容支持emoji
LikeCount any // 点赞数 Status any // 状态normal=正常 deleted=软删 audit=审核中 reject=驳回
ReplyCount any // 回复数(冗余字段 LikeCount any // 点赞数(冗余)
CreatedAt *gtime.Time // 评论创建时间 CreatedAt *gtime.Time // 创建时间
UpdatedAt *gtime.Time // 评论更新时间 UpdatedAt *gtime.Time // 更新时间
DeletedAt *gtime.Time // 软删除时间 DeletedAt *gtime.Time // 软删除时间
} }

View File

@@ -11,17 +11,23 @@ import (
// ForumPosts is the golang structure of table forum_posts for DAO operations like Where/Data. // ForumPosts is the golang structure of table forum_posts for DAO operations like Where/Data.
type ForumPosts struct { type ForumPosts struct {
g.Meta `orm:"table:forum_posts, do:true"` g.Meta `orm:"table:forum_posts, do:true"`
Id any // 帖子ID主键 Id any // 帖子ID主键
UserId any // 发帖用户ID关联users.id无外键 BoardId any // 所属版块ID关联 forum_boards.id无外键
Title any // 帖子标题 UserId any // 发帖用户ID关联 users.id无外键
Content any // 帖子正文(支持富文本/emoji Title any // 帖子标题
CoverImage any // 帖子封面图URL Content any // 帖子正文(支持富文本/emoji
Status any // 帖子状态normal=正常 deleted=软删除 audit=审核中 reject=审核驳回 CoverImage any // 帖子封面图URL
ViewCount any // 浏览量(冗余字段) Status any // 状态normal=正常 deleted=软删 audit=审核中 reject=驳回
LikeCount any // 点赞数(冗余字段) IsPinned any // 是否置顶0否 1是
CommentCount any // 评论数(冗余字段) IsEssence any // 是否精华0否 1是
CreatedAt *gtime.Time // 发帖时间 ViewCount any // 浏览量(冗余)
UpdatedAt *gtime.Time // 更新时间 LikeCount any // 点赞数(冗余)
DeletedAt *gtime.Time // 软删除时间 CommentCount any // 评论数(冗余)
CollectCount any // 收藏数(冗余,可选)
LastCommentId any // 最后一条评论ID冗余可选
LastCommentAt *gtime.Time // 最后评论时间(冗余,可选)
CreatedAt *gtime.Time // 发帖时间
UpdatedAt *gtime.Time // 更新时间
DeletedAt *gtime.Time // 软删除时间
} }

View File

@@ -0,0 +1,23 @@
// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package do
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
)
// ForumSections is the golang structure of table forum_sections for DAO operations like Where/Data.
type ForumSections struct {
g.Meta `orm:"table:forum_sections, do:true"`
Id any // 频道/分区ID主键
Name any // 频道名称
Description any // 频道简介
Icon any // 频道图标URL
Status any // 状态normal=正常 hidden=隐藏 deleted=删除
DisplayOrder any // 排序值(越大越靠前)
CreatedAt *gtime.Time // 创建时间
UpdatedAt *gtime.Time // 更新时间
}

View File

@@ -18,16 +18,12 @@ type Users struct {
Nickname any // 昵称 Nickname any // 昵称
Gender any // 性别0未知 1男 2女 Gender any // 性别0未知 1男 2女
BirthDate *gtime.Time // 生日 BirthDate *gtime.Time // 生日
UserType any // 用户类型:normal普通用户vip为VIP用户 UserType any // 用户类型:1 user 2 admin
VipStartAt *gtime.Time // VIP开始时间
VipEndAt *gtime.Time // VIP结束时间
CreatedAt *gtime.Time // 创建时间 CreatedAt *gtime.Time // 创建时间
UpdatedAt *gtime.Time // 更新时间 UpdatedAt *gtime.Time // 更新时间
RealityRole any // 现实身份/角色 RealityRole any // 现实身份/角色
AbnormalRole any // 异常身份/角色 AbnormalRole any // 异常身份/角色
JobTitle any // 职位 JobTitle any // 职位
Commendation any //
Admonition any //
Email any // Email any //
RedTrace any // 红轨 RedTrace any // 红轨
YellowTrace any // 黄轨 YellowTrace any // 黄轨

View File

@@ -0,0 +1,26 @@
// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package entity
import (
"github.com/gogf/gf/v2/os/gtime"
)
// ForumBoards is the golang structure for table forum_boards.
type ForumBoards struct {
Id uint64 `json:"id" orm:"id" description:"版块ID主键"` // 版块ID主键
SectionId uint64 `json:"sectionId" orm:"section_id" description:"所属频道ID关联 forum_sections.id无外键可为空=不分区)"` // 所属频道ID关联 forum_sections.id无外键可为空=不分区)
Name string `json:"name" orm:"name" description:"版块名称"` // 版块名称
Description string `json:"description" orm:"description" description:"版块简介"` // 版块简介
CoverImage string `json:"coverImage" orm:"cover_image" description:"版块封面图URL"` // 版块封面图URL
Status string `json:"status" orm:"status" description:"状态normal=正常 hidden=隐藏 deleted=删除"` // 状态normal=正常 hidden=隐藏 deleted=删除
DisplayOrder int `json:"displayOrder" orm:"display_order" description:"排序值(越大越靠前)"` // 排序值(越大越靠前)
PostCount uint `json:"postCount" orm:"post_count" description:"帖子总数(冗余)"` // 帖子总数(冗余)
TodayPostCount uint `json:"todayPostCount" orm:"today_post_count" description:"今日发帖数(冗余,可选)"` // 今日发帖数(冗余,可选)
LastPostId uint64 `json:"lastPostId" orm:"last_post_id" description:"最后一篇帖子ID冗余可选"` // 最后一篇帖子ID冗余可选
LastPostAt *gtime.Time `json:"lastPostAt" orm:"last_post_at" description:"最后发帖时间(冗余,可选)"` // 最后发帖时间(冗余,可选)
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"创建时间"` // 创建时间
UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"更新时间"` // 更新时间
}

View File

@@ -10,15 +10,15 @@ import (
// ForumComments is the golang structure for table forum_comments. // ForumComments is the golang structure for table forum_comments.
type ForumComments struct { type ForumComments struct {
Id uint64 `json:"id" orm:"id" description:"评论ID主键"` // 评论ID主键 Id uint64 `json:"id" orm:"id" description:"评论ID主键"` // 评论ID主键
UserId uint64 `json:"userId" orm:"user_id" description:"评论发布者ID关联users.id无外键"` // 评论发布者ID关联users.id无外键 PostId uint64 `json:"postId" orm:"post_id" description:"所属帖子ID关联 forum_posts.id无外键"` // 所属帖子ID关联 forum_posts.id无外键
PostId uint64 `json:"postId" orm:"post_id" description:"所属帖子ID关联forum_posts.id无外键"` // 所属帖子ID关联forum_posts.id无外键 UserId uint64 `json:"userId" orm:"user_id" description:"评论发布者ID关联 users.id无外键"` // 评论发布者ID关联 users.id无外键
ParentId uint64 `json:"parentId" orm:"parent_id" description:"父评论IDNULL=评论非NULL=回复某条评论)"` // 父评论IDNULL=评论非NULL=回复某条评论 ParentId uint64 `json:"parentId" orm:"parent_id" description:"父评论IDNULL=一级评论非NULL=二级评论指向一级评论ID无外键"` // 父评论IDNULL=一级评论非NULL=二级评论指向一级评论ID无外键
Content string `json:"content" orm:"content" description:"评论内容支持emoji"` // 评论内容支持emoji ReplyToUserId uint64 `json:"replyToUserId" orm:"reply_to_user_id" description:"回复的用户ID可选用于展示“回复@xxx”无外键"` // 回复的用户ID可选用于展示“回复@xxx”无外键
Status string `json:"status" orm:"status" description:"评论状态normal=正常 deleted=软删除 audit=审核中 reject=审核驳回"` // 评论状态normal=正常 deleted=软删除 audit=审核中 reject=审核驳回 Content string `json:"content" orm:"content" description:"评论内容支持emoji"` // 评论内容支持emoji
LikeCount uint `json:"likeCount" orm:"like_count" description:"点赞数"` // 点赞数 Status string `json:"status" orm:"status" description:"状态normal=正常 deleted=软删 audit=审核中 reject=驳回"` // 状态normal=正常 deleted=软删 audit=审核中 reject=驳回
ReplyCount uint `json:"replyCount" orm:"reply_count" description:"回复数(冗余字段"` // 回复数(冗余字段 LikeCount uint `json:"likeCount" orm:"like_count" description:"点赞数(冗余)"` // 点赞数(冗余)
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"评论创建时间"` // 评论创建时间 CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"创建时间"` // 创建时间
UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"评论更新时间"` // 评论更新时间 UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"更新时间"` // 更新时间
DeletedAt *gtime.Time `json:"deletedAt" orm:"deleted_at" description:"软删除时间"` // 软删除时间 DeletedAt *gtime.Time `json:"deletedAt" orm:"deleted_at" description:"软删除时间"` // 软删除时间
} }

View File

@@ -10,16 +10,22 @@ import (
// ForumPosts is the golang structure for table forum_posts. // ForumPosts is the golang structure for table forum_posts.
type ForumPosts struct { type ForumPosts struct {
Id uint64 `json:"id" orm:"id" description:"帖子ID主键"` // 帖子ID主键 Id uint64 `json:"id" orm:"id" description:"帖子ID主键"` // 帖子ID主键
UserId uint64 `json:"userId" orm:"user_id" description:"发帖用户ID关联users.id无外键"` // 发帖用户ID关联users.id无外键 BoardId uint64 `json:"boardId" orm:"board_id" description:"所属版块ID关联 forum_boards.id无外键"` // 所属版块ID关联 forum_boards.id无外键
Title string `json:"title" orm:"title" description:"帖子标题"` // 帖子标题 UserId uint64 `json:"userId" orm:"user_id" description:"发帖用户ID关联 users.id无外键"` // 发帖用户ID关联 users.id无外键
Content string `json:"content" orm:"content" description:"帖子正文(支持富文本/emoji"` // 帖子正文(支持富文本/emoji Title string `json:"title" orm:"title" description:"帖子标题"` // 帖子标题
CoverImage string `json:"coverImage" orm:"cover_image" description:"帖子封面图URL"` // 帖子封面图URL Content string `json:"content" orm:"content" description:"帖子正文(支持富文本/emoji"` // 帖子正文(支持富文本/emoji
Status string `json:"status" orm:"status" description:"帖子状态normal=正常 deleted=软删除 audit=审核中 reject=审核驳回"` // 帖子状态normal=正常 deleted=软删除 audit=审核中 reject=审核驳回 CoverImage string `json:"coverImage" orm:"cover_image" description:"帖子封面图URL"` // 帖子封面图URL
ViewCount uint `json:"viewCount" orm:"view_count" description:"浏览量(冗余字段)"` // 浏览量(冗余字段) Status string `json:"status" orm:"status" description:"状态normal=正常 deleted=软删 audit=审核中 reject=驳回"` // 状态normal=正常 deleted=软删 audit=审核中 reject=驳回
LikeCount uint `json:"likeCount" orm:"like_count" description:"点赞数(冗余字段)"` // 点赞数(冗余字段) IsPinned int `json:"isPinned" orm:"is_pinned" description:"是否置顶0否 1是"` // 是否置顶0否 1是
CommentCount uint `json:"commentCount" orm:"comment_count" description:"评论数(冗余字段)"` // 评论数(冗余字段) IsEssence int `json:"isEssence" orm:"is_essence" description:"是否精华0否 1是"` // 是否精华0否 1是
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"发帖时间"` // 发帖时间 ViewCount uint `json:"viewCount" orm:"view_count" description:"浏览量(冗余)"` // 浏览量(冗余)
UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"更新时间"` // 更新时间 LikeCount uint `json:"likeCount" orm:"like_count" description:"点赞数(冗余)"` // 点赞数(冗余)
DeletedAt *gtime.Time `json:"deletedAt" orm:"deleted_at" description:"软删除时间"` // 软删除时间 CommentCount uint `json:"commentCount" orm:"comment_count" description:"评论数(冗余)"` // 评论数(冗余)
CollectCount uint `json:"collectCount" orm:"collect_count" description:"收藏数(冗余,可选)"` // 收藏数(冗余,可选)
LastCommentId uint64 `json:"lastCommentId" orm:"last_comment_id" description:"最后一条评论ID冗余可选"` // 最后一条评论ID冗余可选
LastCommentAt *gtime.Time `json:"lastCommentAt" orm:"last_comment_at" description:"最后评论时间(冗余,可选)"` // 最后评论时间(冗余,可选)
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"发帖时间"` // 发帖时间
UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"更新时间"` // 更新时间
DeletedAt *gtime.Time `json:"deletedAt" orm:"deleted_at" description:"软删除时间"` // 软删除时间
} }

View File

@@ -0,0 +1,21 @@
// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package entity
import (
"github.com/gogf/gf/v2/os/gtime"
)
// ForumSections is the golang structure for table forum_sections.
type ForumSections struct {
Id uint64 `json:"id" orm:"id" description:"频道/分区ID主键"` // 频道/分区ID主键
Name string `json:"name" orm:"name" description:"频道名称"` // 频道名称
Description string `json:"description" orm:"description" description:"频道简介"` // 频道简介
Icon string `json:"icon" orm:"icon" description:"频道图标URL"` // 频道图标URL
Status string `json:"status" orm:"status" description:"状态normal=正常 hidden=隐藏 deleted=删除"` // 状态normal=正常 hidden=隐藏 deleted=删除
DisplayOrder int `json:"displayOrder" orm:"display_order" description:"排序值(越大越靠前)"` // 排序值(越大越靠前)
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"创建时间"` // 创建时间
UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"更新时间"` // 更新时间
}

View File

@@ -10,24 +10,20 @@ import (
// Users is the golang structure for table users. // Users is the golang structure for table users.
type Users struct { type Users struct {
Id uint64 `json:"id" orm:"id" description:"用户ID"` // 用户ID Id uint64 `json:"id" orm:"id" description:"用户ID"` // 用户ID
Account string `json:"account" orm:"account" description:"账号"` // 账号 Account string `json:"account" orm:"account" description:"账号"` // 账号
Password string `json:"password" orm:"password" description:"密码哈希"` // 密码哈希 Password string `json:"password" orm:"password" description:"密码哈希"` // 密码哈希
Nickname string `json:"nickname" orm:"nickname" description:"昵称"` // 昵称 Nickname string `json:"nickname" orm:"nickname" description:"昵称"` // 昵称
Gender int `json:"gender" orm:"gender" description:"性别0未知 1男 2女"` // 性别0未知 1男 2女 Gender int `json:"gender" orm:"gender" description:"性别0未知 1男 2女"` // 性别0未知 1男 2女
BirthDate *gtime.Time `json:"birthDate" orm:"birth_date" description:"生日"` // 生日 BirthDate *gtime.Time `json:"birthDate" orm:"birth_date" description:"生日"` // 生日
UserType string `json:"userType" orm:"user_type" description:"用户类型:normal普通用户vip为VIP用户"` // 用户类型normal普通用户vip为VIP用户 UserType string `json:"userType" orm:"user_type" description:"用户类型:1 user 2 admin"` // 用户类型1 user 2 admin
VipStartAt *gtime.Time `json:"vipStartAt" orm:"vip_start_at" description:"VIP开始时间"` // VIP开始时间 CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"创建时间"` // 创建时间
VipEndAt *gtime.Time `json:"vipEndAt" orm:"vip_end_at" description:"VIP结束时间"` // VIP结束时间 UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"更新时间"` // 更新时间
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"创建时间"` // 创建时间 RealityRole string `json:"realityRole" orm:"reality_role" description:"现实身份/角色"` // 现实身份/角色
UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"更新时间"` // 更新时间 AbnormalRole string `json:"abnormalRole" orm:"abnormal_role" description:"异常身份/角色"` // 异常身份/角色
RealityRole string `json:"realityRole" orm:"reality_role" description:"现实身份/角色"` // 现实身份/角色 JobTitle string `json:"jobTitle" orm:"job_title" description:"职位"` // 职位
AbnormalRole string `json:"abnormalRole" orm:"abnormal_role" description:"异常身份/角色"` // 异常身份/角色 Email string `json:"email" orm:"email" description:""` //
JobTitle string `json:"jobTitle" orm:"job_title" description:"职位"` // 职位 RedTrace int `json:"redTrace" orm:"red_trace" description:"红轨"` // 红轨
Commendation int `json:"commendation" orm:"Commendation" description:""` // YellowTrace int `json:"yellowTrace" orm:"yellow_trace" description:"黄轨"` // 黄轨
Admonition int `json:"admonition" orm:"Admonition" description:""` // BlueTrace int `json:"blueTrace" orm:"blue_trace" description:"蓝轨"` // 蓝轨
Email string `json:"email" orm:"email" description:""` //
RedTrace int `json:"redTrace" orm:"red_trace" description:"红轨"` // 红轨
YellowTrace int `json:"yellowTrace" orm:"yellow_trace" description:"黄轨"` // 黄轨
BlueTrace int `json:"blueTrace" orm:"blue_trace" description:"蓝轨"` // 蓝轨
} }

View File

@@ -3,7 +3,7 @@
-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
line-height: 1.6; line-height: 1.6;
font-weight: 400; font-weight: 400;
color: #0f172a; color: #e2e8f0;
background-color: #0b1120; background-color: #0b1120;
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;

View File

@@ -478,7 +478,7 @@ onMounted(() => {
background: #0b1120; background: #0b1120;
position: relative; position: relative;
padding: 32px 16px; padding: 32px 16px;
color: #0f172a; color: #e2e8f0;
overflow: hidden; overflow: hidden;
} }
.login-page.scanning::before { .login-page.scanning::before {