@@ -0,0 +1,144 @@
|
||||
package publishser
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"91porn-server/app/appg"
|
||||
"91porn-server/common/log"
|
||||
"91porn-server/common/timeutil"
|
||||
"91porn-server/models/v/txnmod"
|
||||
"91porn-server/models/v/usermod"
|
||||
"91porn-server/models/v/videoactivitymod"
|
||||
"91porn-server/models/v/vidmod"
|
||||
|
||||
"github.com/shopspring/decimal"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
)
|
||||
|
||||
func GetWorkTotal(uid uint64) (int64, error) {
|
||||
return vidmod.GetCountByPublish(uid, nil)
|
||||
}
|
||||
|
||||
func GetPendingReviewWorkCount(uid uint64) (int64, error) {
|
||||
status := 0
|
||||
return vidmod.GetCountByPublish(uid, &status)
|
||||
}
|
||||
|
||||
func GetWeekIncomeLeaderboard(limit int) (out []User, err error) {
|
||||
var (
|
||||
weekEndDay = time.Now()
|
||||
weekStartDay = timeutil.BeginningOfWeek(weekEndDay)
|
||||
result []struct {
|
||||
UID uint64 `json:"uid" bson:"_id"`
|
||||
Income float64 `json:"income" bson:"income"`
|
||||
}
|
||||
)
|
||||
filter := bson.M{"tranTypeInt": txnmod.WorksIncome, "createdAt": bson.M{"$gte": weekStartDay, "$lt": weekEndDay}}
|
||||
if err = txnmod.IncomeLeaderboard(&result, filter, limit); err != nil {
|
||||
log.Error("获取周收益榜异常:", log.E(err))
|
||||
return
|
||||
}
|
||||
if len(result) == 0 {
|
||||
return []User{}, nil
|
||||
}
|
||||
retMap := make(map[uint64]float64)
|
||||
uids := make([]uint64, len(result))
|
||||
for i, s := range result {
|
||||
uids[i] = s.UID
|
||||
retMap[s.UID] = s.Income
|
||||
}
|
||||
users, err := usermod.FindUsersByUID(uids)
|
||||
if err != nil {
|
||||
log.Error("获取用户信息异常:", log.E(err))
|
||||
return
|
||||
}
|
||||
for _, s := range result {
|
||||
for _, user := range users {
|
||||
if s.UID == user.UID {
|
||||
out = append(out, User{ID: user.UID, Name: user.Name, Avatar: user.Portrait, Value: decimal.NewFromFloat(retMap[user.UID]).Mul(decimal.NewFromInt(3))})
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func GetActivityDetails() (out VideoActivity, err error) {
|
||||
details, err := videoactivitymod.QueryDocumentByStatus(videoactivitymod.Enable)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if details.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
out.ID = details.ID
|
||||
out.EndTime = details.EndTime
|
||||
out.BackgroundImage = details.BackgroundImage
|
||||
out.Desc = details.Desc
|
||||
return
|
||||
}
|
||||
|
||||
func GetCreatorNumber() (creatorNumber int64, err error) {
|
||||
result, err := appg.Redis.Get("creatorNumber")
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("getCreatorNumber redis获取数据异常:%v", err))
|
||||
return
|
||||
}
|
||||
if result == nil {
|
||||
if creatorNumber, err = vidmod.GetCreatorNumber(); err != nil {
|
||||
log.Error(fmt.Sprintf("getCreatorNumber mongodb获取数据异常:%v", err))
|
||||
return
|
||||
}
|
||||
if err = appg.Redis.Set("creatorNumber", creatorNumber, 0); err != nil {
|
||||
log.Error(fmt.Sprintf("getCreatorNumber redis操作异常:%v", err))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
if creatorNumber, err = strconv.ParseInt(*result, 10, 64); err != nil {
|
||||
log.Error(fmt.Sprintf("getCreatorNumber 解析异常:%v", err))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func GetWeekWorkLeaderboard(limit int) (out []User, err error) {
|
||||
var (
|
||||
weekEndDay = time.Now()
|
||||
weekStartDay = timeutil.BeginningOfWeek(weekEndDay)
|
||||
result []struct {
|
||||
UID uint64 `json:"uid" bson:"_id"`
|
||||
Count int64 `json:"count" bson:"count"`
|
||||
}
|
||||
)
|
||||
filter := bson.M{"createdAt": bson.M{"$gte": weekStartDay, "$lt": weekEndDay}}
|
||||
if err = vidmod.WorkLeaderboard(&result, filter, limit); err != nil {
|
||||
log.Error("获取周作品榜异常:", log.E(err))
|
||||
return
|
||||
}
|
||||
if len(result) == 0 {
|
||||
return []User{}, nil
|
||||
}
|
||||
uids := make([]uint64, len(result))
|
||||
var retMap = make(map[uint64]int64)
|
||||
for i, s := range result {
|
||||
uids[i] = s.UID
|
||||
retMap[s.UID] = s.Count
|
||||
}
|
||||
users, err := usermod.FindUsersByUID(uids)
|
||||
if err != nil {
|
||||
log.Error("获取用户信息异常:", log.E(err))
|
||||
return
|
||||
}
|
||||
for _, s := range result {
|
||||
for _, user := range users {
|
||||
if s.UID == user.UID {
|
||||
out = append(out, User{ID: user.UID, Name: user.Name, Avatar: user.Portrait, Value: decimal.NewFromInt(retMap[user.UID])})
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user