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"` OrderBy string `json:"orderBy" form:"orderBy"` // 排序方式:sortAsc(默认,从小到大) / sortDesc(从大到小) / newest(最新) 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"` Sort int64 `json:"sort"` 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"` Sort *int64 `json:"sort"` 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"` }