feat: 用户徽章与等级体系,积分经济管理重构

- 新增徽章系统:badge 服务与 handler、管理端配置页、BadgeChip/LevelBadge 展示组件
- 新增等级模型:model/level 及前端 levels 元数据
- 管理端经济模块拆分为 points/badges/levels 独立页面,EconomySettings 迁入设置
- 积分、签到、评论等服务适配等级与徽章逻辑
This commit is contained in:
2026-09-25 16:38:29 +08:00
parent 7b327bc8cc
commit 4ae57d9392
57 changed files with 3939 additions and 147 deletions

View File

@@ -57,6 +57,8 @@ type AdminUserItem struct {
PostCount int64 `json:"post_count"`
CommentCount int64 `json:"comment_count"`
Points int `json:"points"`
TotalPoints int `json:"total_points"`
Level int `json:"level"` // AfterFind 按 TotalPoints 计算
CreatedAt time.Time `json:"created_at"`
LastSeenAt *time.Time `json:"last_seen_at"`
Online bool `json:"online"`
@@ -90,7 +92,7 @@ type AdminUserListQuery struct {
Keyword string // 用户名 / 昵称 / 邮箱模糊匹配
Role string // "" 全部 | "staff" 管理团队 | 具体角色枚举
Status string // "" 全部 | "banned" 已封禁 | "normal" 正常
Sort string // 白名单列:id / role / status / points / last_login / counts / created_at / online
Sort string // 白名单列:id / role / status / points / total_points / last_login / counts / created_at / online
Dir string // asc | desc;非法值按 desc
}
@@ -110,6 +112,8 @@ func adminUserOrderSQL(sort, dir string) string {
return fmt.Sprintf("users.banned %s, users.id DESC", ord)
case "points":
return fmt.Sprintf("users.points %s, users.id DESC", ord)
case "total_points":
return fmt.Sprintf("users.total_points %s, users.id DESC", ord)
case "created_at":
return fmt.Sprintf("users.created_at %s, users.id DESC", ord)
case "online":
@@ -234,6 +238,8 @@ func (s *AdminUserService) toItems(users []model.User) []AdminUserItem {
Banned: u.Banned,
CanManageMessages: u.CanManageMessages,
Points: u.Points,
TotalPoints: u.TotalPoints,
Level: u.Level,
CreatedAt: u.CreatedAt,
LastSeenAt: u.LastSeenAt,
}