美化排版前端管理后台

This commit is contained in:
2026-06-29 16:59:56 +08:00
parent f0dce7ad91
commit ec7ee7ba56
122 changed files with 18418 additions and 38 deletions

View File

@@ -22,6 +22,36 @@ func NewAdminHandler(store *storage.ProductStore, cfg *config.Config, siteStore
return &AdminHandler{store: store, cfg: cfg, siteStore: siteStore, orderStore: orderStore, chatStore: chatStore}
}
// GetAnnouncement 公开获取公告内容。
func (h *AdminHandler) GetAnnouncement(c *gin.Context) {
ann, err := h.siteStore.GetAnnouncement()
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"data": ann})
}
// SetAnnouncement 管理员更新公告内容。
func (h *AdminHandler) SetAnnouncement(c *gin.Context) {
if !h.requireAdmin(c) {
return
}
var payload struct {
Content string `json:"content"`
}
if err := c.ShouldBindJSON(&payload); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid body"})
return
}
if err := h.siteStore.SetAnnouncement(payload.Content); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
ann, _ := h.siteStore.GetAnnouncement()
c.JSON(http.StatusOK, gin.H{"data": ann})
}
// requireAdmin 校验管理员令牌。
// 优先级X-Admin-Token 请求头 > Authorization 请求头 > ?token 查询参数(旧版兼容)。
func (h *AdminHandler) requireAdmin(c *gin.Context) bool {

View File

@@ -2,6 +2,7 @@ package storage
import (
"strconv"
"time"
"gorm.io/gorm"
"gorm.io/gorm/clause"
@@ -9,6 +10,28 @@ import (
"mengyastore-backend/internal/database"
)
type Announcement struct {
Content string `json:"content"`
Version string `json:"version"`
}
func (s *SiteStore) GetAnnouncement() (Announcement, error) {
content, err := s.get("announcementContent")
if err != nil {
return Announcement{}, err
}
version, _ := s.get("announcementVersion")
return Announcement{Content: content, Version: version}, nil
}
func (s *SiteStore) SetAnnouncement(content string) error {
version := strconv.FormatInt(time.Now().UnixMilli(), 10)
if err := s.set("announcementContent", content); err != nil {
return err
}
return s.set("announcementVersion", version)
}
type SiteStore struct {
db *gorm.DB
}