Files
huangguo_server/app/api/publishctrl/publish.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

123 lines
3.4 KiB
Go

package publishctrl
import (
"sync"
"91porn-server/app/service/publishser"
"91porn-server/common"
"91porn-server/common/log"
"91porn-server/common/stderr"
"91porn-server/models/v/vidmod"
"github.com/gin-gonic/gin"
)
// Details doc
// @Summary 创作视频
// @Description 数据详情
// @Tags 发布
// @Accept json
// @Produce json
// @Success 200 object publishser.DetailsResponse "成功后返回"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /publish/details [get]
func Details(c *gin.Context) {
uid, err := common.GetUID(c)
if err != nil {
common.ServeJSON(c, stderr.ErrNoToken, err.Error())
return
}
var (
res publishser.DetailsResponse
wg sync.WaitGroup
)
wg.Add(7)
common.Go(func() {
defer wg.Done()
res.IsFirst, err = vidmod.IsSubmitByPublisherID(uid)
})
common.Go(func() {
defer wg.Done()
var weekIncomeLeaderboard []publishser.User
weekIncomeLeaderboard, err = publishser.GetWeekIncomeLeaderboard(3)
if err != nil {
return
}
res.Leaderboards = append(res.Leaderboards, publishser.Leaderboard{
Type: publishser.WeekIncomeLeaderboard,
Members: weekIncomeLeaderboard,
})
})
common.Go(func() {
defer wg.Done()
var weekWorkLeaderboard []publishser.User
weekWorkLeaderboard, err = publishser.GetWeekWorkLeaderboard(3)
if err != nil {
return
}
res.Leaderboards = append(res.Leaderboards, publishser.Leaderboard{
Type: publishser.WeekWorkLeaderboard,
Members: weekWorkLeaderboard,
})
})
common.Go(func() {
defer wg.Done()
res.PendingReviewWorkCount, err = publishser.GetPendingReviewWorkCount(uid)
})
common.Go(func() {
defer wg.Done()
res.WorkTotal, err = publishser.GetWorkTotal(uid)
})
common.Go(func() {
defer wg.Done()
res.ActivityDetails, err = publishser.GetActivityDetails()
})
common.Go(func() {
defer wg.Done()
res.WorkCreateCount, err = publishser.GetCreatorNumber()
})
wg.Wait()
res.PassWorkCount = res.WorkTotal - res.PendingReviewWorkCount
if err != nil {
log.Error(err.Error())
common.ServeJSON(c, stderr.ErrNetWorkBusy, err.Error())
return
}
common.ServeJSON(c, stderr.Success, res)
}
// WeekLeaderboard doc
// @Summary 周榜详情
// @Description 周榜-查看更多
// @Tags 发布
// @Accept json
// @Produce json
// @Param type query int true "榜单类型"
// @Success 200 object publishser.WeekLeaderboardResp "成功后返回"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /publish/leaderboard [get]
func WeekLeaderboard(c *gin.Context) {
var (
req publishser.WeekLeaderboardReq
leaderboard []publishser.User
err error
)
if err = c.ShouldBindQuery(&req); err != nil {
common.ServeJSON(c, stderr.ErrParamError, err.Error())
return
}
switch publishser.ListType(req.Type) {
case publishser.WeekIncomeLeaderboard:
if leaderboard, err = publishser.GetWeekIncomeLeaderboard(10); err != nil {
common.ServeJSON(c, stderr.ErrNetWorkBusy, err.Error())
return
}
case publishser.WeekWorkLeaderboard:
if leaderboard, err = publishser.GetWeekWorkLeaderboard(10); err != nil {
common.ServeJSON(c, stderr.ErrNetWorkBusy, err.Error())
return
}
}
common.ServeJSON(c, stderr.Success, publishser.Leaderboard{Type: publishser.ListType(req.Type), Members: leaderboard})
}