feat: 用户徽章与等级体系,积分经济管理重构
- 新增徽章系统:badge 服务与 handler、管理端配置页、BadgeChip/LevelBadge 展示组件 - 新增等级模型:model/level 及前端 levels 元数据 - 管理端经济模块拆分为 points/badges/levels 独立页面,EconomySettings 迁入设置 - 积分、签到、评论等服务适配等级与徽章逻辑
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
"use client";
|
||||
"use client";
|
||||
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
@@ -29,6 +29,8 @@ import { useAllowComments, useCommentsRequireLogin } from "@/components/Comments
|
||||
import CommentsUnsupported from "@/components/CommentsUnsupported";
|
||||
import CommentsLoginRequired from "@/components/CommentsLoginRequired";
|
||||
import Avatar from "./Avatar";
|
||||
import LevelBadge from "./LevelBadge";
|
||||
import BadgeChip from "./BadgeChip";
|
||||
import Pagination from "./Pagination";
|
||||
import MarkdownBodyClient from "@/components/MarkdownBodyClient";
|
||||
import MarkdownEditor from "@/components/MarkdownEditor";
|
||||
@@ -994,6 +996,11 @@ export default function CommentSection({
|
||||
) : (
|
||||
<span className="cmt-name">{authorName}</span>
|
||||
)}
|
||||
{author && <LevelBadge level={author.level} />}
|
||||
{author &&
|
||||
(author.badges ?? []).slice(0, 2).map((ub) => (
|
||||
<BadgeChip key={ub.id} badge={ub.badge} />
|
||||
))}
|
||||
{isOp && <span className="cmt-badge">楼主</span>}
|
||||
{c.status === "pending" && <span className="badge-pending shrink-0">待审</span>}
|
||||
{acceptedCommentId === c.id && <span className="badge-accepted shrink-0">已采纳</span>}
|
||||
@@ -1090,6 +1097,11 @@ export default function CommentSection({
|
||||
) : (
|
||||
<span className="cmt-name">{authorName}</span>
|
||||
)}
|
||||
{author && <LevelBadge level={author.level} />}
|
||||
{author &&
|
||||
(author.badges ?? []).slice(0, 2).map((ub) => (
|
||||
<BadgeChip key={ub.id} badge={ub.badge} />
|
||||
))}
|
||||
{isOp && <span className="cmt-badge">楼主</span>}
|
||||
{c.status === "pending" && <span className="badge-pending shrink-0">待审</span>}
|
||||
{acceptedCommentId === c.id && <span className="badge-accepted shrink-0">已采纳</span>}
|
||||
|
||||
Reference in New Issue
Block a user