管理员系统概述
管理员功能系统为平台提供了完整的后台管理能力,包括用户管理、投稿审核、比赛配置等。
系统目标
- 提供完整的用户管理功能
- 实现投稿审核和管理
- 支持比赛配置和规则设置
- 提供数据统计和导出
用户管理功能
用户列表管理
// ListUsers 获取用户列表
func (h *AdminHandler) ListUsers(c *gin.Context) {
page := c.DefaultQuery("page", "1")
pageSize := c.DefaultQuery("page_size", "10")
users, total, err := h.userService.ListUsers(c, page, pageSize)
if err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
c.JSON(200, gin.H{
"data": users,
"total": total,
})
}
// BanUser 禁用用户
func (h *AdminHandler) BanUser(c *gin.Context) {
userID := c.Param("id")
reason := c.PostForm("reason")
err := h.userService.BanUser(c, userID, reason)
if err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
c.JSON(200, gin.H{"message": "用户已禁用"})
}
投稿管理与审核
投稿审核
// ReviewSubmission 审核投稿
func (h *AdminHandler) ReviewSubmission(c *gin.Context) {
submissionID := c.Param("id")
status := c.PostForm("status") // approved, rejected
reason := c.PostForm("reason")
err := h.submissionService.ReviewSubmission(c, submissionID, status, reason)
if err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
c.JSON(200, gin.H{"message": "审核完成"})
}
比赛配置管理
创建比赛
// CreateCompetition 创建比赛
func (h *AdminHandler) CreateCompetition(c *gin.Context) {
var req CreateCompetitionRequest
if err := c.BindJSON(&req); err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
competition, err := h.competitionService.CreateCompetition(c, &req)
if err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
c.JSON(200, competition)
}
规则管理系统
规则配置
// UpdateRule 更新规则
func (h *AdminHandler) UpdateRule(c *gin.Context) {
competitionID := c.Param("id")
var req UpdateRuleRequest
if err := c.BindJSON(&req); err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
err := h.ruleService.UpdateRule(c, competitionID, &req)
if err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
c.JSON(200, gin.H{"message": "规则已更新"})
}
数据统计与导出
数据导出
// ExportData 导出数据
func (h *AdminHandler) ExportData(c *gin.Context) {
competitionID := c.Query("competition_id")
dataType := c.Query("type") // users, submissions, comments
data, err := h.statisticsService.ExportData(c, competitionID, dataType)
if err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
c.Header("Content-Type", "application/octet-stream")
c.Header("Content-Disposition", "attachment; filename=data.csv")
c.Data(200, "text/csv", data)
}
总结
管理员系统为平台提供了强大的后台管理能力。