112 lines
3.8 KiB
Go
112 lines
3.8 KiB
Go
package adser
|
|
|
|
import (
|
|
"time"
|
|
|
|
"91porn-server/common"
|
|
"91porn-server/models/v/adsmod"
|
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
type AdRecord struct {
|
|
ID primitive.ObjectID `json:"id"` //广告id
|
|
AdsType adsmod.AdsType `json:"adsType"` //广告类型
|
|
Cover string `json:"cover"` //广告封面图
|
|
Size int `json:"size"` //尺寸 B
|
|
Height int `json:"height"` //高
|
|
Width int `json:"width"` //宽
|
|
Title string `json:"title"` //广告标题
|
|
HrefType adsmod.URLJumpType `json:"hrefType"` //广告链接类型
|
|
Href string `json:"href"` //广告跳转地址
|
|
Position adsmod.AdPosition `json:"position"` //广告位置
|
|
SortCode int `json:"sortCode"` //排序号
|
|
Active bool `json:"active"` //激活状态 true:激活
|
|
Click int `json:"click"` //点击次数
|
|
Remark string `json:"remark"` //备注
|
|
ReviewID primitive.ObjectID `json:"reviewID,omitempty"` //审核id
|
|
DistrictCode string `json:"districtCode"` //商区码
|
|
CreatedAt time.Time `json:"createdAt"` //创建时间
|
|
Start time.Time `json:"start"` //开始时间
|
|
End time.Time `json:"end"` //结束时间
|
|
}
|
|
|
|
type AdPage struct {
|
|
List []AdRecord `json:"list"`
|
|
Total int64 `json:"total"`
|
|
}
|
|
|
|
// AdPages 获取广告列表
|
|
func AdPages(skip, limit int64, idMatch adsmod.IDMatch, adsType adsmod.AdsTypeMatch, adsPositionMatch adsmod.AdPositionMatch, districtCodeMatch adsmod.DistrictCodeMatch) (AdPage, error) {
|
|
mats := []adsmod.Matcher{
|
|
idMatch.New(),
|
|
adsType.New(),
|
|
adsPositionMatch.New(),
|
|
districtCodeMatch.New(),
|
|
}
|
|
list, _ := adsmod.List(adsmod.Sort_createdAt_N1, &skip, &limit, mats...)
|
|
recordList := make([]AdRecord, len(list))
|
|
for i, v := range list {
|
|
recordList[i] = AdRecord{
|
|
ID: v.ID,
|
|
AdsType: v.AdsType,
|
|
Cover: v.Cover,
|
|
Size: v.Size,
|
|
Height: v.Height,
|
|
Width: v.Width,
|
|
Title: v.Title,
|
|
HrefType: v.HrefType,
|
|
Href: v.Href,
|
|
Position: v.Position,
|
|
SortCode: v.SortCode,
|
|
Active: v.Active,
|
|
Click: v.Click,
|
|
Remark: v.Remark,
|
|
ReviewID: v.ReviewID,
|
|
DistrictCode: v.DistrictCode,
|
|
CreatedAt: v.CreatedAt,
|
|
Start: v.Start,
|
|
End: v.End,
|
|
}
|
|
}
|
|
count, _ := adsmod.Count(mats...)
|
|
return AdPage{
|
|
recordList,
|
|
count,
|
|
}, nil
|
|
}
|
|
|
|
func IsValidAdPicture(pos adsmod.AdPosition, pictureProp common.PictureProp) error {
|
|
switch pos {
|
|
case adsmod.StartupPage: //启动页广告
|
|
if pictureProp.Height > 1560 || pictureProp.Width > 720 {
|
|
return ErrImgScale{}
|
|
}
|
|
case adsmod.HomeRecoSmall: //首页-推荐小广告
|
|
if pictureProp.Height > 620 || pictureProp.Width > 560 {
|
|
return ErrImgScale{}
|
|
}
|
|
case adsmod.HomePopupAnnou: //首页-弹窗公告
|
|
if pictureProp.Height > 1300 || pictureProp.Width > 656 {
|
|
return ErrImgScale{}
|
|
}
|
|
case adsmod.NotifyPage: //消息-界面广告
|
|
if pictureProp.Height > 260 || pictureProp.Width > 720 {
|
|
return ErrImgScale{}
|
|
}
|
|
case adsmod.LiaoCarousel: //撩吧-轮播广告
|
|
if pictureProp.Height > 500 || pictureProp.Width > 720 {
|
|
return ErrImgScale{}
|
|
}
|
|
case adsmod.WalletPage: //钱包-轮播广告
|
|
if pictureProp.Height > 120 || pictureProp.Width > 720 {
|
|
return ErrImgScale{}
|
|
}
|
|
case adsmod.SearchPage: //搜索-轮播广告
|
|
if pictureProp.Height > 360 || pictureProp.Width > 720 {
|
|
return ErrImgScale{}
|
|
}
|
|
}
|
|
return nil
|
|
}
|