示例#1
0
        public void TestSave_Update()
        {
            using (new TransactionScope())
                using (var dao = new TrendDbContext())
                {
                    var beforeCount = dao.Set <MarkSixSpecifiedLocationPurchase>().Count();
                    var service     = new MarkSixPurchaseService();
                    var addDto      = new MarkSixSpecifiedLocationPurchase
                    {
                        Times        = "2017001",
                        Odds         = 40,
                        Location     = 7,
                        PurchaseList = "12:50;36:100"
                    };
                    service.SaveSpecifiedLocation(addDto);
                    var afterCount = dao.Set <MarkSixSpecifiedLocationPurchase>().Count();
                    Assert.IsTrue(beforeCount + 1 == afterCount);
                    var purchase = dao.Set <MarkSixSpecifiedLocationPurchase>().OrderByDescending(m => m.Id).FirstOrDefault();
                    Assert.IsNotNull(purchase);
                    Assert.IsTrue(purchase.Times == addDto.Times);

                    addDto.Id       = purchase.Id;
                    addDto.Location = 6;
                    service.SaveSpecifiedLocation(addDto);
                    purchase = dao.Set <MarkSixSpecifiedLocationPurchase>().AsNoTracking().FirstOrDefault(m => m.Id == purchase.Id);
                    Assert.IsTrue(purchase.Location == addDto.Location);
                }
        }
 public MarkSixSpecifiedLocationPurchase GetSpecifiedLocationPurchaseById(long id)
 {
     using (var dao = new TrendDbContext())
     {
         return(dao.Set <MarkSixSpecifiedLocationPurchase>().FirstOrDefault(m => m.Id == id));
     }
 }
示例#3
0
 public void TestMethod1()
 {
     using (var dao = new TrendDbContext())
     {
         dao.Set <MarkSixRecord>().Add(new MarkSixRecord {
             Times = "2017004", FirstNum = 12, AwardingDate = DateTime.Now
         });
         dao.SaveChanges();
     }
 }
 public void RemoveSpecifiedLocation(params long[] ids)
 {
     using (var dao = new TrendDbContext())
     {
         foreach (var id in ids)
         {
             var record = dao.Set <MarkSixSpecifiedLocationPurchase>().FirstOrDefault(m => m.Id == id);
             if (record == null)
             {
                 throw new Exception(string.Format("错误,购买记录不存在!(Id:{0})", id));
             }
             dao.Entry(record).State = EntityState.Deleted;
         }
         dao.SaveChanges();
     }
 }
        public List <MarkSixRecord> Search(MarkSixRecordSearchDto dto)
        {
            using (var dao = new TrendDbContext())
            {
                var source = dao.Set <MarkSixRecord>().AsQueryable();

                source = source.WhereDateTime(nameof(MarkSixRecord.AwardingDate), dto.StartDateTime, dto.EndDateTime);

                if (!string.IsNullOrWhiteSpace(dto.Times))
                {
                    source = source.Where(m => m.Times.Contains(dto.Times));
                }
                if (dto.IsGetTotalCount)
                {
                    dto.TotalCount = source.Count();
                }
                return(source.OrderBy(m => m.Times).Skip(dto.StartIndex).Take(dto.PageSize).ToList());
            }
        }
 public void SaveSpecifiedLocation(MarkSixSpecifiedLocationPurchase dto)
 {
     if (string.IsNullOrWhiteSpace(dto.Times))
     {
         throw new Exception("错误,期次不能为空");
     }
     if (string.IsNullOrWhiteSpace(dto.PurchaseList))
     {
         throw new Exception("错误,购买清单不能为空");
     }
     if (dto.Location > 7 || dto.Location < 1)
     {
         throw new Exception("错误,购买的指定位置必须为1-7!");
     }
     if (dto.Odds <= 0)
     {
         throw new Exception("错误,赔率不能小于等于0!");
     }
     using (var dao = new TrendDbContext())
     {
         if (dto.Id > 0)
         {
             var purchase = dao.Set <MarkSixSpecifiedLocationPurchase>().FirstOrDefault(m => m.Id == dto.Id);
             if (purchase == null)
             {
                 throw new Exception(string.Format("错误,购买记录不存在!(Id:{0})", dto.Id));
             }
             purchase.Times          = dto.Times;
             purchase.PurchaseList   = dto.PurchaseList;
             purchase.Odds           = dto.Odds;
             purchase.Location       = dto.Location;
             purchase.PurchaseAmount = dto.PurchaseAmount;
             purchase.OnModified     = DateTime.Now;
         }
         else
         {
             dto.OnCreated = dto.OnModified = DateTime.Now;
             dao.Set <MarkSixSpecifiedLocationPurchase>().Add(dto);
         }
         dao.SaveChanges();
     }
 }
        /// <summary>
        ///     获取指定位置的购买记录
        /// </summary>
        /// <returns></returns>
        public List <MarkSixSpecifiedLocationPurchase> SearchSpecifiedLocation(MarkSixSpecifiedLocationPurchaseSearchDto dto)
        {
            using (var dao = new TrendDbContext())
            {
                var source = dao.Set <MarkSixSpecifiedLocationPurchase>().AsQueryable();

                source = source.WhereDateTime(nameof(MarkSixSpecifiedLocationPurchase.OnCreated), dto.StartDateTime, dto.EndDateTime);

                if (dto.Location > 0)
                {
                    source = source.Where(m => m.Location == dto.Location);
                }
                if (!string.IsNullOrWhiteSpace(dto.Times))
                {
                    source = source.Where(m => m.Times.Contains(dto.Times));
                }
                if (dto.IsGetTotalCount)
                {
                    dto.TotalCount = source.Count();
                }
                return(source.OrderBy(m => m.Times).Skip(dto.StartIndex).Take(dto.PageSize).ToList());
            }
        }
        /// <summary>
        ///     导入
        /// </summary>
        public int Import(string fileName)
        {
            //数组列表
            var records = new List <MarkSixRecord>();

            using (var stream = new FileStream(fileName, FileMode.Open))
                using (var package = new ExcelPackage(stream))
                {
                    var workbook = package.Workbook;
                    for (int i = 1, len = workbook.Worksheets.Count; i <= len; i++)
                    {
                        //当前序号工作表
                        var sht         = workbook.Worksheets[i];
                        var startRow    = sht.Dimension.Start.Row;
                        var endRow      = sht.Dimension.End.Row;
                        var startColumn = sht.Dimension.Start.Column;
                        var endColumn   = sht.Dimension.End.Column;
                        var cell        = sht.Cells[startRow, startColumn, endRow, endColumn].FirstOrDefault(c => c.Text == "序号");

                        //查找最后一个"序号"单元格
                        if (cell == null)
                        {
                            throw new Exception("工作表" + sht.Name + ",没有第一个单元格为‘序号’的结束行!");
                        }

                        //记录日期
                        DateTime recordDate;
                        if (sht.Cells[2, 2].Value == null)
                        {
                            throw new Exception("工作表" + sht.Name + ",第二行记录日期为空!");
                        }
                        if (!DateTime.TryParse(sht.Cells[2, 2].Value.ToString(), out recordDate))
                        {
                            throw new Exception("工作表" + sht.Name + ",第二行记录日期格式错误!");
                        }

                        //遍历所有行
                        for (var r = 2; r < endRow; r++)
                        {
                            try
                            {
                                //声明记录对象
                                var record = new MarkSixRecord();

                                //开奖日期
                                record.AwardingDate = DateTime.Parse(sht.Cells[r, 2].Value.ToString());

                                //记录期次
                                var strTimes = sht.Cells[r, 3].Value.ToString();

                                //期次必须为4位年3位期次
                                if (strTimes != recordDate.Year + (r - 1).ToString("000"))
                                {
                                    throw new Exception("工作表" + sht.Name + ",第" + r + "行期次错误!" + "必须为4位年3位连续的期次。");
                                }

                                //写入数据到记录对象
                                record.Times      = strTimes;
                                record.TimesValue = int.Parse(strTimes);
                                record.FirstNum   = byte.Parse(sht.Cells[r, 4].Value.ToString());
                                record.SecondNum  = byte.Parse(sht.Cells[r, 5].Value.ToString());
                                record.ThirdNum   = byte.Parse(sht.Cells[r, 6].Value.ToString());
                                record.FourthNum  = byte.Parse(sht.Cells[r, 7].Value.ToString());
                                record.FifthNum   = byte.Parse(sht.Cells[r, 8].Value.ToString());
                                record.SixthNum   = byte.Parse(sht.Cells[r, 9].Value.ToString());
                                record.SeventhNum = byte.Parse(sht.Cells[r, 10].Value.ToString());

                                //添加到列表
                                records.Add(record);
                            }
                            catch (Exception ex)
                            {
                                throw new Exception("工作表" + sht.Name + ",第" + r + "行格式错误!" + ex.Message);
                            }
                        }
                    }
                }
            if (records.Count > 0)
            {
                RecordCount = records.Count;
                OnBeforeImportEvent(null);
                using (var dao = new TrendDbContext())
                {
                    //var timeses = records.Select(r => r.StartTimes).ToList();
                    //var originalRecords = dao.Set<MarkSixRecord>().Where(m => timeses.Any(times => times == m.StartTimes));
                    //dao.Set<MarkSixRecord>().RemoveRange(originalRecords);
                    //dao.Set<MarkSixRecord>().AddRange(records);
                    foreach (var record in records)
                    {
                        //记录已导入数量
                        ImportedCount++;

                        //处理正在导入事件
                        OnImportingEvent(null);
                        if (IsStopImporting)
                        {
                            return(0);
                        }
                        var originalRecord = dao.Set <MarkSixRecord>().FirstOrDefault(m => m.Times == record.Times);
                        if (originalRecord != null)
                        {
                            originalRecord.AwardingDate     = record.AwardingDate;
                            originalRecord.FirstNum         = record.FirstNum;
                            originalRecord.SecondNum        = record.SecondNum;
                            originalRecord.ThirdNum         = record.ThirdNum;
                            originalRecord.FourthNum        = record.FourthNum;
                            originalRecord.FifthNum         = record.FifthNum;
                            originalRecord.SixthNum         = record.SixthNum;
                            originalRecord.SeventhNum       = record.SeventhNum;
                            dao.Entry(originalRecord).State = EntityState.Modified;
                        }
                        else
                        {
                            dao.Set <MarkSixRecord>().Add(record);
                        }
                    }


                    dao.SaveChanges();
                }
            }
            return(records.Count());
        }