Initial commit

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 13:57:10 +08:00
co-authored by Claude Opus 5
commit 8679200f41
1897 changed files with 257900 additions and 0 deletions
+144
View File
@@ -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
}