136 lines
4.0 KiB
Go
136 lines
4.0 KiB
Go
package modulectrl
|
|
|
|
import (
|
|
"91porn-server/app/appg"
|
|
"91porn-server/app/service/moduleser"
|
|
"91porn-server/common"
|
|
"91porn-server/common/constant/redisconst"
|
|
"91porn-server/common/log"
|
|
"91porn-server/common/stderr"
|
|
"91porn-server/models/v/moduleconfmod"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/vmihailenco/msgpack/v5"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// List ...
|
|
// @Summary 获取系统的所有后台配置模块
|
|
// @Description 获取系统的所有后台配置模块
|
|
// @Tags 模块配置
|
|
// @Accept mpfd,json
|
|
// @Produce json,html
|
|
// @Success 200 {array} []moduleconfmod.AppModuleConf
|
|
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
// @Router /api/app/modules/list [get]
|
|
func List(c *gin.Context) {
|
|
ip := c.ClientIP()
|
|
str, err := appg.Redis.Get(redisconst.ModulesCache)
|
|
if err != nil {
|
|
log.Warn(fmt.Sprintf("IP:%s;缓存获取广告列表信息异常:%v", ip, err))
|
|
}
|
|
var modules []moduleconfmod.ModuleConf
|
|
if str != nil {
|
|
if err = msgpack.Unmarshal([]byte(*str), &modules); err != nil {
|
|
log.Warn(fmt.Sprintf("IP:%s;解析缓存数据异常:%v", ip, err))
|
|
modules = nil
|
|
}
|
|
}
|
|
if modules == nil {
|
|
modules, err = moduleconfmod.GetAllModule()
|
|
if err != nil {
|
|
common.ServeJSON(c, stderr.ErrDbQueryError, err)
|
|
return
|
|
}
|
|
common.Go(func() {
|
|
bytes, _ := msgpack.Marshal(modules)
|
|
if setErr := appg.Redis.Set(redisconst.ModulesCache, bytes, 600*time.Second); setErr != nil {
|
|
log.Warn(fmt.Sprintf("IP:%s;保存缓存数据异常:%v", ip, setErr))
|
|
}
|
|
})
|
|
}
|
|
|
|
var data moduleconfmod.AppModuleConf
|
|
if len(modules) <= 0 {
|
|
common.ServeJSON(c, stderr.Success, data)
|
|
return
|
|
}
|
|
|
|
now := time.Now()
|
|
for _, m := range modules {
|
|
if !m.IsActiveAt(now) {
|
|
continue
|
|
}
|
|
m.HaiJiaoStyle.EnsureSortRules()
|
|
for k, v := range m.HaiJiaoStyle.SortRules {
|
|
v.Name = v.Val.Name()
|
|
m.HaiJiaoStyle.SortRules[k] = v
|
|
}
|
|
|
|
subConf := moduleconfmod.APPModuleConf{
|
|
ID: m.ID,
|
|
ModuleName: m.ModuleName,
|
|
Cover: m.Cover,
|
|
Type: m.Type,
|
|
ShowType: m.ShowType,
|
|
ShowJG: m.ShowJG,
|
|
HaiJiaoStyle: m.HaiJiaoStyle,
|
|
AiPlazaStyle: m.AiPlazaStyle,
|
|
PureVersion: m.PureVersion,
|
|
OnlineAt: m.OnlineAt,
|
|
OfflineAt: m.OfflineAt,
|
|
ExcludeLatest: m.ExcludeLatest,
|
|
ExcludeRecommend: m.ExcludeRecommend,
|
|
ExcludeSearch: m.ExcludeSearch,
|
|
SearchOnlyWhenInactive: m.SearchOnlyWhenInactive,
|
|
}
|
|
if !m.DefaultTagId.IsZero() {
|
|
subConf.DefaultTagId = m.DefaultTagId.Hex()
|
|
}
|
|
switch m.Type {
|
|
case moduleconfmod.HomePage, moduleconfmod.Cartoon, moduleconfmod.Comics:
|
|
data.HomePage = append(data.HomePage, subConf)
|
|
case moduleconfmod.Pics:
|
|
data.Pics = append(data.Pics, subConf)
|
|
case moduleconfmod.Novel:
|
|
data.Novel = append(data.Novel, subConf)
|
|
case moduleconfmod.Community:
|
|
data.Community = append(data.Community, subConf)
|
|
//case moduleconfmod.PrivateCircle:
|
|
//data.PrivateCircle = append(data.PrivateCircle, subConf)
|
|
case moduleconfmod.DeepWeb:
|
|
data.DeepWeb = append(data.DeepWeb, subConf)
|
|
case moduleconfmod.ShortPage:
|
|
data.ShortPage = append(data.ShortPage, subConf)
|
|
case moduleconfmod.Drama:
|
|
// 短剧模块仅下发给独立短剧频道,避免混入首页顶部模块。
|
|
data.DramaPage = append(data.DramaPage, subConf)
|
|
|
|
//case moduleconfmod.AiPlaza:
|
|
// data.AiPlaza = append(data.AiPlaza, subConf)
|
|
}
|
|
}
|
|
|
|
common.ServeJSON(c, stderr.Success, data)
|
|
}
|
|
|
|
// Announcements ...
|
|
// @Summary 获取跑马灯
|
|
// @Description 获取跑马灯
|
|
// @Tags 模块配置
|
|
// @Accept mpfd,json
|
|
// @Produce json,html
|
|
// @Success 200 {object} moduleser.AnnouncementResp
|
|
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
// @Router /api/app/modules/announce [get]
|
|
func Announcements(c *gin.Context) {
|
|
resp, err := moduleser.GetModuleAnnouncements()
|
|
if err != nil {
|
|
common.ServeJSON(c, stderr.ErrDbQueryError, err)
|
|
return
|
|
}
|
|
common.ServeJSON(c, stderr.Success, resp)
|
|
}
|