Files
stat_center/api/proto/advitiseV2.go
T
rootandClaude Opus 5 01d9f7bc86 新增广告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>
2026-09-22 16:53:23 +08:00

233 lines
9.0 KiB
Go

package proto
import (
"stat/models/advitiseBindMod"
"stat/models/advitiseInfoMod"
"stat/models/advitiseLocationMod"
"time"
)
// ============ 广告素材(Info) ============
type AdvitiseInfoListReq struct {
Title string `json:"title" form:"title"`
Remark string `json:"remark" form:"remark"`
Status *bool `json:"status" form:"status"`
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required,gte=1"`
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required,gte=1,lte=500"`
}
type AdvitiseInfoListResp struct {
Total int64 `json:"total"`
List advitiseInfoMod.AdvitiseInfoList `json:"list"`
}
type AddAdvitiseInfoReq struct {
Title string `json:"title" binding:"required"`
FullScreenImgs []string `json:"fullScreenImgs"`
Banner720300Imgs []string `json:"banner720300Imgs"`
Banner720150Imgs []string `json:"banner720150Imgs"`
Banner750700Imgs []string `json:"banner750700Imgs"`
Banner800450Imgs []string `json:"banner800450Imgs"`
PopUps600800Imgs []string `json:"popUps600800Imgs"`
PopUps512512Imgs []string `json:"popUps512512Imgs"`
SmallCubeImgs []string `json:"smallCubeImgs"`
VerticalCubeImgs []string `json:"verticalCubeImgs"`
RandomNames []string `json:"randomNames"`
Link string `json:"link"`
Status bool `json:"status"`
StartTime time.Time `json:"startTime"`
EndTime time.Time `json:"endTime"`
Remark string `json:"remark"`
Desc string `json:"desc"`
}
type UpdateAdvitiseInfoReq struct {
Id int64 `json:"id" binding:"required"`
Title *string `json:"title"`
FullScreenImgs *[]string `json:"fullScreenImgs"`
Banner720300Imgs *[]string `json:"banner720300Imgs"`
Banner720150Imgs *[]string `json:"banner720150Imgs"`
Banner750700Imgs *[]string `json:"banner750700Imgs"`
Banner800450Imgs *[]string `json:"banner800450Imgs"`
PopUps600800Imgs *[]string `json:"popUps600800Imgs"`
PopUps512512Imgs *[]string `json:"popUps512512Imgs"`
SmallCubeImgs *[]string `json:"smallCubeImgs"`
VerticalCubeImgs *[]string `json:"verticalCubeImgs"`
RandomNames *[]string `json:"randomNames"`
Link *string `json:"link"`
Status *bool `json:"status"`
StartTime *time.Time `json:"startTime"`
EndTime *time.Time `json:"endTime"`
Remark *string `json:"remark"`
Desc *string `json:"desc"`
}
type DelAdvitiseInfoReq struct {
Id int64 `json:"id" binding:"required"`
}
// ============ 广告位(Location) ============
type AdvitiseLocationListReq struct {
AppId *int32 `json:"appId" form:"appId"`
LocId *int32 `json:"locId" form:"locId"`
Name string `json:"name" form:"name"`
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required,gte=1"`
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required,gte=1,lte=500"`
}
type AdvitiseLocationListResp struct {
Total int64 `json:"total"`
List advitiseLocationMod.AdvitiseLocationList `json:"list"`
}
type AddAdvitiseLocationReq struct {
AppId int32 `json:"appId" binding:"required"`
LocId int32 `json:"locId" binding:"required"`
Name string `json:"name" binding:"required"`
AdvitiseSize advitiseLocationMod.AdvitiseSizeType `json:"advitiseSize"`
ImgSizeDesc string `json:"imgSizeDesc"`
Remark string `json:"remark"`
}
type UpdateAdvitiseLocationReq struct {
Id int64 `json:"id" binding:"required"`
AppId *int32 `json:"appId"`
LocId *int32 `json:"locId"`
Name *string `json:"name"`
AdvitiseSize *advitiseLocationMod.AdvitiseSizeType `json:"advitiseSize"`
ImgSizeDesc *string `json:"imgSizeDesc"`
Remark *string `json:"remark"`
}
type DelAdvitiseLocationReq struct {
Id int64 `json:"id" binding:"required"`
}
// ============ 广告绑定(Bind) ============
type AdvitiseBindListReq struct {
AppId *int32 `json:"appId" form:"appId"`
AdvitiseId *int64 `json:"advitiseId" form:"advitiseId"`
LocationId *int32 `json:"locationId" form:"locationId"`
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required,gte=1"`
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required,gte=1,lte=500"`
}
type AdvitiseBindListResp struct {
Total int64 `json:"total"`
List advitiseBindMod.AdvitiseBindList `json:"list"`
}
type AddAdvitiseBindReq struct {
AppId int32 `json:"appId" binding:"required"`
AdvitiseId int64 `json:"advitiseId" binding:"required"`
LocationId []int32 `json:"locationId" binding:"required"`
Sort int64 `json:"sort"`
}
type UpdateAdvitiseBindReq struct {
Id int64 `json:"id" binding:"required"`
AppId *int32 `json:"appId"`
AdvitiseId *int64 `json:"advitiseId"`
LocationId *[]int32 `json:"locationId"`
Sort *int64 `json:"sort"`
}
type DelAdvitiseBindReq struct {
Id int64 `json:"id" binding:"required"`
}
// ============ 外部获取广告 / 点击 ============
// GetAdvitiseV2Req 客户端拉广告列表
type GetAdvitiseV2Req struct {
AppId int32 `json:"appId" binding:"required"`
LocationId *int32 `json:"locationId"` // 可选,指定位置
}
// 响应结构直接复用老 proto.AdvertiseRes (advertiseList) — V2 客户端从 item.bindId 拿点击回传凭证
// ClickAdvitiseV2Req 客户端点击回传
// LocationId 必须传:细维度统计表(advitise_click_stat)按 (appId, advitiseId, locationId, day) 聚合
type ClickAdvitiseV2Req struct {
Id int64 `from:"id" json:"id" binding:"required"` // 广告id
// LocationId int32 `json:"locationId" binding:"required"` // 客户端展示时选中的位置
}
// ============ 统计管理 ============
// AdvitiseDayClickListReq 每日点击列表(汇总,来自 advitise_day_click_stat)
type AdvitiseDayClickListReq struct {
Id *int64 `json:"id" form:"id"` // 广告id(advitiseId)
StatStartDate string `json:"statStartDate" form:"statStartDate"` // yyyy-MM-dd HH:mm:ss
StatEndDate string `json:"statEndDate" form:"statEndDate"`
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required,gte=1"`
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required,gte=1,lte=500"`
}
type AdvitiseDayClickItem struct {
AdsId int64 `json:"adsId"` // 广告id (advitiseId)
AdsName string `json:"adsName"` // 广告标题
Clicks int64 `json:"clicks"`
StatDate string `json:"statDate"` // yyyy-MM-dd
}
type AdvitiseDayClickListResp struct {
Total int64 `json:"total"`
List []*AdvitiseDayClickItem `json:"list"`
}
// AdvitiseClickListReq 细维度列表(来自 advitise_click_stat)
type AdvitiseClickListReq struct {
AdsId *int64 `json:"adsId" form:"adsId"` // 广告id(advitiseId)
AppId *int32 `json:"appId" form:"appId"`
LocationId *int32 `json:"locationId" form:"locationId"`
StatStartDate string `json:"statStartDate" form:"statStartDate"`
StatEndDate string `json:"statEndDate" form:"statEndDate"`
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required,gte=1"`
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required,gte=1,lte=500"`
}
type AdvitiseClickItem struct {
AppId int32 `json:"appId"`
AppName string `json:"appName"`
AdsId int64 `json:"adsId"`
AdsName string `json:"adsName"`
LocationId int32 `json:"locationId"`
LocationName string `json:"locationName"`
Clicks int64 `json:"clicks"`
StatDate string `json:"statDate"`
}
type AdvitiseClickListResp struct {
Total int64 `json:"total"`
List []*AdvitiseClickItem `json:"list"`
}
// AdvitiseClickSummaryReq 按时间范围汇总广告点击量,每个广告一行
// StatStartDate/StatEndDate 至少填一个;可选 id/appId/locationId 缩窄范围
type AdvitiseClickSummaryReq struct {
Id *int64 `json:"id" form:"id"`
AppId *int32 `json:"appId" form:"appId"`
LocationId *int32 `json:"locationId" form:"locationId"`
StatStartDate string `json:"statStartDate" form:"statStartDate"`
StatEndDate string `json:"statEndDate" form:"statEndDate"`
PageNum int64 `json:"pageNum" form:"pageNum" binding:"required,gte=1"`
PageSize int64 `json:"pageSize" form:"pageSize" binding:"required,gte=1,lte=500"`
}
type AdvitiseClickSummaryItem struct {
AdsId int64 `json:"adsId"`
AdsName string `json:"adsName"`
TotalClicks int64 `json:"totalClicks"`
}
type AdvitiseClickSummaryResp struct {
Total int64 `json:"total"` // 匹配到的广告数
GrandTotal int64 `json:"grandTotal"` // 时间范围内所有点击总量
List []*AdvitiseClickSummaryItem `json:"list"`
}