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}) }