- 新增 StudioController,依赖 studioUseCase 接口,遵循 ISP 接口隔离 - PostRepo 新增 FindByUserIDAndStatus 方法,按用户+状态分页查询 - PostService 新增 ListByUser、GetOverview 及 StudioOverview 统计 - /studio 页面路由(概览/管理/草稿箱/写文章/数据分析)+ /api/studio API - 复用 Vditor 编辑器,studio-editor.js 对接 /api/studio/posts 端点 - 新增 studio.css(B站风格三栏布局+统计卡片+状态筛选tabs) - 模板引擎注册 add/subtract 函数,分页模板中直接使用
73 lines
2.8 KiB
HTML
73 lines
2.8 KiB
HTML
{{template "layout/header.html" .}}
|
|
<body>
|
|
|
|
{{template "layout/nav.html" .}}
|
|
|
|
<div class="studio-wrapper">
|
|
{{template "studio/sidebar.html" .}}
|
|
|
|
<main class="studio-main">
|
|
<div class="studio-header">
|
|
<h1>数据分析</h1>
|
|
<span class="studio-subtitle">了解你的创作表现</span>
|
|
</div>
|
|
|
|
{{if .Error}}
|
|
<div class="studio-error">{{.Error}}</div>
|
|
{{else}}
|
|
<div class="stat-cards">
|
|
<div class="stat-card">
|
|
<div class="stat-card-icon">📝</div>
|
|
<div class="stat-card-body">
|
|
<span class="stat-card-value">{{.Overview.TotalPosts}}</span>
|
|
<span class="stat-card-label">文章总数</span>
|
|
</div>
|
|
</div>
|
|
<div class="stat-card stat-card-approved">
|
|
<div class="stat-card-icon">✅</div>
|
|
<div class="stat-card-body">
|
|
<span class="stat-card-value">{{.Overview.ApprovedCount}}</span>
|
|
<span class="stat-card-label">已发布</span>
|
|
</div>
|
|
</div>
|
|
<div class="stat-card stat-card-draft">
|
|
<div class="stat-card-icon">📄</div>
|
|
<div class="stat-card-body">
|
|
<span class="stat-card-value">{{.Overview.DraftCount}}</span>
|
|
<span class="stat-card-label">草稿</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="studio-section">
|
|
<h2 class="section-title">状态分布</h2>
|
|
<div class="status-bar">
|
|
{{if gt .Overview.ApprovedCount 0}}
|
|
<div class="status-bar-segment status-bar-approved" style="flex:{{.Overview.ApprovedCount}}">已发布 {{.Overview.ApprovedCount}}</div>
|
|
{{end}}
|
|
{{if gt .Overview.DraftCount 0}}
|
|
<div class="status-bar-segment status-bar-draft" style="flex:{{.Overview.DraftCount}}">草稿 {{.Overview.DraftCount}}</div>
|
|
{{end}}
|
|
{{if gt .Overview.PendingCount 0}}
|
|
<div class="status-bar-segment status-bar-pending" style="flex:{{.Overview.PendingCount}}">审核中 {{.Overview.PendingCount}}</div>
|
|
{{end}}
|
|
{{if gt .Overview.RejectedCount 0}}
|
|
<div class="status-bar-segment status-bar-rejected" style="flex:{{.Overview.RejectedCount}}">已退回 {{.Overview.RejectedCount}}</div>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="studio-section">
|
|
<div class="studio-placeholder">
|
|
<p>📈 更详细的阅读趋势、互动数据将在后续版本中推出</p>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
</main>
|
|
</div>
|
|
|
|
{{template "layout/footer.html" .}}
|
|
|
|
</body>
|
|
</html>
|