Пример #1
0
        public async Task <IActionResult> CreateOrder([FromBody] GiftOrderInputModel model)
        {
            try
            {
                await _giftOrderService.CreateGiftOrderAsync(model);

                return(Ok(new { rlt = true, state = "success" }));
            }
            catch (Exception e)
            {
                if (!(e is ApplicationException))
                {
                    _logger.LogError(e, e.Message);
                }

                return(Ok(new { rlt = false, state = "fail", msg = e.Message }));
            }
        }
Пример #2
0
        /// <summary>
        /// 创建订单
        /// </summary>
        /// <param name="model"></param>
        public async Task CreateGiftOrderAsync(GiftOrderInputModel model)
        {
            var entity = _mapper.Map <GiftOrderInputModel, CHIS_Gift_Order>(model);

            entity.Create();

            using (var transaction = _db.Database.BeginTransaction())
            {
                try
                {
                    var gift = _db.CHIS_Code_Gift.SingleOrDefault(x => x.GiftId == entity.GiftId);

                    if (gift.Type > 0)
                    {
                        var customer = _db.CHIS_Code_Customer.SingleOrDefault(x => x.CustomerID == entity.CustomerId);

                        if (entity.Count > 1)
                        {
                            //虚拟券类拆分订单

                            var list = new List <CHIS_Gift_Order>();

                            //var count = entity.Count;

                            //entity.Count = 1;

                            for (int i = 0; i < entity.Count; i++)
                            {
                                list.Add(new CHIS_Gift_Order {
                                    CreatedTime = entity.CreatedTime, Count = 1, CustomerId = entity.CustomerId, GiftId = entity.GiftId
                                });
                            }
                            foreach (var item in list)
                            {
                                CommitOrder(item);
                            }

                            transaction.Commit();

                            for (int i = 0; i < entity.Count; i++)
                            {//投放卡券
                                await _weChatService.DeliveryCardAsync(customer.WXOpenId, gift.WeChatCardId);
                            }
                        }
                        else
                        {
                            CommitOrder(entity);

                            transaction.Commit();

                            await _weChatService.DeliveryCardAsync(customer.WXOpenId, gift.WeChatCardId);
                        }
                    }
                    else
                    {
                        CommitOrder(entity);

                        transaction.Commit();
                    }
                }
                catch (Exception)
                {
                    transaction.Rollback();

                    throw;
                }
            }
        }