Ejemplo n.º 1
0
        /// <summary>
        /// 修改订单备注的旗帜
        /// </summary>
        /// <param name="Order">订单信息</param>
        /// <param name="SessionKey">用户授权</param>
        /// <returns></returns>
        private void UpdateDeital(tbOrdersInfo Order, tbOrdersConfig Config, string SessionKey)
        {
            string[] OutNumber = Order.OrdersOutNumber.Split(',');
            if (Order.ServiceNotes != null)
            {
                string[] Detail = Regex.Split(Order.ServiceNotes, "%Separation%");
                Order.ServiceNotes = Order.ServiceNotes.Replace("%Separation%", " ");
            }

            if (Config.ConfigId <= 0)
            {
                return;
            }
            if (String.IsNullOrEmpty(Config.Remark) && Config.RemarkFlag == 0)
            {
                return;
            }

            try
            {
                MYDZ.Business.TB_Logic.Order.GetTradeInfo gti = new MYDZ.Business.TB_Logic.Order.GetTradeInfo();
                for (int i = 0; i < OutNumber.Length; i++)
                {
                    gti.UpdateTradeMemo(SessionKey, OutNumber[i].ToString(), Config.Remark, Config.RemarkFlag, false);
                }
            }
            catch { }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取单笔交易的详细信息
        /// </summary>
        /// <param name="sessionKey"></param>
        /// <param name="tid"></param>
        /// <param name="ErrorMsg"></param>
        /// <returns></returns>
        internal tbOrdersInfo GetTradeFullinfo(string sessionKey, string tid, int ShopId, out string ErrorMsg)
        {
            //show_ext 这个字段导致接口报错
            tbOrdersInfo newtrade = null;

            try
            {
                ErrorMsg = null;
                ITopClient client           = new DefaultTopClient(StaticSystemConfig.soft.ApiURL, StaticSystemConfig.soft.AppKey, StaticSystemConfig.soft.AppSecret, "json");
                TradeFullinfoGetRequest req = new TradeFullinfoGetRequest();
                req.Fields += "seller_nick, buyer_nick, title, type, created, tid, seller_rate, buyer_rate,";
                req.Fields += " status, payment, adjust_fee, post_fee, total_fee, pay_time, end_time, modified, ";
                req.Fields += "consign_time, buyer_obtain_point_fee, point_fee, real_point_fee, received_payment, commission_fee,";
                req.Fields += "seller_memo, alipay_no,alipay_id,buyer_message, pic_path, num_iid, num, price, ";
                req.Fields += "receiver_name, receiver_state, receiver_city, receiver_district, receiver_address,";
                req.Fields += "receiver_zip, receiver_mobile, receiver_phone,seller_flag, seller_alipay_no, seller_mobile, ";
                req.Fields += "seller_phone, seller_name, seller_email, available_confirm_fee, has_post_fee, timeout_action_time,";
                req.Fields += "snapshot_url, cod_fee, cod_status, shipping_type, trade_memo, buyer_email,buyer_area,";
                req.Fields += "trade_from,is_lgtype,is_force_wlb,is_brand_sale,buyer_cod_fee,discount_fee,seller_cod_fee,";
                req.Fields += "express_agency_fee,invoice_name,service_orders,credit_cardfee,step_trade_status,step_paid_fee,";
                req.Fields += "mark_desc,has_yfx,yfx_fee,yfx_id,yfx_type,trade_source,eticket_ext,send_time, is_daixiao,";
                req.Fields += "is_part_consign, arrive_interval, arrive_cut_time, consign_interval,zero_purchase,alipay_point,pcc_af,";
                req.Fields += "orders,promotion_details,invoice_name,orders.is_www,orders.store_code,service_tags";
                if (!string.IsNullOrEmpty(tid))
                {
                    req.Tid = long.Parse(tid);
                }
                else
                {
                    ErrorMsg = "订单编号不能为空";
                    return(null);
                }
                TradeFullinfoGetResponse response = client.Execute(req, sessionKey);
                if (response.IsError)
                {
                    ErrorMsg = response.SubErrMsg;
                    return(null);
                }
                else
                {
                    Top.Api.Domain.Trade trade = new Top.Api.Domain.Trade();
                    newtrade = new tbOrdersInfo();
                    //订单信息转化
                    newtrade = ChangeLocationType(response.Trade, ShopId);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(newtrade);
        }
Ejemplo n.º 3
0
        public bool Insert(tbOrdersInfo OrdersInfo)
        {
            bool IsOk = false;

            IDbDataParameter[] parm = GetInsertParam();
            parm[0].Value  = OrdersInfo.OrdersNumber;
            parm[1].Value  = OrdersInfo.NickName;
            parm[2].Value  = OrdersInfo.Logistics.LogisticsId;
            parm[3].Value  = OrdersInfo.Status.OrdersStatusId;
            parm[4].Value  = OrdersInfo.Shop.ShopId;
            parm[5].Value  = OrdersInfo.CustomerServiceId;
            parm[6].Value  = OrdersInfo.IsOrdersReFund;
            parm[7].Value  = OrdersInfo.IsOrdersPrint;
            parm[8].Value  = OrdersInfo.IsInventory;
            parm[9].Value  = OrdersInfo.IsFree;
            parm[10].Value = OrdersInfo.OrdersWeight;
            parm[11].Value = OrdersInfo.OrdersFreight;
            parm[12].Value = OrdersInfo.OrdersProductTotal;
            parm[13].Value = OrdersInfo.OrdersDiscount;
            parm[14].Value = OrdersInfo.OrdersAccounts;
            parm[15].Value = OrdersInfo.OrdersPaid;
            parm[16].Value = OrdersInfo.OrdersDate;
            parm[17].Value = OrdersInfo.PayDate;
            parm[18].Value = OrdersInfo.OrdersInputDate;
            parm[19].Value = OrdersInfo.ServiceNotes;
            parm[20].Value = OrdersInfo.ServiceFlag;
            parm[21].Value = OrdersInfo.OrdersNotes;
            parm[22].Value = OrdersInfo.OrdersFlag;
            parm[23].Value = OrdersInfo.OrdersOutNumber;
            parm[24].Value = OrdersInfo.CashOndelivery;
            parm[25].Value = OrdersInfo.Invoice;
            parm[26].Value = OrdersInfo.DeliveryDate;
            parm[27].Value = OrdersInfo.BuyerMsg;
            parm[28].Value = OrdersInfo.BuyerRemark;
            parm[29].Value = OrdersInfo.RemarkFlag;
            parm[30].Value = OrdersInfo.Commission;
            parm[31].Value = OrdersInfo.CodFee;

            try
            {
                DBHelper.ExecuteNonQuery(CommandType.StoredProcedure, SQL_INSERT, parm);
                IsOk = true;
            }
            catch { }

            return(IsOk);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 根据物流配送范围和物流优先级别分配订单物流信息
        /// </summary>
        /// <param name="ShopLogistics">店铺物流列表</param>
        /// <param name="Order">订单信息</param>
        /// <param name="CompayList">能够派送的物流公司列表</param>
        public static void RangeDelivery(IList <StoreLogistics> ShopLogistics, tbOrdersInfo Order, List <string> CompayList)
        {
            if (!(CompayList != null && CompayList.Count > 0 && ShopLogistics != null && ShopLogistics.Count > 0))
            {
                return;
            }
            var query = from p in ShopLogistics where CompayList.Contains(p.Logistics.LogisticsCode.Trim()) orderby p.Sort descending select p;

            try
            {
                if (query != null && query.Count() > 0)
                {
                    Order.Logistics.LogisticsId = query.First().Logistics.LogisticsId;
                }
                else
                {
                    Order.Logistics.LogisticsId = (from p in ShopLogistics orderby p.Sort ascending select p).First().Logistics.LogisticsId;
                }
            }
            catch { }
        }
Ejemplo n.º 5
0
        //开始执行操作
        private bool StartRun(object obj)
        {
            int StartIndex = 0;

            MYDZ.Business.Business_Logic.Order.InitTradeInfo iti = new Business_Logic.Order.InitTradeInfo();
            bool                   Result             = false;
            string                 ErrorMsg           = null;
            bool                   HasNext            = false;
            long                   TotalResults       = 0;
            Hashtable              ht                 = null;
            TradesSoldGet          TradesSold         = null;
            tbClientUser           clientuser         = null;
            tbOrdersConfig         ordersConfig       = null;
            List <Trade>           listtrade          = null;
            IList <StoreLogistics> StoreLogisticsList = null;
            tbOrdersInfo           OrdersInfo         = null;

            if (obj != null)
            {
                ht           = new Hashtable();
                TradesSold   = new TradesSoldGet();
                clientuser   = new tbClientUser();
                ordersConfig = new tbOrdersConfig();

                ht                 = obj as Hashtable;
                clientuser         = ht["clientuser"] as tbClientUser;
                TradesSold         = ht["TradesSoldGet"] as TradesSoldGet;
                StoreLogisticsList = ht["LogisticsList"] as List <StoreLogistics>;
                ordersConfig       = ht["Config"] as tbOrdersConfig;

                //获取从上一次同步到现在产生的订单,否则获取店铺一个星期的未完成订单
                DateTime LastModifyTime = ht["LastModifyTime"] == null ? new DateTime() : Convert.ToDateTime(ht["LastModifyTime"].ToString());
                if (LastModifyTime != new DateTime())
                {
                    TradesSold.StartCreated = Convert.ToDateTime(LastModifyTime.ToString("yyyy-MM-dd HH:mm:ss"));
                }
                else
                {
                    TradesSold.StartCreated = Convert.ToDateTime(DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd HH:mm:ss"));
                }
                if (TradesSold.EndCreated == null)
                {
                    TradesSold.EndCreated = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                }

                while (true)
                {
                    string Errormsg = null;
                    List <tbOrdersInfo> listOrdersInfo = new List <tbOrdersInfo>();
                    listtrade = new List <Trade>();

                    //获取未完成订单
                    TradesSold.Status = "WAIT_SELLER_SEND_GOODS";

                    //获取淘宝默认数量的订单
                    listtrade = iti.GetTradesSold(clientuser.UserShops[0].SessionKey, TradesSold, out ErrorMsg, out HasNext, out TotalResults);

                    if (listtrade == null || TotalResults == 0)
                    {
                        break;
                    }
                    try
                    {
                        //这里写得到临时数据
                        //遍历订单
                        foreach (Trade trade in listtrade)
                        {
                            try
                            {
                                OrdersInfo = new tbOrdersInfo();

                                //获取订单的详细信息
                                OrdersInfo = iti.GetTradeFullinfo(clientuser.UserShops[0].SessionKey, trade.Tid.ToString(), clientuser.UserShops[0].Shop.ShopId, out Errormsg);

                                //这里做物流解析
                                string[] LogisticsList = Comm.Distribution(StoreLogisticsList, OrdersInfo.LogisticsStr);
                                if (LogisticsList != null)
                                {
                                    OrdersInfo.IsFree = bool.Parse(LogisticsList[0]);
                                    OrdersInfo.Logistics.LogisticsId = int.Parse(LogisticsList[1]);;
                                    if (OrdersInfo.OrdersFreight == 0)
                                    {
                                        OrdersInfo.IsFree = true;
                                    }
                                }

                                //拆单、并单
                                Comm.MergeOrder(ordersConfig, listOrdersInfo, OrdersInfo);

                                // 检查订单配置关系
                                Comm.StatusAssign(ordersConfig, OrdersInfo);

                                //物流分配
                                bool IsOk = Comm.DeliveryAssign(ordersConfig, StoreLogisticsList, OrdersInfo);
                                if (!IsOk && ordersConfig.LogisticsDis && StoreLogisticsList != null && StoreLogisticsList.Count > 0)
                                {
                                    string target = String.IsNullOrEmpty(OrdersInfo.Consignee.District) ? OrdersInfo.Consignee.City : OrdersInfo.Consignee.District;
                                    if (!String.IsNullOrEmpty(target))
                                    {
                                        List <string> CompayList = GetLogisticsIdList((OrdersInfo.CashOndelivery ? "cod" : "online"), "", target.Trim());

                                        //根据物流配送范围和物流优先级别分配订单物流信息
                                        Comm.RangeDelivery(StoreLogisticsList, OrdersInfo, CompayList);
                                    }
                                }

                                //解析订单是否需要打印发货单
                                Comm.AnalyticalInvoice(ordersConfig, StoreLogisticsList, OrdersInfo);

                                //修改订单备注旗帜
                                UpdateDeital(OrdersInfo, ordersConfig, clientuser.UserShops[0].SessionKey);
                            }
                            catch (Exception ex)
                            {
                                continue;
                            }
                        }

                        StartIndex++;

                        //这里写插入数据库临时表
                        if (CheckAndInsertOrders(listOrdersInfo))
                        {
                            if (StartIndex == 1)
                            {
                                clientuser.StartIndex = StartIndex;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        continue;
                    }
                    if (HasNext)
                    {
                        TradesSold.PageNo++;
                    }
                    else
                    {
                        break;
                    }
                }
            }
            return(Result);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 添加订单信息
 /// </summary>
 /// <param name="OrdersInfo">订单表</param>
 /// <returns></returns>
 public static bool Insert(tbOrdersInfo OrdersInfo)
 {
     return(OrdersInfoDal.Insert(OrdersInfo));
 }
Ejemplo n.º 7
0
        /// <summary>
        /// 合并同用户名、同地址订单(货到付款订单不合并)
        /// </summary>
        /// <param name="Config">配置信息</param>
        /// <param name="Orders">订单列表</param>
        /// <param name="Order">订单信息</param>
        public static void MergeOrder(tbOrdersConfig Config, List <tbOrdersInfo> Orders, tbOrdersInfo Order)
        {
            //货到付款的订单不合并
            if (Order.CashOndelivery)
            {
                Orders.Add(Order); return;
            }

            if (Orders != null && Orders.Count > 0)
            {
                bool Merger = false;
                if (Config.ConfigId > 0)
                {
                    Merger = Config.MergerOrder;
                }

                if (Merger)
                {
                    bool IsOk = false;
                    foreach (tbOrdersInfo TempOrder in Orders)
                    {
                        if (Config.ConfigId > 0)
                        {
                            if (Config.PayTime > 0)
                            {
                                //验证付款时间
                                TimeSpan TSpan = DateTime.Now.Subtract(Order.PayDate);
                                int      Span  = TSpan.Days * 1440 + TSpan.Hours * 60 + TSpan.Minutes;
                                if (Span < Config.PayTime)
                                {
                                    Orders.Clear();
                                    break;
                                }
                            }
                        }

                        if (TempOrder.CashOndelivery)
                        {
                            continue;
                        }

                        if (TempOrder.Consignee.Name.Trim() == Order.Consignee.Name.Trim() && TempOrder.Consignee.Provice.Trim() == Order.Consignee.Provice.Trim() && TempOrder.Consignee.City.Trim() == Order.Consignee.City.Trim() && TempOrder.Consignee.District.Trim() == Order.Consignee.District.Trim() && TempOrder.Consignee.ConsigneeAddress.Trim() == Order.Consignee.ConsigneeAddress.Trim())
                        {
                            TempOrder.OrdersFreight      += Order.OrdersFreight;                                                               //合并运费
                            TempOrder.OrdersProductTotal += Order.OrdersProductTotal;                                                          //合并商品总金额
                            TempOrder.OrdersAccounts     += Order.OrdersAccounts;                                                              //合并订单应收金额
                            TempOrder.OrdersPaid         += Order.OrdersPaid;                                                                  //合并订单实收金额
                            TempOrder.OrdersDiscount     += TempOrder.OrdersAccounts - TempOrder.OrdersProductTotal - TempOrder.OrdersFreight; //计算订单折扣
                            TempOrder.OrdersOutNumber    += "," + Order.OrdersOutNumber;                                                       //合并订单外部编码
                            TempOrder.ServiceNotes       += "%Separation%" + Order.ServiceNotes;                                               //合并客服备注
                            TempOrder.IsOrdersReFund      = TempOrder.IsOrdersReFund || Order.IsOrdersReFund ? true : false;

                            TempOrder.Details.AddRange(Order.Details);
                            IsOk = true;
                            break;
                        }
                    }

                    if (!IsOk)
                    {
                        Orders.Add(Order);
                    }
                }
                else
                {
                    Orders.Add(Order);
                }
            }
            else
            {
                Orders.Add(Order);
            }
        }
Ejemplo n.º 8
0
 /// <summary>
 /// 解析订单是否需要打印发货单
 /// </summary>
 /// <param name="Config">订单获取配置信息</param>
 /// <param name="ShopLogistics">店铺物流列表</param>
 /// <param name="Order">订单信息</param>
 public static void AnalyticalInvoice(tbOrdersConfig Config, IList <StoreLogistics> ShopLogistics, tbOrdersInfo Order)
 {
     //判断指定配送方式下的订单是否需要打印发货单
     if (ShopLogistics != null && ShopLogistics.Count > 0)
     {
         foreach (StoreLogistics SL in ShopLogistics)
         {
             if (SL.Logistics.LogisticsId == Order.Logistics.LogisticsId)
             {
                 int count = 0;
                 foreach (tbOrdersDetail od in Order.Details)
                 {
                     if (!od.IsCanceled)
                     {
                         if (!Config.RefundPrint)
                         {
                             if (!od.IsProductReFund)
                             {
                                 count++;
                             }
                         }
                         else
                         {
                             count++;
                         }
                     }
                 }
                 if (SL.Number >= count)
                 {
                     Order.IsInventory = false;
                 }
                 else
                 {
                     Order.IsInventory = true;
                 }
             }
         }
     }
 }
Ejemplo n.º 9
0
        /// <summary>
        /// 物流分配
        /// </summary>
        /// <param name="Order">订单信息</param>
        public static bool DeliveryAssign(tbOrdersConfig Config, IList <StoreLogistics> ShopLogistics, tbOrdersInfo Order)
        {
            bool Isok = false;

            if (Config.ConfigId > 0)
            {
                if (Order.CashOndelivery && !String.IsNullOrEmpty(Config.CashDelivery))
                {
                    int LogisticsId = 0;
                    int.TryParse(Config.CashDelivery, out LogisticsId);
                    if (LogisticsId > 0)
                    {
                        Order.Logistics.LogisticsId = LogisticsId; Isok = true;
                    }
                }
            }

            if (Config.DetailList != null && !Isok && Config.DetailList.Count > 0)
            {
                int[] IdList = new int[] { 8, 1, 2 };

                foreach (int id in IdList)
                {
                    try
                    {
                        var items = Config.DetailList.Where((e) => { return(e.EnumId == id); });
                        if (items != null && items.Count() > 0)
                        {
                            foreach (var item in items)
                            {
                                switch (id)
                                {
                                case 8:
                                    if (Order.Consignee.Provice.IndexOf(item.Key.Split(',')[0]) != -1)
                                    {
                                        Order.Logistics.LogisticsId = int.Parse(item.Value.Split(',')[0]);
                                        Isok = true;
                                    }
                                    break;

                                case 1:
                                    if (Order.ServiceNotes.IndexOf(item.Key.Split(',')[0]) != -1)
                                    {
                                        Order.Logistics.LogisticsId = int.Parse(item.Value.Split(',')[0]);
                                        Isok = true;
                                    }
                                    break;

                                case 2:
                                    if (Order.BuyerMsg.IndexOf(item.Key.Split(',')[0]) != -1)
                                    {
                                        Order.Logistics.LogisticsId = int.Parse(item.Value.Split(',')[0]);
                                        Isok = true;
                                    }
                                    break;
                                }

                                if (Isok)
                                {
                                    break;
                                }
                            }
                        }

                        if (Isok)
                        {
                            break;
                        }
                    }
                    catch { }
                }
            }

            return(Isok);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 状态分配
        /// </summary>
        /// <param name="order">订单信息</param>
        public static void StatusAssign(tbOrdersConfig Config, tbOrdersInfo Order)
        {
            if (Config.DetailList == null)
            {
                return;
            }
            if (Config.DetailList.Count <= 0)
            {
                return;
            }
            int[] IdList = new int[] { 3, 4, 5, 6, 7 };

            foreach (int id in IdList)
            {
                try
                {
                    bool Isok  = false;
                    var  items = Config.DetailList.Where((e) => { return(e.EnumId == id); });
                    if (items != null && items.Count() > 0)
                    {
                        foreach (var item in items)
                        {
                            switch (id)
                            {
                            case 3:
                                if (Order.ServiceFlag == "op_memo_" + (int.Parse(item.Key.Split(',')[0]) - 1) + ".png")
                                {
                                    Order.Status.OrdersStatusId = int.Parse(item.Value.Split(',')[0]);
                                    Isok = true;
                                }
                                break;

                            case 4:
                                if (Order.ServiceNotes.IndexOf(item.Key.Split(',')[0]) != -1)
                                {
                                    Order.Status.OrdersStatusId = int.Parse(item.Value.Split(',')[0]);
                                    Isok = true;
                                }
                                break;

                            case 5:
                                if (Order.BuyerMsg.IndexOf(item.Key.Split(',')[0]) != -1)
                                {
                                    Order.Status.OrdersStatusId = int.Parse(item.Value.Split(',')[0]);
                                    Isok = true;
                                }
                                break;

                            case 6:
                                foreach (var subitem in Order.Details)
                                {
                                    if (subitem.ProductName.IndexOf(item.Key.Split(',')[0]) != -1)
                                    {
                                        Order.Status.OrdersStatusId = int.Parse(item.Value.Split(',')[0]);
                                        Isok = true;
                                        break;
                                    }
                                }
                                break;

                            case 7:
                                foreach (var subitem in Order.Details)
                                {
                                    if (subitem.ProductEncoding.IndexOf(item.Key.Split(',')[0]) != -1)
                                    {
                                        Order.Status.OrdersStatusId = int.Parse(item.Value.Split(',')[0]);
                                        Isok = true;
                                        break;
                                    }
                                }
                                break;
                            }

                            if (Isok)
                            {
                                break;
                            }
                        }
                    }

                    if (Isok)
                    {
                        break;
                    }
                }
                catch { }
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 将淘宝的交易信息转化为本地类型
        /// </summary>
        /// <param name="trade"></param>
        /// <returns></returns>
        private tbOrdersInfo ChangeLocationType(Top.Api.Domain.Trade trade, int ShopId)
        {
            try
            {
                tbOrdersInfo          newtrade  = new tbOrdersInfo();
                tbConsigneeInfo       Consignee = new tbConsigneeInfo();
                tbBuyerInfo           Buyer     = new tbBuyerInfo();
                List <tbOrdersDetail> Details   = new List <tbOrdersDetail>();

                if (!String.IsNullOrEmpty(trade.PayTime))
                {
                    newtrade.PayDate = Convert.ToDateTime(Comm.DataChange(trade.PayTime, TypeChange.DATETIME));//付款时间
                }
                else
                {
                    newtrade.PayDate = DateTime.Now;
                }

                newtrade.CustomerServiceId = 1;
                newtrade.CashOndelivery    = false;
                newtrade.Invoice           = false;
                newtrade.NickName          = trade.BuyerNick.Trim();      //会员名
                Buyer.NickName             = trade.BuyerNick.Trim();      //会员名
                newtrade.Commission        = Convert.ToDecimal(Comm.DataChange(trade.CommissionFee, TypeChange.DECIMAL));
                newtrade.OrdersOutNumber   = trade.Tid.ToString().Trim(); //淘宝订单号
                newtrade.Logistics         = new Logistic();

                newtrade.LogisticsStr  = trade.ShippingType;//暂存物流
                newtrade.OrdersFreight = Convert.ToInt32(Comm.DataChange(trade.PostFee, TypeChange.DECIMAL));

                newtrade.OrdersProductTotal = Convert.ToDecimal(Comm.DataChange(trade.TotalFee, TypeChange.DECIMAL));  //商品总金额
                newtrade.OrdersDate         = Convert.ToDateTime(Comm.DataChange(trade.Created, TypeChange.DATETIME)); //交易创建时间
                Consignee.Name             = Comm.DataChange(trade.ReceiverName, TypeChange.STRING).ToString();        //收件人姓名
                Buyer.BuyerName            = Consignee.Name;
                Consignee.OrdersNumber     = trade.Tid == null ? "" : trade.Tid.ToString();
                Consignee.Provice          = Comm.DataChange(trade.ReceiverState, TypeChange.STRING).ToString();    //收件人所在省
                Consignee.City             = Comm.DataChange(trade.ReceiverCity, TypeChange.STRING).ToString();     //收件人所在市
                Consignee.District         = Comm.DataChange(trade.ReceiverDistrict, TypeChange.STRING).ToString(); //收件人所在区
                Consignee.ConsigneeAddress = Comm.DataChange(trade.ReceiverAddress, TypeChange.STRING).ToString();  //收件人地址
                Consignee.PostCode         = Comm.DataChange(trade.ReceiverZip, TypeChange.STRING).ToString();      //收件人邮编
                Consignee.Mobile           = Comm.DataChange(trade.ReceiverMobile, TypeChange.STRING).ToString();   //收件人手机
                Buyer.Mobile    = Consignee.Mobile;
                Consignee.Phone = Comm.DataChange(trade.ReceiverPhone, TypeChange.STRING).ToString();               //收件人电话
                Buyer.Phone     = Consignee.Phone;
                newtrade.Status = new tbOrdersStatus()
                {
                    OrdersStatusId = 3
                };                                                                                       //订单状态(默认买家已付款,等待卖家发货状态)
                decimal Payment = Convert.ToDecimal(Comm.DataChange(trade.Payment, TypeChange.DECIMAL)); //订单实收金额
                newtrade.OrdersAccounts  = Payment;
                newtrade.OrdersPaid      = Payment;
                newtrade.IsOrdersReFund  = false;                                                                      //是否有退款
                newtrade.OrdersDiscount  = newtrade.OrdersPaid - newtrade.OrdersProductTotal - newtrade.OrdersFreight; //订单折扣
                newtrade.OrdersWeight    = 0;
                newtrade.OrdersNotes     = "";
                newtrade.OrdersFlag      = "0";
                newtrade.OrdersInputDate = DateTime.Now;
                Consignee.InputDate      = newtrade.OrdersInputDate;
                //买家留言&卖家备注&备注旗帜&邮件地址
                newtrade.ServiceNotes = trade.SellerMemo;                                                     //客服备注
                newtrade.ServiceFlag  = trade.SellerFlag.ToString();                                          //客服备注旗帜样式
                newtrade.BuyerMsg     = string.IsNullOrEmpty(trade.BuyerMessage) ? "" : trade.BuyerMessage;   //买家留言
                Buyer.BuyerEmail      = trade.BuyerEmail;
                newtrade.CodFee       = Convert.ToDecimal(Comm.DataChange(trade.CodFee, TypeChange.DECIMAL)); //货到付款服务费
                newtrade.BuyerRemark  = "";
                newtrade.DeliveryDate = "";
                newtrade.RemarkFlag   = "";
                newtrade.Shop         = new tbShopInfo()
                {
                    ShopId = ShopId
                };
                if (trade.Orders != null)
                {
                    foreach (Top.Api.Domain.Order order in trade.Orders)
                    {
                        if (Convert.ToInt32(order.Num) <= 0)
                        {
                            continue;
                        }

                        tbOrdersDetail Detail = new tbOrdersDetail();
                        Detail.OrdersNumber      = trade.Tid.ToString();
                        Detail.ProductEncoding   = !String.IsNullOrEmpty(order.OuterSkuId) ? order.OuterSkuId.Trim() : "";
                        Detail.ProductName       = !String.IsNullOrEmpty(order.Title) ? order.Title.Trim() : "";
                        Detail.ProductSku        = !String.IsNullOrEmpty(order.SkuPropertiesName) ? order.SkuPropertiesName.Trim() : "";
                        Detail.ProductId         = Convert.ToInt32(order.NumIid);
                        Detail.ProductProId      = 0;
                        Detail.SalesCommissionId = 1;
                        Detail.ProductImg        = String.IsNullOrEmpty(order.PicPath) ? "" : order.PicPath.Trim();        //商品图片
                        Detail.ProductPrice      = Convert.ToDecimal(Comm.DataChange(order.Price, TypeChange.DECIMAL));    //商品价格
                        Detail.ProductNumber     = (int)order.Num;                                                         //商品数量
                        Detail.PackageName       = String.IsNullOrEmpty(order.ItemMealName) ? "" : order.ItemMealName;     //商品套餐值
                        Detail.OutNumberIId      = order.NumIid == null ? "" : order.NumIid.ToString();                    //商品外部编号
                        Detail.SubOrderNumber    = order.Oid.ToString() == null ? "" : order.Oid.ToString();               //子订单编号
                        Detail.InputDate         = newtrade.OrdersInputDate;
                        Detail.ProductTotal      = Convert.ToDecimal(Comm.DataChange(order.TotalFee, TypeChange.DECIMAL)); //商品总价
                        Detail.Details           = "";
                        Detail.ProductCost       = 0;
                        Detail.OrdersDiscount    = Convert.ToDecimal(Comm.DataChange(order.DiscountFee, TypeChange.DECIMAL)); //优惠金额;
                        Detail.OrdersAdjust      = Convert.ToDecimal(Comm.DataChange(order.AdjustFee, TypeChange.DECIMAL));   //手动调整金额;
                        Detail.OrdersAccounts    = Detail.ProductTotal;

                        //订单被取消
                        if (order.Status == "TRADE_CLOSED_BY_TAOBAO")
                        {
                            Detail.IsCanceled = true;
                        }

                        //商品退款
                        if (order.RefundId == 0)
                        {
                            Detail.ReFundNumber     = "";
                            Detail.IsProductReFund  = false;
                            Detail.ReFundStatusId   = 0;
                            Detail.ReFundStatusName = order.RefundStatus;
                        }
                        else
                        {
                            Detail.ReFundNumber     = order.RefundId.ToString();
                            Detail.IsProductReFund  = true;
                            newtrade.IsOrdersReFund = true;
                            Detail.ReFundStatusId   = 0;
                            Detail.ReFundStatusName = "";
                        }

                        Details.Add(Detail);
                    }
                }

                newtrade.Consignee = Consignee;
                newtrade.Details   = Details;
                newtrade.Buyer     = Buyer;
                return(newtrade);
            }
            catch (Exception ex)
            {
                throw;
            }
        }