Esempio n. 1
0
        public void Persist(OrderInfo order)
        {
            //更新当前收货地址为用户的默认收货地址
            PipelineDA.SetCustomerShippingAddressAsDefault(order.Contact.ID, order.Customer.SysNo);

            foreach (var subOrder in order.SubOrderList.Values)
            {
                //更新用户积分信息
                if (subOrder.PointPayAmount > 0m)
                {
                    subOrder["Memo"] = "创建订单扣减积分";
                    var msgResult = PipelineDA.UpdatePointForCustomer(subOrder);
                    if (String.IsNullOrWhiteSpace(msgResult) || !msgResult.Trim().Equals("1000099"))
                    {
                        ECommerce.Utility.Logger.WriteLog("Update point of customer failed,ErrorCode:" + msgResult, "SOPipeline.NeweggSpecialPersister");
                        throw new BusinessException("用户积分不足");
                    }
                }

                //更新用户余额
                if (subOrder.BalancePayAmount > 0m)
                {
                    PipelineDA.UpdateCustomerPrepayBasic(subOrder);
                }

                //更新用户扩展信息
                PipelineDA.UpdateCustomerExtend(subOrder);

                //订单发货仓库
                //subOrder["LocalWHSysNo"] = subOrder.OrderItemGroupList.FirstOrDefault().ProductItemList.FirstOrDefault().WarehouseNumber;
                subOrder["LocalWHSysNo"] = subOrder["WarehouseNumber"];

                //订单运费检查
                PipelineDA.UpdateSOCheckShipping(subOrder);

                //创建订单扩展信息
                PipelineDA.CreateSOMasterExtension(subOrder);

                //创建订单商品扩展信息
                if (subOrder.OrderItemGroupList != null)
                {
                    //只记录团购商品信息,用于job后台结算
                    subOrder.OrderItemGroupList.ForEach(g =>
                    {
                        if (g.ProductItemList != null)
                        {
                            g.ProductItemList.Where(x => x.SpecialActivityType == 1)
                            .ToList()
                            .ForEach(item =>
                            {
                                item["SOSysNo"]           = subOrder.ID;
                                item["ItemExtensionType"] = "G";
                                PipelineDA.CreateSOItemExtension(item);
                            });
                        }
                    });
                }

                //新赠品规则
                subOrder.AttachmentItemList.ForEach(item =>
                {
                    item["SOSysNo"] = subOrder.ID;
                    PipelineDA.CreateSOItemAttachmentAccessory(item); //创建订单所有附件
                });

                List <DTOInfo> orderGiftMasterList = new List <DTOInfo>();
                subOrder.GiftItemList.ForEach(item =>
                {
                    DTOInfo dtoInfo = orderGiftMasterList.Find(f => (int)f["ActivityNo"] == item.ActivityNo);
                    if (dtoInfo == null)
                    {
                        dtoInfo                 = new DTOInfo();
                        dtoInfo["SOSysNo"]      = subOrder.ID;
                        dtoInfo["ActivityNo"]   = item.ActivityNo;
                        dtoInfo["SaleGiftType"] = item.SaleGiftType;
                        dtoInfo["Count"]        = item.UnitQuantity;
                        dtoInfo["Order"]        = 0;
                        orderGiftMasterList.Add(dtoInfo);
                    }
                    else
                    {
                        dtoInfo["Count"] = (int)dtoInfo["Count"] + item.UnitQuantity;
                        dtoInfo["Order"] = (int)dtoInfo["Order"] + 1;
                    }

                    PipelineDA.CreateSOItemGiftAccessory(item); //创建订单所有赠品
                    PipelineDA.CreateSOGiftItem(item);          //促销活动订单赠品列表
                });

                foreach (DTOInfo dtoInfo in orderGiftMasterList)
                {
                    PipelineDA.CreateSOGiftMaster(dtoInfo);//促销活动订单赠送
                }
            }
        }