You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
474 lines
26 KiB
474 lines
26 KiB
using BBWY.Common.Models;
|
|
using BBWY.Server.Business.PlatformSDK.DataExtension;
|
|
using BBWY.Server.Model;
|
|
using BBWY.Server.Model.Dto;
|
|
using Jd.ACES;
|
|
using Jd.Api;
|
|
using Jd.Api.Request;
|
|
using Microsoft.Extensions.Caching.Memory;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using NLog;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace BBWY.Server.Business
|
|
{
|
|
public class JDBusiness : PlatformSDKBusiness
|
|
{
|
|
public override Enums.Platform Platform => Enums.Platform.京东;
|
|
|
|
private readonly string searchFields = "orderId,venderId,orderType,payType,orderTotalPrice,orderSellerPrice,orderPayment,freightPrice,orderState,orderStateRemark,orderRemark,orderStartTime,orderEndTime,modified,consigneeInfo,itemInfoList,couponDetailList,taxFee,venderRemark,pin,waybill,storeOrder,storeId,sellerDiscount";
|
|
|
|
private readonly IDictionary<string, string> flagDictionary = new Dictionary<string, string>()
|
|
{
|
|
{ "Gray","0" },
|
|
{ "Red","1"},
|
|
{ "Yellow","2"},
|
|
{ "Green","3"},
|
|
{ "Blue","4"},
|
|
{ "Purple","5"}
|
|
};
|
|
|
|
|
|
public JDBusiness(IMemoryCache memoryCache, ILogger logger) : base(memoryCache, logger) { }
|
|
|
|
private IJdClient GetJdClient(string appKey, string appSecret)
|
|
{
|
|
if (!memoryCache.TryGetValue(appKey, out IJdClient jdClient))
|
|
{
|
|
jdClient = new DefaultJdClient("https://api.jd.com/routerjson", appKey, appSecret);
|
|
memoryCache.Set(appKey, jdClient, expirationTimeSpan);
|
|
}
|
|
return jdClient;
|
|
}
|
|
|
|
public override VenderResponse GetVenderInfo(PlatformRequest platformRequest)
|
|
{
|
|
var jdClient = GetJdClient(platformRequest.AppKey, platformRequest.AppSecret);
|
|
|
|
var shopJDResponse = jdClient.Execute(new VenderShopQueryRequest(), platformRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (shopJDResponse.IsError)
|
|
throw new BusinessException(string.IsNullOrEmpty(shopJDResponse.ErrorMsg) ? shopJDResponse.ErrMsg : shopJDResponse.ErrorMsg);
|
|
|
|
var venderJDResponse = jdClient.Execute(new SellerVenderInfoGetRequest(), platformRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (venderJDResponse.IsError)
|
|
throw new BusinessException(string.IsNullOrEmpty(venderJDResponse.ErrorMsg) ? venderJDResponse.ErrMsg : venderJDResponse.ErrorMsg);
|
|
|
|
logger.Info($"shopJDResponse\r\n{shopJDResponse.Body}\r\n shopJDResponse Json is null {shopJDResponse.Json == null}");
|
|
|
|
logger.Info($"venderJDResponse\r\n{venderJDResponse.Body}\r\n venderJDResponse Json is null {venderJDResponse.Json == null}");
|
|
|
|
var v = new VenderResponse();
|
|
v.VenderId = venderJDResponse.Json["jingdong_seller_vender_info_get_responce"]["vender_info_result"].Value<string>("vender_id");
|
|
v.ShopId = venderJDResponse.Json["jingdong_seller_vender_info_get_responce"]["vender_info_result"].Value<string>("shop_id");
|
|
v.ShopName = venderJDResponse.Json["jingdong_seller_vender_info_get_responce"]["vender_info_result"].Value<string>("shop_name");
|
|
v.ColType = venderJDResponse.Json["jingdong_seller_vender_info_get_responce"]["vender_info_result"].Value<string>("col_type"); //0 SOP 1 FBP 100 FCS
|
|
v.Logo = shopJDResponse.Json["jingdong_vender_shop_query_responce"]["shop_jos_result"].Value<string>("logo_url");
|
|
v.MainCategoryId = shopJDResponse.Json["jingdong_vender_shop_query_responce"]["shop_jos_result"].Value<string>("category_main");
|
|
v.MainCategoryName = shopJDResponse.Json["jingdong_vender_shop_query_responce"]["shop_jos_result"].Value<string>("category_main_name");
|
|
return v;
|
|
}
|
|
|
|
public override ProductListResponse GetProductList(SearchProductRequest searchProductRequest)
|
|
{
|
|
var jdClient = GetJdClient(searchProductRequest.AppKey, searchProductRequest.AppSecret);
|
|
var req_productList = new WareReadSearchWare4ValidRequest()
|
|
{
|
|
orderField = "modified",
|
|
orderType = "desc",
|
|
pageSize = 5, //5
|
|
pageNo = searchProductRequest.PageIndex
|
|
};
|
|
if (!string.IsNullOrEmpty(searchProductRequest.Spu))
|
|
req_productList.wareId = searchProductRequest.Spu;
|
|
if (!string.IsNullOrEmpty(searchProductRequest.ProductItem))
|
|
req_productList.itemNum = searchProductRequest.ProductItem;
|
|
if (!string.IsNullOrEmpty(searchProductRequest.ProductName))
|
|
{
|
|
req_productList.searchField = "title";
|
|
req_productList.searchKey = searchProductRequest.ProductName;
|
|
}
|
|
|
|
var rep_productList = jdClient.Execute(req_productList, searchProductRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (rep_productList.IsError)
|
|
throw new BusinessException(string.IsNullOrEmpty(rep_productList.ErrorMsg) ? rep_productList.ErrMsg : rep_productList.ErrorMsg);
|
|
return new ProductListResponse()
|
|
{
|
|
Count = rep_productList.page.totalItem,
|
|
Items = ((JArray)rep_productList.Json["jingdong_ware_read_searchWare4Valid_responce"]["page"]["data"]).Select(p => new ProductResponse()
|
|
{
|
|
Id = p.Value<string>("wareId"),
|
|
Title = p.Value<string>("title"),
|
|
ProductItemNum = p.Value<string>("itemNum")
|
|
}).ToList()
|
|
};
|
|
}
|
|
|
|
public override IList<ProductSkuResponse> GetProductSkuList(SearchProductSkuRequest searchProductSkuRequest)
|
|
{
|
|
var jdClient = GetJdClient(searchProductSkuRequest.AppKey, searchProductSkuRequest.AppSecret);
|
|
var req_skuList = new SkuReadSearchSkuListRequest()
|
|
{
|
|
pageSize = 50,//50
|
|
field = "logo,saleAttrs"
|
|
};
|
|
|
|
if (!string.IsNullOrEmpty(searchProductSkuRequest.Spu))
|
|
req_skuList.wareId = searchProductSkuRequest.Spu;
|
|
else if (!string.IsNullOrEmpty(searchProductSkuRequest.Sku))
|
|
req_skuList.skuId = searchProductSkuRequest.Sku;
|
|
|
|
var rep_skuList = jdClient.Execute(req_skuList, searchProductSkuRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (rep_skuList.IsError)
|
|
throw new BusinessException(string.IsNullOrEmpty(rep_skuList.ErrorMsg) ? rep_skuList.ErrMsg : rep_skuList.ErrorMsg);
|
|
return ((JArray)rep_skuList.Json["jingdong_sku_read_searchSkuList_responce"]["page"]["data"]).Select(s => new ProductSkuResponse()
|
|
{
|
|
Id = s.Value<string>("skuId"),
|
|
ProductId = s.Value<string>("wareId"),
|
|
Price = s.Value<decimal>("jdPrice"),
|
|
Title = string.Join("-", s["saleAttrs"].Select(a => a["attrValueAlias"][0].ToString())),
|
|
Logo = $"https://img13.360buyimg.com/n9/s80x80_{s.Value<string>("logo")}"
|
|
}).ToList();
|
|
}
|
|
|
|
public override IList<SimpleProductSkuResponse> GetSimpleProductSkuList(SearchProductSkuRequest searchProductSkuRequest)
|
|
{
|
|
var jdClient = GetJdClient(searchProductSkuRequest.AppKey, searchProductSkuRequest.AppSecret);
|
|
var req_skuList = new SkuReadSearchSkuListRequest()
|
|
{
|
|
pageSize = 50,//50
|
|
field = "logo"
|
|
};
|
|
|
|
if (!string.IsNullOrEmpty(searchProductSkuRequest.Spu))
|
|
req_skuList.wareId = searchProductSkuRequest.Spu;
|
|
else if (!string.IsNullOrEmpty(searchProductSkuRequest.Sku))
|
|
req_skuList.skuId = searchProductSkuRequest.Sku;
|
|
|
|
var rep_skuList = jdClient.Execute(req_skuList, searchProductSkuRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (rep_skuList.IsError)
|
|
throw new BusinessException(rep_skuList.ErrorMsg);
|
|
return ((JArray)rep_skuList.Json["jingdong_sku_read_searchSkuList_responce"]["page"]["data"]).Select(s => new SimpleProductSkuResponse()
|
|
{
|
|
Id = s.Value<string>("skuId"),
|
|
Logo = $"https://img13.360buyimg.com/n9/s80x80_{s.Value<string>("logo")}"
|
|
}).ToList();
|
|
}
|
|
|
|
public override IList<JToken> GetOrderList(SearchPlatformOrderRequest searchOrderRequest)
|
|
{
|
|
//logger.Info($"searchOrderRequest ${JsonConvert.SerializeObject(searchOrderRequest)}");
|
|
if (searchOrderRequest.StartDate == null || searchOrderRequest.EndDate == null)
|
|
throw new BusinessException("缺少开始/结束日期");
|
|
if ((searchOrderRequest.EndDate.Value - searchOrderRequest.StartDate.Value).TotalDays > 30)
|
|
throw new BusinessException("开始/结束相差不能超过30天");
|
|
|
|
var jdClient = GetJdClient(searchOrderRequest.AppKey, searchOrderRequest.AppSecret);
|
|
|
|
//int orderCount = 0;
|
|
List<JToken> orderJtokens = new List<JToken>();
|
|
|
|
if (string.IsNullOrEmpty(searchOrderRequest.OrderId))
|
|
{
|
|
if (searchOrderRequest.JDColType == "1")
|
|
{
|
|
var fbpReq = new PopOrderFbpSearchRequest();
|
|
if (searchOrderRequest.StartDate != null)
|
|
fbpReq.startDate = searchOrderRequest.StartDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
|
if (searchOrderRequest.EndDate != null)
|
|
fbpReq.endDate = searchOrderRequest.EndDate.Value.Date.ToString("yyyy-MM-dd HH:mm:ss");
|
|
if (string.IsNullOrEmpty(searchOrderRequest.OrderState))
|
|
{
|
|
fbpReq.orderState = "DengDaiDaYin,DengDaiChuKu,DengDaiDaBao,DengDaiFaHuo,ZiTiTuZhong,ShangMenTiHuo,ZiTiTuiHuo,DengDaiQueRenShouHuo,PeiSongTuiHuo,HuoDaoFuKuanQueRen,WanCheng,DengDaiFenQiFuKuan,ServiceFinished,SuoDing,DengDaiTuiKuan,DengDaiKeHuHuiFu,TRADE_CANCELED,LOCKED";
|
|
}
|
|
else
|
|
{
|
|
fbpReq.orderState = searchOrderRequest.OrderState; //待转换
|
|
}
|
|
fbpReq.page = searchOrderRequest.PageIndex.ToString();
|
|
fbpReq.pageSize = searchOrderRequest.PageSize.ToString();
|
|
fbpReq.colType = "1";
|
|
fbpReq.optionalFields = searchFields;
|
|
fbpReq.sortType = "1";
|
|
|
|
var fbpResponse = jdClient.Execute(fbpReq, searchOrderRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (searchOrderRequest.SaveResponseLog)
|
|
logger.Info($"fbpResponse\r\n{JsonConvert.SerializeObject(fbpResponse)}");
|
|
if (fbpResponse.IsError)
|
|
throw new BusinessException($"获取FBP订单失败 {(string.IsNullOrEmpty(fbpResponse.ErrorMsg) ? fbpResponse.ErrMsg : fbpResponse.ErrorMsg)}");
|
|
|
|
if (fbpResponse.Json == null)
|
|
fbpResponse.Json = JObject.Parse(fbpResponse.Body);
|
|
|
|
//orderCount = fbpResponse.Json["jingdong_pop_order_fbp_search_responce"]["searchfbporderinfo_result"].Value<int>("orderTotal");
|
|
orderJtokens.AddRange((JArray)fbpResponse.Json["jingdong_pop_order_fbp_search_responce"]["searchfbporderinfo_result"]["orderInfoList"]);
|
|
}
|
|
else if (searchOrderRequest.JDColType == "0")
|
|
{
|
|
var sopReq = new PopOrderEnSearchRequest();
|
|
if (searchOrderRequest.StartDate != null)
|
|
sopReq.startDate = searchOrderRequest.StartDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
|
if (searchOrderRequest.EndDate != null)
|
|
sopReq.endDate = searchOrderRequest.EndDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
|
if (string.IsNullOrEmpty(searchOrderRequest.OrderState))
|
|
{
|
|
//WAIT_SELLER_STOCK_OUT,WAIT_GOODS_RECEIVE_CONFIRM,WAIT_SELLER_DELIVER,PAUSE,FINISHED_L,TRADE_CANCELED,LOCKED
|
|
sopReq.orderState = "WAIT_SELLER_STOCK_OUT,WAIT_GOODS_RECEIVE_CONFIRM,PAUSE,FINISHED_L,TRADE_CANCELED,LOCKED,NOT_PAY";
|
|
}
|
|
else
|
|
{
|
|
sopReq.orderState = searchOrderRequest.OrderState; //待转换
|
|
}
|
|
sopReq.optionalFields = searchFields;
|
|
sopReq.page = searchOrderRequest.PageIndex.ToString();
|
|
sopReq.pageSize = searchOrderRequest.PageSize.ToString();
|
|
sopReq.sortType = "1";
|
|
//sopReq.dateType = "";
|
|
|
|
var sopResponse = jdClient.Execute(sopReq, searchOrderRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (searchOrderRequest.SaveResponseLog)
|
|
logger.Info($"sopRequest\r\n{JsonConvert.SerializeObject(searchOrderRequest)} \r\nsopResponse\r\n{JsonConvert.SerializeObject(sopResponse)}");
|
|
if (sopResponse.IsError)
|
|
throw new BusinessException($"获取SOP订单失败 {(string.IsNullOrEmpty(sopResponse.ErrorMsg) ? sopResponse.ErrMsg : sopResponse.ErrorMsg)}");
|
|
|
|
if (sopResponse.Json == null)
|
|
sopResponse.Json = JObject.Parse(sopResponse.Body);
|
|
|
|
//orderCount = sopResponse.Json["jingdong_pop_order_enSearch_responce"]["searchorderinfo_result"].Value<int>("orderTotal");
|
|
orderJtokens.AddRange((JArray)sopResponse.Json["jingdong_pop_order_enSearch_responce"]["searchorderinfo_result"]["orderInfoList"]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var req = new PopOrderEnGetRequest();
|
|
req.optionalFields = searchFields;
|
|
req.orderId = searchOrderRequest.OrderId;
|
|
|
|
var jdResponse = jdClient.Execute(req, searchOrderRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (jdResponse.IsError)
|
|
throw new BusinessException(jdResponse.ErrorMsg);
|
|
if (searchOrderRequest.SaveResponseLog)
|
|
logger.Info($"jdResponse\r\n{JsonConvert.SerializeObject(jdResponse)}");
|
|
if (jdResponse.IsError)
|
|
throw new BusinessException($"获取单订单失败 {(string.IsNullOrEmpty(jdResponse.ErrorMsg) ? jdResponse.ErrMsg : jdResponse.ErrorMsg)}");
|
|
|
|
if (jdResponse.Json == null)
|
|
jdResponse.Json = JObject.Parse(jdResponse.Body);
|
|
|
|
var orderInfo = jdResponse.Json["jingdong_pop_order_enGet_responce"]["orderDetailInfo"]["orderInfo"];
|
|
if (orderInfo != null)
|
|
{
|
|
//orderCount = 1;
|
|
orderJtokens.Add(orderInfo);
|
|
}
|
|
}
|
|
|
|
//foreach (var orderToken in orderJtokens)
|
|
//{
|
|
// var order = new OrderResponse()
|
|
// {
|
|
// Id = orderToken.Value<string>("orderId"),
|
|
// BuyerAccount = orderToken.Value<string>("pin"),
|
|
// BuyerRemark = orderToken.Value<string>("orderRemark"),
|
|
// Consignee = new ConsigneeResponse()
|
|
// {
|
|
// Address = orderToken["consigneeInfo"].Value<string>("fullAddress"),
|
|
// City = orderToken["consigneeInfo"].Value<string>("city"),
|
|
// Province = orderToken["consigneeInfo"].Value<string>("province"),
|
|
// County = orderToken["consigneeInfo"].Value<string>("county"),
|
|
// Town = orderToken["consigneeInfo"].Value<string>("town"),
|
|
// ContactName = orderToken["consigneeInfo"].Value<string>("fullname"),
|
|
// Mobile = orderToken["consigneeInfo"].Value<string>("mobile"),
|
|
// TelePhone = orderToken["consigneeInfo"].Value<string>("telephone")
|
|
// },
|
|
// FreightPrice = orderToken.Value<decimal>("freightPrice"),
|
|
// OrderEndTime = orderToken.Value<DateTime?>("orderEndTime"),
|
|
// OrderStartTime = orderToken.Value<DateTime>("orderStartTime"),
|
|
// OrderPayment = orderToken.Value<decimal>("orderPayment"),
|
|
// OrderSellerPrice = orderToken.Value<decimal>("orderSellerPrice"),
|
|
// OrderTotalPrice = orderToken.Value<decimal>("orderTotalPrice"),
|
|
// OrderType = (Enums.OrderType)orderToken.Value<int>("orderType"),
|
|
// OrderStateText = orderToken.Value<string>("orderStateRemark"),
|
|
// Platform = Enums.Platform.京东,
|
|
// //Sh = orderToken.Value<string>("venderId"),
|
|
// VenderRemark = orderToken.Value<string>("venderRemark"),
|
|
// WaybillNo = orderToken.Value<string>("waybill"),
|
|
// StoreOrder = orderToken.Value<string>("storeOrder"),
|
|
// ItemList = ((JArray)orderToken["itemInfoList"]).Select(skuToken => new OrderSkuResponse()
|
|
// {
|
|
// Id = skuToken.Value<string>("skuId"),
|
|
// ItemTotal = skuToken.Value<int>("itemTotal"),
|
|
// Price = skuToken.Value<decimal>("jdPrice"),
|
|
// ProductId = skuToken.Value<string>("wareId"),
|
|
// Title = skuToken.Value<string>("skuName").SimplifySkuName(),
|
|
// ProductNo = skuToken.Value<string>("productNo")
|
|
// }).ToList()
|
|
// };
|
|
|
|
// if (order.StoreOrder == "京仓订单")
|
|
// order.StorageType = Enums.StorageType.京仓;
|
|
// else if (order.StoreOrder == "云仓订单")
|
|
// order.StorageType = Enums.StorageType.云仓;
|
|
|
|
// var payType = orderToken.Value<string>("payType");
|
|
// if (payType.Contains("-"))
|
|
// order.PayType = (Enums.PayType)Convert.ToInt32(payType.Substring(0, 1));
|
|
|
|
// //翻译订单状态
|
|
// //未付款 NOT_PAY
|
|
// #region
|
|
|
|
// #endregion
|
|
|
|
// //response.Items.Add(order);
|
|
//}
|
|
return orderJtokens;
|
|
}
|
|
|
|
public override ConsigneeSimpleResponse DecryptConsignee(DecryptConsigneeRequest decryptConsigneeRequest)
|
|
{
|
|
var jdClient = GetJdClient(decryptConsigneeRequest.AppKey, decryptConsigneeRequest.AppSecret);
|
|
var req = new PopOrderEnGetRequest();
|
|
req.optionalFields = searchFields;
|
|
req.orderId = decryptConsigneeRequest.OrderId;
|
|
var jdResponse = jdClient.Execute(req, decryptConsigneeRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (jdResponse.IsError)
|
|
throw new BusinessException($"解密异常 {decryptConsigneeRequest.OrderId} {(string.IsNullOrEmpty(jdResponse.ErrorMsg) ? jdResponse.ErrMsg : jdResponse.ErrorMsg)}");
|
|
if (jdResponse.Json == null)
|
|
jdResponse.Json = JObject.Parse(jdResponse.Body);
|
|
var orderInfo = jdResponse.Json["jingdong_pop_order_enGet_responce"]["orderDetailInfo"]["orderInfo"];
|
|
if (orderInfo == null)
|
|
throw new BusinessException($"解密异常 {decryptConsigneeRequest.OrderId}不存在");
|
|
|
|
var tdeClient = new TDEClient("https://api.jd.com/routerjson", decryptConsigneeRequest.AppKey, decryptConsigneeRequest.AppSecret, decryptConsigneeRequest.AppToken);
|
|
var decryptContactName = tdeClient.DecryptString(orderInfo["consigneeInfo"].Value<string>("fullname"));
|
|
var decryptAddress = tdeClient.DecryptString(orderInfo["consigneeInfo"].Value<string>("fullAddress"));
|
|
|
|
/*
|
|
PopOrderGetmobilelistRequest decryptMobileReq = new PopOrderGetmobilelistRequest();
|
|
decryptMobileReq.appName = "订单管家";
|
|
decryptMobileReq.orderId = decryptConsigneeRequest.OrderId;
|
|
|
|
var decryptMobileResponse = jdClient.Execute(decryptMobileReq, decryptConsigneeRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (decryptMobileResponse.IsError)
|
|
throw new BusinessException(string.IsNullOrEmpty(decryptMobileResponse.ErrorMsg) ? decryptMobileResponse.ErrMsg : decryptMobileResponse.ErrorMsg);
|
|
|
|
|
|
if (decryptConsigneeRequest.SaveResponseLog)
|
|
logger.Info(decryptMobileResponse.Body);
|
|
|
|
if (decryptMobileResponse.Json == null)
|
|
decryptMobileResponse.Json = JObject.Parse(decryptMobileResponse.Body);
|
|
|
|
if (decryptMobileResponse.Json["jingdong_pop_order_getmobilelist_responce"]["result"]["data"] == null)
|
|
throw new BusinessException(decryptMobileResponse.Json["jingdong_pop_order_getmobilelist_responce"]["result"]["message"].ToString());
|
|
|
|
var decryptMobile = decryptMobileResponse.Json["jingdong_pop_order_getmobilelist_responce"]["result"]["data"][decryptConsigneeRequest.OrderId].Value<string>("consMobilePhone");
|
|
var decryptTelePhone = decryptMobileResponse.Json["jingdong_pop_order_getmobilelist_responce"]["result"]["data"][decryptConsigneeRequest.OrderId].Value<string>("customerPhone");
|
|
*/
|
|
return new ConsigneeSimpleResponse()
|
|
{
|
|
Address = decryptAddress,
|
|
ContactName = decryptContactName,
|
|
//Mobile = decryptMobile,
|
|
//TelePhone = decryptTelePhone
|
|
};
|
|
}
|
|
|
|
public override void EditVenderRemark(EditVenderRemarkRequest editVenderRemarkRequest)
|
|
{
|
|
var jdClient = GetJdClient(editVenderRemarkRequest.AppKey, editVenderRemarkRequest.AppSecret);
|
|
PopOrderModifyVenderRemarkRequest req = new PopOrderModifyVenderRemarkRequest
|
|
{
|
|
orderId = long.Parse(editVenderRemarkRequest.OrderId),
|
|
flag = flagDictionary.ContainsKey(editVenderRemarkRequest.Flag) ? flagDictionary[editVenderRemarkRequest.Flag] : editVenderRemarkRequest.Flag,
|
|
remark = editVenderRemarkRequest.VenderRemark
|
|
};
|
|
|
|
var response = jdClient.Execute(req, editVenderRemarkRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (response.IsError)
|
|
throw new BusinessException($"修改商家备注失败 {(string.IsNullOrEmpty(response.ErrorMsg) ? response.ErrMsg : response.ErrorMsg)}");
|
|
}
|
|
|
|
public override IList<LogisticsResponse> GetLogisticsList(PlatformRequest platformRequest)
|
|
{
|
|
var jdClient = GetJdClient(platformRequest.AppKey, platformRequest.AppSecret);
|
|
var response = jdClient.Execute(new FceAlphaGetVenderCarrierRequest(), platformRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (response.IsError)
|
|
throw new BusinessException($"{response.RealErrorMsg}");
|
|
if (response.Json == null)
|
|
response.Json = JObject.Parse(response.Body);
|
|
if (platformRequest.SaveResponseLog)
|
|
logger.Info(response.Body);
|
|
|
|
|
|
var jarray = (JArray)(response.Json["jingdong_fce_alpha_getVenderCarrier_responce"]["StandardGenericResponse"]["result"]["carrierList"]);
|
|
return jarray.Select(j => new LogisticsResponse()
|
|
{
|
|
Id = j.Value<string>("id"),
|
|
Name = j.Value<string>("name"),
|
|
}).ToList();
|
|
}
|
|
|
|
public override void OutStock(OutStockRequest outStockRequest)
|
|
{
|
|
var jdClient = GetJdClient(outStockRequest.AppKey, outStockRequest.AppSecret);
|
|
PopOrderShipmentRequest req = new PopOrderShipmentRequest
|
|
{
|
|
orderId = outStockRequest.OrderId,
|
|
logiCoprId = outStockRequest.LogisticsId,
|
|
logiNo = outStockRequest.WayBillNo
|
|
};
|
|
|
|
var response = jdClient.Execute(req, outStockRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (outStockRequest.SaveResponseLog)
|
|
logger.Info($"出库发货 Request:{JsonConvert.SerializeObject(outStockRequest)} Response:{JsonConvert.SerializeObject(response)}");
|
|
|
|
if (response.IsError)
|
|
throw new BusinessException($"{response.RealErrorMsg}");
|
|
|
|
if (response.Json == null)
|
|
response.Json = JObject.Parse(response.Body);
|
|
|
|
if (!response.Json["jingdong_pop_order_shipment_responce"]["sopjosshipment_result"].Value<bool>("success"))
|
|
{
|
|
throw new BusinessException($"{response.Json["jingdong_pop_order_shipment_responce"]["sopjosshipment_result"].Value<string>("chineseErrCode")}");
|
|
}
|
|
}
|
|
|
|
public override JArray GetRefundList(SearchRefundPlatformOrderRequest searchRefundPlatformOrderRequest)
|
|
{
|
|
var jdClient = GetJdClient(searchRefundPlatformOrderRequest.AppKey, searchRefundPlatformOrderRequest.AppSecret);
|
|
|
|
|
|
AscServiceAndRefundViewRequest req = new AscServiceAndRefundViewRequest();
|
|
|
|
//req.orderId = ;
|
|
|
|
//req.applyTimeBegin = ;
|
|
|
|
//req.applyTimeEnd = ;
|
|
if (!string.IsNullOrEmpty(searchRefundPlatformOrderRequest.OrderId))
|
|
req.orderId = long.Parse(searchRefundPlatformOrderRequest.OrderId);
|
|
req.approveTimeBegin = searchRefundPlatformOrderRequest.StartDate;
|
|
req.approveTimeEnd = searchRefundPlatformOrderRequest.EndDate;
|
|
req.pageNumber = searchRefundPlatformOrderRequest.PageIndex.ToString();
|
|
req.pageSize = searchRefundPlatformOrderRequest.PageSize.ToString();
|
|
|
|
var response = jdClient.Execute(req, searchRefundPlatformOrderRequest.AppToken, DateTime.Now.ToLocalTime());
|
|
if (searchRefundPlatformOrderRequest.SaveResponseLog)
|
|
logger.Info($"获取退款订单 Request:{JsonConvert.SerializeObject(searchRefundPlatformOrderRequest)} Response:{JsonConvert.SerializeObject(response)}");
|
|
|
|
if (response.IsError)
|
|
throw new BusinessException($"获取退款订单失败 {(string.IsNullOrEmpty(response.ErrorMsg) ? response.ErrMsg : response.ErrorMsg)}");
|
|
|
|
if (response.Json == null)
|
|
response.Json = JsonConvert.DeserializeObject<JObject>(response.Body);
|
|
|
|
//return base.GetRefundList(searchRefundPlatformOrderRequest);
|
|
return (JArray)response.Json["jingdong_asc_serviceAndRefund_view_responce"]["data"];
|
|
}
|
|
}
|
|
}
|
|
|