Files
huangguo_server/web/service/adser/ads.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

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
}