public async Task <IActionResult> Post([FromBody] JToken jObj)
        {
            var orderVms  = jObj["orders"].ToObject <List <SubscriptionOrderAddViewModel> >();
            var milkmanId = jObj["milkmanId"].ToObject <int>();

            if (!orderVms.Any())
            {
                return(BadRequest());
            }
            if (!TryValidateModel(orderVms))
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
            }
            var hasDayBeenConfirmed = await HasSubscriptionDayBeenConfirmed();

            var monthPromotionIds   = orderVms.Select(x => x.SubscriptionMonthPromotionId).Distinct().ToList();
            var promotionBonusDates = await _subscriptionMonthPromotionBonusDateRepository.AllIncluding(x => x.SubscriptionMonthPromotionBonus)
                                      .Where(x => monthPromotionIds.Contains(x.SubscriptionMonthPromotionBonus.SubscriptionMonthPromotion.Id)).ToListAsync();

            if (promotionBonusDates.Any())
            {
                var bonusDates = promotionBonusDates.Select(x => x.Date).ToList();
                _subscriptionOrderService.ValidateOrderBonusDates(bonusDates, Today, Tomorrow, hasDayBeenConfirmed);
                foreach (var orderVm in orderVms)
                {
                    if (orderVm.SubscriptionMonthPromotionId.HasValue)
                    {
                        orderVm.SubscriptionOrderBonusDates = promotionBonusDates.Where(x => x.SubscriptionMonthPromotionBonus.SubscriptionMonthPromotionId == orderVm.SubscriptionMonthPromotionId)
                                                              .Select(x => new SubscriptionOrderBonusDateViewModel {
                            SubscriptionMonthPromotionBonusDateId = x.Id
                        })
                                                              .ToList();
                    }
                }
            }

            _subscriptionOrderService.ValidateOrderDatesAndModifiedBonusDates(orderVms, Today, Tomorrow, hasDayBeenConfirmed);
            var invalidateDates = await _subscriptionOrderService.ValidateDayCountAsync(milkmanId, orderVms);

            if (invalidateDates.Any())
            {
                return(BadRequest(invalidateDates));
            }
            var createTime = _subscriptionOrderService.AddSubscriptionOrders(orderVms, UserName);

            if (!await UnitOfWork.SaveAsync())
            {
                return(StatusCode(500, "保存时出错"));
            }
            return(Ok(createTime));
        }
        public async Task <IActionResult> Post([FromBody] JToken jObj)
        {
            var orderVms = jObj["orders"].ToObject <List <SubscriptionOrderAddViewModel> >();

            if (!orderVms.Any())
            {
                return(BadRequest());
            }
            if (!TryValidateModel(orderVms))
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
            }
            var hasDayBeenConfirmed = await HasSubscriptionDayBeenConfirmed();

            var bonusDateIds = orderVms.SelectMany(x => x.SubscriptionOrderBonusDates)
                               .Select(x => x.SubscriptionMonthPromotionBonusDateId).Distinct().ToList();
            var promotionBonusDates = await _subscriptionMonthPromotionBonusDateRepository.All
                                      .Where(x => bonusDateIds.Contains(x.Id)).ToListAsync();

            if (promotionBonusDates.Any())
            {
                var bonusDates = promotionBonusDates.Select(x => x.Date).ToList();
                _subscriptionOrderService.ValidateOrderBonusDates(bonusDates, Today, Tomorrow, hasDayBeenConfirmed);
            }

            _subscriptionOrderService.ValidateOrderDatesAndModifiedBonusDates(orderVms, Today, Tomorrow, hasDayBeenConfirmed);
            await _subscriptionOrderService.ValidateDayCountAsync(orderVms, promotionBonusDates);

            _subscriptionOrderService.AddSubscriptionOrders(orderVms, UserName);
            if (!await UnitOfWork.SaveAsync())
            {
                return(StatusCode(500, "保存时出错"));
            }
            return(NoContent());
        }