///<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;
                }
            }
        }
Example #2
0
 ///<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;
     }
 }
Example #3
0
        ///<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]);
        }
Example #5
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;
     }
 }
Example #7
0
        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);
            }
        }
Example #10
0
        ///<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;
            }
        }
Example #11
0
        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());
        }
Example #12
0
        /// <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);
        }
Example #13
0
        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();
        }
Example #14
0
 /// <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);
 }
Example #19
0
        /// <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);
        }