From 2dea693b0d78246e0db41e8e2daaf6ad9cc3ed8c Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期五, 08 十二月 2023 16:49:29 +0800 Subject: [PATCH] fix --- model/model.go | 30 ++++++++++++++++++++++-------- 1 files changed, 22 insertions(+), 8 deletions(-) diff --git a/model/model.go b/model/model.go index 920a3e6..533c35d 100644 --- a/model/model.go +++ b/model/model.go @@ -9,7 +9,7 @@ ) type CommonModel struct { - ID uint `gorm:"primary_key;autoIncrement:false" json:"-"` + ID uint `gorm:"primary_key" json:"-"` IDStr string `json:"ID" gorm:"-"` CreatedAt time.Time UpdatedAt time.Time @@ -20,21 +20,35 @@ if c.ID == 0 { id := snowflake.GenerateID() if id < 0 { + // 澶勭悊 ID 涓鸿礋鏁扮殑鎯呭喌锛堝彲閫夛級 id = snowflake.GenerateID() } c.ID = uint(id) } } -func (c CommonModel) UnmarshalJSON(b []byte) (err error) { - id, err := strconv.ParseUint(c.IDStr, 10, 64) - if err != nil { + +func (c *CommonModel) UnmarshalJSON(b []byte) error { + var data map[string]interface{} + if err := json.Unmarshal(b, &data); err != nil { return err } - c.ID = uint(id) - return + + if idStr, ok := data["ID"].(string); ok { + id, err := strconv.ParseUint(idStr, 10, 64) + if err != nil { + return err + } + c.ID = uint(id) + c.IDStr = idStr + } + + return nil } -func (c CommonModel) MarshalJSON() ([]byte, error) { - c.IDStr = strconv.FormatUint(uint64(c.ID), 10) +func (c *CommonModel) MarshalJSON() ([]byte, error) { + if c.ID != 0 && c.IDStr == "" { + c.IDStr = strconv.FormatUint(uint64(c.ID), 10) + } + return json.Marshal(c) } -- Gitblit v1.8.0