128 lines
3.0 KiB
Go
128 lines
3.0 KiB
Go
package moduleser
|
|
|
|
import (
|
|
"91porn-server/app/appg"
|
|
"91porn-server/common"
|
|
"91porn-server/common/constant/redisconst"
|
|
"91porn-server/common/log"
|
|
"91porn-server/models/v/marqueemod"
|
|
"91porn-server/models/v/moduleconfmod"
|
|
"91porn-server/models/v/modulesectionmod"
|
|
"91porn-server/models/v/tagmod"
|
|
"91porn-server/models/v/usermod"
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"time"
|
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
type AnnouncementResp struct {
|
|
//跑马灯
|
|
Announcement []string `json:"announcement"`
|
|
}
|
|
|
|
const (
|
|
repeat = 5
|
|
usualAnnouncements = `首充任意金额即送7天视频VIP,限时充值返利,最高返利10%,累计充值送大礼,最高赠送1688元,添加游戏专属土豆福利群@pfqipai,不定时发放惊喜大礼`
|
|
activityAnnouncements = `限时抢购虎虎生威永久卡,金币视频五折折扣,免费赠送50张观影券 `
|
|
)
|
|
|
|
// GetModuleAnnouncements 获取模块下的跑马灯
|
|
func GetModuleAnnouncements() (AnnouncementResp, error) {
|
|
marq, err := marqueemod.Get()
|
|
if err != nil {
|
|
return AnnouncementResp{}, err
|
|
}
|
|
res := AnnouncementResp{Announcement: make([]string, repeat)}
|
|
for i := 0; i < repeat; i++ {
|
|
res.Announcement[i] = marq.Content
|
|
}
|
|
return res, nil
|
|
}
|
|
|
|
func GetPublishTag(uid uint64) (data *tagmod.TagInfoRes, err error) {
|
|
user, err := usermod.FindUserByUID(uid)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if user == nil || user.ID.IsZero() || user.HasLocked || user.HasBanned {
|
|
return nil, errors.New("user is null")
|
|
}
|
|
|
|
str, err := appg.Redis.Get(redisconst.PublishTagInfoCache)
|
|
if err != nil {
|
|
log.Warn(fmt.Sprintf("用户ID:%d;缓存获取广告列表信息异常:%v", uid, err))
|
|
}
|
|
|
|
data = &tagmod.TagInfoRes{}
|
|
if str != nil {
|
|
if err = json.Unmarshal([]byte(*str), &data); err == nil {
|
|
return
|
|
}
|
|
log.Warn(fmt.Sprintf("用户ID:%d;解析缓存数据异常:%v", uid, err))
|
|
}
|
|
|
|
// 获取模块
|
|
moduleConfs, err := moduleconfmod.GetModuleConfByType(moduleconfmod.Community)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
var sId []primitive.ObjectID
|
|
var tagIds []primitive.ObjectID
|
|
for _, i := range moduleConfs {
|
|
sId = append(sId, i.ID)
|
|
}
|
|
|
|
sections, err := modulesectionmod.GetBySectionBySids(sId)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
if len(sections) <= 0 {
|
|
return
|
|
}
|
|
for _, s := range sections {
|
|
if s.TagIds != nil && len(*s.TagIds) > 0 {
|
|
tagIds = append(tagIds, *s.TagIds...)
|
|
}
|
|
}
|
|
|
|
if len(tagIds) <= 0 {
|
|
return
|
|
}
|
|
tags, err := tagmod.FindOneTagByIds(tagIds)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
for _, t := range tags {
|
|
info := tagmod.TagInfo{
|
|
ID: t.ID,
|
|
Description: t.Description,
|
|
FollowCount: t.CollCount,
|
|
Name: t.TagName,
|
|
VidCount: t.VideoCount,
|
|
PlayCount: t.TPlayCount,
|
|
CoverImg: t.CoverImg,
|
|
}
|
|
data.List = append(data.List, info)
|
|
}
|
|
|
|
common.Go(func() {
|
|
if data != nil {
|
|
d, err := json.Marshal(data)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if err = appg.Redis.Set(redisconst.PublishTagInfoCache, d, 15*time.Minute); err != nil {
|
|
log.Warn(fmt.Sprintf("用户ID:%d;保存缓存数据异常:%v", uid, err))
|
|
}
|
|
}
|
|
})
|
|
return
|
|
}
|