forked from all_user/stat_center
- 新增 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>
233 lines
9.0 KiB
Go
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"`
|
|
}
|