From 535ef08da761ed8cecc8e5d7b583c969d1583dae Mon Sep 17 00:00:00 2001 From: Blizzard Date: Wed, 29 Jul 2026 16:19:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AF=84=E8=AE=BA=E9=85=8D=E5=9B=BE?= =?UTF-8?q?=E6=95=B4=E6=9D=A1=E9=93=BE=E8=B7=AF=E8=A1=A5=E5=85=A8=20+=20?= =?UTF-8?q?=E5=AE=A0=E7=89=A9=E5=88=87=E6=8D=A2=E6=9D=A1=E5=90=B8=E9=A1=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 评论图片传了等于没传 上次只做了一半:model 加了 Images 字段、前端做了上传 UI,但 handler 的 commentReq 没有 images、service 的 CreateComment 连 参数都没有,图片上传完就丢了;评论列表也从没渲染过图片。 补齐:请求体 → service 落库(JSON 数组) → 列表回显 → 点击大图预览。 实测带两张图的评论和纯文字评论各存各的,互不影响。 ## 宠物切换条吸顶 首页/计划/记录/报告四页的 pet-switch 原本在 scroll-view 里,滚下去 就找不到了。而切宠物是随时要用的动作——多宠用户看着 A 的数据想切到 B,还得先滚回顶部。 移出滚动区,放在导航栏下方做成固定的一条,带毛玻璃和分隔线。首页的 问候语留在滚动区里,滚走就滚走,反正它只在刚进页面时有意义。 Co-Authored-By: Claude Opus 5 --- pets-be/internal/handler/community.go | 5 +++-- pets-be/internal/service/community.go | 6 +++++- pets-fe/app.wxss | 14 ++++++++++++++ pets-fe/components/bottom-sheet/bottom-sheet.js | 5 +++++ pets-fe/components/bottom-sheet/bottom-sheet.wxml | 5 +++++ pets-fe/components/bottom-sheet/bottom-sheet.wxss | 2 ++ pets-fe/pages/home/home.wxml | 4 ++-- pets-fe/pages/plan/plan.wxml | 4 ++-- pets-fe/pages/record/record.wxml | 4 ++-- pets-fe/pages/report/report.wxml | 4 ++-- 10 files changed, 42 insertions(+), 11 deletions(-) diff --git a/pets-be/internal/handler/community.go b/pets-be/internal/handler/community.go index 7d448cd..b5367e8 100644 --- a/pets-be/internal/handler/community.go +++ b/pets-be/internal/handler/community.go @@ -113,7 +113,8 @@ func (h *Handler) ListComments(c *gin.Context) { } type commentReq struct { - Content string `json:"content"` + Content string `json:"content"` + Images []string `json:"images"` } // CreateComment POST /api/posts/:id/comments @@ -127,7 +128,7 @@ func (h *Handler) CreateComment(c *gin.Context) { response.FailParams(c, "评论内容不能为空") return } - comment, err := h.svc.CreateComment(middleware.UserID(c), idParam(c, "id"), req.Content) + comment, err := h.svc.CreateComment(middleware.UserID(c), idParam(c, "id"), req.Content, req.Images) if err != nil { respondErr(c, err) return diff --git a/pets-be/internal/service/community.go b/pets-be/internal/service/community.go index 077b821..ebb0ec7 100644 --- a/pets-be/internal/service/community.go +++ b/pets-be/internal/service/community.go @@ -209,7 +209,7 @@ func (s *Service) ListComments(userID, postID string, offset, limit int) ([]mode } // CreateComment 评论 -func (s *Service) CreateComment(userID, postID string, content string) (*model.Comment, error) { +func (s *Service) CreateComment(userID, postID string, content string, images []string) (*model.Comment, error) { if _, err := s.GetPost(postID); err != nil { return nil, err } @@ -219,6 +219,10 @@ func (s *Service) CreateComment(userID, postID string, content string) (*model.C name = user.Nickname } comment := model.Comment{PostID: postID, UserID: userID, AuthorName: name, Content: content, Status: "published"} + // 配图存 JSON 数组。空数组也要显式写,否则前端拿到 null 还要额外判空 + if b, err := json.Marshal(images); err == nil && len(images) > 0 { + comment.Images = b + } if err := s.db.Transaction(func(tx *gorm.DB) error { if err := tx.Create(&comment).Error; err != nil { return err diff --git a/pets-fe/app.wxss b/pets-fe/app.wxss index abbe876..ca59719 100644 --- a/pets-fe/app.wxss +++ b/pets-fe/app.wxss @@ -357,3 +357,17 @@ page{scrollbar-width:none;-ms-overflow-style:none} } .no-pet-b{font-size:var(--fs-lg);font-weight:var(--fw-b)} .no-pet-p{color:var(--muted);font-size:var(--fs-sm);margin:var(--sp-2) 0 var(--sp-4);line-height:1.6} + +/* 宠物切换条固定在导航栏下方。它原本在 scroll-view 里,滚下去就找不到了, + 而切宠物是随时要用的动作——尤其多宠用户,看着 A 的数据想切到 B + 还得先滚回顶部。移出滚动区,四个主页面通用。 */ +.pet-bar{ + flex:none; + padding:var(--sp-2) var(--pad-x) 0; + background:rgba(250,247,242,.92); + backdrop-filter:blur(20rpx); + -webkit-backdrop-filter:blur(20rpx); + border-bottom:1rpx solid rgba(238,230,220,.7); +} +/* 条内的 pet-switch 自己带 padding-bottom,这里不再叠加 */ +.pet-bar .pet-switch{padding-bottom:var(--sp-2)} diff --git a/pets-fe/components/bottom-sheet/bottom-sheet.js b/pets-fe/components/bottom-sheet/bottom-sheet.js index e69529d..ac93f06 100644 --- a/pets-fe/components/bottom-sheet/bottom-sheet.js +++ b/pets-fe/components/bottom-sheet/bottom-sheet.js @@ -416,6 +416,7 @@ Component({ timeText: fmtAgo(c.created_at), // 没有头像字段,用昵称首字做个色块,比一律显示同一个 emoji 强 initial: (c.author_name || '?').slice(0, 1), + imgs: Array.isArray(c.images) ? c.images : [], })), }), ) @@ -954,6 +955,10 @@ Component({ wx.showToast({ title: (e && e.message) || '上传失败', icon: 'none' }); }); }, + onPreviewCommentImage(e) { + const { urls, cur } = e.currentTarget.dataset; + if (urls && urls.length) wx.previewImage({ urls, current: cur }); + }, onRemoveCommentImage(e) { const list = this.data.commentImages.slice(); list.splice(e.currentTarget.dataset.index, 1); diff --git a/pets-fe/components/bottom-sheet/bottom-sheet.wxml b/pets-fe/components/bottom-sheet/bottom-sheet.wxml index 254e776..8be9fb2 100644 --- a/pets-fe/components/bottom-sheet/bottom-sheet.wxml +++ b/pets-fe/components/bottom-sheet/bottom-sheet.wxml @@ -330,6 +330,11 @@ module.exports.sel = function (map, key, index, def) { {{item.timeText}} {{item.content}} + + + diff --git a/pets-fe/components/bottom-sheet/bottom-sheet.wxss b/pets-fe/components/bottom-sheet/bottom-sheet.wxss index f5732a4..360119a 100644 --- a/pets-fe/components/bottom-sheet/bottom-sheet.wxss +++ b/pets-fe/components/bottom-sheet/bottom-sheet.wxss @@ -125,3 +125,5 @@ .cm-bar{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-3)} .cm-pic{display:flex;align-items:center;gap:var(--sp-1);color:var(--muted);font-size:var(--fs-sm)} .cm-count{margin-left:auto;color:var(--muted2);font-size:var(--fs-cap)} +.cm-imgs{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin-top:var(--sp-2)} +.cm-img{width:150rpx;height:150rpx;border-radius:var(--r-sm)} diff --git a/pets-fe/pages/home/home.wxml b/pets-fe/pages/home/home.wxml index aa928af..bd1a877 100644 --- a/pets-fe/pages/home/home.wxml +++ b/pets-fe/pages/home/home.wxml @@ -1,5 +1,7 @@ + + @@ -13,8 +15,6 @@ - - diff --git a/pets-fe/pages/plan/plan.wxml b/pets-fe/pages/plan/plan.wxml index b1b3270..eada325 100644 --- a/pets-fe/pages/plan/plan.wxml +++ b/pets-fe/pages/plan/plan.wxml @@ -1,9 +1,9 @@ + + - - 还没有毛孩子的档案 diff --git a/pets-fe/pages/record/record.wxml b/pets-fe/pages/record/record.wxml index 87d6d5f..2568598 100644 --- a/pets-fe/pages/record/record.wxml +++ b/pets-fe/pages/record/record.wxml @@ -1,9 +1,9 @@ + + - - 还没有毛孩子的档案 diff --git a/pets-fe/pages/report/report.wxml b/pets-fe/pages/report/report.wxml index 9d14b12..5561f90 100644 --- a/pets-fe/pages/report/report.wxml +++ b/pets-fe/pages/report/report.wxml @@ -1,9 +1,9 @@ + + - - 还没有毛孩子的档案