新增广告V2模块,双端下载落地页调整

- 新增 advitise v2: info/location/bind/click-stat/day-click-stat 模型与
  对应的 service、api、router、proto 定义
- models/index.go 注册 5 个新模型的索引初始化
- 鉴权白名单: /rsdownload/ 改为 /download/,放行 advitise v2 的
  get/click 接口
- statg/config: proxyUrl 增加 fileRes1
- common/genId: lid 生成逻辑补充
- 新增 91fans / huangguo 的 mobileconfig 描述文件
- 新增 deploy/nginx/cpcdownload.mfcg.me.conf 网关配置

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-22 16:53:23 +08:00
co-authored by Claude Opus 5
parent bc605f303d
commit 01d9f7bc86
40 changed files with 2561 additions and 30 deletions
+79
View File
@@ -0,0 +1,79 @@
package advitiseInfoMod
import (
"context"
"fmt"
"stat/common/log"
"stat/common/mongos"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func Init(ctx context.Context) {
db = mongos.New(mongos.MgoManager, TN.AdvitiseInfo)
indexes := []mongo.IndexModel{
{Keys: bson.D{
{Key: FN.AdvitiseInfo.StartTime, Value: 1},
{Key: FN.AdvitiseInfo.EndTime, Value: 1},
{Key: FN.AdvitiseInfo.Status, Value: 1},
}},
{Keys: bson.D{{Key: FN.AdvitiseInfo.CreatedAt, Value: -1}}},
}
if _, err := db.CreateIndex(ctx, indexes); err != nil {
panic(fmt.Sprintf("(advitiseInfoMod:Init) CreateIndex failed: %+v", err))
}
}
func InsertOneAdvitiseInfo(ctx context.Context, doc *AdvitiseInfo) error {
if _, err := db.InsertOne(ctx, doc); err != nil {
log.Warn("advitiseInfoMod InsertOne failed", log.E(err))
return err
}
return nil
}
func FindOneAdvitiseInfo(ctx context.Context, filter bson.M) (*AdvitiseInfo, error) {
var doc AdvitiseInfo
if err := db.FindOne(ctx, &doc, filter); err != nil {
return nil, err
}
return &doc, nil
}
func DelOneAdvitiseInfo(ctx context.Context, filter bson.M) (int64, error) {
count, err := db.DeleteOne(ctx, filter)
if err != nil {
log.Warn("advitiseInfoMod DeleteOne failed", log.E(err), log.Any("filter", filter))
return 0, err
}
return count, nil
}
func UpdateOneAdvitiseInfo(ctx context.Context, filter bson.M, update bson.M) error {
if _, err := db.UpdateOne(ctx, filter, update); err != nil {
log.Warn("advitiseInfoMod UpdateOne failed", log.E(err), log.Any("filter", filter))
return err
}
return nil
}
func CountAdvitiseInfos(ctx context.Context, filter bson.M) (int64, error) {
count, err := db.Count(ctx, filter)
if err != nil {
log.Warn("advitiseInfoMod Count failed", log.E(err), log.Any("filter", filter))
return 0, err
}
return count, nil
}
func FindManyAdvitiseInfos(ctx context.Context, filter bson.M, opts ...*options.FindOptions) (AdvitiseInfoList, error) {
list := make(AdvitiseInfoList, 0)
if err := db.Find(ctx, &list, filter, opts...); err != nil {
log.Warn("advitiseInfoMod Find failed", log.E(err), log.Any("filter", filter))
return nil, err
}
return list, nil
}
+56
View File
@@ -0,0 +1,56 @@
package advitiseInfoMod
type TagAdvitiseInfo struct {
Id string
Title string
FullScreenImgs string
Banner720300Imgs string
Banner720150Imgs string
Banner750700Imgs string
Banner800450Imgs string
PopUps600800Imgs string
PopUps512512Imgs string
SmallCubeImgs string
VerticalCubeImgs string
RandomNames string
Link string
Status string
StartTime string
EndTime string
Remark string
Desc string
CreatedAt string
UpdatedAt string
}
var FN struct {
AdvitiseInfo TagAdvitiseInfo
}
var TN struct {
AdvitiseInfo string
}
func init() {
FN.AdvitiseInfo.Id = "_id"
FN.AdvitiseInfo.Title = "title"
FN.AdvitiseInfo.FullScreenImgs = "fullScreenImgs"
FN.AdvitiseInfo.Banner720300Imgs = "banner720300Imgs"
FN.AdvitiseInfo.Banner720150Imgs = "banner720150Imgs"
FN.AdvitiseInfo.Banner750700Imgs = "banner750700Imgs"
FN.AdvitiseInfo.Banner800450Imgs = "banner800450Imgs"
FN.AdvitiseInfo.PopUps600800Imgs = "popUps600800Imgs"
FN.AdvitiseInfo.PopUps512512Imgs = "popUps512512Imgs"
FN.AdvitiseInfo.SmallCubeImgs = "smallCubeImgs"
FN.AdvitiseInfo.VerticalCubeImgs = "verticalCubeImgs"
FN.AdvitiseInfo.RandomNames = "randomNames"
FN.AdvitiseInfo.Link = "link"
FN.AdvitiseInfo.Status = "status"
FN.AdvitiseInfo.StartTime = "startTime"
FN.AdvitiseInfo.EndTime = "endTime"
FN.AdvitiseInfo.Remark = "remark"
FN.AdvitiseInfo.Desc = "desc"
FN.AdvitiseInfo.CreatedAt = "createdAt"
FN.AdvitiseInfo.UpdatedAt = "updatedAt"
TN.AdvitiseInfo = "advitise_info"
}
+35
View File
@@ -0,0 +1,35 @@
package advitiseInfoMod
import (
"stat/common/mongos"
"time"
)
var db *mongos.MongoTool
// AdvitiseInfo 广告素材(V2):素材本身与位置/绑定解耦,可复用到多个 app 的多个位置
// @table:advitise_info
type AdvitiseInfo struct {
Id int64 `json:"id" bson:"_id"`
Title string `json:"title" bson:"title"` // 广告标题
FullScreenImgs []string `json:"fullScreenImgs" bson:"fullScreenImgs"` // 全屏封面
Banner720300Imgs []string `json:"banner720300Imgs" bson:"banner720300Imgs"` // Banner720*300 封面
Banner720150Imgs []string `json:"banner720150Imgs" bson:"banner720150Imgs"` // Banner720*150 封面
Banner750700Imgs []string `json:"banner750700Imgs" bson:"banner750700Imgs"` // Banner750*700 封面
Banner800450Imgs []string `json:"banner800450Imgs" bson:"banner800450Imgs"` // Banner800*450 封面
PopUps600800Imgs []string `json:"popUps600800Imgs" bson:"popUps600800Imgs"` // 弹窗 600*800 封面
PopUps512512Imgs []string `json:"popUps512512Imgs" bson:"popUps512512Imgs"` // 弹窗 512*512 封面
SmallCubeImgs []string `json:"smallCubeImgs" bson:"smallCubeImgs"` // 小方块封面
VerticalCubeImgs []string `json:"verticalCubeImgs" bson:"verticalCubeImgs"` // 竖方块封面
RandomNames []string `json:"randomNames" bson:"randomNames"` // 随机名称
Link string `json:"link" bson:"link"` // 跳转链接
Status bool `json:"status" bson:"status"` // 是否激活
StartTime time.Time `json:"startTime" bson:"startTime"` // 开始时间
EndTime time.Time `json:"endTime" bson:"endTime"` // 结束时间
Remark string `json:"remark" bson:"remark"` // 备注
Desc string `json:"desc" bson:"desc"` // 描述
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
UpdatedAt time.Time `json:"updatedAt" bson:"updatedAt"`
}
type AdvitiseInfoList []*AdvitiseInfo