2e3345cdfc
修复雪花 ID 精度丢失(真 bug) - bottom-sheet 的 postId 声明为 Number,而 ID 是 18 位雪花字符串, 超出 JS 安全整数范围:339346584095428608 会被转成 ...600, 评论弹层实际查的是不存在的帖子。改为 String 记录 - 后端 DELETE /records/:id 早已就绪但前端从未调用,记错了删不掉。 时间轴支持长按删除 - 时间轴加类型筛选(体重/便便/饮食/异常/用药/疫苗/消费/照片), 后端 ?type= 本就支持 用户侧内容删除(UGC 合规:用户应能删除自己发布的内容) - 新增 DELETE /posts/:id 与 DELETE /comments/:id,仅限本人, 越权返回 40300;帖子软删除,评论删除同步递减 comment_count - 评论列表返回 is_self;社区长按自己的帖子、长按自己的评论可删 AI 聊天历史 - ai_messages 一直在写但没有查询接口,每次打开弹层都是空白。 新增 GET /api/ai/messages,弹层打开时接在开场白后加载 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
36 lines
794 B
Go
36 lines
794 B
Go
package handler
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"github.com/sundynix/pets-be/internal/service"
|
|
"github.com/sundynix/pets-be/pkg/errcode"
|
|
"github.com/sundynix/pets-be/pkg/response"
|
|
)
|
|
|
|
// idParam 取路径参数(字符串雪花 ID)
|
|
func idParam(c *gin.Context, key string) string {
|
|
return c.Param(key)
|
|
}
|
|
|
|
// jsonMarshal 便捷序列化
|
|
func jsonMarshal(v any) ([]byte, error) {
|
|
return json.Marshal(v)
|
|
}
|
|
|
|
// respondErr 统一错误响应:区分 not found 与内部错误
|
|
func respondErr(c *gin.Context, err error) {
|
|
if errors.Is(err, service.ErrNotFound) {
|
|
response.Fail(c, errcode.ErrNotFound, "")
|
|
return
|
|
}
|
|
if errors.Is(err, service.ErrForbidden) {
|
|
response.Fail(c, errcode.ErrForbidden, err.Error())
|
|
return
|
|
}
|
|
response.FailErr(c, err)
|
|
}
|