新增广告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
+24
View File
@@ -150,6 +150,30 @@ func FindAdsById(ctx context.Context, id int64) (data Advertise, err error) {
return
}
// FindLatestAdsByAppAndLoc 取该应用/位置当前生效的最新一条广告(用于点击回退到最新广告)
// locId <= 0 表示不按位置过滤,只在应用维度取最新
func FindLatestAdsByAppAndLoc(ctx context.Context, appId, locId int32) (data Advertise, err error) {
now := time.Now()
filter := bson.M{
"appId": appId,
"isActive": true,
"startTime": bson.M{"$lte": now},
"endTime": bson.M{"$gte": now},
}
if locId > 0 {
filter["locId"] = locId
}
opts := options.FindOne().SetSort(bson.D{
{Key: "sort", Value: 1},
{Key: "createAt", Value: -1},
})
if err = db.FindOne(ctx, &data, filter, opts); err != nil {
log.Error("advertise FindLatestAdsByAppAndLoc FindOne err", log.E(err))
return
}
return
}
// 增加广告点击量
func IncAdsClickCount(ctx context.Context, id int64) (err error) {
filter := bson.M{"_id": id}
+78
View File
@@ -0,0 +1,78 @@
package advitiseBindMod
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.AdvitiseBind)
indexes := []mongo.IndexModel{
{Keys: bson.D{
{Key: FN.AdvitiseBind.AppId, Value: 1},
{Key: FN.AdvitiseBind.LocationId, Value: 1},
}},
{Keys: bson.D{{Key: FN.AdvitiseBind.AdvitiseId, Value: 1}}},
{Keys: bson.D{{Key: FN.AdvitiseBind.CreatedAt, Value: -1}}},
}
if _, err := db.CreateIndex(ctx, indexes); err != nil {
panic(fmt.Sprintf("(advitiseBindMod:Init) CreateIndex failed: %+v", err))
}
}
func InsertOneAdvitiseBind(ctx context.Context, doc *AdvitiseBind) error {
if _, err := db.InsertOne(ctx, doc); err != nil {
log.Warn("advitiseBindMod InsertOne failed", log.E(err))
return err
}
return nil
}
func FindOneAdvitiseBind(ctx context.Context, filter bson.M) (*AdvitiseBind, error) {
var doc AdvitiseBind
if err := db.FindOne(ctx, &doc, filter); err != nil {
return nil, err
}
return &doc, nil
}
func DelOneAdvitiseBind(ctx context.Context, filter bson.M) (int64, error) {
count, err := db.DeleteOne(ctx, filter)
if err != nil {
log.Warn("advitiseBindMod DeleteOne failed", log.E(err), log.Any("filter", filter))
return 0, err
}
return count, nil
}
func UpdateOneAdvitiseBind(ctx context.Context, filter bson.M, update bson.M) error {
if _, err := db.UpdateOne(ctx, filter, update); err != nil {
log.Warn("advitiseBindMod UpdateOne failed", log.E(err), log.Any("filter", filter))
return err
}
return nil
}
func CountAdvitiseBinds(ctx context.Context, filter bson.M) (int64, error) {
count, err := db.Count(ctx, filter)
if err != nil {
log.Warn("advitiseBindMod Count failed", log.E(err), log.Any("filter", filter))
return 0, err
}
return count, nil
}
func FindManyAdvitiseBinds(ctx context.Context, filter bson.M, opts ...*options.FindOptions) (AdvitiseBindList, error) {
list := make(AdvitiseBindList, 0)
if err := db.Find(ctx, &list, filter, opts...); err != nil {
log.Warn("advitiseBindMod Find failed", log.E(err), log.Any("filter", filter))
return nil, err
}
return list, nil
}
+30
View File
@@ -0,0 +1,30 @@
package advitiseBindMod
type TagAdvitiseBind struct {
Id string
AppId string
AdvitiseId string
LocationId string
Sort string
CreatedAt string
UpdatedAt string
}
var FN struct {
AdvitiseBind TagAdvitiseBind
}
var TN struct {
AdvitiseBind string
}
func init() {
FN.AdvitiseBind.Id = "_id"
FN.AdvitiseBind.AppId = "appId"
FN.AdvitiseBind.AdvitiseId = "advitiseId"
FN.AdvitiseBind.LocationId = "locationId"
FN.AdvitiseBind.Sort = "sort"
FN.AdvitiseBind.CreatedAt = "createdAt"
FN.AdvitiseBind.UpdatedAt = "updatedAt"
TN.AdvitiseBind = "advitise_bind"
}
+22
View File
@@ -0,0 +1,22 @@
package advitiseBindMod
import (
"stat/common/mongos"
"time"
)
var db *mongos.MongoTool
// AdvitiseBind 广告投放绑定(V2):把一个 AdvitiseInfo 绑到指定 (appId, locationId[]) 上
// @table:advitise_bind
type AdvitiseBind struct {
Id int64 `json:"id" bson:"_id"`
AppId int32 `json:"appId" bson:"appId"` // 产品id
AdvitiseId int64 `json:"advitiseId" bson:"advitiseId"` // 广告id -> advitiseInfoMod
LocationId []int32 `json:"locationId" bson:"locationId"` // 位置id列表(可多)
Sort int64 `json:"sort" bson:"sort"` // 排序值,优先级
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
UpdatedAt time.Time `json:"updatedAt" bson:"updatedAt"`
}
type AdvitiseBindList []*AdvitiseBind
+99
View File
@@ -0,0 +1,99 @@
package advitiseClickStatMod
import (
"context"
"fmt"
"stat/common/log"
"stat/common/mongos"
"time"
"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.AdvitiseClickStat)
indexes := []mongo.IndexModel{
{
Keys: bson.D{
{Key: FN.AdvitiseClickStat.AppId, Value: 1},
{Key: FN.AdvitiseClickStat.AdvitiseId, Value: 1},
{Key: FN.AdvitiseClickStat.LocationId, Value: 1},
{Key: FN.AdvitiseClickStat.StatDate, Value: -1},
},
},
{Keys: bson.D{
{Key: FN.AdvitiseClickStat.AdvitiseId, Value: 1},
{Key: FN.AdvitiseClickStat.StatDate, Value: -1},
}},
{Keys: bson.D{
{Key: FN.AdvitiseClickStat.StatDate, Value: -1},
}},
}
if _, err := db.CreateIndex(ctx, indexes); err != nil {
panic(fmt.Sprintf("(advitiseClickStatMod:Init) CreateIndex failed: %+v", err))
}
}
// InsertOrUpdate 按 (appId, advitiseId, locationId, statDate) upsert +1
// 对齐 media/biadsclickmod.InsertOrUpdateBIAdsClickModel
func InsertOrUpdate(ctx context.Context, appId int32, advitiseId int64, locationId int32, statDate time.Time) error {
filter := bson.M{
FN.AdvitiseClickStat.AppId: appId,
FN.AdvitiseClickStat.AdvitiseId: advitiseId,
FN.AdvitiseClickStat.LocationId: locationId,
FN.AdvitiseClickStat.StatDate: statDate,
}
update := bson.M{
"$inc": bson.M{FN.AdvitiseClickStat.Clicks: 1},
"$setOnInsert": bson.M{
FN.AdvitiseClickStat.CreatedAt: time.Now(),
},
}
if _, err := db.UpsertOneEx(ctx, filter, update); err != nil {
log.Warn("advitiseClickStatMod InsertOrUpdate upsert failed",
log.E(err), log.Any("filter", filter))
return err
}
return nil
}
func FindMany(ctx context.Context, filter bson.M, opts ...*options.FindOptions) (AdvitiseClickStatList, error) {
list := make(AdvitiseClickStatList, 0)
if err := db.Find(ctx, &list, filter, opts...); err != nil {
log.Warn("advitiseClickStatMod Find failed", log.E(err), log.Any("filter", filter))
return nil, err
}
return list, nil
}
func Count(ctx context.Context, filter bson.M) (int64, error) {
c, err := db.Count(ctx, filter)
if err != nil {
log.Warn("advitiseClickStatMod Count failed", log.E(err), log.Any("filter", filter))
return 0, err
}
return c, nil
}
// Aggregate 通用聚合(留给上层写 pipeline)
func Aggregate(ctx context.Context, bind interface{}, pipeline []bson.M) error {
return db.Aggregate(ctx, bind, pipeline)
}
// GetAppClicks 按 appId + statDate 汇总点击(对齐 media/biadsclickmod.GetAppClicks)
func GetAppClicks(ctx context.Context, appId int32, statDate time.Time) (int64, error) {
list, err := FindMany(ctx, bson.M{
FN.AdvitiseClickStat.AppId: appId,
FN.AdvitiseClickStat.StatDate: statDate,
})
if err != nil {
return 0, err
}
total := int64(0)
for _, i := range list {
total += i.Clicks
}
return total, nil
}
+30
View File
@@ -0,0 +1,30 @@
package advitiseClickStatMod
type TagAdvitiseClickStat struct {
Id string
AppId string
AdvitiseId string
LocationId string
Clicks string
StatDate string
CreatedAt string
}
var FN struct {
AdvitiseClickStat TagAdvitiseClickStat
}
var TN struct {
AdvitiseClickStat string
}
func init() {
FN.AdvitiseClickStat.Id = "_id"
FN.AdvitiseClickStat.AppId = "appId"
FN.AdvitiseClickStat.AdvitiseId = "advitiseId"
FN.AdvitiseClickStat.LocationId = "locationId"
FN.AdvitiseClickStat.Clicks = "clicks"
FN.AdvitiseClickStat.StatDate = "statDate"
FN.AdvitiseClickStat.CreatedAt = "createdAt"
TN.AdvitiseClickStat = "advitise_click_stat"
}
+25
View File
@@ -0,0 +1,25 @@
package advitiseClickStatMod
import (
"stat/common/mongos"
"time"
"go.mongodb.org/mongo-driver/bson/primitive"
)
var db *mongos.MongoTool
// AdvitiseClickStat 广告点击天粒度细维度统计(对齐 media/biadsclickmod)
// 键: (appId, advitiseId, locationId, statDate)
// @table:advitise_click_stat
type AdvitiseClickStat struct {
Id primitive.ObjectID `json:"id" bson:"_id,omitempty"`
AppId int32 `json:"appId" bson:"appId"`
AdvitiseId int64 `json:"advitiseId" bson:"advitiseId"`
LocationId int32 `json:"locationId" bson:"locationId"`
Clicks int64 `json:"clicks" bson:"clicks"`
StatDate time.Time `json:"statDate" bson:"statDate"`
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
}
type AdvitiseClickStatList []*AdvitiseClickStat
+68
View File
@@ -0,0 +1,68 @@
package advitiseDayClickStatMod
import (
"context"
"fmt"
"stat/common/log"
"stat/common/mongos"
"time"
"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.AdvitiseDayClickStat)
indexes := []mongo.IndexModel{
{Keys: bson.D{
{Key: FN.AdvitiseDayClickStat.AdvitiseId, Value: 1},
{Key: FN.AdvitiseDayClickStat.StatDate, Value: -1},
}},
{Keys: bson.D{
{Key: FN.AdvitiseDayClickStat.StatDate, Value: -1},
}},
}
if _, err := db.CreateIndex(ctx, indexes); err != nil {
panic(fmt.Sprintf("(advitiseDayClickStatMod:Init) CreateIndex failed: %+v", err))
}
}
// InsertOrUpdate 按 (advitiseId, statDate) upsert +1
// 对齐 media/adsdayclickstatmod.InsertOrUpdateAdsDayClickStatModel
func InsertOrUpdate(ctx context.Context, advitiseId int64, statDate time.Time) error {
filter := bson.M{
FN.AdvitiseDayClickStat.AdvitiseId: advitiseId,
FN.AdvitiseDayClickStat.StatDate: statDate,
}
update := bson.M{
"$inc": bson.M{FN.AdvitiseDayClickStat.Clicks: 1},
"$setOnInsert": bson.M{
FN.AdvitiseDayClickStat.CreatedAt: time.Now(),
},
}
if _, err := db.UpsertOneEx(ctx, filter, update); err != nil {
log.Warn("advitiseDayClickStatMod InsertOrUpdate upsert failed",
log.E(err), log.Any("filter", filter))
return err
}
return nil
}
func FindMany(ctx context.Context, filter bson.M, opts ...*options.FindOptions) (AdvitiseDayClickStatList, error) {
list := make(AdvitiseDayClickStatList, 0)
if err := db.Find(ctx, &list, filter, opts...); err != nil {
log.Warn("advitiseDayClickStatMod Find failed", log.E(err), log.Any("filter", filter))
return nil, err
}
return list, nil
}
func Count(ctx context.Context, filter bson.M) (int64, error) {
c, err := db.Count(ctx, filter)
if err != nil {
log.Warn("advitiseDayClickStatMod Count failed", log.E(err), log.Any("filter", filter))
return 0, err
}
return c, nil
}
+26
View File
@@ -0,0 +1,26 @@
package advitiseDayClickStatMod
type TagAdvitiseDayClickStat struct {
Id string
AdvitiseId string
Clicks string
StatDate string
CreatedAt string
}
var FN struct {
AdvitiseDayClickStat TagAdvitiseDayClickStat
}
var TN struct {
AdvitiseDayClickStat string
}
func init() {
FN.AdvitiseDayClickStat.Id = "_id"
FN.AdvitiseDayClickStat.AdvitiseId = "advitiseId"
FN.AdvitiseDayClickStat.Clicks = "clicks"
FN.AdvitiseDayClickStat.StatDate = "statDate"
FN.AdvitiseDayClickStat.CreatedAt = "createdAt"
TN.AdvitiseDayClickStat = "advitise_day_click_stat"
}
+23
View File
@@ -0,0 +1,23 @@
package advitiseDayClickStatMod
import (
"stat/common/mongos"
"time"
"go.mongodb.org/mongo-driver/bson/primitive"
)
var db *mongos.MongoTool
// AdvitiseDayClickStat 广告点击天粒度汇总(不含位置维度,对齐 media/adsdayclickstatmod)
// 键: (advitiseId, statDate)
// @table:advitise_day_click_stat
type AdvitiseDayClickStat struct {
Id primitive.ObjectID `json:"id" bson:"_id,omitempty"`
AdvitiseId int64 `json:"advitiseId" bson:"advitiseId"`
Clicks int64 `json:"clicks" bson:"clicks"`
StatDate time.Time `json:"statDate" bson:"statDate"`
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
}
type AdvitiseDayClickStatList []*AdvitiseDayClickStat
+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
+80
View File
@@ -0,0 +1,80 @@
package advitiseLocationMod
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.AdvitiseLocation)
indexes := []mongo.IndexModel{
{
Keys: bson.D{
{Key: FN.AdvitiseLocation.AppId, Value: 1},
{Key: FN.AdvitiseLocation.LocId, Value: 1},
},
Options: options.Index().SetUnique(true),
},
{Keys: bson.D{{Key: FN.AdvitiseLocation.CreatedAt, Value: -1}}},
}
if _, err := db.CreateIndex(ctx, indexes); err != nil {
panic(fmt.Sprintf("(advitiseLocationMod:Init) CreateIndex failed: %+v", err))
}
}
func InsertOneAdvitiseLocation(ctx context.Context, doc *AdvitiseLocation) error {
if _, err := db.InsertOne(ctx, doc); err != nil {
log.Warn("advitiseLocationMod InsertOne failed", log.E(err))
return err
}
return nil
}
func FindOneAdvitiseLocation(ctx context.Context, filter bson.M) (*AdvitiseLocation, error) {
var doc AdvitiseLocation
if err := db.FindOne(ctx, &doc, filter); err != nil {
return nil, err
}
return &doc, nil
}
func DelOneAdvitiseLocation(ctx context.Context, filter bson.M) (int64, error) {
count, err := db.DeleteOne(ctx, filter)
if err != nil {
log.Warn("advitiseLocationMod DeleteOne failed", log.E(err), log.Any("filter", filter))
return 0, err
}
return count, nil
}
func UpdateOneAdvitiseLocation(ctx context.Context, filter bson.M, update bson.M) error {
if _, err := db.UpdateOne(ctx, filter, update); err != nil {
log.Warn("advitiseLocationMod UpdateOne failed", log.E(err), log.Any("filter", filter))
return err
}
return nil
}
func CountAdvitiseLocations(ctx context.Context, filter bson.M) (int64, error) {
count, err := db.Count(ctx, filter)
if err != nil {
log.Warn("advitiseLocationMod Count failed", log.E(err), log.Any("filter", filter))
return 0, err
}
return count, nil
}
func FindManyAdvitiseLocations(ctx context.Context, filter bson.M, opts ...*options.FindOptions) (AdvitiseLocationList, error) {
list := make(AdvitiseLocationList, 0)
if err := db.Find(ctx, &list, filter, opts...); err != nil {
log.Warn("advitiseLocationMod Find failed", log.E(err), log.Any("filter", filter))
return nil, err
}
return list, nil
}
+34
View File
@@ -0,0 +1,34 @@
package advitiseLocationMod
type TagAdvitiseLocation struct {
Id string
AppId string
LocId string
Name string
AdvitiseSize string
ImgSizeDesc string
Remark string
CreatedAt string
UpdatedAt string
}
var FN struct {
AdvitiseLocation TagAdvitiseLocation
}
var TN struct {
AdvitiseLocation string
}
func init() {
FN.AdvitiseLocation.Id = "_id"
FN.AdvitiseLocation.AppId = "appId"
FN.AdvitiseLocation.LocId = "locId"
FN.AdvitiseLocation.Name = "name"
FN.AdvitiseLocation.AdvitiseSize = "advitiseSize"
FN.AdvitiseLocation.ImgSizeDesc = "imgSizeDesc"
FN.AdvitiseLocation.Remark = "remark"
FN.AdvitiseLocation.CreatedAt = "createdAt"
FN.AdvitiseLocation.UpdatedAt = "updatedAt"
TN.AdvitiseLocation = "advitise_location"
}
+38
View File
@@ -0,0 +1,38 @@
package advitiseLocationMod
import (
"stat/common/mongos"
"time"
)
var db *mongos.MongoTool
type AdvitiseSizeType string
const (
AdvitiseSizeFullScreen AdvitiseSizeType = "全屏" // 全屏
AdvitiseSizeBanner720300 AdvitiseSizeType = "banner720*300" // Banner720*300
AdvitiseSizeBanner720150 AdvitiseSizeType = "banner720*150" // Banner720*150
AdvitiseSizeBanner750700 AdvitiseSizeType = "banner750*700" // Banner750*700
AdvitiseSizeBanner800450 AdvitiseSizeType = "banner800*450" // Banner800*450
AdvitiseSizePopUps600800 AdvitiseSizeType = "弹窗600*800" // 弹窗 600*800
AdvitiseSizePopUps512512 AdvitiseSizeType = "弹窗512*512" // 弹窗 512*512
AdvitiseSizeSmallCube AdvitiseSizeType = "小方块" // 小方块
AdvitiseSizeVerticalCube AdvitiseSizeType = "竖方块" // 竖方块
)
// AdvitiseLocation 广告位(V2):按 (appId, locId) 唯一
// @table:advitise_location
type AdvitiseLocation struct {
Id int64 `json:"id" bson:"_id"`
AppId int32 `json:"appId" bson:"appId"` // 应用id
LocId int32 `json:"locId" bson:"locId"` // 位置id,外部使用
Name string `json:"name" bson:"name"` // 位置名称
AdvitiseSize AdvitiseSizeType `json:"advitiseSize" bson:"advitiseSize"` // 尺寸类型
ImgSizeDesc string `json:"imgSizeDesc" bson:"imgSizeDesc"` // 图片描述
Remark string `json:"remark" bson:"remark"` // 备注
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
UpdatedAt time.Time `json:"updatedAt" bson:"updatedAt"`
}
type AdvitiseLocationList []*AdvitiseLocation
+10
View File
@@ -9,6 +9,11 @@ import (
"stat/models/advertiseLocMod"
"stat/models/advertiseMod"
"stat/models/advertisestat"
"stat/models/advitiseBindMod"
"stat/models/advitiseClickStatMod"
"stat/models/advitiseDayClickStatMod"
"stat/models/advitiseInfoMod"
"stat/models/advitiseLocationMod"
"stat/models/announInfoMod"
"stat/models/appInfoMod"
"stat/models/appcategory"
@@ -109,4 +114,9 @@ func InitIndex() {
applicationLocMod.Init(ctx)
channelpackage.Init(ctx)
cpcDownloadCfg.Init(ctx)
advitiseInfoMod.Init(ctx)
advitiseLocationMod.Init(ctx)
advitiseBindMod.Init(ctx)
advitiseClickStatMod.Init(ctx)
advitiseDayClickStatMod.Init(ctx)
}