예제 #1
0
        public APIResult UpdateMoneyOffCache()
        {
            using (ShopDbContext db = DbContextFactory.ShopDb)
            {
                DateTime now          = DateTime.Now.Date;
                var      moneyOffList = db.Query <ShopOrderMoneyOff>()
                                        .Where(m => !m.IsDel)
                                        .Where(m => m.EndDate >= now)
                                        .Where(m => m.StartDate <= now)
                                        .ToList();

                var moneyOffCacheList = db.Set <ShopOrderMoneyOffCache>()
                                        .Where(m => !m.IsDel);

                var moneyOffFromCache = moneyOffCacheList.Select(m => m.ShopOrderMoneyOff).ToList();

                //新增部分
                List <ShopOrderMoneyOff> inCreased = moneyOffList.Except(moneyOffFromCache).ToList();
                foreach (var item in inCreased)
                {
                    ShopOrderMoneyOffCache model = new ShopOrderMoneyOffCache()
                    {
                        ShopId     = item.ShopId,
                        MoneyOffId = item.Id,
                        IsDel      = false
                    };
                    db.AddTo(model);
                }

                //减少部分
                var reduceIDs       = moneyOffFromCache.Except(moneyOffList).Select(m => m.Id);
                var reduceCacheList = db.Query <ShopOrderMoneyOffCache>()
                                      .Where(m => reduceIDs.Contains(m.MoneyOffId)).ToList();
                foreach (var item in reduceCacheList)
                {
                    item.IsDel = true;
                }
                db.SaveChanges();
            }

            DbContextFactory.LogDbContext.AddTaskLog(new TaskLog()
            {
                AddTime = DateTime.Now, TaskName = "UpdateMoneyOffCache", ExeResult = "ok"
            });

            return(Success("ok"));
        }
예제 #2
0
        public static void UpdateMoneyOffCache()
        {
            //TODO:未能获取依赖注入容器中的对象,此处为缓兵之计
            var _contextOptions = new DbContextOptionsBuilder <ShopDbContext>()
                                  .UseMySql("Server=120.79.31.209;Port=3336;Uid=root;Pwd=628VqB2sgJwLgOvngXQ3;Database=hchh;")
                                  .Options;

            using (ShopDbContext db = new ShopDbContext(_contextOptions))
            {
                DateTime now          = DateTime.Now.Date;
                var      moneyOffList = db.Query <ShopOrderMoneyOff>()
                                        .Where(m => !m.IsDel)
                                        .Where(m => m.EndDate >= now)
                                        .Where(m => m.StartDate <= now)
                                        .ToList();

                var moneyOffCacheList = db.Set <ShopOrderMoneyOffCache>()
                                        .Where(m => !m.IsDel);

                var moneyOffFromCache = moneyOffCacheList.Select(m => m.ShopOrderMoneyOff).ToList();

                //新增部分
                List <ShopOrderMoneyOff> inCreased = moneyOffList.Except(moneyOffFromCache).ToList();
                foreach (var item in inCreased)
                {
                    ShopOrderMoneyOffCache model = new ShopOrderMoneyOffCache()
                    {
                        ShopId     = item.ShopId,
                        MoneyOffId = item.Id,
                        IsDel      = false
                    };
                    db.AddTo(model);
                }

                //减少部分
                var reduceIDs       = moneyOffFromCache.Except(moneyOffList).Select(m => m.Id);
                var reduceCacheList = db.Query <ShopOrderMoneyOffCache>()
                                      .Where(m => reduceIDs.Contains(m.MoneyOffId)).ToList();
                foreach (var item in reduceCacheList)
                {
                    item.IsDel = true;
                }
                db.SaveChanges();
            }
        }
예제 #3
0
        public APIResult Add([FromBody] AddArgs args)
        {
            if (args.ShopId == 0)
            {
                throw new ArgumentNullException("ShopId");
            }
            if (!args.StartDate.HasValue)
            {
                throw new ArgumentNullException("StartDate");
            }
            if (!args.EndDate.HasValue)
            {
                throw new ArgumentNullException("EndDate");
            }
            if (args.Items.Count == 0)
            {
                throw new Exception("请输入具体规则");
            }
            CheckShopActor(args.ShopId, ShopActorType.超级管理员);

            ShopOrderMoneyOff shopOrderMoneyOff = new ShopOrderMoneyOff()
            {
                Name        = args.Name,
                StartDate   = args.StartDate.Value.Date,
                EndDate     = args.EndDate.Value.Date,
                ShopId      = args.ShopId,
                IsScanCode  = args.IsScanCode,
                IsSelfOrder = args.IsSelfOrder,
                IsTakeout   = args.IsTakeout,
                IsEnable    = true,
                IsDel       = false
            };

            db.AddTo(shopOrderMoneyOff);
            db.SaveChanges();

            //若在优惠期间,则开始优惠
            DateTime now = DateTime.Now.Date;

            if (now >= shopOrderMoneyOff.StartDate.Value && now <= shopOrderMoneyOff.EndDate.Value)
            {
                ShopOrderMoneyOffCache cache = new ShopOrderMoneyOffCache()
                {
                    ShopId     = shopOrderMoneyOff.ShopId,
                    MoneyOffId = shopOrderMoneyOff.Id
                };
                db.AddTo(cache);
            }


            foreach (var item in args.Items)
            {
                ShopOrderMoneyOffRule rule = new ShopOrderMoneyOffRule()
                {
                    MoneyOffId = shopOrderMoneyOff.Id,
                    FullAmount = (int)Math.Floor(item.FullAmount * 100),
                    Discount   = (int)Math.Floor(item.Discount * 100),
                    IsDel      = false
                };
                db.AddTo(rule);
            }
            db.SaveChanges();
            return(Success());
        }