You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.5 KiB
91 lines
2.5 KiB
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 |
|
}
|
|
|