@@ -0,0 +1,83 @@
|
||||
package adser
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"sync"
|
||||
|
||||
"91porn-server/app/proto"
|
||||
"91porn-server/app/service/annouser"
|
||||
"91porn-server/common"
|
||||
"91porn-server/models/v/adsmod"
|
||||
"91porn-server/models/v/annoumod"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func toAdsResSlice(slice adsmod.AdsSlice) []proto.AdsInfo {
|
||||
ads := make([]proto.AdsInfo, len(slice))
|
||||
for i, v := range slice {
|
||||
ads[i] = proto.AdsInfo{
|
||||
// ID: v.ID,
|
||||
Cover: v.Cover,
|
||||
Href: v.Href,
|
||||
Position: int(v.Position),
|
||||
SortCode: v.SortCode,
|
||||
}
|
||||
}
|
||||
return ads
|
||||
}
|
||||
|
||||
var sysAds = adsmod.SysAds
|
||||
|
||||
func AdsList(adsType adsmod.AdsType, discCode string) (res proto.AdsRes) {
|
||||
var ads []proto.AdsInfo
|
||||
var announ []*annouser.Annou
|
||||
wait := sync.WaitGroup{}
|
||||
wait.Add(2)
|
||||
common.Go(func() {
|
||||
defer wait.Done()
|
||||
if adsType == adsmod.SysAds {
|
||||
adSlice, _ := adsmod.ActiveStartAndEndList(adsmod.Sort_sortCode_N1, nil, nil, (&adsmod.AdsTypeMatch{AdsType: &sysAds}).New())
|
||||
ads = toAdsResSlice(adSlice)
|
||||
} else {
|
||||
ads = toAdsResSlice(GetDiscAdSlice(discCode))
|
||||
}
|
||||
})
|
||||
common.Go(func() {
|
||||
defer wait.Done()
|
||||
announInfo, _ := annouser.GetAnnouList(annoumod.TotalType)
|
||||
announ = append(announ, announInfo)
|
||||
})
|
||||
wait.Wait()
|
||||
res.AdsList = ads
|
||||
if gin.Mode() == gin.DebugMode { //测试模式下向外暴露链接
|
||||
res.AnnounInfo = announ
|
||||
return
|
||||
}
|
||||
res.AnnounInfo = announ
|
||||
return
|
||||
}
|
||||
|
||||
func GetDiscAdSlice(discCode string) adsmod.AdsSlice {
|
||||
mats := []adsmod.Matcher{
|
||||
(&adsmod.DistrictCodeMatch{DistrictCode: &discCode}).New(),
|
||||
}
|
||||
discADSlice, _ := adsmod.ActiveStartAndEndList(adsmod.Sort_sortCode_N1, nil, nil, mats...)
|
||||
//未配置渠道广告的广告位,展示系统广告
|
||||
mats = []adsmod.Matcher{
|
||||
(&adsmod.AdsTypeMatch{AdsType: &sysAds}).New(),
|
||||
(&adsmod.AdPositionNinMatch{PositionList: discADSlice.ToPositions()}).New(),
|
||||
}
|
||||
ads, _ := adsmod.ActiveStartAndEndList(adsmod.Sort_sortCode_N1, nil, nil, mats...)
|
||||
ads = append(ads, discADSlice...)
|
||||
sort.Sort(ads)
|
||||
return ads
|
||||
}
|
||||
|
||||
func AdList(adsType adsmod.AdsType, discCode string) []proto.AdsInfo {
|
||||
if adsType == adsmod.SysAds {
|
||||
adSlice, _ := adsmod.ActiveStartAndEndList(adsmod.Sort_sortCode_N1, nil, nil, (&adsmod.AdsTypeMatch{AdsType: &sysAds}).New())
|
||||
return toAdsResSlice(adSlice)
|
||||
}
|
||||
return toAdsResSlice(GetDiscAdSlice(discCode))
|
||||
}
|
||||
Reference in New Issue
Block a user