public void TestSaveCommodityOrder() { OrderSDTO orderSDTO = new OrderSDTO(); orderSDTO.AppId = Guid.Parse(Setting.AppId); orderSDTO.City = "北京"; orderSDTO.District = "海淀区"; orderSDTO.Price = 50; orderSDTO.Province = "北京"; orderSDTO.ReceiptAddress = "上地东路1号盈创动力大厦A座北厅401室"; orderSDTO.ReceiptPhone = "15810819038"; orderSDTO.ReceiptUserName = "******"; orderSDTO.State = 0; orderSDTO.UserId = Guid.Parse(Setting.UserId); orderSDTO.ShoppingCartItemSDTO = new List <ShoppingCartItemSDTO>(); ShoppingCartItemSDTO good = new ShoppingCartItemSDTO(); good.Id = Guid.Parse("3AAE2EBB-25F2-4743-A173-93DA170D0A21"); good.CommodityNumber = 2; good.SizeAndColorId = "cbdd46a6-08ec-45fc-98ae-a7f65da3f96f,2802acc0-9a02-4d2f-880f-cf48ac0d30dc"; //good.SizeAndColorId orderSDTO.ShoppingCartItemSDTO.Add(good); string requestData = "{\"appId\":\"" + Setting.AppId + "\", \"orderSDTO\":" + JsonHelper.JsonSerializer <OrderSDTO>(orderSDTO) + "}"; var rest = new RestRequestTest("Jinher.AMP.BTP.SV.CommodityOrderSV.svc/SaveCommodityOrder"); string retJson = rest.Execute(requestData); //ReturnDTO returnDTO = JsonHelper.JsonDeserialize<ReturnDTO>(retJson); }
public Jinher.AMP.BTP.Deploy.CustomDTO.SetOrderResultDTO SaveSetCommodityOrder(OrderSDTO orderSDTO) { //定义返回值 Jinher.AMP.BTP.Deploy.CustomDTO.SetOrderResultDTO result; try { //调用代理方法 result = base.Channel.SaveSetCommodityOrder(orderSDTO); } catch { //抛异常 throw; } finally { //关链接 ChannelClose(); } //返回结果 return(result); }
public Jinher.AMP.BTP.Deploy.CustomDTO.SetOrderResultDTO SaveSetCommodityOrder(OrderSDTO orderSDTO) { base.Do(false); Stopwatch timer = new Stopwatch(); timer.Start(); var result = this.SaveSetCommodityOrderExt(orderSDTO); timer.Stop(); LogHelper.Debug(string.Format("CommodityOrderSV.SaveSetCommodityOrder:耗时:{0}。入参:orderSDTO:{1},\r\n出参:{2}", timer.ElapsedMilliseconds, JsonHelper.JsonSerializer(orderSDTO), JsonHelper.JsonSerializer(result))); return(result); }
/// <summary> /// 保存一个京东订单 /// </summary> /// <param name="item">一个订单</param> /// <param name="comList">订单项对应的商品</param> private ResultDTO SaveOneJdOrder(OrderSDTO item, List <Commodity> comList) { ResultDTO <List <CommoditySummaryDTO> > result = new ResultDTO <List <CommoditySummaryDTO> >(); if (item == null) { result.ResultCode = (int)ReturnCodeEnum.ParamEmpty; result.Message = ReturnCodeEnum.ParamEmpty.GetDescription(); return(result); } if (item.ShoppingCartItemSDTO == null || !item.ShoppingCartItemSDTO.Any() || comList == null || !comList.Any()) { result.ResultCode = (int)ReturnCodeEnum.ParamEmpty; result.Message = ReturnCodeEnum.ParamEmpty.GetDescription(); return(result); } //易捷北京所有的AppId string Appids = CustomConfig.AppIds; LogHelper.Info(string.Format("Appids{0}", Appids)); List <string> Appidlist = null; if (!string.IsNullOrEmpty(Appids)) { Appidlist = Appids.Split(new char[] { ',' }).ToList(); } if (!Appidlist.Contains(comList[0].AppId.ToString().ToUpper())) { //todo 返回非京东app. result.ResultCode = (int)ReturnCodeEnum.NotJdShop; result.Message = ReturnCodeEnum.NotJdShop.GetDescription(); return(result); } LogHelper.Info(string.Format("Appidlist的数量{0}", Appidlist.Count())); string orderPriceSnap = null; string sku = null; //订单项里的商品都是同一店铺的,店铺名称相同。 string appName = APPSV.GetAppName(comList[0].AppId); List <CommoditySummaryDTO> errorCommodities = new List <CommoditySummaryDTO>(); orderPriceSnap = null; sku = null; ContextSession contextSession = ContextFactory.CurrentThreadContext; var scis = item.ShoppingCartItemSDTO; foreach (var _item in scis) { Commodity commodity = comList.FirstOrDefault(_ => _.Id == _item.Id); LogHelper.Info(string.Format("京东日志:商品Id:{0},JDCode:{1},AppId:{2}", commodity.Id, commodity.JDCode, commodity.AppId)); //京东店铺的商品没有JDCode,返回错误。 if (string.IsNullOrWhiteSpace(commodity.JDCode)) { #region Jdlogs model = new Jdlogs(); model.Id = Guid.NewGuid(); model.Content = (appName + "App中" + commodity.Name + "商品的备注编码不存在,请尽快补充填写~"); model.Remark = string.Empty; model.AppId = commodity.AppId; model.ModifiedOn = DateTime.Now; model.SubTime = DateTime.Now; model.Isdisable = false; model.EntityState = EntityState.Added; contextSession.SaveObject(model); bool falg = EmailHelper.SendEmail("京东错误日志", model.Content, "*****@*****.**"); var errorCommodity = new CommoditySummaryDTO(); errorCommodity.Id = commodity.Id; errorCommodity.Name = commodity.Name; errorCommodity.PicturesPath = commodity.PicturesPath; errorCommodity.Price = _item.Price; errorCommodity.Sku = _item.SizeAndColorId; errorCommodity.ShopCartItemId = _item.ShopCartItemId; errorCommodities.Add(errorCommodity); result.ResultCode = (int)ReturnCodeEnum.CommoditySold; result.Message = ReturnCodeEnum.CommoditySold.GetDescription(); result.Data = errorCommodities; return(result); #endregion } orderPriceSnap += "{'price':" + commodity.CostPrice + ",'skuId':" + commodity.JDCode + "},"; sku += "{'skuId':" + commodity.JDCode + ", 'num':" + _item.CommodityNumber + ",'bNeedAnnex':true, 'bNeedGift':false},"; LogHelper.Info(string.Format("京东日志2:{0}:{1}", orderPriceSnap, sku)); } LogHelper.Info(string.Format("京东日志3:{0}:{1}", orderPriceSnap, sku)); if (string.IsNullOrEmpty(orderPriceSnap) || string.IsNullOrEmpty(sku)) { //没有商品要去京东下单。 result.ResultCode = (int)ReturnCodeEnum.NoCommodityNeedJdOrder; result.Message = ReturnCodeEnum.NoCommodityNeedJdOrder.GetDescription(); return(result); } orderPriceSnap = orderPriceSnap.Remove(orderPriceSnap.Length - 1, 1); sku = sku.Remove(sku.Length - 1, 1); orderPriceSnap = "[" + orderPriceSnap + "]"; sku = "[" + sku + "]"; string thirdOrder = Guid.NewGuid().ToString(); if (string.IsNullOrEmpty(item.StreetCode)) { item.StreetCode = "0"; } //获取京东编号 ResultDTO jdResult = JdHelper.GetJDOrderNew(thirdOrder, orderPriceSnap, sku, item.ReceiptUserName, item.ReceiptAddress, item.ReceiptPhone, "*****@*****.**", item.ProvinceCode, item.CityCode, item.DistrictCode, item.StreetCode); LogHelper.Info(string.Format("京东日志4:{0}:{1}", orderPriceSnap, sku)); //正常下单,保存订单项关系。 if (jdResult.ResultCode == 0) { #region 京东下单情况 JdOrderItem jdorderitemdto = new JdOrderItem() { Id = Guid.NewGuid(), //todo jdporderId???? //JdPorderId = jdporderId, TempId = Guid.Parse(thirdOrder), JdOrderId = Guid.Empty.ToString(), MainOrderId = Guid.Empty.ToString(), CommodityOrderId = Guid.Empty.ToString(), State = Convert.ToInt32(JdEnum.YZ), StateContent = new EnumHelper().GetDescription(JdEnum.YZ), SubTime = DateTime.Now, ModifiedOn = DateTime.Now }; //todo SaveJdOrderItem(jdorderitemdto); JdJournal jdjournaldto = new JdJournal() { Id = Guid.NewGuid(), //todo jdporderId //JdPorderId = jdporderId, TempId = Guid.Parse(thirdOrder), JdOrderId = Guid.Empty.ToString(), MainOrderId = Guid.Empty.ToString(), CommodityOrderId = Guid.Empty.ToString(), Name = "京东统一下单接口", Details = "初始状态为" + Convert.ToInt32(JdEnum.YZ), SubTime = DateTime.Now }; //todo SaveJdJournal(jdjournaldto); #endregion } else { #region 记录京东日志 int resultCode = jdResult.ResultCode; string jdlog = jdResult.Message; if (resultCode == 3017) //账户异常情况特殊 { #region EmailHelper.SendEmail("京东错误日志", "您的京东账户余额不足,请充值!", "*****@*****.**"); Jinher.AMP.BTP.Deploy.JdlogsDTO model = new Jinher.AMP.BTP.Deploy.JdlogsDTO(); model.Id = Guid.NewGuid(); model.Content = "您的京东账户余额不足,请充值!"; model.Remark = string.Empty; model.AppId = Guid.Empty; model.ModifiedOn = DateTime.Now; model.SubTime = DateTime.Now; model.Isdisable = false; //SaveJdlogs(model); foreach (var itemlog in scis) { var errorCommodity = new CommoditySummaryDTO(); errorCommodity.Id = itemlog.Id; errorCommodity.Name = itemlog.Name; errorCommodity.PicturesPath = itemlog.Pic; errorCommodity.Price = itemlog.Price; errorCommodity.Sku = itemlog.SizeAndColorId; errorCommodity.ShopCartItemId = itemlog.ShopCartItemId; errorCommodities.Add(errorCommodity); } #endregion } else { #region if (!string.IsNullOrEmpty(jdResult.Message)) { string num = null; var matches = Regex.Matches(jdResult.Message, @"(\d+)"); int count = 0; foreach (Match match in matches) { if (count == 0) { num = match.Value; } count++; } foreach (var itemlog in scis) { Commodity commodity = comList.FirstOrDefault(_ => _.Id == itemlog.Id); if (commodity.JDCode != num.ToString()) { continue; } var errorCommodity = new CommoditySummaryDTO(); errorCommodity.Id = commodity.Id; errorCommodity.Name = commodity.Name; errorCommodity.PicturesPath = commodity.PicturesPath; errorCommodity.Price = itemlog.Price; errorCommodity.Sku = itemlog.SizeAndColorId; errorCommodity.ShopCartItemId = itemlog.ShopCartItemId; errorCommodities.Add(errorCommodity); string content = null; content += (APPSV.GetAppName(commodity.AppId) + "App中" + itemlog.Name) + "商品[" + commodity.JDCode + "]"; if (resultCode == 2004) { content += "京东商品池中不存在"; } else if (resultCode == 3019) { string str = jdlog; if (!string.IsNullOrEmpty(str)) { content += "价格错误,"; int num1 = str.IndexOf('['); int num2 = str.IndexOf(']'); string strjdprice = str.Substring(num1 + 1, (num2 - num1 - 1)); string[] arr = strjdprice.Split(new char[] { '=' }); content += "京东价" + arr[1] + "元," + "易捷价" + commodity.CostPrice + "元"; } } else if (resultCode == 3008) { content += "已售馨"; } else { content += "异常信息:" + jdlog; } EmailHelper.SendEmail("京东错误日志", content, "*****@*****.**"); Jinher.AMP.BTP.Deploy.JdlogsDTO model = new Jinher.AMP.BTP.Deploy.JdlogsDTO(); model.Id = Guid.NewGuid(); model.Content = content; model.Remark = string.Empty; model.AppId = itemlog.AppId; model.ModifiedOn = DateTime.Now; model.SubTime = DateTime.Now; model.Isdisable = false; //SaveJdlogs(model); } } #endregion } #endregion #region 获取京东订单单号失败的情况 //////京东确认取消订单 ////bool flag = JdHelper.OrderCancel(jdorderid.JdporderId); ////if (flag == true) ////{ //// List<string> jdorder = new List<string>(); //// jdorder.Add(jdorderid.JdporderId); //// //删除京东对应订单 //// var res = jdorderitemfacade.DeleteJdOrderItem(jdorder); //// if (res.isSuccess == true) //// { //// JdJournal jdjournaldto = new JdJournal() //// { //// Id = Guid.NewGuid(), //// JdPorderId = jdporderId, //// TempId = Guid.Parse(thirdOrder), //// JdOrderId = Guid.Empty.ToString(), //// MainOrderId = Guid.Empty.ToString(), //// CommodityOrderId = Guid.Empty.ToString(), //// Name = "京东确认取消订单", //// Details = "删除JdOrderItem表中相应的内容", //// SubTime = DateTime.Now //// }; //// //SaveJdJournal(jdjournaldto); //// } ////} #endregion //LogHelper.Error("商品已售馨,请选择其他商品,Jdlogs:" + jdlog + " resultCode:" + resultCode); //return Json(new OrderResultDTO { ResultCode = 2, Message = "商品已售馨,请选择其他商品", ErrorCommodities = errorCommodities }, JsonRequestBehavior.AllowGet); } return(result); }
/// <summary> /// 创建订单接口 /// </summary> public static void suning_govbus_order_add(OrderSDTO OrderInfo, Guid OrderId) { Task.Factory.StartNew(() => { var ProductList = new List <snsdk.suning_api_sdk.Models.CustomGovbusModel.OrderAddSkuReq>(); OrderInfo.ShoppingCartItemSDTO.ForEach(ProductItem => { if (ThirdECommerceHelper.IsSuNingYiGou(ProductItem.AppId)) { ProductList.Add(new snsdk.suning_api_sdk.Models.CustomGovbusModel.OrderAddSkuReq { num = ProductItem.CommodityNumber.ToString(), skuId = ProductItem.Code, unitPrice = ProductItem.CostPrice.ToString() }); } }); if (ProductList.Count > 0) { var request = new snsdk.suning_api_sdk.BizRequest.CustomGovbusRequest.OrderAddRequest(); request.sku = ProductList; request.address = OrderInfo.ReceiptAddress; request.amount = OrderInfo.Price.ToString("F2"); request.cityId = OrderInfo.CityCode; request.countyId = OrderInfo.DistrictCode; request.email = string.Empty; request.mobile = OrderInfo.ReceiptPhone; request.orderType = "1"; request.provinceId = OrderInfo.ProvinceCode; request.receiverName = OrderInfo.ReceiptUserName; request.remark = OrderInfo.Details; request.servFee = "5.00"; request.taxNo = string.Empty; request.telephone = string.Empty; request.townId = OrderInfo.StreetCode; request.tradeNo = string.Empty; request.zip = OrderInfo.RecipientsZipCode; request.invoiceState = "0"; if (OrderInfo.InvoiceInfo != null) { request.invoiceState = OrderInfo.InvoiceInfo.InvoiceType > 0 ? "1" : "0"; if (OrderInfo.InvoiceInfo.InvoiceType > 0) { request.invoiceContent = OrderInfo.InvoiceInfo.InvoiceContent; request.invoiceTitle = OrderInfo.InvoiceInfo.InvoiceTitle; request.invoiceType = "6"; } } request.payment = "08"; var response = SuningClient.Execute(request); if (response.respError != null) { string Message = response.respError.error_msg + "===" + response.respError.error_msg; LogHelper.Error(string.Format("苏宁接口[suning.govbus.order.add]:{0}", Message)); } else { var SNOrderItemList = new List <SNOrderItemDTO>(); OrderItem.ObjectSet().Where(w => w.CommodityOrderId == OrderId) .ToList() .ForEach(Item => { if (Item.AppId != null) { if (ThirdECommerceHelper.IsSuNingYiGou((Guid)Item.AppId)) { var Procdurt = Commodity.ObjectSet() .Where(w => w.Id == Item.CommodityId) .FirstOrDefault(); if (Procdurt != null) { var time = DateTime.Now; var SuningProcudurt = response.skus.Where(w => w.skuId == Procdurt.JDCode) .FirstOrDefault(); SNOrderItemList.Add(new SNOrderItemDTO { Id = Guid.NewGuid(), OrderId = OrderId, OrderItemId = Item.Id, OrderCode = Procdurt.Code, CustomOrderId = response.orderId, CustomOrderItemId = SuningProcudurt.orderItemId, CustomSkuId = SuningProcudurt.skuId, Status = 0, ExpressStatus = 0, ModifiedOn = time, DeliveryType = 0, SubTime = time }); } } } }); if (SNOrderItemList.Count > 0) { new SNOrderItemFacade().AddSNOrderItem(SNOrderItemList); } } } }); }