package pack import ( "context" "go_dreamfactory/modules" "go_dreamfactory/pb" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) ///背包数据库数据管理组件 type DB_Comp struct { modules.MComp_DBComp } ///查询用户背包数据 func (this *DB_Comp) Pack_QueryUserPack(uId string) (items []*pb.DB_UserItemData, err error) { var ( cursor *mongo.Cursor ) items = make([]*pb.DB_UserItemData, 0) if cursor, err = this.DB.Find(DB_PackTable, bson.M{"uid": uId}); err != nil { return } else { for cursor.Next(context.Background()) { temp := &pb.DB_UserItemData{} if err = cursor.Decode(temp); err != nil { return } items = append(items, temp) } } return } //更新背包格子数据 func (this *DB_Comp) Pack_UpdateGridToUserPack(uId string, grids ...*pb.DB_UserItemData) (err error) { models := make([]mongo.WriteModel, len(grids)) for i, v := range grids { models[i] = mongo.NewUpdateOneModel().SetFilter(bson.M{"_id": v.GridId}).SetUpdate( bson.M{"$set": bson.M{ "isempty": v.IsEmpty, "itemid": v.ItemId, "amount": v.Amount, "ctime": v.CTime, "etime": v.ETime, "isnewitem": v.IsNewItem, }}).SetUpsert(true) } this.DB.BulkWrite(DB_PackTable, models, options.BulkWrite().SetOrdered(false)) return } //更新背包格子数据 func (this *DB_Comp) Pack_DeleteGridToUserPack(uId string, grids ...string) (err error) { _, err = this.DB.DeleteMany(DB_PackTable, bson.M{"_id": bson.M{"$inc": grids}}) return } //更新背包格子物品的数据 func (this *DB_Comp) Pack_AddGridAmountToUserPack(grid int32, amount int32) (pack *pb.DB_UserItemData, err error) { pack = &pb.DB_UserItemData{} err = this.DB.FindOneAndUpdate(DB_PackTable, bson.M{"_id": grid}, bson.M{"$set": bson.M{ "amount": amount, }}, options.FindOneAndUpdate().SetUpsert(true).SetReturnDocument(options.After)).Decode(pack) return } //修改背包格子IsNew标识 func (this *DB_Comp) Pack_ModifyPackGridIsNewItem(grids []int32) (err error) { _, err = this.DB.UpdateMany(DB_PackTable, bson.M{"_id": bson.M{"$inc": grids}}, bson.M{"$set": bson.M{ "isNewitem": false, }}) return }