Initial commit
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package srv_cfg
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"videoweb/pub/common/srvdef"
|
||||
"videoweb/pub/models/cfg"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
)
|
||||
|
||||
// GetSystemConfig 得到系统配置
|
||||
func GetSystemConfig(ctx context.Context) (*cfg.SysCfg, *srvdef.SrvErr) {
|
||||
filter := bson.M{
|
||||
cfg.FN.SysCfg.Id: 1, //固定id
|
||||
}
|
||||
sysCfg, serr := cfg.FindOneSysCfg(ctx, filter)
|
||||
if serr != nil {
|
||||
return nil, serr
|
||||
}
|
||||
return sysCfg, nil
|
||||
}
|
||||
|
||||
// emptyWatermark 水印字段为空时也写入空字符串,避免 omitempty 跳过导致旧值残留
|
||||
func emptyWatermark(v *string) *string {
|
||||
empty := ""
|
||||
if v == nil || strings.TrimSpace(*v) == "" {
|
||||
return &empty
|
||||
}
|
||||
s := strings.TrimSpace(*v)
|
||||
return &s
|
||||
}
|
||||
|
||||
func applyEmptyWatermarkFields(info *SysCfgUpdate) {
|
||||
if info == nil {
|
||||
return
|
||||
}
|
||||
info.WatermarkImage = emptyWatermark(info.WatermarkImage)
|
||||
info.WatermarkMedia = emptyWatermark(info.WatermarkMedia)
|
||||
info.WatermarkMediaTop = emptyWatermark(info.WatermarkMediaTop)
|
||||
info.WatermarkMediaTopRight = emptyWatermark(info.WatermarkMediaTopRight)
|
||||
info.WatermarkMediaBottomLeft = emptyWatermark(info.WatermarkMediaBottomLeft)
|
||||
}
|
||||
|
||||
// UpdateSystemConfig 更新系统配置
|
||||
func UpdateSystemConfig(ctx context.Context, info *SysCfgUpdate) *srvdef.SrvErr {
|
||||
applyEmptyWatermarkFields(info)
|
||||
filter := bson.M{
|
||||
cfg.FN.SysCfg.Id: 1, //固定id
|
||||
}
|
||||
fmt.Println("filter", filter)
|
||||
updateDoc := bson.M{"$set": info}
|
||||
serr := cfg.UpdateOneSysCfg(ctx, filter, updateDoc)
|
||||
if serr != nil {
|
||||
return serr
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package srv_cfg
|
||||
|
||||
import (
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type CDNNode struct {
|
||||
Url *string `json:"url" bson:"url,omitempty"`
|
||||
Ratio *int `json:"ratio" bson:"ratio,omitempty"`
|
||||
}
|
||||
type SysCfgUpdate struct {
|
||||
UnencryptedCdn *string `json:"unencryptedCdn" bson:"unencryptedCdn,omitempty"` // 不加密资源使用的cdn
|
||||
SitemapDefaultImages *[]string `json:"sitemapDefaultImages" bson:"sitemapDefaultImages,omitempty"` // Sitemap里面默认封面图
|
||||
PdfAddr *string `json:"pdfAddr" bson:"pdfAddr,omitempty"` // 回家的路PDF
|
||||
ImgAppCdn *string `json:"imgAppCdn" bson:"imgAppCdn,omitempty"` // 图片CDN(app使用)
|
||||
ImgAppUsCdn *string `json:"imgAppUsCdn" bson:"imgAppUsCdn,omitempty"` // 图片CDN(海外app使用)
|
||||
ImgWebCdn *string `json:"imgWebCdn" bson:"imgWebCdn,omitempty"` // 图片CDN(web使用)
|
||||
MediaWebCdn *string `json:"mediaWebCdn" bson:"mediaWebCdn,omitempty"` // 视频CDN(web使用)
|
||||
MediaAppCdn *string `json:"mediaAppCdn" bson:"mediaAppCdn,omitempty"` // 视频CDN(app使用)
|
||||
MediaAppUsCdn *string `json:"mediaAppUsCdn" bson:"mediaAppUsCdn,omitempty"` // 视频CDN(海外app使用)
|
||||
WatermarkImage *string `json:"watermarkImage" bson:"watermarkImage,omitempty"` // 图片水印文件
|
||||
WatermarkMedia *string `json:"watermarkMedia" bson:"watermarkMedia,omitempty"` // 视频水印文件(底部右边)
|
||||
WatermarkMediaTop *string `json:"watermarkMediaTop" bson:"watermarkMediaTop,omitempty"` // 视频水印文件(顶部左边)
|
||||
WatermarkMediaTopRight *string `json:"watermarkMediaTopRight" bson:"watermarkMediaTopRight,omitempty"` // 视频水印文件(顶部右边)
|
||||
WatermarkMediaBottomLeft *string `json:"watermarkMediaBottomLeft" bson:"watermarkMediaBottomLeft,omitempty"` // 视频水印文件(底部左边)
|
||||
Mp4Addr *string `json:"mp4Addr" bson:"mp4Addr,omitempty"` // mp4地址(web使用)
|
||||
CustomerServiceHost *string `json:"customerServiceHost" bson:"customerServiceHost,omitempty"` // 在线客服
|
||||
NewUrlAddr *string `json:"newUrlAddr" bson:"newUrlAddr,omitempty"` //最新地址
|
||||
NewUrlAddr1 *string `json:"newUrlAddr1" bson:"newUrlAddr1,omitempty"` //最新地址(备用地址1)
|
||||
NewUrlAddr2 *string `json:"newUrlAddr2" bson:"newUrlAddr2,omitempty"` //最新地址(备用地址2)
|
||||
ForeverUrlAddr *string `json:"foreverUrlAddr" bson:"foreverUrlAddr,omitempty"` //永久地址
|
||||
GmailAddr *string `json:"gmailAddr" bson:"gmailAddr,omitempty"` //邮箱地址
|
||||
AppAddr *string `json:"appAddr" bson:"appAddr,omitempty"` //APP下载地址(落地页)
|
||||
OfficialAppAddr *string `json:"officialAppAddr" bson:"officialAppAddr,omitempty"` //官网app地址
|
||||
WeiChart *string `json:"weiChart" bson:"weiChart,omitempty"` //微信群
|
||||
QQ *string `json:"qq" bson:"qq,omitempty"` //qq群
|
||||
TgGroup *string `json:"tgGroup" bson:"tgGroup,omitempty"` //tg群
|
||||
PotaoGroup *string `json:"potaoGroup" bson:"potaoGroup,omitempty"` //土豆群
|
||||
GitAddr *string `json:"gitAddr" bson:"gitAddr,omitempty"` //git地址
|
||||
TwitterAddr *string `json:"twitterAddr" bson:"twitterAddr,omitempty"` //推特地址
|
||||
Telegram *string `json:"telegram" bson:"telegram,omitempty"` //商务tg
|
||||
TelegramAdd *string `json:"telegramAdd" bson:"telegramAdd,omitempty"` //加入我们tg
|
||||
TranslationAddr *string `json:"translationAddr" bson:"translationAddr,omitempty"` //应用导航
|
||||
//SEO
|
||||
WebTitle *string `json:"webTitle" bson:"webTitle,omitempty"` // 网站SEO标题
|
||||
WebKeyworld *[]string `json:"webKeyworld" bson:"webKeyworld,omitempty"` // 网站SEO关键字
|
||||
WebDescription *string `json:"webDescription" bson:"webDescription,omitempty"` // 网站SEO描述
|
||||
WebSiteName *string `json:"webSiteName" bson:"webSiteName,omitempty"` // 网站SEO网站名称
|
||||
WebAddr *string `json:"webAddr" bson:"webAddr,omitempty"` // 网站SEO网站地址
|
||||
DHNewUrlAddr1 *string `json:"dhNewUrlAddr1" bson:"dhNewUrlAddr1,omitempty"` // 导航页-线路一
|
||||
DHNewUrlAddr2 *string `json:"dhNewUrlAddr2" bson:"dhNewUrlAddr2,omitempty"` // 导航页-线路2
|
||||
DHNewUrlAddr3 *string `json:"dhNewUrlAddr3" bson:"dhNewUrlAddr3,omitempty"` // 导航页-线路3
|
||||
FreeVPN *string `json:"freeVPN" bson:"freeVPN,omitempty"` // 免费vpn链接
|
||||
UseAddress *[]string `json:"useAddress" bson:"useAddress,omitempty"` // 所有使用中的域名
|
||||
AdvitiesTopicNum *int64 `json:"advitiesTopicNum" bson:"advitiesTopicNum,omitempty"` // 广告间隔
|
||||
DHTitle *string `json:"dhTitle" bson:"dhTitle,omitempty"` // 导航SEO标题
|
||||
DHKeyworld *[]string `json:"dhKeyworld" bson:"dhKeyworld,omitempty"` // 导航SEO关键字
|
||||
DHDescription *string `json:"dhDescription" bson:"dhDescription,omitempty"` // 导航SEO描述
|
||||
DHSiteName *string `json:"dhSiteName" bson:"dhSiteName,omitempty"` // 导航SEO网站名称
|
||||
ActressBackGround *string `json:"actressBackGround" bson:"actressBackGround,omitempty"` // 女优通用背景图
|
||||
ChannelCode *string `json:"channelCode" bson:"channelCode,omitempty"` // 渠道码
|
||||
EnableH265 *bool `json:"enableH265" bson:"enableH265,omitempty"` // 是否允许客户端使用 H265 地址播放
|
||||
}
|
||||
type SysCfgMapParam struct {
|
||||
Key string `json:"key" bson:"key"` //Key
|
||||
StringVal string `json:"stringVal" bson:"stringVal"` //字符串的值
|
||||
IntVal int64 `json:"intVal" bson:"intVal"` //int64的值
|
||||
Desc string `json:"desc" bson:"desc"` //配置描述
|
||||
}
|
||||
|
||||
type UpdateSysCfgMapReq struct {
|
||||
Id primitive.ObjectID `json:"id" bson:"_id"` //ID
|
||||
Param *SysCfgMapParam `json:"param" bson:"param"`
|
||||
}
|
||||
|
||||
type DeleteSysCfgMapReq struct {
|
||||
Id primitive.ObjectID `json:"id" bson:"_id"` //ID
|
||||
}
|
||||
|
||||
type GetSysCfgMapReq struct {
|
||||
Key *string `json:"key" bson:"key"`
|
||||
Desc *string `json:"desc" bson:"desc"`
|
||||
}
|
||||
|
||||
type FloatingWindow struct {
|
||||
Enable bool `json:"enable" bson:"enable"`
|
||||
Image string `json:"image" bson:"image"` //浮窗图片
|
||||
Url string `json:"url" bson:"url"` //浮窗URL
|
||||
ImageClose string `json:"imageClose" bson:"imageClose"` //浮窗图片
|
||||
}
|
||||
Reference in New Issue
Block a user