///<exception cref="Exception">新建公交卡插入失败时抛出异常</exception> public static Card CreatCard() { lock (CardIdLocker) { Card newCard; string newCardId; try { Card PreviousCard = MongoOperation.FindLastByKey <Card>(MongoCollectionName.Cards, "CardId"); if (PreviousCard == null) { newCardId = "10000000"; } else { newCardId = (long.Parse(PreviousCard.CardId) + 1).ToString(); } newCard = new Card(newCardId); MongoOperation.InsertDocument(MongoCollectionName.Cards, newCard); return(newCard); } catch (Exception e) { Log.Error("新建公交卡错误", e); throw e; } } }
///<exception cref="Exception">储值余额时抛出异常</exception> public static decimal?Recharge(string cardId, decimal amount) { try { lock (CardBalanceLocker) { if (amount <= 0 || amount % 10 != 0) { throw new ROException("充值金额为0或不为10的整数倍"); } decimal?balance = GetCardBalance(cardId, out Card card); balance += amount; if (balance > 1000 || balance < 0) { throw new ROException("充值后卡内余额大于1000或小于0"); } MongoOperation.UpdateDocument(MongoCollectionName.Cards, new Dictionary <string, string> { { "CardId", cardId } }, new MongoUpdateModel(MongoUpdateTypeEnum.Set, "CardBalance", balance.ToString())); return(balance); } } catch (Exception e) { Log.Error("充值失败", e); throw e; } }
///<exception cref="Exception">出闸时抛出异常</exception> public static void Out(string cardId, string endStation) { try { lock (CardBalanceLocker) { decimal?balance = GetCardBalance(cardId, out Card card); if (card.CardStatus == CardStatusEnum.IN) { if (!MetroDataBuilderOperation.StationSet.Contains(new Station(endStation))) { throw new ROException("终点站不存在"); } card.EndStation = endStation; Dictionary <string, int> subWay = SubWayOperation.GetSubway(card.StartStation, card.EndStation); int stations = subWay.First().Value; decimal subBalance = Calculate(card, stations); balance -= subBalance; if (balance < 0) { throw new ROException("余额不足,无法出站,请先充值后出站"); } else { card.CardStatus = CardStatusEnum.OUT; card.CardBalance = balance.ToString(); MongoOperation.ReplaceDocument(MongoCollectionName.Cards, new Dictionary <string, string> { { "CardId", card.CardId } }, card); } } else if (card.CardStatus == CardStatusEnum.OUT) { balance -= 5m; if (balance < 0) { throw new ROException("余额不足,无法出站,请先充值后出站"); } else { card.CardBalance = balance.ToString(); MongoOperation.ReplaceDocument(MongoCollectionName.Cards, new Dictionary <string, string> { { "CardId", card.CardId } }, card); } } } } catch (Exception e) { Log.Error("出站失败", e); throw e; } }
public static Card GetCard(string cardId) { var resultList = MongoOperation.FindDocument <Card>(MongoCollectionName.Cards, new Dictionary <string, string> { { "CardId", cardId } }); if (resultList.Count == 0) { return(null); } return(resultList[0]); }
/// <summary> /// 生成长连接的连接字符串 /// </summary> /// <param name="ip"></param> /// <param name="port"></param> /// <param name="databaseName"></param> /// <param name="userName"></param> /// <param name="passWord"></param> /// <returns></returns> public static MongoOperation GetTimeOutMongoOp(string ip, int port, string databaseName, string userName, string passWord) { MongoConnectionStringBuilder builder = new MongoConnectionStringBuilder(); builder.Server = new MongoServerAddress(ip, port); builder.DatabaseName = databaseName; builder.Username = userName; builder.Password = passWord; builder.SocketTimeout = new TimeSpan(00, 09, 59); var mongoDbOp = new MongoOperation(builder); return(mongoDbOp); }
public static void DestroyCard(string cardId) { try { MongoOperation.RemoveDocument(MongoCollectionName.Cards, new Dictionary <string, string> { { "CardId", cardId } }); } catch (Exception e) { Log.Error("删除公交卡失败", e); throw e; } }
public void SettingInit()//进行Settings.SeedsAddress Settings.HrefKeywords urlFilterKeyWord 基础设定 { string connStr = "mongodb://*****:*****@192.168.1.134/SimpleCrawler"; MongoConnectionStringBuilder builder = new MongoConnectionStringBuilder(); builder.Server = new MongoServerAddress("192.168.1.134", 27017); builder.DatabaseName = "SimpleCrawler"; builder.Username = "******"; builder.Password = "******"; builder.SocketTimeout = new TimeSpan(00, 01, 59); dataop = new DataOperation(new MongoOperation(builder)); _mongoDBOp = new MongoOperation(connStr); }
/// <summary> /// 获取PKCount /// </summary> /// <param name="mongoDbOp"></param> /// <param name="tableName"></param> /// <param name="maxCount"></param> /// <returns></returns> public static void UpdateMaxCount(MongoOperation mongoDbOp, string tableName, int maxCount) { var maxMatCountObj = mongoDbOp.FindOne("TablePKCounter", Query.EQ("tbName", tableName)); if (maxMatCountObj != null) { var newObj = new BsonDocument().Add("count", maxCount); mongoDbOp.Save("TablePKCounter", Query.EQ("tbName", tableName), newObj); } else { var newObj = new BsonDocument().Add("tbName", tableName).Add("count", maxCount); mongoDbOp.Save("TablePKCounter", newObj); } }
/// <summary> /// 获取PKCount /// </summary> /// <param name="mongoDbOp"></param> /// <param name="tableName"></param> /// <returns></returns> public static int GetMaxCount(MongoOperation mongoDbOp, string tableName) { var maxMatCountObj = mongoDbOp.FindOne("TablePKCounter", Query.EQ("tbName", tableName)); if (maxMatCountObj != null) { return(maxMatCountObj.Int("count")); } else { var newObj = new BsonDocument().Add("tbName", tableName).Add("count", 1); var result = mongoDbOp.Save("TablePKCounter", newObj); return(2); } }
///<exception cref="Exception">入闸时抛出异常</exception> public static void In(string cardId, string startStation) { try { lock (CardBalanceLocker) { decimal?balance = GetCardBalance(cardId, out Card card); if (card.CardStatus == CardStatusEnum.OUT) { if (!MetroDataBuilderOperation.StationSet.Contains(new Station(startStation))) { throw new ROException("起始站不存在"); } if (balance < 1) { throw new ROException("卡内余额不足,无法入站"); } card.CardBalance = balance.ToString(); card.CardStatus = CardStatusEnum.IN; card.StartStation = startStation; MongoOperation.ReplaceDocument(MongoCollectionName.Cards, new Dictionary <string, string> { { "CardId", card.CardId } }, card); } else if (card.CardStatus == CardStatusEnum.IN) { balance -= 5m; if (balance < 1) { throw new ROException("卡内余额不足,无法入站"); } card.CardBalance = balance.ToString(); card.StartStation = startStation; MongoOperation.ReplaceDocument(MongoCollectionName.Cards, new Dictionary <string, string> { { "CardId", card.CardId } }, card); } } } catch (Exception e) { Log.Error("入站失败", e); throw e; } }
public ActionResult SaveCommenInfoTest(MutualData main, List <MutualData> subList) { JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); string abc = jsonSerializer.Serialize(HttpContext.Request.Form); string dddd = "{ \"name\" : \"123\", \"hijs\" : [{ \"id\" : 0, \"type\" : 1 }, { \"id\" : 1, \"type\" : 2 }, { \"id\" : 2, \"type\" : 3 }, { \"id\" : 3, \"type\" : 4 }] } "; string ccc = "{ 'name' : '123', 'hijs' : [{ 'id' : 0, 'type' : 1 }, { 'id' : 1, 'type' : 2 }, { 'id' : 2, 'type' : 3 }, { 'id' : 3, 'type' : 4 }] } "; MongoDB.Bson.IO.BsonReader bsonReader = MongoDB.Bson.IO.BsonReader.Create(ccc); BsonDocument tempBson = BsonDocument.ReadFrom(bsonReader); MongoOperation monOp = new MongoOperation(); monOp.Save("TestRelation", tempBson); return(View()); }
/// <summary> /// 客户任务调度统计 /// </summary> /// <returns></returns> private Dictionary <string, int> GetCustomerJobInfo() { Dictionary <string, int> result = new Dictionary <string, int>(); var col = new MongoOperation().GetCollection("BackgroundJob"); Dictionary <string, int> dicInitial = new Dictionary <string, int>(); dicInitial["count"] = 0; var r = col.Group( Query.And(Query.NE("customerCode", null), Query.NE("customerCode", ""), Query.Exists("customerCode", true)), "customerCode", BsonDocument.Create(dicInitial), BsonJavaScript.Create("function(doc,prev){prev.count++;}"), null ).ToList(); if (r.Count > 0) { foreach (var item in r) { result.Add(item.Text("customerCode"), item.Int("count")); } } return(result); }
private void button1_Click(object sender, EventArgs e) { var oldCon = new MongoOperation("mongodb://*****:*****@192.168.1.230/A3"); var dataOp = new DataOperation(oldCon); StreamReader objReader = new StreamReader(@"C:\Users\Administrator\Downloads\90万7位dd号账号密码\90万7位QQ号账号密码\格式.txt"); var regexStr = this.textBox1.Text; string sLine = ""; while (sLine != null) { sLine = objReader.ReadLine(); if (sLine != null) { var rex = new Regex(regexStr); var temp = rex.Match(sLine); MessageBox.Show(temp.Value); } } objReader.Close(); }
/// <summary> /// 构造方法 /// </summary> /// <param name="dal"></param> public MongoBusinessService(MongoOperation <T> dal) : base(dal) { }
/// <summary> /// 对需要更新的队列数据更新操作进行批量处理,可考虑异步执行 /// </summary> public static void StartDbChangeProcessQuick(MongoOperation mongoDbOp, bool isDefaultField = false) { if (mongoDbOp == null) { var connStr = "mongodb://*****:*****@192.168.1.230:37088/SimpleCrawler"; mongoDbOp = new MongoOperation(connStr); } var result = new InvokeResult(); List <StorageData> updateList = new List <StorageData>(); while (DBChangeQueue.Instance.Count > 0) { var temp = DBChangeQueue.Instance.DeQueue(); if (temp != null) { var insertDoc = temp.Document; switch (temp.Type) { case StorageType.Insert: if (isDefaultField == true) { if (insertDoc.Contains("createDate") == false) { insertDoc.Add("createDate", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //添加时,默认增加创建时间 } if (insertDoc.Contains("createUserId") == false) { insertDoc.Add("createUserId", "1"); } //更新用户 if (insertDoc.Contains("underTable") == false) { insertDoc.Add("underTable", temp.Name); } insertDoc.Set("updateDate", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //更新时间 insertDoc.Set("updateUserId", "1"); } result = mongoDbOp.Save(temp.Name, insertDoc);; break; case StorageType.Update: result = mongoDbOp.Save(temp.Name, temp.Query, insertDoc); break; case StorageType.Delete: result = mongoDbOp.Delete(temp.Name, temp.Query); break; } //logInfo1.Info(""); if (result.Status == Status.Failed) { //throw new Exception(result.Message); } } } if (DBChangeQueue.Instance.Count > 0) { StartDbChangeProcessQuick(mongoDbOp, isDefaultField); } }
public static MongoOperation GetMongoOp(string connStr) { var mongoDbOp = new MongoOperation(connStr); return(mongoDbOp); }
public static MongoOperation GetMongoOp() { var mongoDbOp = new MongoOperation(SysAppConfig.DataBaseConnectionString); return(mongoDbOp); }
/// <summary> /// 构造函数初始化 /// </summary> public BackgroundJobBll() { _mongoOp = MongoOpCollection.GetMongoOp(); _dataOp = new DataOperation(_mongoOp); }
/// <summary> /// 获取顶级存储语句 /// </summary> /// <param name="varList"></param> /// <param name="sourceDic"></param> /// <returns></returns> public List <StorageData> GetStorageDatas(MongoOperation _dbOp, List <VarRule> varList, Dictionary <string, BsonDocument> sourceDic) { List <StorageData> resultList = new List <StorageData>(); #region 处理变量 List <VarRule> allVarList = new List <VarRule>(); if (varList != null) { allVarList.AddRange(varList); } if (this.Vars != null) { foreach (var tempVar in this.Vars) { if (tempVar.Value.Type == DataObjectType.AValue) //如果是一个值,添加到变量中去 { allVarList.Add(tempVar); } else if (tempVar.Value.Type == DataObjectType.ARecord) { BsonDocument tempBson = _dbOp.FindOne(tempVar.Value.TableName, tempVar.Value.GetQuery(allVarList, sourceDic)); if (sourceDic == null) { sourceDic = new Dictionary <string, BsonDocument>(); } sourceDic.Add(tempVar.Name, tempBson); } } } #endregion #region 处理顶级存储语句 if (this.Storages != null) { foreach (var tempStorage in this.Storages) { StorageData tempData = new StorageData(); tempData.Name = tempStorage.Data.TableName; //操作表名 tempData.Query = tempStorage.Data.GetQuery(allVarList, sourceDic); //定位记录 tempData.Type = tempStorage.Type; //操作类型 tempData.Document = tempStorage.Data.GetDataBsonDocument(allVarList, sourceDic); //操作数据 resultList.Add(tempData); } } #endregion #region 处理子循环语句 if (this.Foreachs != null) { foreach (var tempForeach in this.Foreachs) { List <BsonDocument> tempDocList = _dbOp.FindAll(tempForeach.Object.TableName, tempForeach.Object.GetQuery(allVarList, sourceDic)).ToList(); foreach (var tempDoc in tempDocList) //循环处理循环对象 { if (sourceDic == null) { sourceDic = new Dictionary <string, BsonDocument>(); } if (sourceDic.ContainsKey(tempForeach.Name)) { sourceDic[tempForeach.Name] = tempDoc; } else { sourceDic.Add(tempForeach.Name, tempDoc); } List <StorageData> foreachResult = tempForeach.GetStorageDatas(_dbOp, allVarList, sourceDic); //获取子循环结果 resultList.AddRange(foreachResult); } } } #endregion #region 处理子判断语句 if (this.Ifs != null) { foreach (var tempIf in this.Ifs) { if (tempIf.Condition.GetResult(allVarList, sourceDic)) { List <StorageData> ifResult = tempIf.GetStorageDatas(_dbOp, allVarList, sourceDic); //获取子判断结果 resultList.AddRange(ifResult); } } } #endregion return(resultList); }