package checkinprizemod import ( "fmt" "91porn-server/common/db" "91porn-server/common/log" "91porn-server/models" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) const table = models.CheckinPrize func coll(t *db.MongoTool) *db.MongoTool { if t == nil { return mdb.Coll(table) } return t.Coll(table) } func initIndex() { many := []mongo.IndexModel{ { Keys: bson.D{{Key: "status", Value: 1}, {Key: "checkinType", Value: 1}, {Key: "checkinDays", Value: 1}}, }, { Keys: bson.D{{Key: "checkinDays", Value: 1}}, }, } if _, err := coll(nil).CreateIndex(many); err != nil { panic(fmt.Sprintf("%s model set index err ==>[%+v]", table, err)) } } func Init() { mdb = db.Init(table) initIndex() } // InsertOne 插入一个签到奖品 func InsertOne(data *CheckinPrize) error { if _, err := coll(nil).InsertOne(data); err != nil { log.Error(fmt.Sprintf("[checkinprizemod:InsertOne] failed: %+v", err)) return err } return nil } // FindMany 查找一批签到奖品 func FindMany(filter primitive.M, opts ...*options.FindOptions) (CheckinPrizeList, error) { data := make(CheckinPrizeList, 0) if err := coll(nil).Find(&data, filter, opts...); err != nil { log.Error(fmt.Sprintf("[checkinprizemod:FindMany] failed: %+v", err)) return nil, err } return data, nil } // FindManyWithBind 用自定义结构查找 func FindManyWithBind(bind interface{}, filter primitive.M, opts ...*options.FindOptions) error { if err := coll(nil).Find(bind, filter, opts...); err != nil { log.Error(fmt.Sprintf("[checkinprizemod:FindManyWithBind] failed: %+v", err)) return err } return nil } // FindOne 查找一个签到奖品 func FindOne(filter primitive.M) (*CheckinPrize, error) { var data CheckinPrize if err := coll(nil).FindOne(&data, filter); err != nil { log.Error(fmt.Sprintf("[checkinprizemod:FindOne] failed: %+v", err)) return nil, err } if data.ID.IsZero() { return nil, nil } return &data, nil } // Count 统计数量 func Count(filter primitive.M) (int64, error) { count, err := coll(nil).Count(filter) if err != nil { log.Error(fmt.Sprintf("[checkinprizemod:Count] failed: %+v", err)) return 0, err } return count, nil } // UpdateOne 更新一个签到奖品 func UpdateOne(filter primitive.M, update primitive.M) error { result, err := coll(nil).UpdateOne(filter, update) if err != nil { log.Error(fmt.Sprintf("[checkinprizemod:UpdateOne] failed: %+v", err)) return err } if result.MatchedCount == 0 { return mongo.ErrNoDocuments } return nil } // DeleteOne 删除一个签到奖品 func DeleteOne(filter primitive.M) (int64, error) { result, err := coll(nil).DeleteOne(filter) if err != nil { log.Error(fmt.Sprintf("[checkinprizemod:DeleteOne] failed: %+v", err)) return 0, err } return result.DeletedCount, nil }