92 lines
2.5 KiB
Go
92 lines
2.5 KiB
Go
package model
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strconv"
|
|
|
|
"go-common/library/log"
|
|
)
|
|
|
|
// ADRequest cpm type
|
|
type ADRequest struct {
|
|
RequestID string `json:"request_id"`
|
|
ADIndexs map[string]map[string]*ADIndex `json:"ads_info"`
|
|
}
|
|
|
|
// ADIndex cpm type
|
|
type ADIndex struct {
|
|
Index int `json:"index"`
|
|
Info *ADInfo `json:"ad_info"`
|
|
IsAd bool `json:"is_ad"`
|
|
CmMark int `json:"cm_mark"`
|
|
}
|
|
|
|
// ADInfo cpm type
|
|
type ADInfo struct {
|
|
CreativeID int `json:"creative_id"`
|
|
CreativeType int `json:"creative_type"`
|
|
CreativeContent struct {
|
|
Title string `json:"title"`
|
|
Desc string `json:"description"`
|
|
VideoID int64 `json:"video_id"`
|
|
UserName string `json:"username"`
|
|
ImageURL string `json:"image_url"`
|
|
ImageMD5 string `json:"image_md5"`
|
|
LogURL string `json:"log_url"`
|
|
LogMD5 string `json:"log_md5"`
|
|
URL string `json:"url"`
|
|
ClickURL string `json:"click_url"`
|
|
ShowURL string `json:"show_url"`
|
|
} `json:"creative_content"`
|
|
AdCb string `json:"ad_cb"`
|
|
Extra json.RawMessage `json:"extra"`
|
|
}
|
|
|
|
// ConvertBanner expair cpm type
|
|
func (adr *ADRequest) ConvertBanner(ip, mobiApp string, build int) (banners map[int]map[int]*Banner) {
|
|
banners = map[int]map[int]*Banner{}
|
|
for resIDStr, sAdis := range adr.ADIndexs {
|
|
resID, _ := strconv.Atoi(resIDStr)
|
|
if len(sAdis) == 0 {
|
|
log.Info("mobi_app:%v-build:%v-resource:%v-is_ad_loc:%v", mobiApp, build, resID, false)
|
|
continue
|
|
}
|
|
for sidStr, adi := range sAdis {
|
|
sid, _ := strconv.Atoi(sidStr)
|
|
var bnnr = &Banner{
|
|
IsAdLoc: true,
|
|
IsAd: adi.IsAd,
|
|
IsAdReplace: false,
|
|
CmMark: adi.CmMark,
|
|
Rank: adi.Index,
|
|
SrcId: sid,
|
|
RequestId: adr.RequestID,
|
|
ClientIp: ip,
|
|
}
|
|
if adInfo := adi.Info; adInfo != nil {
|
|
bnnr.IsAdReplace = true
|
|
bnnr.CreativeId = adInfo.CreativeID
|
|
bnnr.AdCb = adInfo.AdCb
|
|
bnnr.ShowUrl = adInfo.CreativeContent.ShowURL
|
|
bnnr.ClickUrl = adInfo.CreativeContent.ClickURL
|
|
bnnr.Title = adInfo.CreativeContent.Title
|
|
bnnr.Image = adInfo.CreativeContent.ImageURL
|
|
bnnr.Hash = adInfo.CreativeContent.ImageMD5
|
|
bnnr.URI = adInfo.CreativeContent.URL
|
|
bnnr.Channel = "*"
|
|
bnnr.Extra = adInfo.Extra
|
|
bnnr.ServerType = 1
|
|
}
|
|
if _, ok := banners[resID]; ok {
|
|
banners[resID][bnnr.Rank] = bnnr
|
|
} else {
|
|
banners[resID] = map[int]*Banner{
|
|
bnnr.Rank: bnnr,
|
|
}
|
|
}
|
|
log.Info("mobi_app:%v-build:%v-source:%v-resource:%v-is_ad_loc:%v", mobiApp, build, sid, resID, true)
|
|
}
|
|
}
|
|
return
|
|
}
|