示例#1
0
 public void TestQueueUserWorkItem()
 {
     DBTool.BeginThread();
     try
     {
         Thread.Sleep(random.Next(5000));
         ILnskyDBTransactionMain temp;
         using (var tran = DBTool.BeginTransaction())
         {
             temp = DBTool.GetLnskyDBTransactionMain();
             if (LnskyDBTransactionMain != null)
             {
                 Assert.AreNotEqual(temp, LnskyDBTransactionMain);
             }
             LnskyDBTransactionMain = temp;
             TestProductSaleByDayNSGet();
         }
         using (var tran = DBTool.BeginTransaction())
         {
             var temp2 = DBTool.GetLnskyDBTransactionMain();
             Assert.AreEqual(temp, temp2);
         }
     }
     finally
     {
         DBTool.CloseConnections();
     }
 }
示例#2
0
        private void TestTranAdd(bool isCommit)
        {
            var repository = GetRepository();
            var lst        = repository.GetList();
            List <ProductSaleByDayNSEntity> newLst;

            using (var tran = DBTool.BeginTransaction())
            {
                TestProductSaleByDayNSAdd();
                newLst = repository.GetList();
                Assert.True(lst.Count < newLst.Count);
                if (isCommit)
                {
                    tran.Complete();
                }
            }
            if (isCommit)
            {
                newLst = repository.GetList();
                Assert.True(lst.Count + 1 == newLst.Count);
            }
            else
            {
                newLst = repository.GetList();
                Assert.True(lst.Count == newLst.Count);
            }
        }
示例#3
0
 public void TestProductSaleByDayNSAddUpdateDelete()
 {
     using (var tran = DBTool.BeginTransaction())
     {
         TestProductSaleByDayNSAdd();
         TestProductSaleByDayNSUpdate();
         TestProductSaleByDayNSUpdateWhere();
         TestProductSaleByDayNSDelete();
         tran.Complete();
     }
 }
示例#4
0
 public void TestProductSaleByDayNSTransaction()
 {
     using (var tran = DBTool.BeginTransaction())
     {
         TestProductSaleByDayGet();
         TestProductSaleByDayGetList();
         TestProductSaleByDayGetPaging();
         TestProductSaleByDayAddUpdate();
         tran.Complete();
     }
 }
示例#5
0
        private void TestTranUpdateWhere(bool isCommit)
        {
            var repository = GetRepository();

            var where = QueryFactory.Create <ProductSaleByDayNSEntity>(m => !m.ProductName.Contains("批量修改Where") && m.ProductName.Contains("修改"));//where是更新条件

            var count        = repository.Count(where);
            var updateEntity = new ProductSaleByDayNSEntity()
            {
                DataSource  = "测试来源批量修改",
                ProductName = "商品批量修改Where"
            };

            using (var tran = DBTool.BeginTransaction())
            {
                Assert.AreEqual(tran.TransactionIndex, 1);
                using (var tran2 = DBTool.BeginTransaction())
                {
                    Assert.AreEqual(tran2.TransactionIndex, 2);
                    //注意如果是更新用的是实体类的DBModel_ShuffledTempDate Query中的无效
                    int updateCount = repository.Update(updateEntity, where);

                    Assert.AreEqual(updateCount, count);
                    Assert.AreNotEqual(updateCount, 0);
                    if (isCommit)
                    {
                        tran.Complete();
                    }
                }
            }
            using (var tran = DBTool.BeginTransaction())
            {
                Assert.AreEqual(tran.TransactionIndex, 1);
            }
            if (isCommit)
            {
                var newcount = repository.Count(where);
                Assert.AreNotEqual(count, newcount);
            }
            else
            {
                var newcount = repository.Count(where);
                Assert.AreEqual(count, newcount);
            }
            using (var tran = DBTool.BeginTransaction())
            {
                Assert.AreEqual(tran.TransactionIndex, 1);
            }
        }
示例#6
0
        public void TestQueueUserWorkItem()
        {
            using (DBTool.BeginThread())
            {
                Thread.Sleep(random.Next(5000));
                ILnskyDBTransactionMain temp;
                using (DBTool.BeginThread())
                {
                    using (var tran = DBTool.BeginTransaction())
                    {
                        temp = DBTool.GetLnskyDBTransactionMain();
                        if (LnskyDBTransactionMain != null)
                        {
                            Assert.AreNotEqual(temp, LnskyDBTransactionMain);
                        }
                        LnskyDBTransactionMain = temp;
                        TestProductSaleByDayNSGet();
                    }
                }
                using (var tran = DBTool.BeginTransaction())
                {
                    var temp2 = DBTool.GetLnskyDBTransactionMain();
                    Assert.AreEqual(temp, temp2);
                }
            }
            bool isOk = false;

            try
            {
                TestProductSaleByDayNSGet();
            }
            catch (Exception e)
            {
                isOk = true;
            }
            Assert.True(isOk);
        }
示例#7
0
        private void TestTranDelete(bool isCommit)
        {
            var repository = GetRepository();
            var query      = QueryFactory.Create <ProductSaleByDayNSEntity>();

            query.And(m => !m.DataSource.Contains("修改"));
            query.OrderByDescing(m => m.StatisticalDate);
            query.StarSize = new Random().Next(5);
            query.Rows     = 1;
            var model = repository.GetPaging(query).ToList()[0];

            using (var tran = DBTool.BeginTransaction())
            {
                repository.Delete(model);
                var deleteCount = repository.Delete(m => m.DataSource == "测试来源批量修改");
                Assert.True(deleteCount > 0);
                if (isCommit)
                {
                    tran.Complete();
                }
            }
            if (isCommit)
            {
                var delModel = repository.Get(new ProductSaleByDayNSEntity {
                    SysNo = model.SysNo
                });
                Assert.IsNull(delModel);
            }
            else
            {
                var delModel = repository.Get(new ProductSaleByDayNSEntity {
                    SysNo = model.SysNo
                });
                Assert.IsNotNull(delModel);
            }
        }
示例#8
0
        public string Index()
        {
            if (isRuning == true)
            {
                return("正在运行中");
            }
            lock (lockObj)
            {
                isRuning = true;
                try
                {
                    var repositoryNSFactory = RepositoryFactory.Create <ProductSaleByDayNSEntity>();
                    if (repositoryNSFactory.GetList(m => m.CreateDate > DateTime.Now.Date).Count > 100)
                    {
                        return("");
                    }
                    var shopRepository = RepositoryFactory.Create <ShopEntity>();
                    shopRepository.Delete(QueryFactory.Create <ShopEntity>());
                    for (int i = 0; i < 10; i++)
                    {
                        using (var tran = DBTool.BeginTransaction())
                        {
                            var shop = new ShopEntity
                            {
                                SysNo    = Guid.NewGuid().ToString(),
                                ShopCode = "00" + i,
                                ShopName = "测试店铺" + i,
                                ShopType = i % 3,
                                IsDelete = false,
                            };
                            shopRepository.Add(shop);
                            tran.Complete();
                        }
                    }
                    lstShop = shopRepository.GetList(QueryFactory.Create <ShopEntity>());
                    var importGroupId = Guid.NewGuid();
                    var random        = new Random();

                    repositoryNSFactory.Delete(QueryFactory.Create <ProductSaleByDayNSEntity>());
                    var tempDate = new DateTime(2018, 1, 1);
                    using (var tran = DBTool.BeginTransaction())
                    {
                        while (tempDate <= DateTime.Now)
                        {
                            foreach (var p in dicProduct)
                            {
                                var tempNS = new ProductSaleByDayNSEntity();

                                tempNS.DataSource = lstDataSource[random.Next(lstDataSource.Count)];
                                var shop = lstShop[random.Next(lstShop.Count)];
                                tempNS.ShopID = shop.SysNo;

                                tempNS.ProductID       = p.Key.ToString();
                                tempNS.OutProductID    = p.Value;
                                tempNS.ProductName     = p.Value;
                                tempNS.Sales           = random.Next(100000);
                                tempNS.StatisticalDate = tempDate;
                                tempNS.CreateDate      = DateTime.Now;
                                tempNS.CreateUserID    = Guid.NewGuid().ToString();
                                tempNS.ImportGroupId   = importGroupId.ToString();

                                repositoryNSFactory.Add(tempNS);
                            }
                            tempDate = tempDate.AddDays(1);
                        }
                        tran.Complete();
                    }
                }
                finally
                {
                    isRuning = false;
                }
                return("初始化成功");
            }
        }
示例#9
0
        private void TestTranUpdate(bool isCommit)
        {
            var repository = GetRepository();
            var queryCount = QueryFactory.Create <ProductSaleByDayNSEntity>();

            queryCount.And(m => m.DataSource == "测试来源修改");
            var preCount = repository.Count(queryCount);
            ProductSaleByDayNSEntity model;

            using (var tran = DBTool.BeginTransaction())
            {
                var query = QueryFactory.Create <ProductSaleByDayNSEntity>();
                query.And(m => m.DataSource != "测试来源修改");
                query.OrderByDescing(m => m.StatisticalDate);
                query.StarSize = new Random().Next(5);
                query.Rows     = 1;
                model          = repository.GetPaging(query).ToList()[0];

                model.DataSource  = "测试来源修改";
                model.ProductName = "测试商品修改";

                //根据主键更新其他字段
                var r = repository.Update(model);
                Assert.True(r);
                var nextCount = repository.Count(queryCount);
                Assert.AreEqual(preCount + 1, nextCount);
                var entity = repository.Get(new ProductSaleByDayNSEntity {
                    SysNo = model.SysNo
                });
                Assert.NotNull(entity);
                Assert.AreEqual(model.SysNo, entity.SysNo);
                Assert.AreEqual(model.DataSource, entity.DataSource);
                Assert.AreEqual(model.ProductName, entity.ProductName);
                if (isCommit)
                {
                    tran.Complete();
                }
            }
            if (isCommit)
            {
                var nextCount = repository.Count(queryCount);
                Assert.AreEqual(preCount + 1, nextCount);
                var entity = repository.Get(new ProductSaleByDayNSEntity {
                    SysNo = model.SysNo
                });
                Assert.NotNull(entity);
                Assert.AreEqual(model.SysNo, entity.SysNo);
                Assert.AreEqual(model.DataSource, entity.DataSource);
                Assert.AreEqual(model.ProductName, entity.ProductName);
            }
            else
            {
                var nextCount = repository.Count(queryCount);
                Assert.AreEqual(preCount, nextCount);
                var entity = repository.Get(new ProductSaleByDayNSEntity {
                    SysNo = model.SysNo
                });
                Assert.NotNull(entity);
                Assert.AreEqual(model.SysNo, entity.SysNo);
                Assert.AreNotEqual(model.DataSource, entity.DataSource);
                Assert.AreNotEqual(model.ProductName, entity.ProductName);
            }
        }
示例#10
0
        public string Index()
        {
            if (isRuning == true)
            {
                return("正在运行中");
            }
            lock (lockObj)
            {
                isRuning = true;
                try
                {
                    using (var tran = DBTool.BeginTransaction())
                    {
                        var repositoryFactory = RepositoryFactory.Create <ProductSaleByDayEntity>();
                        var query             = QueryFactory.Create <ProductSaleByDayEntity>(m => m.CreateDate > DateTime.Now.Date);
                        query.DBModel.DBModel_ShuffledTempDate = new DateTime(2019, 09, 01);
                        if (repositoryFactory.GetList(query).Count > 10)
                        {
                            return("");
                        }
                        var importGroupId = Guid.NewGuid();
                        var random        = new Random();

                        var tempDate = new DateTime(2018, 1, 1);
                        while (tempDate <= new DateTime(2019, 12, 31))
                        {
                            if (tempDate.Day == 1)
                            {
                                query = QueryFactory.Create <ProductSaleByDayEntity>();
                                query.DBModel.DBModel_ShuffledTempDate = tempDate;
                                repositoryFactory.Delete(query);
                            }
                            foreach (var p in dicProduct)
                            {
                                var temp = new ProductSaleByDayEntity();

                                temp.SysNo           = Guid.NewGuid();
                                temp.DataSource      = lstDataSource[random.Next(lstDataSource.Count)];
                                temp.ShopName        = "测试店铺";
                                temp.ProductID       = p.Key;
                                temp.OutProductID    = p.Value;
                                temp.ProductName     = p.Value;
                                temp.Sales           = random.Next(100000);
                                temp.StatisticalDate = tempDate;
                                temp.UpdateDate      = temp.CreateDate = DateTime.Now;
                                temp.UpdateUserID    = temp.CreateUserID = Guid.NewGuid();
                                temp.ImportGroupId   = importGroupId;
                                repositoryFactory.Add(temp);
                            }
                            tempDate = tempDate.AddDays(1);
                        }
                        tran.Complete();
                    }
                }
                finally
                {
                    isRuning = false;
                }
                return("初始化成功");
            }
        }
示例#11
0
        /// <summary>
        /// 保存交易
        /// </summary>
        /// <param name="saleFlow"></param>
        /// <param name="payFlow"></param>
        /// <param name="card"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static bool SaveTrade(MSaleFlow[] saleFlow, MPayFlow[] payFlow, out MCzCard card, out string msg)
        {
            if (saleFlow.Length == 0 || payFlow.Length == 0)
            {
                msg  = "流水不完整";
                card = null;
                return(false);
            }

            //查询储值卡信息
            if (!CzkDAL.GetCzCard(payFlow.First().Ref_no, out card, out msg))
            {
                return(false);
            }
            //检测卡余额
            if (card.Total - card.CzkType.KbMoney < payFlow.First().Total)
            {
                msg = "该卡余额不足";
                return(false);
            }
            //扣减余额
            card.Total   -= payFlow.First().Total;
            card.XfTotal += payFlow.First().Total;

            SqlTransaction tran;

            //开启事务
            if (!DBTool.BeginTransaction(out tran, out msg))
            {
                return(false);
            }
            //插入商品流水
            if (!SaveSaleFlow(saleFlow, tran, out msg))
            {
                if (DBTool.RollbackTransaction(tran, out msg))
                {
                    msg = "保存商品流水失败";
                    return(false);
                }
                else
                {
                    msg = "保存商品流水错误,回滚操作失败";
                    return(false);
                }
            }
            //插入付款流水
            if (!SavePayFlow(payFlow, tran, out msg))
            {
                if (DBTool.RollbackTransaction(tran, out msg))
                {
                    msg = "保存付款流水失败";
                    return(false);
                }
                else
                {
                    msg = "保存付款流水错误,回滚操作失败";
                    return(false);
                }
            }
            //保存储值卡信息
            if (!CzkDAL.SaveCzCard(card, tran, out msg))
            {
                if (DBTool.RollbackTransaction(tran, out msg))
                {
                    msg = "保存储值卡信息失败";
                    return(false);
                }
                else
                {
                    msg = "保存储值卡错误,回滚操作失败";
                    return(false);
                }
            }
            //提交事务
            if (!DBTool.CommitTransaction(tran, out msg))
            {
                msg = "提交事务失败,已回滚";
                return(false);
            }
            //交易成功,查询余额
            if (!CzkDAL.GetCzCard(payFlow.First().Ref_no, out card, out msg))
            {
                msg = "交易成功后确认余额失败";
            }
            return(true);
        }