From e79d2e877c77d2d9d446215f5b0f12ae9a889fd5 Mon Sep 17 00:00:00 2001 From: RichZDS <3388214266@qq.com> Date: Thu, 5 Feb 2026 23:15:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=AE=BA=E5=9D=9B=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=20=E8=AF=84=E8=AE=BAcss=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Backend/api/forum/v1/forum_posts.go | 1 + Backend/internal/logic/Forum/post.go | 53 +++++++++++++++++-- Backend/internal/model/forum.go | 1 + ...TrangleAgentApiForumV1ForumPostsViewRes.ts | 2 + ...leAgentInternalModelForumPostViewParams.ts | 2 + Frontend/src/views/Forum.vue | 46 +++++++++++++--- 6 files changed, 94 insertions(+), 11 deletions(-) diff --git a/Backend/api/forum/v1/forum_posts.go b/Backend/api/forum/v1/forum_posts.go index e9a30ef..c852004 100644 --- a/Backend/api/forum/v1/forum_posts.go +++ b/Backend/api/forum/v1/forum_posts.go @@ -54,6 +54,7 @@ type ForumPostsViewReq struct { // ForumPostsViewRes 查看帖子响应 type ForumPostsViewRes struct { + UserName string `json:"name" description:"发帖用户昵称"` model.ForumPostViewParams } diff --git a/Backend/internal/logic/Forum/post.go b/Backend/internal/logic/Forum/post.go index 0987efd..ddde6b1 100644 --- a/Backend/internal/logic/Forum/post.go +++ b/Backend/internal/logic/Forum/post.go @@ -30,9 +30,6 @@ func (s *sForumPosts) Create(ctx context.Context, req *v1.ForumPostsCreateReq) ( if len(req.Title) < 5 || len(req.Title) > 100 { return nil, gerror.New("标题长度要在5-100之间") } - if len(req.Content) < 5 || len(req.Content) > 10000 { - return nil, gerror.New("内容长度要在5-10000之间") - } if req.BoardId == 0 { return nil, gerror.New("板块ID不能为空") } @@ -107,7 +104,17 @@ func (s *sForumPosts) View(ctx context.Context, req *v1.ForumPostsViewReq) (res if err != nil { return nil, gerror.Wrap(err, "查询帖子失败") } + // 查询用户名称 + type User struct { + Name string `json:"name" orm:"nickname" description:"用户昵称"` + } + var user User + err = dao.Users.Ctx(ctx).Where(dao.Users.Columns().Id, post.UserId).Scan(&user) + if err != nil { + return nil, gerror.Wrap(err, "查询用户昵称失败") + } return &v1.ForumPostsViewRes{ + UserName: user.Name, ForumPostViewParams: post, }, nil } @@ -159,6 +166,46 @@ func (s *sForumPosts) List(ctx context.Context, req *v1.ForumPostsListReq) (res if err != nil { return nil, gerror.Wrap(err, "查询帖子列表失败") } + // 查询用户名称 + if len(list) > 0 { + type User struct { + Id uint64 `json:"id" orm:"id"` + Name string `json:"name" orm:"nickname"` + } + var users []User + + // 构造去重后的用户 ID 切片 + idSet := make(map[uint64]struct{}, len(list)) + for _, item := range list { + idSet[item.UserId] = struct{}{} + } + + userIds := make([]uint64, 0, len(idSet)) + for id := range idSet { + userIds = append(userIds, id) + } + + err = dao.Users.Ctx(ctx). + Fields(dao.Users.Columns().Id, dao.Users.Columns().Nickname). + Where(dao.Users.Columns().Id, userIds). + Scan(&users) + if err != nil { + return nil, gerror.Wrap(err, "查询用户名称失败") + } + + // 建立 userId -> name 映射 + userMap := make(map[uint64]string, len(users)) + for _, user := range users { + userMap[user.Id] = user.Name + } + + // 关联用户名称 + for _, item := range list { + if name, ok := userMap[item.UserId]; ok { + item.Name = name + } + } + } return &v1.ForumPostsListRes{ PageResult: response.PageResult{ Total: total, diff --git a/Backend/internal/model/forum.go b/Backend/internal/model/forum.go index bab18d1..acfb78c 100644 --- a/Backend/internal/model/forum.go +++ b/Backend/internal/model/forum.go @@ -58,6 +58,7 @@ type ForumPostViewParams struct { Id uint64 `json:"id" description:"帖子ID"` BoardId uint64 `json:"boardId" description:"所属版块ID"` UserId uint64 `json:"userId" description:"发帖用户ID"` + Name string `json:"name" description:"发帖用户名称"` Title string `json:"title" description:"帖子标题"` Content string `json:"content" description:"帖子正文"` CoverImage string `json:"coverImage" description:"帖子封面图URL"` diff --git a/Frontend/src/api/interface/apiTypes/TrangleAgentApiForumV1ForumPostsViewRes.ts b/Frontend/src/api/interface/apiTypes/TrangleAgentApiForumV1ForumPostsViewRes.ts index e1091ee..2b73e59 100644 --- a/Frontend/src/api/interface/apiTypes/TrangleAgentApiForumV1ForumPostsViewRes.ts +++ b/Frontend/src/api/interface/apiTypes/TrangleAgentApiForumV1ForumPostsViewRes.ts @@ -1,4 +1,6 @@ export interface TrangleAgentApiForumV1ForumPostsViewRes { + /** 发帖用户名称 */ + name?: string; /** 帖子ID */ id?: number; /** 所属版块ID */ diff --git a/Frontend/src/api/interface/apiTypes/TrangleAgentInternalModelForumPostViewParams.ts b/Frontend/src/api/interface/apiTypes/TrangleAgentInternalModelForumPostViewParams.ts index 23b2a7d..94244d2 100644 --- a/Frontend/src/api/interface/apiTypes/TrangleAgentInternalModelForumPostViewParams.ts +++ b/Frontend/src/api/interface/apiTypes/TrangleAgentInternalModelForumPostViewParams.ts @@ -5,6 +5,8 @@ export interface TrangleAgentInternalModelForumPostViewParams { boardId?: number; /** 发帖用户ID */ userId?: number; + /** 发帖用户名称 */ + name?: string; /** 帖子标题 */ title?: string; /** 帖子正文 */ diff --git a/Frontend/src/views/Forum.vue b/Frontend/src/views/Forum.vue index 36f83c6..b2f75c2 100644 --- a/Frontend/src/views/Forum.vue +++ b/Frontend/src/views/Forum.vue @@ -3,7 +3,7 @@