|
|
using NetLibrary.Log;
|
|
|
using NetLibrary.OnlineTrade;
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
using NPOI.HSSF.Model;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Net;
|
|
|
using System.Net.Http;
|
|
|
using System.Runtime.CompilerServices;
|
|
|
using System.Runtime.InteropServices;
|
|
|
using System.Runtime.Remoting.Metadata.W3cXsd2001;
|
|
|
using System.Security.Cryptography;
|
|
|
using System.Text;
|
|
|
using System.Web;
|
|
|
using System.Web.Script.Serialization;
|
|
|
|
|
|
namespace TradeManageNew
|
|
|
{
|
|
|
public class Temu
|
|
|
{
|
|
|
//public string IP = "http://50.196.110.198:8081"; //美国跳转服务器ip地址
|
|
|
public string IP = "http://50.196.110.198:8099"; //美国跳转服务器ip地址
|
|
|
public string AccessToken { get; set; }
|
|
|
public string AppKey { get; set; }
|
|
|
public string AppSecret { get; set; }
|
|
|
|
|
|
public int shopid { get; set; }
|
|
|
JavaScriptSerializer JsonConvert = null;
|
|
|
public Temu()
|
|
|
{
|
|
|
JsonConvert = new JavaScriptSerializer();
|
|
|
}
|
|
|
|
|
|
public List<OrderModel> GetOrders(DateTime sdate,DateTime edate, out string errorMessage)
|
|
|
{
|
|
|
var orderModels = new List<OrderModel>();
|
|
|
try
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(AccessToken) || string.IsNullOrEmpty(AppKey) || string.IsNullOrEmpty(AppSecret))
|
|
|
{
|
|
|
errorMessage = "店铺未授权";
|
|
|
return null;
|
|
|
}
|
|
|
var nowPage = 1;
|
|
|
int totalPage = 1;
|
|
|
string error = "";
|
|
|
while (nowPage<=totalPage)
|
|
|
{
|
|
|
var orders = GetOrderList(sdate, edate, nowPage, out totalPage,out error);
|
|
|
if (orders == null)
|
|
|
break;
|
|
|
foreach (var order in orders)
|
|
|
{
|
|
|
ErrorFollow.TraceWrite("自动导入TEMU订单循环model", "店铺名称:" + shopid, JsonConvert.Serialize(order));
|
|
|
//if (order.parentOrderMap.parentOrderSn != "576662364844036518" )
|
|
|
//{
|
|
|
// continue;
|
|
|
//}
|
|
|
//只同步待发货和已发货状态订单
|
|
|
if (order.parentOrderMap.parentOrderStatus==2 || order.parentOrderMap.parentOrderStatus == 4)
|
|
|
{
|
|
|
var receive = GetOrderReceiveInfo(order.parentOrderMap.parentOrderSn);
|
|
|
|
|
|
var orderM = ToOrderModel(order, receive);
|
|
|
if (orderM!=null)
|
|
|
{
|
|
|
orderModels.Add(orderM);
|
|
|
var shipTracks = new List<TemuOrderShipTrackCode>();
|
|
|
var temuShips=new List<TemuShipmentODT>();
|
|
|
//获取订单的发货面单信息
|
|
|
foreach (var item in order.orderList)
|
|
|
{
|
|
|
var shipments = GetOrderShipmentInfo(order.parentOrderMap.parentOrderSn, item.orderSn);
|
|
|
if (shipments != null && item.productList!=null)
|
|
|
{
|
|
|
foreach(var shipment in shipments)
|
|
|
{
|
|
|
var temuShip = new TemuShipmentODT()
|
|
|
{
|
|
|
ParentOrderSn = order.parentOrderMap.parentOrderSn,
|
|
|
TrackCode = shipment.trackingNumber,
|
|
|
Quantity = shipment.quantity,
|
|
|
SKU = item.productList.First().extCode
|
|
|
};
|
|
|
|
|
|
temuShips.Add(temuShip);
|
|
|
|
|
|
//var detail = DataNew.GetGoodsInfoDetailBySku(item.productList.First().extCode);
|
|
|
//var sku = detail != null ? shipment.quantity + "x" + detail.SKU1 : "";
|
|
|
|
|
|
//var _temuTrack = shipTracks.Where(r => r.ParentOrderSn == order.parentOrderMap.parentOrderSn && r.TrackCode == shipment.trackingNumber).FirstOrDefault();
|
|
|
//if (_temuTrack != null)
|
|
|
//{
|
|
|
// _temuTrack.SKU = string.IsNullOrEmpty(_temuTrack.SKU) ? sku : (_temuTrack.SKU + "+" + sku);
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// var temuTrack = new TemuOrderShipTrackCode()
|
|
|
// {
|
|
|
// ParentOrderSn = order.parentOrderMap.parentOrderSn,
|
|
|
// //OrderSn = item.orderSn,
|
|
|
// TrackCode = shipment.trackingNumber,
|
|
|
// SKU = detail != null ? shipment.quantity + "x" + detail.SKU1 : "",
|
|
|
// Weight = (detail != null && detail.Weight.HasValue) ? (detail.Weight.Value * shipment.quantity).ToString("0.00") : "",
|
|
|
// Long = (detail != null && detail.Long.HasValue) ? detail.Long.Value.ToString("0.00") : "",
|
|
|
// Width = (detail != null && detail.Width.HasValue) ? detail.Width.Value.ToString("0.00") : "",
|
|
|
// Height = (detail != null && detail.Height.HasValue) ? detail.Height.Value.ToString("0.00") : "",
|
|
|
// };
|
|
|
|
|
|
// shipTracks.Add(temuTrack);
|
|
|
//}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (temuShips != null)
|
|
|
{
|
|
|
var _GBtemuShips = temuShips.GroupBy(r => new { r.ParentOrderSn, r.TrackCode, r.SKU }).Select(g => new { ParentOrderSn = g.Key.ParentOrderSn, TrackCode = g.Key.TrackCode, SKU = g.Key.SKU, Quantity = g.Sum(r => r.Quantity) }).ToList();
|
|
|
|
|
|
foreach(var _gb in _GBtemuShips)
|
|
|
{
|
|
|
var strack = shipTracks.Where(r => r.ParentOrderSn == _gb.ParentOrderSn && r.TrackCode == _gb.TrackCode).FirstOrDefault();
|
|
|
if (strack != null)
|
|
|
{
|
|
|
strack.SKU = string.IsNullOrEmpty(strack.SKU) ? (_gb.Quantity + "x" + _gb.SKU) : (strack.SKU + "+" + (_gb.Quantity + "x" + _gb.SKU));
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var sku = "";
|
|
|
var detail = DataNew.GetGoodsInfoDetailBySku(_gb.SKU);
|
|
|
if (detail == null)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
if (detail.GoodsId == 5527) //组合商品,对应的SKU需要以SKU14为准
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(detail.SKU14))
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
var skuarr = detail.SKU14.Split(',');
|
|
|
foreach (var _sku in skuarr)
|
|
|
{
|
|
|
sku += _gb.Quantity.ToString() + "x" + _sku + "+";
|
|
|
}
|
|
|
sku = sku.TrimEnd('+');
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
sku = detail != null ? _gb.Quantity + "x" + detail.SKU1 : "";
|
|
|
}
|
|
|
|
|
|
strack = new TemuOrderShipTrackCode
|
|
|
{
|
|
|
ParentOrderSn = _gb.ParentOrderSn,
|
|
|
TrackCode = _gb.TrackCode,
|
|
|
SKU = sku,
|
|
|
Weight = (detail != null && detail.Weight.HasValue) ? (detail.Weight.Value * _gb.Quantity.Value).ToString("0.00") : "",
|
|
|
Long = (detail != null && detail.Long.HasValue) ? detail.Long.Value.ToString("0.00") : "",
|
|
|
Width = (detail != null && detail.Width.HasValue) ? detail.Width.Value.ToString("0.00") : "",
|
|
|
Height = (detail != null && detail.Height.HasValue) ? detail.Height.Value.ToString("0.00") : "",
|
|
|
};
|
|
|
shipTracks.Add(strack);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (shipTracks != null)
|
|
|
{
|
|
|
foreach(var shipTrack in shipTracks)
|
|
|
{
|
|
|
DataNew.SaveTemuOrderShipTrackCode(shipTrack);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
nowPage++;
|
|
|
}
|
|
|
errorMessage = error;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
errorMessage = ex.Message;
|
|
|
}
|
|
|
ErrorFollow.TraceWrite("自动导入TEMU订单结束返回APImodel", "店铺名称:" + shopid, JsonConvert.Serialize(orderModels));
|
|
|
return orderModels;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取订单列表
|
|
|
/// </summary>
|
|
|
/// <param name="sdate"></param>
|
|
|
/// <param name="edate"></param>
|
|
|
/// <param name="pageNum"></param>
|
|
|
/// <param name="totalPage"></param>
|
|
|
/// <param name="error"></param>
|
|
|
/// <returns></returns>
|
|
|
public List<TemuOrderPageItems> GetOrderList(DateTime sdate, DateTime edate, int pageNum, out int totalPage, out string error)
|
|
|
{
|
|
|
var rdatas = new List<TemuOrderPageItems>();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
var sdateStamp = (long)(sdate.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
|
|
|
var edateStamp = (long)(edate.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
|
|
|
long timeStamp = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
|
|
|
string[] fulfillmentTypeList = new string[] { "fulfillBySeller", "fulfillByCooperativeWarehouse" };
|
|
|
StringBuilder jsonFulfillmentTypes = new StringBuilder("[");
|
|
|
bool isFirst = true;
|
|
|
foreach (var item in fulfillmentTypeList)
|
|
|
{
|
|
|
if (!isFirst)
|
|
|
{
|
|
|
jsonFulfillmentTypes.Append(",");
|
|
|
}
|
|
|
jsonFulfillmentTypes.Append("\"").Append(item).Append("\"");
|
|
|
isFirst = false;
|
|
|
}
|
|
|
jsonFulfillmentTypes.Append("]");
|
|
|
string result = jsonFulfillmentTypes.ToString();
|
|
|
//int regionId = 211;
|
|
|
var apiType = "bg.order.list.get";
|
|
|
//var bodyStrArr = new string[] { "access_token" + AccessToken, "app_key" + AppKey, "createAfter" + sdateStamp, "createBefore" + edateStamp, "data_typeJSON", "fulfillmentTypeList" + result, "pageNumber" + pageNum.ToString(), "pageSize100", "parentOrderStatus0", "regionId211", "timestamp" + timeStamp, "type" + apiType };
|
|
|
var bodyStrArr = new string[] { "access_token" + AccessToken, "app_key" + AppKey, "createAfter" + sdateStamp, "createBefore" + edateStamp, "data_typeJSON", "pageNumber" + pageNum.ToString(), "pageSize100", "parentOrderStatus0", "timestamp" + timeStamp, "type" + apiType };
|
|
|
var bodyStr = AppSecret + string.Join("", bodyStrArr) + AppSecret;//参数按字母顺序排序
|
|
|
var sign = EncryptionHelp.GetMD5(bodyStr);
|
|
|
|
|
|
var body = new
|
|
|
{
|
|
|
access_token = AccessToken,
|
|
|
app_key = AppKey,
|
|
|
createAfter = sdateStamp,
|
|
|
createBefore = edateStamp,
|
|
|
data_type = "JSON",
|
|
|
//fulfillmentTypeList = fulfillmentTypeList,
|
|
|
|
|
|
pageNumber = pageNum,
|
|
|
pageSize = 100,
|
|
|
parentOrderStatus = 0,
|
|
|
//regionId = regionId,
|
|
|
timestamp = timeStamp,
|
|
|
type = apiType,
|
|
|
|
|
|
|
|
|
sign = sign.ToUpper()
|
|
|
};
|
|
|
var json = JsonConvert.Serialize(body);
|
|
|
|
|
|
var path = EncryptionHelp.EncryptString(json, "ThisIsShopifyKey12365498");
|
|
|
|
|
|
var path2 = HttpUtility.UrlEncode(path);
|
|
|
|
|
|
var url = IP + "/api/TemuHelp/GetTemuShopOrderList?bodyStr=" + path2;
|
|
|
|
|
|
//using (HttpClient client = new HttpClient())
|
|
|
//{
|
|
|
// HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
|
|
|
|
|
|
// var response = client.SendAsync(request);
|
|
|
// string responseContent = response.Result.Content.ReadAsStringAsync().GetAwaiter().GetResult();
|
|
|
// if (string.IsNullOrEmpty(responseContent) || responseContent == "Fail")
|
|
|
// {
|
|
|
// totalPage = 0;
|
|
|
// error = "接口返回失败";
|
|
|
// return null;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// var rModel = JsonConvert.Deserialize<TemuOrdersReturn>(responseContent);
|
|
|
// if (rModel != null && rModel.result != null && rModel.result.result != null)
|
|
|
// {
|
|
|
// var result2 = rModel.result.result;
|
|
|
// error = "";
|
|
|
// rdatas = result2.pageItems;
|
|
|
// totalPage = result2.totalItemNum % 100 > 0 ? (result2.totalItemNum / 100 + 1) : (result2.totalItemNum / 100);
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// totalPage = 0;
|
|
|
// error = "接口未返回数据";
|
|
|
// return null;
|
|
|
// }
|
|
|
// }
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
using (WebClient client = new WebClient())
|
|
|
{
|
|
|
client.Encoding = Encoding.UTF8; // 指定下载内容编码方式为 UTF-8
|
|
|
string responseContent = client.DownloadString(url);
|
|
|
|
|
|
ErrorFollow.TraceWrite("自动导入TEMU订单返回结果", "店铺名称:" + shopid, responseContent);
|
|
|
|
|
|
if (string.IsNullOrEmpty(responseContent) || responseContent == "Fail")
|
|
|
{
|
|
|
totalPage = 0;
|
|
|
error = "接口返回失败";
|
|
|
return null;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var rModel = JsonConvert.Deserialize<TemuOrdersReturn>(responseContent);
|
|
|
if (rModel != null && rModel.result != null && rModel.result.result != null)
|
|
|
{
|
|
|
var result2 = rModel.result.result;
|
|
|
error = "";
|
|
|
rdatas = result2.pageItems;
|
|
|
totalPage = result2.totalItemNum % 100 > 0 ? (result2.totalItemNum / 100 + 1) : (result2.totalItemNum / 100);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
totalPage = 0;
|
|
|
error = "接口未返回数据";
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
error = ex.Message;
|
|
|
totalPage = 0;
|
|
|
}
|
|
|
|
|
|
return rdatas;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取订单收货地址
|
|
|
/// </summary>
|
|
|
/// <param name="orderno"></param>
|
|
|
/// <returns></returns>
|
|
|
public ReceiveResult GetOrderReceiveInfo(string orderno)
|
|
|
{
|
|
|
var rdata = new ReceiveResult();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
//var timeStamp = DateTimeOffset.Now.ToUnixTimeSeconds();
|
|
|
long timeStamp = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
|
|
|
var apiType = "bg.order.shippinginfo.get";
|
|
|
var bodyStrArr = new string[] { "access_token" + AccessToken, "app_key" + AppKey, "data_typeJSON", "parentOrderSn" + orderno, "timestamp" + timeStamp, "type" + apiType };
|
|
|
var bodyStr = AppSecret + string.Join("", bodyStrArr) + AppSecret;
|
|
|
var sign = EncryptionHelp.GetMD5(bodyStr);
|
|
|
var body = new
|
|
|
{
|
|
|
access_token = AccessToken,
|
|
|
app_key = AppKey,
|
|
|
data_type = "JSON",
|
|
|
parentOrderSn = orderno,
|
|
|
timestamp = timeStamp,
|
|
|
type = apiType,
|
|
|
sign = sign.ToUpper(),
|
|
|
};
|
|
|
var json = JsonConvert.Serialize(body);
|
|
|
|
|
|
var path = EncryptionHelp.EncryptString(json, "ThisIsShopifyKey12365498");
|
|
|
|
|
|
var path2 = HttpUtility.UrlEncode(path);
|
|
|
|
|
|
var url = IP + "/api/TemuHelp/getTemuShopOrderReceiveInfo?bodyStr=" + path2;
|
|
|
|
|
|
//using (HttpClient client = new HttpClient())
|
|
|
//{
|
|
|
// HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
|
|
|
|
|
|
// var response = client.SendAsync(request);
|
|
|
// string responseContent = response.Result.Content.ReadAsStringAsync().GetAwaiter().GetResult();
|
|
|
// if (string.IsNullOrEmpty(responseContent) || responseContent == "Fail")
|
|
|
// {
|
|
|
// return null;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// var rModel = JsonConvert.Deserialize<TemuReceiveReturn>(responseContent);
|
|
|
// if (rModel != null && rModel.result != null && rModel.result.result != null)
|
|
|
// {
|
|
|
// ReceiveResult result = rModel.result.result;
|
|
|
// rdata = result;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// return null;
|
|
|
// }
|
|
|
// }
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
using (WebClient client = new WebClient())
|
|
|
{
|
|
|
client.Encoding = Encoding.UTF8; // 指定下载内容编码方式为 UTF-8
|
|
|
string responseContent = client.DownloadString(url);
|
|
|
if (string.IsNullOrEmpty(responseContent) || responseContent == "Fail")
|
|
|
{
|
|
|
return null;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var rModel = JsonConvert.Deserialize<TemuReceiveReturn>(responseContent);
|
|
|
if (rModel != null && rModel.result != null && rModel.result.result != null)
|
|
|
{
|
|
|
ReceiveResult result = rModel.result.result;
|
|
|
rdata = result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
return rdata;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取订单发货信息
|
|
|
/// </summary>
|
|
|
/// <param name="orderno"></param>
|
|
|
/// <returns></returns>
|
|
|
public List<ShipmentInfoDTOItem> GetOrderShipmentInfo(string parentOrderSn, string orderSn)
|
|
|
{
|
|
|
var rdata = new List<ShipmentInfoDTOItem>();
|
|
|
if(parentOrderSn== "PO-211-19061389486712336")
|
|
|
{
|
|
|
|
|
|
}
|
|
|
try
|
|
|
{
|
|
|
long timeStamp = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
|
|
|
var apiType = "bg.logistics.shipment.get";
|
|
|
var bodyStrArr = new string[] { "access_token" + AccessToken, "app_key" + AppKey, "data_typeJSON", "orderSn" + orderSn, "parentOrderSn" + parentOrderSn, "timestamp" + timeStamp, "type" + apiType };
|
|
|
var bodyStr = AppSecret + string.Join("", bodyStrArr) + AppSecret;
|
|
|
var sign = EncryptionHelp.GetMD5(bodyStr);
|
|
|
var body = new
|
|
|
{
|
|
|
access_token = AccessToken,
|
|
|
app_key = AppKey,
|
|
|
data_type = "JSON",
|
|
|
orderSn= orderSn,
|
|
|
parentOrderSn = parentOrderSn,
|
|
|
timestamp = timeStamp,
|
|
|
type = apiType,
|
|
|
sign = sign.ToUpper(),
|
|
|
};
|
|
|
var json = JsonConvert.Serialize(body);
|
|
|
|
|
|
var path = EncryptionHelp.EncryptString(json, "ThisIsShopifyKey12365498");
|
|
|
|
|
|
var path2 = HttpUtility.UrlEncode(path);
|
|
|
|
|
|
var url = IP + "/api/TemuHelp/getTemuShopOrderShipmentInfo?bodyStr=" + path2;
|
|
|
|
|
|
//using (HttpClient client = new HttpClient())
|
|
|
//{
|
|
|
// HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
|
|
|
|
|
|
// var response = client.SendAsync(request);
|
|
|
// string responseContent = response.Result.Content.ReadAsStringAsync().GetAwaiter().GetResult();
|
|
|
|
|
|
using (WebClient client = new WebClient())
|
|
|
{
|
|
|
client.Encoding = Encoding.UTF8; // 指定下载内容编码方式为 UTF-8
|
|
|
string responseContent = client.DownloadString(url);
|
|
|
if (string.IsNullOrEmpty(responseContent) || responseContent == "Fail")
|
|
|
{
|
|
|
return null;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var rModel = JsonConvert.Deserialize<TemuShipmentReturn>(responseContent);
|
|
|
if (rModel != null && rModel.result != null && rModel.result.result != null)
|
|
|
{
|
|
|
ShipmentInfoResult2 result = rModel.result.result;
|
|
|
if (result.shipmentInfoDTO != null)
|
|
|
rdata = result.shipmentInfoDTO;
|
|
|
else
|
|
|
rdata = null;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
}
|
|
|
|
|
|
return rdata;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public OrderModel ToOrderModel(TemuOrderPageItems topi, ReceiveResult rer)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
OrderModel model = new OrderModel();
|
|
|
|
|
|
model.PlatOrderCode = topi.parentOrderMap.parentOrderSn;
|
|
|
model.OrderCode = topi.parentOrderMap.parentOrderSn;
|
|
|
|
|
|
model.OrderDate = GetDateTimeFromTimeStamp(topi.parentOrderMap.parentOrderTime.Value);
|
|
|
model.OrderState = 1;
|
|
|
|
|
|
if (rer != null)
|
|
|
{
|
|
|
model.BuyerName = rer.receiptName;
|
|
|
model.BuyerCountry = rer.regionName1;
|
|
|
model.BuyerProvince = rer.regionName2;
|
|
|
model.BuyerCity = rer.regionName3;
|
|
|
model.BuyerAddr = string.IsNullOrEmpty(rer.addressLineAll) ? (rer.addressLine1 + rer.addressLine2) : rer.addressLineAll;
|
|
|
model.BuyerPhone = rer.mobile;
|
|
|
model.BuyerZip = rer.postCode;
|
|
|
}
|
|
|
|
|
|
model.PayDate = model.OrderDate.Value;
|
|
|
model.OutOrderDate = GetDateTimeFromTimeStamp(topi.parentOrderMap.expectShipLatestTime.Value);
|
|
|
model.ListModel = new List<OrderDetailModel>();
|
|
|
decimal totalPrice = 0;
|
|
|
//删除
|
|
|
DataNew.DeleteTemuShopOrderGoodsDetailByParentOrderSn(topi.parentOrderMap.parentOrderSn);
|
|
|
|
|
|
if (topi.orderList!=null)
|
|
|
{
|
|
|
foreach (var item2 in topi.orderList)
|
|
|
{
|
|
|
OrderDetailModel model2 = new OrderDetailModel();
|
|
|
|
|
|
model2.TypeDesc = item2.spec;
|
|
|
model2.GoodsNum = item2.quantity;
|
|
|
model2.OrderItemId = item2.productList != null ? item2.productList.First().productId : "";//SPUID
|
|
|
if (shopid == 94)//没有主体的店铺没有SPUID,SKUID做为唯一
|
|
|
{
|
|
|
model2.OrderItemId = item2.skuId;
|
|
|
}
|
|
|
model2.GoodsName = item2.goodsId + "," + item2.skuId;//goodsId,skuId
|
|
|
model2.GoodsSKU = item2.productList != null ? item2.productList.First().extCode : "";
|
|
|
model2.PostInfo = item2.orderSn;
|
|
|
model.ListModel.Add(model2);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(model2.OrderItemId))
|
|
|
{
|
|
|
var temuPrice = DataNew.GetTemuShopGoodPriceOne(shopid, model2.OrderItemId);
|
|
|
if (temuPrice != null)
|
|
|
totalPrice = totalPrice + (temuPrice.SalePrice.HasValue ? temuPrice.SalePrice.Value * item2.quantity : 0);
|
|
|
}
|
|
|
|
|
|
var temuOGD = new TemuShopOrderGoodsDetail()
|
|
|
{
|
|
|
Shopid = shopid,
|
|
|
ParentOrderSn = topi.parentOrderMap.parentOrderSn,
|
|
|
OrderSn = item2.orderSn,
|
|
|
OrderStatus = item2.orderStatus,
|
|
|
GoodsId = item2.goodsId,
|
|
|
SKUId = item2.skuId,
|
|
|
ThumbUrl = item2.thumbUrl,
|
|
|
Quantity = item2.quantity,
|
|
|
GoodsName = item2.goodsName,
|
|
|
ProductList = item2.productList == null ? "" : JsonConvert.Serialize(item2.productList)
|
|
|
};
|
|
|
DataNew.SaveTemuShopOrderGoodsDetail(temuOGD);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
model.TotalPrice = totalPrice;
|
|
|
model.MoneyCode = "USD";
|
|
|
|
|
|
return model;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message);
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public DateTime GetDateTimeFromTimeStamp(long st)
|
|
|
{
|
|
|
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
|
|
|
long lTime = long.Parse(st + "0000000");
|
|
|
TimeSpan toNow = new TimeSpan(lTime);
|
|
|
return dtStart.Add(toNow);
|
|
|
}
|
|
|
|
|
|
#region 订单列表model
|
|
|
|
|
|
public class TemuOrdersReturn
|
|
|
{
|
|
|
public bool success { get; set; }
|
|
|
public string requestId { get; set; }
|
|
|
public int errorCode { get; set; }
|
|
|
public string errorMsg { get; set; }
|
|
|
|
|
|
public TemuOrderResult1 result { get; set; }
|
|
|
}
|
|
|
|
|
|
public class TemuOrderResult1
|
|
|
{
|
|
|
public bool success { get; set; }
|
|
|
public int errorCode { get; set; }
|
|
|
public long serverTime { get; set; }
|
|
|
public string errorMsg { get; set; }
|
|
|
|
|
|
public TemuOrderResult2 result { get; set; }
|
|
|
}
|
|
|
|
|
|
public class TemuOrderResult2
|
|
|
{
|
|
|
public int totalItemNum { get; set; }
|
|
|
|
|
|
public List<TemuOrderPageItems> pageItems { get; set; }
|
|
|
}
|
|
|
|
|
|
public class TemuOrderPageItems
|
|
|
{
|
|
|
public ParentOrderMap parentOrderMap { get; set; }
|
|
|
public List<TemuOrderModel> orderList { get; set; }
|
|
|
}
|
|
|
|
|
|
public class ParentOrderMap
|
|
|
{
|
|
|
public int regionId { get; set; }
|
|
|
|
|
|
public string parentOrderSn { get; set; }
|
|
|
public long? parentShippingTime { get; set; }
|
|
|
|
|
|
public int? siteId { get; set; }
|
|
|
|
|
|
public long? expectShipLatestTime { get; set; }
|
|
|
|
|
|
public int? parentOrderStatus { get; set; }
|
|
|
|
|
|
public long? parentOrderTime { get; set; }
|
|
|
}
|
|
|
|
|
|
public class TemuOrderModel
|
|
|
{
|
|
|
public int quantity { get; set; }
|
|
|
public string orderSn { get; set; }
|
|
|
|
|
|
public string goodsId { get;set; }
|
|
|
|
|
|
public int orderStatus { get; set; }
|
|
|
|
|
|
public string thumbUrl { get;set; }
|
|
|
|
|
|
public string goodsName { get;set; }
|
|
|
|
|
|
public string skuId { get; set; }
|
|
|
public string spec { get; set; }
|
|
|
|
|
|
public List<TemuOrderProduct> productList { get; set; }
|
|
|
}
|
|
|
|
|
|
public class TemuOrderProduct
|
|
|
{
|
|
|
public string productSkuId { get; set; }
|
|
|
public int soldFactor { get; set; }
|
|
|
|
|
|
public string extCode { get; set; }
|
|
|
|
|
|
public string productId { get; set; }
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 订单收货地址model
|
|
|
|
|
|
public class TemuReceiveReturn
|
|
|
{
|
|
|
public TemuReceiveResult1 result { get; set; }
|
|
|
}
|
|
|
|
|
|
public class TemuReceiveResult1
|
|
|
{
|
|
|
public bool success { get; set; }
|
|
|
public int errorCode { get; set; }
|
|
|
public long serverTime { get; set; }
|
|
|
public string errorMsg { get; set; }
|
|
|
|
|
|
public ReceiveResult result { get; set; }
|
|
|
}
|
|
|
public class ReceiveResult
|
|
|
{
|
|
|
public string receiptName { get; set; }
|
|
|
public string mobile { get; set; }
|
|
|
public string regionName1 { get; set; }
|
|
|
public string regionName2 { get; set; }
|
|
|
public string regionName3 { get; set;}
|
|
|
public string addressLine1 { get; set; }
|
|
|
public string addressLine2 { get; set;}
|
|
|
public string postCode { get; set; }
|
|
|
public string addressLineAll { get; set; }
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
#region 订单发货信息model
|
|
|
|
|
|
|
|
|
//public class TemuShipmentReturn
|
|
|
//{
|
|
|
// public TemuShipmentResult1 result { get; set; }
|
|
|
//}
|
|
|
|
|
|
//public class TemuShipmentResult1
|
|
|
//{
|
|
|
// public bool success { get; set; }
|
|
|
// public int errorCode { get; set; }
|
|
|
// public long serverTime { get; set; }
|
|
|
// public string errorMsg { get; set; }
|
|
|
|
|
|
// public ShipmentResult result { get; set; }
|
|
|
//}
|
|
|
|
|
|
//public class ShipmentResult
|
|
|
//{
|
|
|
// public List<DeliveryInfoMap> shipmentInfoDTO { get; set; }
|
|
|
//}
|
|
|
|
|
|
//public class DeliveryInfoMap
|
|
|
//{
|
|
|
// public string carrierId { get; set; }
|
|
|
// public string carrierName { get; set; }
|
|
|
// public string trackingNumber { get; set; }
|
|
|
// public string skuId { get; set; }
|
|
|
// public string quantity { get; set; }
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//如果好用,请收藏地址,帮忙分享。
|
|
|
public class ShipmentInfoDTOItem
|
|
|
{
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public int quantity { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public string carrierName { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public string carrierId { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public string trackingNumber { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public string skuId { get; set; }
|
|
|
}
|
|
|
|
|
|
public class ShipmentInfoResult2
|
|
|
{
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public List<ShipmentInfoDTOItem> shipmentInfoDTO { get; set; }
|
|
|
}
|
|
|
|
|
|
public class ShipmentInfoResult1
|
|
|
{
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public ShipmentInfoResult2 result { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public string success { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public string errorCode { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public long serverTime { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public string errorMsg { get; set; }
|
|
|
}
|
|
|
|
|
|
public class TemuShipmentReturn
|
|
|
{
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public ShipmentInfoResult1 result { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public string success { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public string requestId { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public string errorCode { get; set; }
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public string errorMsg { get; set; }
|
|
|
}
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
}
|
|
|
} |