diff --git a/.gitignore b/.gitignore index 690dfe0..a17446f 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,6 @@ *.log *.out *.http -.DS_Store \ No newline at end of file +.DS_Store +treehole +treehole.exe diff --git a/docs/docs.go b/docs/docs.go index 948a7b6..7ebf2ce 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -3822,7 +3822,7 @@ const docTemplate = `{ } }, "frozen": { - "description": "冻结帖子,如果冻结则发帖不会更新 UpdatedAt", + "description": "冻结状态,仅管理员可见", "type": "boolean" }, "good": { diff --git a/docs/swagger.json b/docs/swagger.json index f2edc41..a729d6c 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -3815,7 +3815,7 @@ } }, "frozen": { - "description": "冻结帖子,如果冻结则发帖不会更新 UpdatedAt", + "description": "冻结状态,仅管理员可见", "type": "boolean" }, "good": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index e6ab127..8748f92 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -505,7 +505,7 @@ definitions: type: array type: object frozen: - description: 冻结帖子,如果冻结则发帖不会更新 UpdatedAt + description: 冻结状态,仅管理员可见 type: boolean good: type: boolean diff --git a/models/hole.go b/models/hole.go index 508b544..2006bf3 100644 --- a/models/hole.go +++ b/models/hole.go @@ -39,7 +39,7 @@ type Hole struct { Locked bool `json:"locked" gorm:"not null;default:false"` // 冻结帖子,如果冻结则发帖不会更新 UpdatedAt - Frozen bool `json:"frozen" gorm:"not null;default:false"` + Frozen bool `json:"-" gorm:"not null;default:false"` Good bool `json:"good" gorm:"not null;default:false"` @@ -73,6 +73,9 @@ type Hole struct { // 兼容旧版 id HoleID int `json:"hole_id" gorm:"-:all"` + // 冻结状态,仅管理员可见 + FrozenFrontend *bool `json:"frozen,omitempty" gorm:"-:all"` + // 返回给前端的楼层列表,包括首楼、尾楼和预加载的前 n 个楼层 HoleFloor struct { FirstFloor *Floor `json:"first_floor"` // 首楼 @@ -274,6 +277,15 @@ func (holes Holes) Preprocess(c *fiber.Ctx) error { return err } + // Set FrozenFrontend field for admin users only + // If there's an error getting user info, silently skip (safe default: don't show frozen field) + user, err := GetCurrLoginUser(c) + if err == nil && user.IsAdmin { + for _, hole := range holes { + hole.FrozenFrontend = &hole.Frozen + } + } + //user, err := GetUser(c) //if err != nil { // return err