广告改为参考模板从媒资中心按 AppId 拉取
- 新增 proxy.QueryAdvitise / storage.QueryAdvitiseList,调用 /media/web/app/advitise - proxy.AdvitiseInfo 兼容 id 为数字或字符串 - configser 改用 UpdateAdvitiseData,定时拉取并拼接 CDN,移除广告中心(Jt)拉取 - proto.AdvitiseData 改为 proxy.AdvitiseData 别名,应用列表 A/B 广告位改用 appInfoAList/appInfoBList - 同步 swagger 文档 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -156,6 +156,30 @@ func QueryMedia(baseInfo *MediaQueryeReq, domain string) (result *VideoQueryResu
|
||||
return
|
||||
}
|
||||
|
||||
func QueryAdvitise(baseInfo *AppAdvitiseInfoReq, domain string) (result *AdvitiseQuerysResult, err error) {
|
||||
result = &AdvitiseQuerysResult{}
|
||||
paramJson, err := json.Marshal(baseInfo)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if len(domain) == 0 {
|
||||
domain = DomainAddressRepair(domain, BucketVideoAddressV2)
|
||||
}
|
||||
url := domain
|
||||
if !strings.Contains(domain, "/media/web/app/advitise") {
|
||||
url = domain + "/media/web/app/advitise"
|
||||
}
|
||||
fr, err := http.Post(url, header, bytes.NewReader(paramJson))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if err = json.Unmarshal(fr.Data, result); err != nil {
|
||||
fmt.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func QueryMedias(baseInfo *MediaQueryesReq, domain string) (result *VideoQuerysResult, err error) {
|
||||
result = &VideoQuerysResult{
|
||||
Data: make([]MediaResp, 0),
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package proxy
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
"time"
|
||||
"videoweb/pub/models/videoinformationmod"
|
||||
@@ -408,6 +409,33 @@ type AdvitiseInfo struct {
|
||||
Images string `json:"images" bson:"images"` // 视频banner
|
||||
Link string `json:"link" bson:"link"` // 链接
|
||||
}
|
||||
|
||||
// UnmarshalJSON 兼容远端 id 返回数字或字符串两种格式,统一解析为字符串,避免大整数(雪花ID)在 JS 端丢精度
|
||||
func (a *AdvitiseInfo) UnmarshalJSON(data []byte) error {
|
||||
type alias AdvitiseInfo
|
||||
aux := &struct {
|
||||
Id json.RawMessage `json:"id"`
|
||||
*alias
|
||||
}{alias: (*alias)(a)}
|
||||
if err := json.Unmarshal(data, aux); err != nil {
|
||||
return err
|
||||
}
|
||||
raw := strings.TrimSpace(string(aux.Id))
|
||||
switch {
|
||||
case raw == "" || raw == "null":
|
||||
a.Id = ""
|
||||
case strings.HasPrefix(raw, `"`):
|
||||
var s string
|
||||
if err := json.Unmarshal([]byte(raw), &s); err != nil {
|
||||
return err
|
||||
}
|
||||
a.Id = s
|
||||
default:
|
||||
a.Id = raw
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type AdvitiseData struct {
|
||||
DialogList []AdvitiseInfo `json:"dialogList" bson:"dialogList"` // 弹窗广告
|
||||
HomeList []AdvitiseInfo `json:"homeList" bson:"homeList"` // 首页列表
|
||||
|
||||
@@ -29,6 +29,10 @@ func UploadImage(ctx context.Context, f *multipart.FileHeader, domain string) (p
|
||||
return proxy.UploadImg(f.Filename, buffer.Bytes(), domain)
|
||||
}
|
||||
|
||||
func QueryAdvitiseList(ctx context.Context, in *proxy.AppAdvitiseInfoReq, domain string) (*proxy.AdvitiseQuerysResult, error) {
|
||||
return proxy.QueryAdvitise(in, domain)
|
||||
}
|
||||
|
||||
func QueryMedias(ctx context.Context, in *proxy.MediaQueryesReq, domain string) (*proxy.VideoQuerysResult, error) {
|
||||
return proxy.QueryMedias(in, domain)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user