167 lines
5.2 KiB
Go
167 lines
5.2 KiB
Go
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
|
|
})
|
|
}
|