package adser import ( "time" "91porn-server/common/db" "91porn-server/models/v/adreviewmod" "91porn-server/models/v/adsmod" "91porn-server/web/webg" "go.mongodb.org/mongo-driver/bson/primitive" ) type ReviewRecord struct { ID primitive.ObjectID `json:"id"` //id DistrictCode string `json:"districtCode"` //商区码 OptType adreviewmod.OptType `json:"optType"` //操作类型 ApplyAt time.Time `json:"applyAt"` //申请时间 PassAt time.Time `json:"passAt"` //通过时间 RefussAt time.Time `json:"refussAt"` //拒绝时间 Reviewer string `json:"reviewer"` //审核人 ReviewStatus adreviewmod.ReviewStatus `json:"reviewStatus"` //审核状态 Remark string `json:"remark"` //备注 ReceiptInfo string `json:"receiptInfo"` //回执信息 ADID primitive.ObjectID `json:"adID"` //广告id Title string `json:"title"` //广告标题 Cover string `json:"cover"` //广告封面图 Size int `json:"size"` //尺寸 单位:B Height int `json:"height"` Width int `json:"width"` HrefType adsmod.URLJumpType `json:"hrefType"` //广告链接类型 Href string `json:"href"` //广告跳转地址 Position adsmod.AdPosition `json:"position"` //广告位置 SortCode int `json:"sortCode"` //排序号 } type ReviewPage struct { List []ReviewRecord `json:"list"` Total int64 `json:"total"` } // ReviewPages 获取广告列表 func ReviewPages(skip, limit int64, idMatch adreviewmod.IDMatch, reviewStatusMatch adreviewmod.ReviewStatusMatch, districtCodeMatch adreviewmod.DistrictCodeMatch) (ReviewPage, error) { mats := []adreviewmod.Matcher{ idMatch.New(), reviewStatusMatch.New(), districtCodeMatch.New(), } list, err := adreviewmod.List(adreviewmod.Sort_createdAt_N1, &skip, &limit, mats...) if err != nil { return ReviewPage{}, nil } recordList := make([]ReviewRecord, len(list)) for i, v := range list { recordList[i] = ReviewRecord{ ID: v.ID, DistrictCode: v.DistrictCode, OptType: v.OptType, PassAt: v.PassAt, RefussAt: v.RefussAt, Reviewer: v.Reviewer, ReviewStatus: v.ReviewStatus, ADID: v.ADID, Cover: v.Cover, Size: v.Size, Height: v.Height, Width: v.Width, Title: v.Title, HrefType: v.HrefType, Href: v.Href, Position: adsmod.AdPosition(v.Position), SortCode: v.SortCode, Remark: v.Remark, ReceiptInfo: v.ReceiptInfo, ApplyAt: v.ApplyAt, } } count, err := adreviewmod.Count(mats...) if err != nil { return ReviewPage{}, nil } return ReviewPage{ recordList, count, }, nil } func CheckRefuse(id primitive.ObjectID, reviewer string, receiptInfo string) error { return adreviewmod.UpdateReviewByID(id, adreviewmod.Processong, adreviewmod.Refuse, nil, reviewer, receiptInfo, time.Now()) } func CheckPass(id primitive.ObjectID, adsType adsmod.AdsType, reviewer string, receiptInfo string, startTime, endTime time.Time) error { adR, err := adreviewmod.FindOneByID(id) if err != nil { return err } now := time.Now() position := adsmod.AdPosition(adR.Position) reviewInfo := adsmod.ReviewInfo{ ReviewID: adR.ID, ReviewAt: &now, Reviewer: &reviewer, } insDoc := adsmod.InsertDoc{ AdsType: adsType, Cover: adR.Cover, Title: adR.Title, HrefType: adR.HrefType, Href: adR.Href, Position: position, SortCode: adR.SortCode, Active: true, Remark: receiptInfo, DistrictCode: adR.DistrictCode, ReviewInfo: reviewInfo, CreatedAt: now, CoverProp: adR.CoverProp, Start: startTime, End: endTime, } t := true upDoc := adsmod.UpdateDoc{ Title: &adR.Title, Cover: &adR.Cover, HrefType: &adR.HrefType, Href: &adR.Href, Position: &position, SortCode: &adR.SortCode, Active: &t, Remark: &receiptInfo, ReviewInfo: reviewInfo, UpdatedAt: now, CoverProp: adR.CoverProp, Start: &startTime, End: &endTime, } return webg.VideoDB.Trans(func(t *db.MongoTool) error { if adR.ADID.IsZero() { adID, err := adsmod.InsertOne(t, insDoc) if err != nil { return err } return adreviewmod.UpdateReviewByID(id, adreviewmod.Processong, adreviewmod.Pass, &adID, reviewer, receiptInfo, now) } if err := adsmod.UpdateOneByID(t, adR.ADID, upDoc); err != nil { return err } return adreviewmod.UpdateReviewByID(id, adreviewmod.Processong, adreviewmod.Pass, nil, reviewer, receiptInfo, now) }) } func DeleteAd(adID, arID *primitive.ObjectID) error { return webg.VideoDB.Trans(func(t *db.MongoTool) error { if adID != nil { if err := adsmod.DeleteOne(t, *adID); err != nil { return err } } if arID != nil { if err := adreviewmod.DeleteOne(t, *arID); err != nil { return err } } return nil }) }