@@ -0,0 +1,139 @@
|
||||
package newactivity
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/timeutil"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
)
|
||||
|
||||
func BulkAddModels(insertSqls []mongo.WriteModel) error {
|
||||
if len(insertSqls) > 0 {
|
||||
_, err := collModel(nil).Bulk(insertSqls)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 嫩模列表
|
||||
func ModelList() (res ListRes, err error) {
|
||||
res = ListRes{}
|
||||
if err = collModel(nil).Aggregate(&res.Models, []bson.M{
|
||||
{
|
||||
"$group": bson.M{
|
||||
"_id": "$location",
|
||||
"models": bson.M{
|
||||
"$push": bson.M{
|
||||
"id": "$id",
|
||||
"name": "$name",
|
||||
"location": "$location",
|
||||
"bgImg": "$bgImg",
|
||||
"video": "$video",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"$project": bson.M{
|
||||
"location": "$_id",
|
||||
"models": 1,
|
||||
"_id": 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
"$sort": bson.M{
|
||||
"models.id": 1,
|
||||
},
|
||||
},
|
||||
}); err != nil {
|
||||
return
|
||||
}
|
||||
num := struct {
|
||||
JoinPersons int64 `bson:"num"` //参与人数
|
||||
}{}
|
||||
err = collJoin(nil).FindOne(&num, bson.M{})
|
||||
res.JoinPersons = num.JoinPersons
|
||||
return
|
||||
}
|
||||
|
||||
// 单个嫩模
|
||||
func FindOne(modelId uint32) (res FindOneRes, err error) {
|
||||
res = FindOneRes{}
|
||||
date := timeutil.BeginningOfDay(time.Now())
|
||||
if time.Now().Hour() >= 20 {
|
||||
date = date.Add(24 * time.Hour)
|
||||
}
|
||||
if err = collModel(nil).AggregateDecode(&res, []bson.M{
|
||||
{
|
||||
"$match": bson.M{
|
||||
"id": modelId,
|
||||
},
|
||||
},
|
||||
{
|
||||
"$lookup": bson.M{
|
||||
"from": "activity_gift_stock",
|
||||
"pipeline": []bson.M{
|
||||
{
|
||||
"$match": bson.M{
|
||||
"modelId": modelId,
|
||||
"date": date,
|
||||
},
|
||||
},
|
||||
{"$project": bson.M{
|
||||
"_id": 0,
|
||||
"giftLeft": 1,
|
||||
"soldOut": 1,
|
||||
}},
|
||||
},
|
||||
"as": "gift_stock",
|
||||
},
|
||||
},
|
||||
{
|
||||
"$unwind": bson.M{
|
||||
"path": "$gift_stock",
|
||||
"preserveNullAndEmptyArrays": true,
|
||||
},
|
||||
},
|
||||
{
|
||||
"$project": bson.M{
|
||||
"_id": 0,
|
||||
"id": 1,
|
||||
"name": 1,
|
||||
"bgImg": 1,
|
||||
"location": 1,
|
||||
"video": 1,
|
||||
"giftLeft": "$gift_stock.giftLeft",
|
||||
"soldOut": "$gift_stock.soldOut",
|
||||
},
|
||||
},
|
||||
}); err != nil {
|
||||
return
|
||||
}
|
||||
opts := options.Find().SetSort(bson.D{{Key: "createdAt", Value: -1}})
|
||||
conf := bson.M{
|
||||
"modelId": modelId,
|
||||
"date": date,
|
||||
}
|
||||
if res.SoldOut {
|
||||
conf["soldOut"] = true
|
||||
}
|
||||
err = collSold(nil).Find(&res.SoldList, conf, opts)
|
||||
return
|
||||
}
|
||||
|
||||
// 嫩模列表
|
||||
func UpdateJoinNum(num int64) error {
|
||||
_, err := collJoin(nil).UpsertOne(bson.M{}, bson.M{"$set": bson.M{"num": num}})
|
||||
return err
|
||||
}
|
||||
|
||||
// 获取参与人数
|
||||
func GetJoinNum() (int64, error) {
|
||||
num := struct {
|
||||
JoinPersons int64 `bson:"num"` //参与人数
|
||||
}{}
|
||||
return num.JoinPersons, collJoin(nil).FindOne(&num, bson.M{})
|
||||
}
|
||||
Reference in New Issue
Block a user