/// <summary>
 /// 更新
 /// </summary>
 /// <param name="model">实体</param>
 /// <returns></returns>
 public override int Update(SoOrderSyncLogisticsLog model)
 {
     return(Context.Update <SoOrderSyncLogisticsLog>("SoOrderSyncLogisticsLog", model)
            .AutoMap(x => x.SysNo, x => x.CreateDate, x => x.CreatedBy)
            .Where("Code", model.Code)
            .Where("OrderSysNo", model.OrderSysNo)
            .Execute());
 }
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="model">实体</param>
 /// <returns></returns>
 public int Update(SoOrderSyncLogisticsLog model)
 {
     return(ISoOrderSyncLogisticsLogDao.Instance.Update(model));
 }
 /// <summary>
 /// 新增
 /// </summary>
 /// <param name="model">实体</param>
 /// <returns></returns>
 public int Insert(SoOrderSyncLogisticsLog model)
 {
     return(ISoOrderSyncLogisticsLogDao.Instance.Insert(model));
 }
Beispiel #4
0
        /// <summary>
        /// 查询订单物流信息
        /// </summary>
        /// <param name="orderSysNo">订单号</param>
        /// <returns></returns>
        /// <remarks>2016-8-22 杨浩 创建</remarks>
        public override Result <string> GetLogisticsTracking(int orderSysNo)
        {
            var order = BLL.Order.SoOrderBo.Instance.GetEntity(orderSysNo);

            var config = Hyt.BLL.Config.Config.Instance.GetGaoJieConfig();

            var result = new Result <string>();


            string strorder = "{\"order_sn\":\"" + order.OrderNo + "\"}";
            string orders   = strorder;

            strorder = EncodeBase64(EncodeBase64(strorder));

            var strPost = "&seller=" + EncodeBase64(config.seller) + "&api_key=" + EncodeBase64(config.api_key) + "&mark=" + EncodeBase64("sel") + "&confirm=" + EncodeBase64("") + "&order=" + strorder;

            var    strResult = GetResponse(url, strPost);
            var    json      = JObject.Parse(strResult);
            string jsons     = json.ToString();

            result.Status = true;
            result.Data   = json.ToString();

            var soOrderSyncLogisticsLog = new SoOrderSyncLogisticsLog();

            soOrderSyncLogisticsLog.OrderSysNo     = orderSysNo;
            soOrderSyncLogisticsLog.Code           = (int)this.Code;
            soOrderSyncLogisticsLog.CreateDate     = DateTime.Now;
            soOrderSyncLogisticsLog.CreatedBy      = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
            soOrderSyncLogisticsLog.LastUpdateBy   = 0;
            soOrderSyncLogisticsLog.LastUpdateDate = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue;

            soOrderSyncLogisticsLog.Packets          = orders.ToString();
            soOrderSyncLogisticsLog.ReceiptContent   = json.ToString();
            soOrderSyncLogisticsLog.LogisticsOrderId = "";


            //var model = new LgGaoJiePushInfo();
            //model.OrderSysNo = orderSysno;
            //model.OrderInfo = orders.ToString();
            ////保存订单回执信息
            //model.ReturnInfo = json.ToString();
            ////保存推送回执信息
            //LogisticsBo.Instance.InsertLgGaoJiePushInfoEntity(model, BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base);

            string state = json["flag"].ToString().ToLower();

            //推送成功
            if (state == "ok")
            {
                result.Status  = true;
                result.Message = json["wms_info"].ToString();
                soOrderSyncLogisticsLog.StatusCode = "";
                soOrderSyncLogisticsLog.StatusMsg  = result.Message;
                //更新物流状态CBLogisticsSendStatus
                BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)Hyt.Model.WorkflowStatus.OrderStatus.跨境物流推送状态.已推送, 3, orderSysNo);
                SoOrderSyncLogisticsLogBo.Instance.Insert(soOrderSyncLogisticsLog);
            }

            return(result);
        }
Beispiel #5
0
        /// <summary>
        /// 获取快递单号
        /// </summary>
        /// <param name="orderId"></param>
        /// <returns></returns>
        /// <remarks>2016-9-3 杨浩 创建</remarks>
        private Result GetExpressno(string orderId)
        {
            var         config             = Hyt.BLL.Config.Config.Instance.GetGaoJieConfig();
            var         result             = new Result <SoOrderSyncLogisticsLog>();
            var         orderInfo          = BLL.Order.SoOrderBo.Instance.GetEntity(int.Parse(orderId));
            WhWarehouse warehouseMod       = Hyt.BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(orderInfo.DefaultWarehouseSysNo);
            BsArea      wareDistrictEntity = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(warehouseMod.AreaSysNo);
            BsArea      wareCityEntity     = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(wareDistrictEntity.ParentSysNo);

            SoReceiveAddress srenity      = Hyt.BLL.Order.OutboundReturnBo.Instance.GetSoReceiveAddressBysoOrderSysNo(orderInfo.SysNo);
            string           buyer_idcard = "";

            if (!string.IsNullOrEmpty(srenity.IDCardNo))
            {
                buyer_idcard = srenity.IDCardNo.Trim();
            }

            BsArea DistrictEntity = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(srenity.AreaSysNo);
            string District       = DistrictEntity.AreaName.Trim();
            BsArea CityEntity     = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(DistrictEntity.ParentSysNo);
            string City           = CityEntity.AreaName.Trim();
            BsArea ProvinceEntity = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(CityEntity.ParentSysNo);
            string Province       = ProvinceEntity.AreaName.Trim();

            CBFnOnlinePayment payment = FinanceBo.Instance.GetOnPaymentBySourceSysNo(orderInfo.SysNo);

            IList <CBSoOrderItem> datao = SoOrderBo.Instance.GetCBOrderItemsByOrderId(orderInfo.SysNo);

            string  goods_Names  = "";
            int     goods_Nums   = 0;
            decimal goods_Weight = 0;

            foreach (var mod in datao)
            {
                if (!string.IsNullOrEmpty(goods_Names))
                {
                    goods_Names += ",";
                }
                goods_Names += mod.ProductName;

                goods_Nums += mod.Quantity;

                goods_Weight += mod.GrosWeight;
            }

            StringBuilder strorder = new StringBuilder();//"{\"orderSn\":\"" + orderInfo.OrderNo + "\"}";

            strorder.Append("{");
            strorder.Append("    \"order_sn\":\"" + orderInfo.OrderNo + "\",");
            strorder.Append("    \"send_name\":\"" + warehouseMod.Contact + "\",");
            strorder.Append("    \"send_telno\":\"" + warehouseMod.Phone + "\",");
            strorder.Append("    \"send_cardno\":\"\",");
            strorder.Append("    \"send_postcode\":\"\",");
            strorder.Append("    \"send_code\":\"1\",");
            strorder.Append("    \"receive_name\":\"" + srenity.Name + "\",");
            strorder.Append("    \"receive_telno\":\"" + srenity.MobilePhoneNumber + "\",");
            strorder.Append("    \"receive_cardno\":\"" + srenity.IDCardNo + "\",");
            strorder.Append("    \"receive_postcode\":\"\",");
            strorder.Append("    \"receive_province\":\"" + Province + "\",");
            strorder.Append("    \"receive_city\":\"" + City + "\",");
            strorder.Append("    \"receive_area\":\"" + District + "\",");
            strorder.Append("    \"receive_address\":\"" + Province + " " + City + " " + District + " " + srenity.StreetAddress + "\",");
            strorder.Append("    \"goods_name\":\"" + goods_Names + "\",");
            strorder.Append("    \"goods_sku\":\"\",");
            strorder.Append("    \"goods_num\":\"" + goods_Nums + "\",");
            strorder.Append("    \"notes\":\"\",");
            strorder.Append("    \"weight\":\"" + goods_Weight + "\"");
            strorder.Append("}");

            string enStrorder = "";

            enStrorder = EncodeBase64(EncodeBase64(strorder.ToString()));

            string strPost = "&seller=" + EncodeBase64(config.seller) + "&api_key=" + EncodeBase64(config.api_key) + "&express=" + EncodeBase64("3") + "&order_type=" + EncodeBase64("1") + "&order=" + enStrorder;

            var    strResult = GetResponse(expressUrl, strPost);
            var    json      = JObject.Parse(strResult);
            string jsons     = json.ToString();


            result.Message = json.ToString();

            /*{
             *  "orderSn": "So00003784",
             *  "state": "success",
             *  "expressNo": "50323423506251",
             *  "expressCode": "3",
             *  "destinationCode": "粤-肇庆",
             *  "nodeCode": {
             *      "pkgCode": "广州夏良转运中心",
             *      "billProvideSiteName": "广州新花山站",
             *      "billProvideSiteCode": "Z04"
             *    }
             * }*/

            //string destinationCode = "";
            //string pkgCode = ""; ;
            //string billProvideSiteCode = "";
            //string expressNo = "";
            //if (json["state"].ToString().ToLower() == "success")
            //{
            //    destinationCode = json["destinationCode"].ToString();
            //    pkgCode = json["nodeCode"]["pkgCode"].ToString();
            //    billProvideSiteCode = json["nodeCode"]["billProvideSiteCode"].ToString();
            //    expressNo = json["expressNo"].ToString();
            //}

            ///订单物流信息
            SoOrderSyncLogisticsLog soLogisticsLogMod = new SoOrderSyncLogisticsLog();

            soLogisticsLogMod.OrderSysNo = orderInfo.SysNo;
            soLogisticsLogMod.Code       = (int)this.Code;
            try
            {
                soLogisticsLogMod.LogisticsOrderId = json["express_no"].ToString();
            }
            catch { }

            soLogisticsLogMod.StatusCode = json["flag"].ToString();
            try
            {
                soLogisticsLogMod.StatusMsg = json["express_notes"].ToString();
            }
            catch
            {
                try
                {
                    soLogisticsLogMod.StatusMsg = json["info"].ToString();
                }
                catch { }
            }

            soLogisticsLogMod.Packets        = strorder.ToString();
            soLogisticsLogMod.ReceiptContent = strResult;
            soLogisticsLogMod.CreateDate     = DateTime.Now;
            soLogisticsLogMod.LastUpdateDate = DateTime.Now;
            SoOrderSyncLogisticsLogBo.Instance.Insert(soLogisticsLogMod);
            if (json["flag"].ToString().ToUpper() == "OK")
            {
                result.Status     = true;
                result.StatusCode = 100;
                result.Data       = soLogisticsLogMod;
            }
            else
            {
                result.Status     = false;
                result.StatusCode = 0;
                result.Data       = soLogisticsLogMod;
            }

            return(result);
        }
Beispiel #6
0
        public override Result AddOrderTrade(int orderSysno)
        {
            //throw new NotImplementedException();
            List <SoOrderSyncLogisticsLog> logList           = SoOrderSyncLogisticsLogBo.Instance.GetModelList(orderSysno);
            List <SoOrderSyncLogisticsLog> haveLogisticsList = logList.Where(p => p.Code == (int)this.Code && p.StatusCode == "OK" && !string.IsNullOrEmpty(p.LogisticsOrderId)).ToList();
            SoOrderSyncLogisticsLog        nowLogistics      = null;

            if (haveLogisticsList.Count == 0)
            {
                Result expressResult = GetExpressno(orderSysno.ToString());
                nowLogistics = (expressResult as Result <SoOrderSyncLogisticsLog>).Data;
                if (!expressResult.Status)
                {
                    return(expressResult);
                }
            }
            else
            {
                nowLogistics = haveLogisticsList[0];
            }


            var order = BLL.Order.SoOrderBo.Instance.GetEntity(orderSysno);

            var config = Hyt.BLL.Config.Config.Instance.GetGaoJieConfig();

            var result = new Result <string>();

            WhWarehouse warehouseMod       = Hyt.BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(order.DefaultWarehouseSysNo);
            BsArea      wareDistrictEntity = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(warehouseMod.AreaSysNo);
            BsArea      wareCityEntity     = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(wareDistrictEntity.ParentSysNo);

            SoReceiveAddress srenity      = Hyt.BLL.Order.OutboundReturnBo.Instance.GetSoReceiveAddressBysoOrderSysNo(order.SysNo);
            string           buyer_idcard = "";

            if (!string.IsNullOrEmpty(srenity.IDCardNo))
            {
                buyer_idcard = srenity.IDCardNo.Trim();
            }

            BsArea DistrictEntity = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(srenity.AreaSysNo);
            string District       = DistrictEntity.AreaName.Trim();
            BsArea CityEntity     = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(DistrictEntity.ParentSysNo);
            string City           = CityEntity.AreaName.Trim();
            BsArea ProvinceEntity = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(CityEntity.ParentSysNo);
            string Province       = ProvinceEntity.AreaName.Trim();

            CBFnOnlinePayment payment = FinanceBo.Instance.GetOnPaymentBySourceSysNo(order.SysNo);

            IList <CBSoOrderItem> datao    = SoOrderBo.Instance.GetCBOrderItemsByOrderId(order.SysNo);
            List <int>            ProSysNo = new List <int>();

            foreach (CBSoOrderItem item in datao)
            {
                ProSysNo.Add(item.ProductSysNo);
            }
            IList <CBPdProduct> productList  = Hyt.BLL.Product.PdProductBo.Instance.GetProductInfoList(ProSysNo);
            decimal             goodsGweight = 0;

            foreach (var mod in productList)
            {
                goodsGweight += mod.GrosWeight;
            }
            LgGaoJiePushInfo model    = new LgGaoJiePushInfo();
            string           strorder = "";

            strorder += "{\"order_sn\":\"" + order.OrderNo + "\",\"pfreight_no\":\"\",\"express_num\":\"" + nowLogistics.LogisticsOrderId + "\",";
            strorder += "\"sender_name\":\"" + warehouseMod.Contact + "\",\"sender_city\":\"" + wareCityEntity.AreaName + "\",\"sender_address\":\"" + warehouseMod.StreetAddress + "\",";
            strorder += "\"sender_phone\":\"" + warehouseMod.Phone + "\",\"sender_country_code\":\"" + wareCityEntity.AreaCode + "\",";
            strorder += "\"buyer_name\":\"" + srenity.Name + "\",\"buyer_idcard\":\"" + buyer_idcard + "\",\"buyer_phone\":\"" + srenity.MobilePhoneNumber + "\",";
            strorder += "\"province_code\":\"" + ProvinceEntity.AreaCode + "" + "\",\"buyer_address\":\"" + Province + "^^^" + City + "^^^" + District + "^^^" + srenity.StreetAddress + "\",";
            strorder += "\"curr\":\"502" + "\",\"pkg_gweight\":" + goodsGweight + ",\"p_name\":\"" + (payment == null ? "" : payment.PaymentName) + "\",\"p_no\":\"" + (payment == null ? "" : payment.VoucherNo) + "\",";
            strorder += "\"p_time\":\"" + (payment == null ? DateTime.Now.ToString("yyyy-mm-dd hh :MM") : payment.CreatedDate.ToString("yyyy-mm-dd hh :MM")) + "\",\"sh_fee\":\"" + order.FreightAmount.ToString() + "\",";
            strorder += "\"cus_tax\":\"" + order.TaxFee.ToString() + "\",\"pweb\":\"" + config.pweb + "\",\"web_name\":\"" + config.web_name + "\",\"re_no\":\"" + config.re_no + "\",\"re_name\":\"" + config.re_name + "\",";
            strorder += "\"order_goods\":";
            strorder += "[";
            string str = "";
            int    i   = 0;



            foreach (CBSoOrderItem item in datao)
            {
                //LgGaoJieGoodsInfo goodsInfo = LogisticsBo.Instance.GetLgGaoJieGoodsInfoEntityByPid(item.ProductSysNo);
                List <CBPdProduct> tempProductList = productList.Where(p => p.SysNo == item.ProductSysNo).ToList();

                var    originInfo = BLL.Basic.OriginBo.Instance.GetEntity(tempProductList[0].OriginSysNo);
                var    brandInfo  = BLL.Product.PdBrandBo.Instance.GetEntity(tempProductList[0].BrandSysNo);
                string ycg_code   = originInfo != null ? originInfo.CusOriginNO : "";

                if (i > 0)
                {
                    str += ",{";
                }
                else
                {
                    str += "{";
                }
                str += "\"goods_ptcode\":\"" + tempProductList[0].ProductDeclare;
                str += "\",\"goods_name\":\"" + tempProductList[0].ProductName;
                str += "\",\"brand\":\"" + brandInfo.Name;
                str += "\",\"goods_spec\":\"" + tempProductList[0].GrosWeight + "kg";
                str += "\",\"goods_num\":\"" + item.Quantity.ToString();
                str += "\",\"goods_price\":\"" + item.SalesUnitPrice.ToString();
                str += "\",\"ycg_code\":\"" + originInfo.CusOriginNO;
                str += "\",\"goods_barcode\":\"" + tempProductList[0].Barcode.Trim() + "\"";
                str += "}";
                i++;
            }
            strorder += str;
            strorder += "]}";

            string orders = strorder;

            strorder = EncodeBase64(EncodeBase64(strorder));

            var strPost = "&seller=" + EncodeBase64(config.seller) + "&api_key=" + EncodeBase64(config.api_key) + "&mark=" + EncodeBase64("order") + "&confirm=" + EncodeBase64("2") + "&order=" + strorder;

            var    strResult = GetResponse(url, strPost);
            var    json      = JObject.Parse(strResult);
            string jsons     = json.ToString();

            result.Status = true;
            result.Data   = json.ToString();

            var soOrderSyncLogisticsLog = new SoOrderSyncLogisticsLog();

            soOrderSyncLogisticsLog.OrderSysNo     = orderSysno;
            soOrderSyncLogisticsLog.Code           = (int)this.Code;
            soOrderSyncLogisticsLog.CreateDate     = DateTime.Now;
            soOrderSyncLogisticsLog.CreatedBy      = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
            soOrderSyncLogisticsLog.LastUpdateBy   = 0;
            soOrderSyncLogisticsLog.LastUpdateDate = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue;

            soOrderSyncLogisticsLog.Packets          = orders.ToString();
            soOrderSyncLogisticsLog.ReceiptContent   = json.ToString();
            soOrderSyncLogisticsLog.LogisticsOrderId = "";


            //var model = new LgGaoJiePushInfo();
            //model.OrderSysNo = orderSysno;
            //model.OrderInfo = orders.ToString();
            ////保存订单回执信息
            //model.ReturnInfo = json.ToString();
            ////保存推送回执信息
            //LogisticsBo.Instance.InsertLgGaoJiePushInfoEntity(model, BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base);

            string state = json["flag"].ToString().ToLower();

            //推送成功
            if (state == "ok" || json["info"].ToString() == "重复下单")
            {
                result.Status  = true;
                result.Message = json["info"].ToString();
                soOrderSyncLogisticsLog.StatusCode = "";
                soOrderSyncLogisticsLog.StatusMsg  = result.Message;
                //更新物流状态CBLogisticsSendStatus
                BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)Hyt.Model.WorkflowStatus.OrderStatus.跨境物流推送状态.已推送, 3, orderSysno);
            }
            else
            {
                result.Status  = false;
                result.Message = json["info"].ToString();
                soOrderSyncLogisticsLog.StatusCode = "";
                soOrderSyncLogisticsLog.StatusMsg  = result.Message;
                BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)Hyt.Model.WorkflowStatus.OrderStatus.跨境物流推送状态.失败, 3, orderSysno);
            }

            SoOrderSyncLogisticsLogBo.Instance.Insert(soOrderSyncLogisticsLog);

            return(result);
        }
Beispiel #7
0
        /// <summary>
        /// 添加交易订单
        /// </summary>
        /// <param name="orderSysno"></param>
        /// <returns>2016-09-07 杨浩 创建</returns>
        public override Result AddOrderTrade(int orderSysno)
        {
            var result = new Result <string>();

            result.Status     = true;
            result.StatusCode = 0;
            result.Message    = "接口调用成功";

            if (orderSysno <= 0)
            {
                return(result);
            }

            try
            {
                var orderInfo = Hyt.BLL.Web.SoOrderBo.Instance.GetEntity(orderSysno);

                var order = new Model.Api.Order();

                order.OnlinePayment  = Hyt.BLL.Finance.FinanceBo.Instance.GetOnlinePaymentBySourceSysNo(Model.WorkflowStatus.FinanceStatus.网上支付单据来源.销售单, orderInfo.SysNo);
                order.ReceiveAddress = SoOrderBo.Instance.GetOrderReceiveAddress(orderInfo.ReceiveAddressSysNo);
                order.Customer       = Hyt.BLL.CRM.CrCustomerBo.Instance.GetModel(orderInfo.CustomerSysNo);

                order.OrderItemList = new List <OrderItem>();

                var pager = new Pager <PdProduct>()
                {
                    PageSize = 999999, CurrentPage = 1
                };
                pager = BLL.Product.PdProductBo.Instance.GetPdProductList(pager);

                #region 订单信息

                order.OrderNo = orderInfo.OrderNo;

                order.CashPay = orderInfo.CashPay;
                order.CBLogisticsSendStatus = orderInfo.CBLogisticsSendStatus;
                order.CoinPay = orderInfo.CoinPay;
                order.ContactBeforeDelivery = orderInfo.ContactBeforeDelivery;
                order.CouponAmount          = orderInfo.CouponAmount;
                order.CreateDate            = DateTime.Now;
                order.CustomerMessage       = orderInfo.CustomerMessage;
                order.CustomsPayStatus      = orderInfo.CustomsPayStatus;
                order.CustomsStatus         = orderInfo.CustomsStatus;
                order.DefaultWarehouseSysNo = 0;
                order.DeliveryRemarks       = orderInfo.DeliveryRemarks;
                order.DeliveryTime          = orderInfo.DeliveryTime;
                order.DeliveryTypeSysNo     = orderInfo.DeliveryTypeSysNo;
                order.FreightAmount         = orderInfo.FreightAmount;
                order.FreightChangeAmount   = orderInfo.FreightChangeAmount;
                order.FreightDiscountAmount = orderInfo.FreightDiscountAmount;
                order.GZJCStatus            = orderInfo.GZJCStatus;
                order.ImgFlag            = orderInfo.ImgFlag;
                order.InternalRemarks    = orderInfo.InternalRemarks;
                order.InvoiceSysNo       = orderInfo.InvoiceSysNo;
                order.IsHiddenToCustomer = orderInfo.IsHiddenToCustomer;

                order.NsStatus              = 0;
                order.OperatFee             = 0;
                order.OrderAmount           = orderInfo.OrderAmount;
                order.OrderCreatorSysNo     = 0;
                order.OrderDiscountAmount   = orderInfo.OrderDiscountAmount;
                order.PayStatus             = orderInfo.PayStatus;
                order.PayTypeSysNo          = orderInfo.PayTypeSysNo;
                order.ProductAmount         = orderInfo.ProductAmount;
                order.ProductChangeAmount   = orderInfo.ProductChangeAmount;
                order.ProductDiscountAmount = orderInfo.ProductDiscountAmount;
                order.RebateRtio            = orderInfo.RebateRtio;
                order.Remarks        = orderInfo.Remarks;
                order.SalesSysNo     = orderInfo.SalesSysNo;
                order.SalesType      = orderInfo.SalesType;
                order.SendStatus     = orderInfo.SendStatus;
                order.Stamp          = orderInfo.Stamp;
                order.Status         = 10;
                order.TaxFee         = orderInfo.TaxFee;
                order.UsedPromotions = "";
                #endregion

                foreach (var item in orderInfo.OrderItemList)
                {
                    var productInfo = pager.Rows.Where(x => x.SysNo == item.ProductSysNo).FirstOrDefault();
                    if (productInfo == null)
                    {
                        result.Status     = false;
                        result.StatusCode = 1;
                        result.Message    = "产品系统编号【" + item.ProductSysNo + "】在系统中不存在";
                        return(result);
                    }

                    var orderItem = new OrderItem();
                    orderItem.ProductCode            = productInfo.ErpCode;
                    orderItem.OrderNo                = orderInfo.OrderNo;
                    orderItem.Catle                  = item.Catle;
                    orderItem.ChangeAmount           = item.ChangeAmount;
                    orderItem.DiscountAmount         = item.DiscountAmount;
                    orderItem.GroupCode              = item.GroupCode;
                    orderItem.GroupName              = item.GroupName;
                    orderItem.OriginalPrice          = item.OriginalPrice;
                    orderItem.OriginalSalesUnitPrice = item.OriginalSalesUnitPrice;
                    orderItem.ProductName            = item.ProductName;
                    orderItem.ProductSalesType       = item.ProductSalesType;
                    orderItem.ProductSalesTypeSysNo  = item.ProductSalesTypeSysNo;
                    orderItem.Quantity               = item.Quantity;
                    orderItem.RealStockOutQuantity   = item.RealStockOutQuantity;
                    orderItem.RebatesStatus          = item.RebatesStatus;
                    orderItem.SalesAmount            = item.SalesAmount;
                    orderItem.SalesUnitPrice         = item.SalesUnitPrice;
                    orderItem.UnitCatle              = item.UnitCatle;
                    orderItem.UsedPromotions         = item.UsedPromotions;
                    order.OrderItemList.Add(orderItem);
                }


                var json = Newtonsoft.Json.JsonConvert.SerializeObject(order);

                Encoding myEncode = Encoding.GetEncoding("UTF-8");

                byte[]         postBytes = Encoding.UTF8.GetBytes(json);
                HttpWebRequest req       = (HttpWebRequest)HttpWebRequest.Create("http://api.singingwhale.com.cn/B2CApp/Orders.svc/AddOrder");
                req.Method      = "POST";
                req.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";

                req.ContentLength = postBytes.Length;
                using (Stream reqStream = req.GetRequestStream())
                {
                    reqStream.Write(postBytes, 0, postBytes.Length);
                }

                using (WebResponse res = req.GetResponse())
                {
                    using (StreamReader sr = new StreamReader(res.GetResponseStream(), myEncode))
                    {
                        string strResult  = sr.ReadToEnd();
                        var    jObject    = Newtonsoft.Json.Linq.JObject.Parse(strResult);
                        int    statusCode = int.Parse(jObject["StatusCode"].ToString());


                        var soOrderSyncLogisticsLog = new SoOrderSyncLogisticsLog();
                        soOrderSyncLogisticsLog.OrderSysNo     = orderSysno;
                        soOrderSyncLogisticsLog.Code           = (int)this.Code;
                        soOrderSyncLogisticsLog.LastUpdateDate = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue;
                        soOrderSyncLogisticsLog.StatusCode     = "";
                        soOrderSyncLogisticsLog.StatusMsg      = "";
                        soOrderSyncLogisticsLog.Packets        = json;
                        soOrderSyncLogisticsLog.ReceiptContent = strResult;
                        if (statusCode == 0)
                        {
                            soOrderSyncLogisticsLog.LastUpdateBy     = 0;
                            soOrderSyncLogisticsLog.LogisticsOrderId = statusCode.ToString();
                            soOrderSyncLogisticsLog.CreateDate       = DateTime.Now;
                            soOrderSyncLogisticsLog.CreatedBy        = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
                            SoOrderSyncLogisticsLogBo.Instance.Insert(soOrderSyncLogisticsLog);
                            BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)Hyt.Model.WorkflowStatus.OrderStatus.跨境物流推送状态.已推送, 3, orderSysno);
                        }
                        else
                        {
                            result.Status  = false;
                            result.Message = jObject["Message"].ToString();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = "向" + this.Code + "物流推送订单报错:" + ex.StackTrace;
                return(result);
            }

            return(result);
        }
Beispiel #8
0
        /// <summary>
        /// 添加交易订单
        /// </summary>
        /// <param name="orderId">销售订单系统编号</param>
        /// <returns></returns>
        /// <remarks>
        /// 2016-3-21 杨浩 创建
        /// 2016-4-19 陈海裕 重构
        /// </remarks>
        public override Result AddOrderTrade(int orderId)
        {
            var result = new Result()
            {
                Status     = false,
                StatusCode = 0,
                Message    = "向" + this.Code + "物流推送订单失败"
            };


            try
            {
                var order = Hyt.BLL.Order.SoOrderBo.Instance.GetEntity(orderId);
                if (order == null)
                {
                    result.Status     = false;
                    result.Message    = string.Format("订单号{0}不存在!", orderId);
                    result.StatusCode = -100;
                }


                #region 旧参数

                //var receiveAddress = BLL.Order.SoOrderBo.Instance.GetOrderReceiveAddress(order.ReceiveAddressSysNo);
                //if (receiveAddress == null)
                //{
                //    result.Status = false;
                //    result.Message = string.Format("订单中的收货地址编号{0}不存在!", order.ReceiveAddressSysNo);
                //    result.StatusCode = -101;
                //}
                //var area = BLL.Basic.BasicAreaBo.Instance.GetArea(receiveAddress.AreaSysNo);
                //if (area == null)
                //{
                //    result.Status = false;
                //    result.Message = string.Format("地区({0})不存在!", receiveAddress.AreaSysNo);
                //    result.StatusCode = -103;
                //}
                //var city = BLL.Basic.BasicAreaBo.Instance.GetArea(area.ParentSysNo);
                //if (city == null)
                //{
                //    result.Status = false;
                //    result.Message = string.Format("城市({0})不存在!", area.ParentSysNo);
                //    result.StatusCode = -104;
                //}
                //var province = BLL.Basic.BasicAreaBo.Instance.GetArea(city.ParentSysNo);
                //if (province == null)
                //{
                //    result.Status = false;
                //    result.Message = string.Format("省份({0})不存在!", city.ParentSysNo);
                //    result.StatusCode = -105;
                //}

                //if (!result.Status)
                //    return result;
                //var param = "{\"orderId\":\"" + order.OrderNo + "\",";
                //param += "\"addr\":\"" + receiveAddress.StreetAddress + "\",";
                //param += "\"phone\":\"" + receiveAddress.MobilePhoneNumber + "\",";
                //param += "\"freight\":" + order.FreightAmount + ",";//运费
                //param += "\"orderDate\":\"" + order.CreateDate.ToString("yyyy-MM-dd") + "\",";
                //param += "\"province\":\"" + JsonStrEscape(province.AreaName) + "\",";
                //param += "\"city\":\"" + JsonStrEscape(city.AreaName) + "\",";
                //param += "\"area\":\"" + JsonStrEscape(area.AreaName) + "\",";
                //param += "\"total\":" + order.ProductAmount + ",";//订单总金额
                //param += "\"insuredFee\":0,";  //保价费用
                //param += "\"cardType\":\"0\","; //证件类型 (默认身份证则填0)
                //param += "\"expressCode\":\"SF\","; //物流公司编码
                //param += "\"busiMode\":\"BBC\","; //所属业务模式 (BBC/备货BC/直邮BC/个人物品)
                //param += "\"whCode\":\"FLC\",";   //发货仓库代号
                //param += "\"portCode\":\"5141\","; //口岸编码
                //param += "\"platformCode\":\"IE150604146855\",";//海关企业备案号
                //param += "\"cardNo\":\"" + receiveAddress.IDCardNo + "\",";//顾客身份证
                //param += "\"name\":\"" + JsonStrEscape(receiveAddress.Name) + "\",";
                ////param += "\"senderContact\":\"测试公司\",";
                ////param += "\"senderPhone\":\"13500000000\",";
                ////param += "\"tax\":\"" + orderInfo.TaxFee + "\",";
                //param += "\"orderItemList\":{";
                //param += "\"orderItems\":[";
                //var orderItemList = Hyt.BLL.Web.SoOrderBo.Instance.GetOrderItemListByOrderSysNo(orderId);
                //string orderItem = "";
                //foreach (var item in orderItemList)
                //{
                //    if (orderItem != "")
                //        orderItem += ",";
                //    orderItem += "{";
                //    //8712400110037
                //    //orderItem += "\"qty\":" + item.Quantity + ",\"price\":" + item.SalesUnitPrice + ",\"total\":" + item.SalesAmount + ",\"productId\":\""+item.ErpCode+"\",\"productName\":\"" + JsonStrEscape(item.ProductName) + "\"";
                //    orderItem += "\"qty\":" + item.Quantity + ",\"price\":" + item.SalesUnitPrice + ",\"total\":" + item.SalesAmount + ",\"productId\":\"8712400110136\",\"productName\":\"" + JsonStrEscape(item.ProductName) + "\"";
                //    orderItem += "}";
                //}

                //param += orderItem;
                //param += "]}}";
                #endregion
                string method = "wtdex.trade.order.add";

                order.ReceiveAddress = BLL.Order.SoOrderBo.Instance.GetOrderReceiveAddress(order.ReceiveAddressSysNo);
                order.OrderItemList  = DataAccess.Order.ISoOrderItemDao.Instance.GetOrderItemsByOrderSysNo(order.SysNo);
                //ParaVoucherFilter voucherFilter = new ParaVoucherFilter();
                //voucherFilter.SourceSysNo = order.SysNo;
                //CBFnReceiptVoucher recVoucher = BLL.Finance.FinanceBo.Instance.GetReceiptVouchers(voucherFilter).Rows.FirstOrDefault();
                //recVoucher.VoucherItems = BLL.Finance.FnReceiptVoucherBo.Instance.GetReceiptVoucherItem(recVoucher.SysNo);


                var filter = new ParaOnlinePaymentFilter();
                filter.OrderSysNo = orderId;
                var onlinePayment = BLL.Finance.FinanceBo.Instance.GetOnlinePayments(filter).Rows.Where(o => o.Status == 1).FirstOrDefault();

                if (onlinePayment == null)
                {
                    result.Message = "订单不存在在线支付记录";
                    return(result);
                }
                // 收货人 区 市 省
                BsArea receiverDistrict = BLL.Basic.BasicAreaBo.Instance.GetArea(order.ReceiveAddress.AreaSysNo);
                BsArea receiverCity     = BLL.Basic.BasicAreaBo.Instance.GetArea(receiverDistrict.ParentSysNo);
                BsArea receiverProvince = BLL.Basic.BasicAreaBo.Instance.GetArea(receiverCity.ParentSysNo);
                // 发货人 市
                CBWhWarehouse warehouse   = BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(order.DefaultWarehouseSysNo);
                BsArea        shipperCity = BLL.Basic.BasicAreaBo.Instance.GetArea(warehouse.CitySysNo);

                DsDealer dealer = BLL.Distribution.DsDealerBo.Instance.GetDsDealer(order.DealerSysNo);

                LgDeliveryType deliveryType = BLL.Logistics.DeliveryTypeBo.Instance.GetDeliveryType(order.DeliveryTypeSysNo);



                var newOrder = new WTDOrder();
                newOrder.addr             = TConvert.ToString(order.ReceiveAddress.StreetAddress).Trim();
                newOrder.area             = TConvert.ToString(receiverDistrict.AreaName).Trim();
                newOrder.busiMode         = "BC";
                newOrder.cardNo           = TConvert.ToString(order.ReceiveAddress.IDCardNo);
                newOrder.cardType         = "0";
                newOrder.city             = TConvert.ToString(receiverCity.AreaName).Trim();
                newOrder.consumerAddr     = TConvert.ToString(order.ReceiveAddress.StreetAddress).Trim();
                newOrder.consumerArea     = TConvert.ToString(receiverDistrict.AreaName).Trim();
                newOrder.consumerCity     = TConvert.ToString(receiverCity.AreaName).Trim();
                newOrder.consumerName     = TConvert.ToString(order.ReceiveAddress.Name);
                newOrder.consumerPhone    = !string.IsNullOrWhiteSpace(order.ReceiveAddress.MobilePhoneNumber) ? order.ReceiveAddress.MobilePhoneNumber : order.ReceiveAddress.PhoneNumber;
                newOrder.consumerProvince = TConvert.ToString(receiverProvince.AreaName).Trim();
                newOrder.destCity         = null;
                newOrder.expressCode      = "YT";// "SF";
                newOrder.expressNo        = null;
                newOrder.freight          = (double)order.FreightAmount;
                newOrder.ieFlag           = null;
                newOrder.insuredFee       = 0d;
                newOrder.invoice          = null;
                newOrder.invoiceHead      = null;
                newOrder.invoiceType      = null;
                newOrder.isgac            = 1;
                newOrder.isactpay         = "0";
                newOrder.isactlogistics   = "1";



                newOrder.mobile      = null;
                newOrder.name        = TConvert.ToString(order.ReceiveAddress.Name);
                newOrder.notes       = TConvert.ToString(order.Remarks).Trim();
                newOrder.orderDate   = order.CreateDate.ToString("yyyy-MM-dd");
                newOrder.orderId     = onlinePayment.BusinessOrderSysNo;
                newOrder.paymentCode = null;
                newOrder.phone       = !string.IsNullOrWhiteSpace(order.ReceiveAddress.MobilePhoneNumber) ? order.ReceiveAddress.MobilePhoneNumber : order.ReceiveAddress.PhoneNumber;

                newOrder.pickMode      = "0";//BC、PS情况下必填0:散货/包裹1:大货/备货,有货物在我们仓库
                newOrder.platformCode  = config.PlatformCode;
                newOrder.portCode      = config.PortCode;
                newOrder.prodFlag      = null;
                newOrder.province      = TConvert.ToString(receiverProvince.AreaName).Trim();
                newOrder.seller        = null;
                newOrder.senderContact = TConvert.ToString(dealer.ErpName);
                newOrder.senderPhone   = !string.IsNullOrWhiteSpace(dealer.MobilePhoneNumber) ? dealer.MobilePhoneNumber : dealer.PhoneNumber;
                newOrder.tax           = (double)order.TaxFee;
                newOrder.total         = (double)order.ProductAmount;
                //newOrder.total = 100d;
                newOrder.whCode                   = TConvert.ToString(warehouse.LogisWarehouseCode);
                newOrder.zipCode                  = null;
                newOrder.orderItemList            = new WTDOrderItemList();
                newOrder.orderItemList.orderItems = new List <WTDOrderItem>();
                WTDOrderItem orderItem = new WTDOrderItem();
                foreach (var item in order.OrderItemList)
                {
                    var product = BLL.Product.PdProductBo.Instance.GetProductNoCache(item.ProductSysNo);
                    orderItem.groupBarcode = null;
                    orderItem.isGroup      = null;
                    orderItem.postTax      = null;
                    orderItem.price        = (double)item.SalesUnitPrice;
                    orderItem.productId    = product.ErpCode;
                    orderItem.productName  = TConvert.ToString(item.ProductName);
                    orderItem.qty          = item.Quantity;
                    orderItem.total        = (double)item.SalesAmount;
                    newOrder.orderItemList.orderItems.Add(orderItem);
                    //orderItem.groupBarcode = null;
                    //orderItem.isGroup = null;
                    //orderItem.postTax = null;
                    //orderItem.price = 50d;
                    //orderItem.productId = "8712400110136";
                    //orderItem.productName = TConvert.ToString(item.ProductName);
                    //orderItem.qty = 2;
                    //orderItem.total = 100d;
                    //newOrder.orderItemList.orderItems.Add(orderItem);
                    //break;
                }

                string postData = Util.Serialization.JsonUtil.ToJson2(newOrder);
                postData = InitParams(method, postData);

                var _result = Hyt.Util.WebUtil.PostForm(apiUrl, postData);

                result = GetResponseResult(_result);

                if (result.Status == true)
                {
                    var soOrderSyncLogisticsLog = new SoOrderSyncLogisticsLog();

                    soOrderSyncLogisticsLog.OrderSysNo = orderId;
                    soOrderSyncLogisticsLog.Code       = (int)this.Code;

                    soOrderSyncLogisticsLog.LastUpdateDate = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue;
                    soOrderSyncLogisticsLog.StatusCode     = "";
                    soOrderSyncLogisticsLog.StatusMsg      = "";
                    soOrderSyncLogisticsLog.Packets        = postData;
                    soOrderSyncLogisticsLog.ReceiptContent = _result;

                    soOrderSyncLogisticsLog.LastUpdateBy     = 0;
                    soOrderSyncLogisticsLog.LogisticsOrderId = "";

                    soOrderSyncLogisticsLog.CreateDate = DateTime.Now;
                    soOrderSyncLogisticsLog.CreatedBy  = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
                    SoOrderSyncLogisticsLogBo.Instance.Insert(soOrderSyncLogisticsLog);


                    BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus(1, 3, orderId);
                }
            }
            catch (Exception ex)
            {
                result.Message = "向" + this.Code + "物流推送订单报错:" + ex.StackTrace;
                return(result);
            }

            return(result);
        }
Beispiel #9
0
        /// <summary>
        /// 添加交易订单
        /// </summary>
        /// <param name="orderSysno">订单编号</param>
        /// <returns></returns>
        /// <remarks>2016-7-26 杨浩 创建</remarks>
        public override Result AddOrderTrade(int orderSysno)
        {
            var result = new Result();

            try
            {
                #region 基础数据
                var pager = new Pager <CBPdProduct>()
                {
                    CurrentPage = 1,
                    PageSize    = 99999
                };
                pager.PageFilter.Status = -2;
                pager = BLL.Product.PdProductBo.Instance.GetCBPdProductList(pager);

                var orderInfo     = BLL.Order.SoOrderBo.Instance.GetEntityNoCache(orderSysno);
                var warehouseInfo = BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(orderInfo.DefaultWarehouseSysNo);

                var    srenity        = Hyt.BLL.Order.OutboundReturnBo.Instance.GetSoReceiveAddressBysoOrderSysNo(orderSysno);
                var    districtEntity = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(srenity.AreaSysNo);
                string district       = districtEntity.AreaName.Trim();
                var    cityEntity     = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(districtEntity.ParentSysNo);
                string city           = cityEntity.AreaName.Trim();
                var    provinceEntity = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(cityEntity.ParentSysNo);
                string province       = provinceEntity.AreaName.Trim();
                #endregion

                var orders = new StringBuilder();

                #region 订单商品列表
                int     num          = 0;
                decimal goodsGweight = 0m;//毛重
                var     goodList     = BLL.Order.SoOrderBo.Instance.GetOrderItemsByOrderId(orderSysno);
                string  goods        = "";
                foreach (var good in goodList)
                {
                    var proudctInfo = pager.Rows.Where(x => x.SysNo == good.ProductSysNo).FirstOrDefault();
                    if (proudctInfo == null)
                    {
                        result.Status  = false;
                        result.Message = string.Format("产品{0}不存在!", good.ProductSysNo);
                        return(result);
                    }
                    var    originInfo = BLL.Basic.OriginBo.Instance.GetEntity(proudctInfo.OriginSysNo);
                    var    brandInfo  = BLL.Product.PdBrandBo.Instance.GetEntity(proudctInfo.BrandSysNo);
                    string ycg_code   = originInfo != null ? originInfo.CusOriginNO : "";

                    if (goods != "")
                    {
                        goods += ",";
                    }

                    goods += "{\"goodsPtcode\":\"" + proudctInfo.ProductDeclare + "\","; //税号
                    //goods += "{\"goodsPtcode\":\"09010110\",";//税号
                    goods += "\"goodsHsCode\":\"\",";                                    //海关HS编码
                    goods += "\"goodSize\":\"\",";                                       //计量单位
                    goods += "\"goodsName\":\"" + proudctInfo.ProductName + "\",";
                    goods += "\"brand\":\"" + brandInfo.Name + "\",";
                    //goods += "\"goodSpec\":\"" + proudctInfo.Volume + "\",";
                    goods += "\"goodSpec\":\"" + proudctInfo.GrosWeight + "kg\",";
                    goods += "\"goodsNum\":" + good.Quantity + ",";                  //
                    goods += "\"goodsPrice\":" + good.SalesUnitPrice + ",";          //申报单价
                    goods += "\"goodsTotal\":" + good.SalesAmount + ",";             //申报总价
                    goods += "\"curr\":\"142\",";
                    goods += "\"goodsGweight\":\"" + proudctInfo.GrosWeight + "\","; //毛重
                    goods += "\"suttleWeight\":\"" + proudctInfo.NetWeight + "\",";  //净重
                    goods += "\"GoodsUrl\":\"\",";
                    goods += "\"ycg_code\":\"" + originInfo.CusOriginNO + "\",";     //国家代码
                    goods += "\"Note\":\"\"}";

                    goodsGweight += proudctInfo.GrosWeight;
                    num          += good.Quantity;
                }
                #endregion

                #region 订单主体

                #region 仓库所在国家

                var _prvinceInfo = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(warehouseInfo.ProvinceSysNo);
                var countryInfo  = Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(_prvinceInfo.ParentSysNo);
                #endregion

                orders.Append("{\"EntRecordNo\":\"\",");  //企业的内部申报单编号
                orders.Append("\"EntInternalNo\":\"\","); //企业在海关备案申报系统中的备案号
                orders.Append("\"pfreightNo\":\"\",");    //总运单号
                orders.Append("\"expressNum\":\"\",");
                orders.Append("\"orderSn\":\"" + orderInfo.OrderNo + "\",");
                orders.Append("\"DeclareCustoms\":\"" + configGj.DeclareCustoms + "\",");                //申报地海关
                orders.Append("\"IePort\":\"" + configGj.IePort + "\",");                                //进出口口岸
                orders.Append("\"Voyage\": \"\",");                                                      //运输工具航次
                orders.Append("\"IeDate\":" + Hyt.Util.DateUtil.ConvertDateTimeInt(DateTime.Now) + ","); //进出口日期
                orders.Append("\"buyerName\":\"" + srenity.Name + "\",");
                //orders.Append("\"buyerName\":\"杨浩\",");
                orders.Append("\"buyerIdcard\":\"" + srenity.IDCardNo + "\",");
                orders.Append("\"buyerAddress\":\"" + province + "^^^" + city + "^^^" + district + "^^^" + srenity.StreetAddress + "\",");
                orders.Append("\"recipientPhoneNo\":\"" + srenity.MobilePhoneNumber + "\","); //收件人电话号码
                orders.Append("\"provinceCode\":\"" + provinceEntity.AreaCode + "\",");       //收件人省市区代码
                orders.Append("\"postCode\":\"" + srenity.ZipCode + "\",");
                orders.Append("\"num\":\"" + num + "\",");
                orders.Append("\"senderName\":\"" + warehouseInfo.Contact + "\",");
                orders.Append("\"senderCountryCode\":\"" + countryInfo.AreaCode + "\",");
                orders.Append("\"senderCity\":\"" + warehouseInfo.CityName + "\",");
                orders.Append("\"senderAddress\":\"" + warehouseInfo.StreetAddress + "\",");
                orders.Append("\"senderPhone\":\"" + warehouseInfo.Phone + "\",");
                orders.Append("\"curr\":\"142\",");
                orders.Append("\"goodsGweight\":" + goodsGweight + ",");
                orders.Append("\"Notes\":\"\",");
                orders.Append("\"goods\":[");
                orders.Append(goods);
                orders.Append("]}");
                #endregion

                #region 推送至高捷接口
                string strorder = EncodeBase64(EncodeBase64(orders.ToString()));

                var strPost = "&seName=" + EncodeBase64(configGj.seller) + "&key=" + EncodeBase64(configGj.api_key) + "&mark=" + EncodeBase64("order") + "&confirm=" + EncodeBase64("2") + "&order=" + strorder;

                var strResult = GetResponse(url, strPost);
                var json      = JObject.Parse(strResult);//{"state": "error","message": "用户名或密码不能为空"}



                var soOrderSyncLogisticsLog = new SoOrderSyncLogisticsLog();
                soOrderSyncLogisticsLog.OrderSysNo     = orderSysno;
                soOrderSyncLogisticsLog.Code           = (int)this.Code;
                soOrderSyncLogisticsLog.CreateDate     = DateTime.Now;
                soOrderSyncLogisticsLog.CreatedBy      = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
                soOrderSyncLogisticsLog.LastUpdateBy   = 0;
                soOrderSyncLogisticsLog.LastUpdateDate = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue;

                soOrderSyncLogisticsLog.Packets          = orders.ToString();
                soOrderSyncLogisticsLog.ReceiptContent   = json.ToString();
                soOrderSyncLogisticsLog.LogisticsOrderId = "";


                //var model = new LgGaoJiePushInfo();
                //model.OrderSysNo = orderSysno;
                //model.OrderInfo = orders.ToString();
                ////保存订单回执信息
                //model.ReturnInfo = json.ToString();
                ////保存推送回执信息
                //LogisticsBo.Instance.InsertLgGaoJiePushInfoEntity(model, BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base);

                string state = json["state"].ToString().ToLower();
                //推送成功
                if (state == "success")
                {
                    result.Status  = true;
                    result.Message = json["message"].ToString();
                    soOrderSyncLogisticsLog.StatusCode = "";
                    soOrderSyncLogisticsLog.StatusMsg  = result.Message;
                    //更新物流状态CBLogisticsSendStatus
                    BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)Hyt.Model.WorkflowStatus.OrderStatus.跨境物流推送状态.已推送, 3, orderSysno);
                }
                else
                {
                    result.Status  = false;
                    result.Message = json["message"].ToString();
                    soOrderSyncLogisticsLog.StatusCode = "";
                    soOrderSyncLogisticsLog.StatusMsg  = result.Message;
                    BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)Hyt.Model.WorkflowStatus.OrderStatus.跨境物流推送状态.失败, 3, orderSysno);
                }

                SoOrderSyncLogisticsLogBo.Instance.Insert(soOrderSyncLogisticsLog);

                #endregion
            }
            catch (ApiException ex)
            {
                result.Status  = false;
                result.Message = ex.Message;
            }

            return(result);
        }
Beispiel #10
0
        /// <summary>
        /// 添加交易订单
        /// </summary>
        /// <param name="orderId">销售订单系统编号</param>
        /// <returns></returns>
        /// <remarks></remarks>
        ///  <remarks>2016-3-8 杨浩 创建</remarks>
        ///  <remarks>2016-09-22 周 重构</remarks>
        public override Result AddOrderTrade(int orderId)
        {
            var result = new Result()
            {
                Status     = false,
                StatusCode = 0,
                Message    = "向" + this.Code + "物流推送订单失败"
            };

            #region
            try
            {
                var order = Hyt.BLL.Order.SoOrderBo.Instance.GetEntity(orderId);
                if (order == null)
                {
                    result.Status     = false;
                    result.Message    = string.Format("订单号{0}不存在!", orderId);
                    result.StatusCode = -100;
                }

                order.ReceiveAddress = BLL.Order.SoOrderBo.Instance.GetOrderReceiveAddress(order.ReceiveAddressSysNo);
                order.OrderItemList  = DataAccess.Order.ISoOrderItemDao.Instance.GetOrderItemsByOrderSysNo(order.SysNo);
                var filter = new ParaOnlinePaymentFilter();
                filter.OrderSysNo = orderId;
                var onlinePayment = BLL.Finance.FinanceBo.Instance.GetOnlinePayments(filter).Rows.Where(o => o.Status == 1).FirstOrDefault();

                if (onlinePayment == null)
                {
                    result.Message = "订单不存在在线支付记录";
                    return(result);
                }
                // 收货人 区 市 省
                BsArea receiverDistrict = BLL.Basic.BasicAreaBo.Instance.GetArea(order.ReceiveAddress.AreaSysNo);
                BsArea receiverCity     = BLL.Basic.BasicAreaBo.Instance.GetArea(receiverDistrict.ParentSysNo);
                BsArea receiverProvince = BLL.Basic.BasicAreaBo.Instance.GetArea(receiverCity.ParentSysNo);
                // 发货人 市
                CBWhWarehouse  warehouse    = BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(order.DefaultWarehouseSysNo);
                BsArea         shipperCity  = BLL.Basic.BasicAreaBo.Instance.GetArea(warehouse.CitySysNo);
                DsDealer       dealer       = BLL.Distribution.DsDealerBo.Instance.GetDsDealer(order.DealerSysNo);
                LgDeliveryType deliveryType = BLL.Logistics.DeliveryTypeBo.Instance.GetDeliveryType(order.DeliveryTypeSysNo);

                var newOrder = new CreatedOrderApiRequest();
                newOrder.OutOrderNo                     = order.SysNo.ToString();
                newOrder.DeliveryCode                   = "3";//暂时默认1(后期此参数作废)
                newOrder.ReceiverName                   = TConvert.ToString(order.ReceiveAddress.Name);
                newOrder.ReceiverMobile                 = !string.IsNullOrWhiteSpace(order.ReceiveAddress.MobilePhoneNumber) ? order.ReceiveAddress.MobilePhoneNumber : order.ReceiveAddress.PhoneNumber;
                newOrder.ReceiverProvince               = TConvert.ToString(receiverProvince.AreaName).Trim();
                newOrder.ReceiverCity                   = TConvert.ToString(receiverCity.AreaName).Trim();
                newOrder.ReceiverDistrict               = TConvert.ToString(receiverDistrict.AreaName).Trim();
                newOrder.ReceiverAddress                = TConvert.ToString(order.ReceiveAddress.StreetAddress).Trim();
                newOrder.ReceiverIdCard                 = TConvert.ToString(order.ReceiveAddress.IDCardNo);
                newOrder.ReceiverFrontIdCardImageUrl    = HttpContext.Current.Request.Url.Host + TConvert.ToString(order.ReceiveAddress.IDCardImgs);
                newOrder.ReceiverOppositeIdCardImageUrl = HttpContext.Current.Request.Url.Host + TConvert.ToString(order.ReceiveAddress.IDCardImgs);
                newOrder.UserRemark                     = order.Remarks;

                newOrder.ThirdPlatformPaymentName = Enum.GetName(typeof(Hyt.Model.CommonEnum.PayCode), order.PayTypeSysNo);
                var    payment       = Hyt.BLL.Finance.FinanceBo.Instance.GetOnlinePaymentBySourceSysNo(orderId);
                string PaymentNumber = "";
                if (payment != null)
                {
                    PaymentNumber = payment.VoucherNo;
                }
                newOrder.ThirdPlatformPaymentNumber = PaymentNumber;

                newOrder.Items = new List <CreatedOrderItemRequest>();
                CreatedOrderItemRequest orderItem = new CreatedOrderItemRequest();

                foreach (var item in order.OrderItemList)
                {
                    var product = BLL.Product.PdProductBo.Instance.GetProductNoCache(item.ProductSysNo);
                    orderItem.SkuId    = product.ErpCode;
                    orderItem.Quantity = item.Quantity;
                    newOrder.Items.Add(orderItem);
                }
                var json = Newtonsoft.Json.JsonConvert.SerializeObject(newOrder);
                //推送订单
                var _result = CreatedOrder(newOrder);
                if (_result.ResultCode == 200)
                {
                    var soOrderSyncLogisticsLog = new SoOrderSyncLogisticsLog();

                    soOrderSyncLogisticsLog.OrderSysNo = orderId;
                    soOrderSyncLogisticsLog.Code       = (int)this.Code;

                    soOrderSyncLogisticsLog.LastUpdateDate = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue;
                    soOrderSyncLogisticsLog.StatusCode     = "";
                    soOrderSyncLogisticsLog.StatusMsg      = "";
                    soOrderSyncLogisticsLog.Packets        = json;
                    soOrderSyncLogisticsLog.ReceiptContent = _result.Tag.ToString();

                    soOrderSyncLogisticsLog.LastUpdateBy     = 0;
                    soOrderSyncLogisticsLog.LogisticsOrderId = "";

                    soOrderSyncLogisticsLog.CreateDate = DateTime.Now;
                    soOrderSyncLogisticsLog.CreatedBy  = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
                    SoOrderSyncLogisticsLogBo.Instance.Insert(soOrderSyncLogisticsLog);
                    BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus(1, 3, orderId);
                    result.Message = "向" + this.Code + "物流推送订单成功:回执单号:" + _result.Tag.ToString();
                }
                else
                {
                    result.Message = _result.Message;
                }
            }
            catch (Exception ex)
            {
                result.Message = "向" + this.Code + "物流推送订单报错:" + ex.StackTrace;
                return(result);
            }
            #endregion

            return(result);
        }
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="model">实体</param>
 /// <returns></returns>
 public abstract int Update(SoOrderSyncLogisticsLog model);
 /// <summary>
 /// 新增
 /// </summary>
 /// <param name="model">实体</param>
 /// <returns></returns>
 public abstract int Insert(SoOrderSyncLogisticsLog model);
Beispiel #13
0
        /// <summary>
        /// 添加交易订单
        /// </summary>
        /// <param name="orderSysno"></param>
        /// <returns>
        /// 2016-04-09 陈海裕 创建
        /// 2016-08-20 杨浩   重构
        /// </returns>
        public override Result AddOrderTrade(int orderSysno)
        {
            LogisticsLogin();

            var result = new Result <string>();

            result.Status     = false;
            result.StatusCode = 0;
            result.Message    = "接口调用失败";
            string url = RequestUrl + "Express/uploadOrders";

            if (orderSysno <= 0)
            {
                return(result);
            }

            try
            {
                var order = BLL.Order.SoOrderBo.Instance.GetEntity(orderSysno);
                if (order == null)
                {
                    result.Message = "该订单不存在";
                    return(result);
                }

                order.ReceiveAddress = BLL.Order.SoOrderBo.Instance.GetOrderReceiveAddress(order.ReceiveAddressSysNo);
                order.OrderItemList  = DataAccess.Order.ISoOrderItemDao.Instance.GetOrderItemsByOrderSysNo(order.SysNo);
                var voucherFilter = new ParaVoucherFilter();
                voucherFilter.SourceSysNo = order.SysNo;
                var recVoucher = BLL.Finance.FinanceBo.Instance.GetReceiptVouchers(voucherFilter).Rows.FirstOrDefault();
                recVoucher.VoucherItems = BLL.Finance.FnReceiptVoucherBo.Instance.GetReceiptVoucherItem(recVoucher.SysNo);
                // 收货人 区 市 省
                BsArea receiverDistrict = BLL.Basic.BasicAreaBo.Instance.GetArea(order.ReceiveAddress.AreaSysNo);
                BsArea receiverCity     = BLL.Basic.BasicAreaBo.Instance.GetArea(receiverDistrict.ParentSysNo);
                BsArea receiverProvince = BLL.Basic.BasicAreaBo.Instance.GetArea(receiverCity.ParentSysNo);
                // 发货人 市
                CBWhWarehouse warehouse       = BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(order.DefaultWarehouseSysNo);
                BsArea        shipperDistrict = BLL.Basic.BasicAreaBo.Instance.GetAreaList(warehouse.CitySysNo).FirstOrDefault();
                BsArea        shipperCity     = BLL.Basic.BasicAreaBo.Instance.GetArea(warehouse.CitySysNo);
                BsArea        shipperProvince = BLL.Basic.BasicAreaBo.Instance.GetArea(warehouse.ProvinceSysNo);

                DsDealer dealer = BLL.Distribution.DsDealerBo.Instance.GetDsDealer(order.DealerSysNo);

                LgDeliveryType deliveryType = BLL.Logistics.DeliveryTypeBo.Instance.GetDeliveryType(order.DeliveryTypeSysNo);

                ParaOnlinePaymentFilter filter = new ParaOnlinePaymentFilter();
                filter.OrderSysNo = orderSysno;
                var   onlinePayment = BLL.Finance.FinanceBo.Instance.GetOnlinePayments(filter).Rows.Where(o => o.Status == 1).FirstOrDefault();
                Regex regex         = new Regex("\t|\n|\r");

                OrderList newOrderList = new OrderList();
                newOrderList.PrintType = "@1,@2";
                newOrderList.list      = new List <LGOrder>();
                LGOrder newOrder = new LGOrder();
                newOrder.Addr          = "中国," + receiverProvince.AreaName + "," + receiverCity.AreaName + "," + receiverDistrict.AreaName + "," + order.ReceiveAddress.StreetAddress;
                newOrder.Addr          = regex.Replace(newOrder.Addr, "");
                newOrder.CardNo        = order.ReceiveAddress.IDCardNo;
                newOrder.Create_Addr   = "中国," + shipperProvince.AreaName + "," + shipperCity.AreaName + "," + shipperDistrict.AreaName + ",";
                newOrder.Create_Addr   = regex.Replace(newOrder.Create_Addr, "");
                newOrder.Create_CardNo = "";
                newOrder.Create_Name   = "澳门爱勤";
                newOrder.Create_Phone  = !string.IsNullOrWhiteSpace(dealer.MobilePhoneNumber) ? dealer.MobilePhoneNumber : dealer.PhoneNumber;
                newOrder.id            = order.SysNo.ToString();
                newOrder.Name          = order.ReceiveAddress.Name;
                newOrder.OrderType     = "A";
                newOrder.PayCardNo     = order.ReceiveAddress.IDCardNo;
                newOrder.PayCurrency   = "CNY";
                newOrder.PayName       = order.ReceiveAddress.Name;
                newOrder.PayNo         = recVoucher.VoucherItems[0].VoucherNo;
                newOrder.PayPhone      = !string.IsNullOrWhiteSpace(order.ReceiveAddress.MobilePhoneNumber) ? order.ReceiveAddress.MobilePhoneNumber : order.ReceiveAddress.PhoneNumber;
                newOrder.PayRemark     = "";
                newOrder.PayTime       = order.CreateDate.ToString();
                newOrder.PayType       = GetPayType(order.PayTypeSysNo);// "alipay";
                newOrder.PayUser       = order.CustomerSysNo.ToString();
                newOrder.Phone         = newOrder.PayPhone;
                newOrder.Price         = order.OrderAmount;
                newOrder.Remark        = order.DeliveryRemarks;
                newOrder.TaxFee        = order.TaxFee;
                newOrder.TranFee       = order.FreightAmount;
                newOrder.Content       = "";
                foreach (var item in order.OrderItemList)
                {
                    var productStock = BLL.Warehouse.PdProductStockBo.Instance.GetEntityByWP(order.DefaultWarehouseSysNo, item.ProductSysNo);
                    newOrder.Content += productStock.Barcode + "," + item.Quantity + "," + item.SalesUnitPrice + "|";
                }
                if (!string.IsNullOrWhiteSpace(newOrder.Content))
                {
                    newOrder.Content = newOrder.Content.Substring(0, newOrder.Content.Length - 1);
                }
                newOrderList.list.Add(newOrder);

                Dictionary <string, string> paramsData = new Dictionary <string, string>();
                paramsData.Add("token", IdentifyPass);
                paramsData.Add("postdata", Util.Serialization.JsonUtil.ToJson(newOrderList));
                string postData    = InitParams(paramsData);
                string responseStr = GetResponse(url, postData);


                var jObject = JObject.Parse(responseStr);


                var soOrderSyncLogisticsLog = new SoOrderSyncLogisticsLog();

                soOrderSyncLogisticsLog.OrderSysNo = orderSysno;
                soOrderSyncLogisticsLog.Code       = (int)this.Code;

                soOrderSyncLogisticsLog.LastUpdateDate = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue;
                soOrderSyncLogisticsLog.StatusCode     = "";
                soOrderSyncLogisticsLog.StatusMsg      = "";
                soOrderSyncLogisticsLog.Packets        = postData;
                soOrderSyncLogisticsLog.ReceiptContent = responseStr;

                string status = jObject["status"].ToString();

                if (status == "-1")
                {
                    result.Status  = false;
                    result.Message = "未登录,请重试!";
                    IdentifyPass   = string.Empty;//清空身份凭证
                }
                else if (status == "1")
                {
                    for (int i = 0; i < jObject["data"].Count(); i++)
                    {
                        if (jObject["data"][i]["status"].ToString() == "1")
                        {
                            soOrderSyncLogisticsLog.LastUpdateBy     = 0;
                            soOrderSyncLogisticsLog.LogisticsOrderId = jObject["data"][i]["id"].ToString();
                            soOrderSyncLogisticsLog.CreateDate       = DateTime.Now;
                            soOrderSyncLogisticsLog.CreatedBy        = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
                            SoOrderSyncLogisticsLogBo.Instance.Insert(soOrderSyncLogisticsLog);
                            BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)Hyt.Model.WorkflowStatus.OrderStatus.跨境物流推送状态.已推送, 3, orderSysno);
                            result.Status  = true;
                            result.Message = "推单成功";
                        }
                        else
                        {
                            soOrderSyncLogisticsLog.CreateDate = DateTime.Now;
                            SoOrderSyncLogisticsLogBo.Instance.Insert(soOrderSyncLogisticsLog);
                            result.Status  = false;
                            result.Message = jObject["data"][i]["message"].ToString();
                        }
                    }
                }
                else
                {
                    try
                    {
                        SoOrderSyncLogisticsLogBo.Instance.Insert(soOrderSyncLogisticsLog);
                    }
                    catch { }

                    result.Status  = false;
                    result.Message = jObject["message"].ToString();
                }
            }
            catch (Exception ex)
            {
                result.Message = "向" + this.Code + "物流推送订单报错:" + ex.StackTrace;
                return(result);
            }

            return(result);
        }
Beispiel #14
0
        /// <summary>
        /// 添加交易订单
        /// </summary>
        /// <param name="orderSysno"></param>
        /// <returns>2016-04-09 陈海裕 创建</returns>
        public override Result AddOrderTrade(int orderSysno)
        {
            // 订单id,用于日志记录
            _orderSysNo = orderSysno;

            var result = new Result <string>();

            result.Status     = false;
            result.StatusCode = 0;
            result.Message    = "接口调用失败";
            string url = RequestUrl + "order/create";

            if (orderSysno <= 0)
            {
                return(result);
            }

            try
            {
                var order = BLL.Order.SoOrderBo.Instance.GetEntity(orderSysno);
                if (order == null)
                {
                    result.Message = "该订单不存在";
                    return(result);
                }
                order.ReceiveAddress = BLL.Order.SoOrderBo.Instance.GetOrderReceiveAddress(order.ReceiveAddressSysNo);
                order.OrderItemList  = DataAccess.Order.ISoOrderItemDao.Instance.GetOrderItemsByOrderSysNo(order.SysNo);
                var voucherFilter = new ParaVoucherFilter();
                voucherFilter.SourceSysNo = order.SysNo;
                var recVoucher = BLL.Finance.FinanceBo.Instance.GetReceiptVouchers(voucherFilter).Rows.FirstOrDefault();
                recVoucher.VoucherItems = BLL.Finance.FnReceiptVoucherBo.Instance.GetReceiptVoucherItem(recVoucher.SysNo);
                // 收货人 区 市 省
                var receiverDistrict = BLL.Basic.BasicAreaBo.Instance.GetArea(order.ReceiveAddress.AreaSysNo);
                var receiverCity     = BLL.Basic.BasicAreaBo.Instance.GetArea(receiverDistrict.ParentSysNo);
                var receiverProvince = BLL.Basic.BasicAreaBo.Instance.GetArea(receiverCity.ParentSysNo);
                // 发货人 市
                var warehouse = BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(order.DefaultWarehouseSysNo);

                var shipperCity = BLL.Basic.BasicAreaBo.Instance.GetArea(warehouse.CitySysNo);

                if (string.IsNullOrEmpty(warehouse.LogisWarehouseCode))
                {
                    Result <string> whResult = GetWarehouseId();
                    if (!whResult.Status)
                    {
                        return(whResult);
                    }
                    else
                    {
                        warehouse.LogisWarehouseCode = whResult.Data.Split(':')[0].Replace("{", "").Replace("}", "").Replace("\"", "").Trim();
                        BLL.Warehouse.WhWarehouseBo.Instance.Update(warehouse);
                    }
                }

                if (string.IsNullOrEmpty(receiverDistrict.AreaCode) || string.IsNullOrEmpty(receiverCity.AreaCode) ||
                    string.IsNullOrEmpty(receiverProvince.AreaCode) || string.IsNullOrEmpty(shipperCity.AreaCode))
                {
                    Result <List <YSArea> > areaResult = new Result <List <YSArea> >();
                    areaResult.Data = new List <YSArea>();
                    for (int i = 0; i < 8; i++)
                    {
                        areaResult.Data.AddRange(GetYSAreaData(i + 1).Data);
                    }
                    if (string.IsNullOrEmpty(receiverProvince.AreaCode))
                    {
                        YSArea ysArea = areaResult.Data.Find((p => p.area_name == receiverProvince.AreaName.Trim() || p.old_name == receiverProvince.AreaName.Trim()));
                        if (ysArea != null)
                        {
                            receiverProvince.AreaCode = ysArea.id.ToString();
                            BLL.Basic.BasicAreaBo.Instance.Update(receiverProvince);
                        }
                    }

                    if (string.IsNullOrEmpty(receiverCity.AreaCode))
                    {
                        YSArea ysArea = areaResult.Data.Find(p => (p.area_name == receiverCity.AreaName.Trim() || p.old_name == receiverCity.AreaName.Trim()) && p.pid.ToString() == receiverProvince.AreaCode);
                        if (ysArea != null)
                        {
                            receiverCity.AreaCode = ysArea.id.ToString();
                            BLL.Basic.BasicAreaBo.Instance.Update(receiverCity);
                        }
                    }
                    if (string.IsNullOrEmpty(receiverDistrict.AreaCode))
                    {
                        YSArea ysArea = areaResult.Data.Find(p => (p.area_name == receiverDistrict.AreaName.Trim() || p.old_name == receiverDistrict.AreaName.Trim()) && p.pid.ToString() == receiverCity.AreaCode);
                        if (ysArea != null)
                        {
                            receiverDistrict.AreaCode = ysArea.id.ToString();
                            BLL.Basic.BasicAreaBo.Instance.Update(receiverDistrict);
                        }
                    }


                    if (string.IsNullOrEmpty(shipperCity.AreaCode))
                    {
                        if (string.IsNullOrEmpty(shipperCity.AreaCode))
                        {
                            shipperCity.AreaCode = shipperCity.SysNo.ToString();
                        }

                        //YSArea ysArea = areaResult.Data.Find(p => p.area_name == receiverProvince.AreaName.Trim() || p.old_name == receiverDistrict.AreaName.Trim());
                        //if (ysArea != null)
                        //{
                        //    shipperCity.AreaCode = ysArea.id.ToString();
                        //    BLL.Basic.BasicAreaBo.Instance.Update(shipperCity);
                        //}
                    }
                }



                var dealer = BLL.Distribution.DsDealerBo.Instance.GetDsDealer(order.DealerSysNo);

                var deliveryType = BLL.Logistics.DeliveryTypeBo.Instance.GetDeliveryType(order.DeliveryTypeSysNo);

                var filter = new ParaOnlinePaymentFilter();
                filter.OrderSysNo = orderSysno;
                var onlinePayment = BLL.Finance.FinanceBo.Instance.GetOnlinePayments(filter).Rows.Where(o => o.Status == 1).FirstOrDefault();

                if (onlinePayment == null)
                {
                    result.Message = "订单不存在在线支付记录";
                    return(result);
                }

                string _deliveryType = "";
                if (deliveryType.DeliveryTypeName.Contains("顺丰"))
                {
                    _deliveryType = "SF";
                    //CustomerCode = SFCustomerCode;
                    //Key = SFKey;
                    Token = SFToken;
                }
                else if (deliveryType.DeliveryTypeName.Contains("中通"))
                {
                    _deliveryType = "ZTO";
                }
                if (_deliveryType == "")
                {
                    result.Message = "友信达物流目前只有支持顺丰和中通两种快递方式";
                    return(result);
                }

                // 易宝支付有限公司 PTE51001409230000001
                var paramsData = new Dictionary <string, string>();

                decimal grossWeight  = 0m;
                decimal netWeight    = 0m;
                var     error        = "";
                string  productSku   = "";
                string  supplierCode = "";
                string  productName  = "";
                string  qty          = "";
                string  price        = "";
                for (int i = 0; i < order.OrderItemList.Count; i++)
                {
                    var product = BLL.Product.PdProductBo.Instance.GetProduct(order.OrderItemList[i].ProductSysNo);
                    grossWeight += (product.GrosWeight) * order.OrderItemList[i].Quantity;
                    netWeight   += (product.NetWeight) * order.OrderItemList[i].Quantity;
                    var productStock = BLL.Warehouse.PdProductStockBo.Instance.GetEntityByWP(order.DefaultWarehouseSysNo, order.OrderItemList[i].ProductSysNo);

                    if (productStock == null)
                    {
                        error += order.OrderItemList[i].ProductSysNo + ",";
                        continue;
                    }

                    #region 条形码商品
                    var RefProductName     = order.OrderItemList[i].ProductName;
                    var RefProductSysNo    = order.OrderItemList[i].ProductSysNo;
                    var RefProductQuantity = order.OrderItemList[i].Quantity;
                    BLL.Product.PdProductBo.Instance.RefProductQuantity(ref RefProductSysNo, ref RefProductQuantity, ref RefProductName, order.SysNo);
                    #endregion

                    //// 订单商品
                    //paramsData.Add("products[" + i + "][product_sku]", product.ErpCode);
                    //paramsData.Add("products[" + i + "][supplier_code]", "");
                    ////paramsData.Add("products[" + i + "][product_name]", order.OrderItemList[i].ProductName);
                    ////paramsData.Add("products[" + i + "][qty]", order.OrderItemList[i].Quantity.ToString());
                    //paramsData.Add("products[" + i + "][product_name]", RefProductName);
                    //paramsData.Add("products[" + i + "][qty]", RefProductQuantity.ToString());
                    ////paramsData.Add("products[" + i + "][price]",(order.OrderItemList[i].SalesUnitPrice + order.OrderItemList[i].ChangeAmount).ToString());
                    productSku += "&products[" + i + "][product_sku]=" + product.ErpCode;
                    productSku += "&products[" + i + "][supplier_code]=";
                    productSku += "&products[" + i + "][product_name]=" + order.OrderItemList[i].ProductName;
                    productSku += "&products[" + i + "][qty]=" + RefProductQuantity;
                    decimal amount = Math.Round(((order.OrderItemList[i].SalesAmount + order.OrderItemList[i].ChangeAmount) / order.OrderItemList[i].Quantity), 4);
                    productSku += "&products[" + i + "][price]=" + amount;
                    //paramsData.Add("products[" + i + "][price]", amount.ToString());
                    //order.OrderItemList[i].SalesAmount+order.OrderItemList[i].ChangeAmount=(order.OrderItemList[i].SalesUnitPrice*order.OrderItemList[i].Quantity)  =>
                    //order.OrderItemList[i].SalesUnitPrice=(order.OrderItemList[i].SalesAmount + order.OrderItemList[i].ChangeAmount) / order.OrderItemList[i].Quantity
                }

                //2016-10-28 18:39 临时处理报错问题
                if (!string.IsNullOrWhiteSpace(error))
                {
                    result.Message = this.Code + ":商品编号(" + error.TrimEnd(',') + ")在库存中找不到,无法获取SKU,请入库。";
                    return(result);
                }
                paramsData.Add("address_remark", "");
                paramsData.Add("products", "products");
                paramsData.Add("card_no", order.ReceiveAddress.IDCardNo);
                paramsData.Add("card_type", "01");
                paramsData.Add("currency_code", "RMB");
                paramsData.Add("customize_category", "");
                paramsData.Add("express_method", "1");
                paramsData.Add("tracking_number", "");
                paramsData.Add("inter_tracking_number", "");
                paramsData.Add("note", "");
                paramsData.Add("freight", order.FreightAmount.ToString());
                paramsData.Add("gross_weight", grossWeight.ToString());
                paramsData.Add("net_weight", netWeight.ToString());
                paramsData.Add("is_valuation", "0");
                paramsData.Add("valuation_fee", order.TaxFee.ToString("0.00"));
                paramsData.Add("valuation_value", order.OrderAmount.ToString("0.00"));
                paramsData.Add("order_time", CreateTimeStamp(order.CreateDate).ToString());
                paramsData.Add("pay_company", "易宝支付有限公司");
                paramsData.Add("pay_company_no", config.CIECode);// 信营商检企业备案号
                paramsData.Add("pay_no", recVoucher.VoucherItems.FirstOrDefault().VoucherNo);
                paramsData.Add("receiver_city_id", receiverCity.AreaCode);
                paramsData.Add("receiver_district_id", receiverDistrict.AreaCode);
                paramsData.Add("receiver_name", order.ReceiveAddress.Name);
                //paramsData.Add("receiver_postcode", order.ReceiveAddress.ZipCode);
                paramsData.Add("receiver_postcode", "000000");// 无邮政编码,默认六个零
                paramsData.Add("receiver_province_id", receiverProvince.AreaCode);
                paramsData.Add("receiver_fax", receiverProvince.AreaCode);
                paramsData.Add("receiver_tel", order.ReceiveAddress.MobilePhoneNumber);
                paramsData.Add("receiver_tel2", order.ReceiveAddress.PhoneNumber);
                paramsData.Add("reference_no", onlinePayment.BusinessOrderSysNo);
                paramsData.Add("receiver_address", order.ReceiveAddress.StreetAddress);
                paramsData.Add("shipper_city", shipperCity.AreaName);
                paramsData.Add("shipper_country", "CN");
                //paramsData.Add("shipper_country", "HK");
                paramsData.Add("shipper_name", !string.IsNullOrWhiteSpace(warehouse.BackWarehouseName) ? warehouse.BackWarehouseName : dealer.ErpName);
                paramsData.Add("sm_code", _deliveryType);
                paramsData.Add("tax_amount", order.TaxFee.ToString());
                paramsData.Add("total_amount", order.OrderAmount.ToString());
                paramsData.Add("total_product_amount", (order.ProductAmount + order.ProductChangeAmount).ToString());
                //paramsData.Add("wrap_type", "2C1");
                paramsData.Add("wrap_type", "4M");
                paramsData.Add("warehouse_id", warehouse.LogisWarehouseCode);//广州白云
                paramsData.Add("shipper_tel", string.IsNullOrWhiteSpace(dealer.MobilePhoneNumber) ? dealer.PhoneNumber : dealer.MobilePhoneNumber);
                paramsData.Add("shipper_address", warehouse.StreetAddress);
                string postData   = InitParams(paramsData);
                string timerstamp = CreateTimeStamp();
                //postData += Key + timerstamp;
                postData = postData.Replace("&products=products", productSku + supplierCode + productName + qty + price);
                string responseStr = GetResponse(url, postData, timerstamp, Key);

                result = GetResult(JObject.Parse(responseStr), result);

                var soOrderSyncLogisticsLog = new SoOrderSyncLogisticsLog();

                soOrderSyncLogisticsLog.OrderSysNo = orderSysno;
                soOrderSyncLogisticsLog.Code       = (int)this.Code;

                soOrderSyncLogisticsLog.LastUpdateDate = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue;
                soOrderSyncLogisticsLog.StatusCode     = "";
                soOrderSyncLogisticsLog.StatusMsg      = "";
                soOrderSyncLogisticsLog.Packets        = postData;
                soOrderSyncLogisticsLog.ReceiptContent = responseStr;
                if (result.Status == true)
                {
                    soOrderSyncLogisticsLog.LastUpdateBy     = 0;
                    soOrderSyncLogisticsLog.LogisticsOrderId = JObject.Parse(responseStr)["data"]["order_sn"].ToString();

                    soOrderSyncLogisticsLog.CreateDate = DateTime.Now;
                    soOrderSyncLogisticsLog.CreatedBy  = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
                    SoOrderSyncLogisticsLogBo.Instance.Insert(soOrderSyncLogisticsLog);

                    BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)Hyt.Model.WorkflowStatus.OrderStatus.跨境物流推送状态.已推送, 3, orderSysno);
                }
            }
            catch (Exception ex)
            {
                result.Message = "向" + this.Code + "物流推送订单报错:" + ex.StackTrace;
                return(result);
            }

            return(result);
        }
 /// <summary>
 /// 新增
 /// </summary>
 /// <param name="model">实体</param>
 /// <returns></returns>
 public override int Insert(SoOrderSyncLogisticsLog model)
 {
     return(Context.Insert <SoOrderSyncLogisticsLog>("SoOrderSyncLogisticsLog", model)
            .AutoMap(o => o.SysNo)
            .ExecuteReturnLastId <int>());
 }