|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Net.Http;
|
|
|
using System.Net;
|
|
|
using System.Text;
|
|
|
using System.Web;
|
|
|
using System.Web.Script.Serialization;
|
|
|
using NetLibrary.OnlineTrade;
|
|
|
using NPOI.HSSF.Model;
|
|
|
using TradeManage;
|
|
|
using NetLibrary.Log;
|
|
|
using System.Security.Policy;
|
|
|
using Aspose.Pdf.Operators;
|
|
|
|
|
|
namespace TradeManageNew
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 由于192.168.1.16服务器的.net framework4.5版本不支持发送TSL1.3版本request请求,所以借192.168.1.187:8866服务器跳转一下
|
|
|
/// </summary>
|
|
|
public class SheinNew
|
|
|
{
|
|
|
public string IP = "http://192.168.1.187:8866";
|
|
|
public string ShopName { get; set; }
|
|
|
public int ShopId { get; set; }
|
|
|
public string AppKey { get; set; }
|
|
|
public string AppSecret { get; set; }
|
|
|
public DateTime StartTime { get; set; }
|
|
|
|
|
|
JavaScriptSerializer JsonConvert = null;
|
|
|
|
|
|
public SheinNew()
|
|
|
{
|
|
|
JsonConvert = new JavaScriptSerializer();
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public List<OrderModel> GetOrders(out string errorMessage)
|
|
|
{
|
|
|
var orderModels = new List<OrderModel>();
|
|
|
try
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(AppKey) || string.IsNullOrEmpty(AppSecret))
|
|
|
{
|
|
|
errorMessage = "店铺未授权";
|
|
|
return null;
|
|
|
}
|
|
|
int pageIndex = 1;
|
|
|
int pageCount = 1;
|
|
|
|
|
|
while (pageIndex <= pageCount)
|
|
|
{
|
|
|
var orders = GetSheinOrder(pageIndex, out pageCount, out errorMessage);
|
|
|
if (!string.IsNullOrEmpty(errorMessage))
|
|
|
throw new Exception(errorMessage);
|
|
|
|
|
|
if (orders != null)
|
|
|
{
|
|
|
var orderIds = orders.Select(r => r.orderNo).ToList();
|
|
|
var orderDetails = GetSheinOrderDetail(orderIds);
|
|
|
var orderAddrs = GetSheinOrderBuyerAddress(orderIds);
|
|
|
|
|
|
ErrorFollow.TraceWrite("自动导入Shein订单", " orderDetails:" + JsonConvert.Serialize(orderDetails), " orderAddrs:" + JsonConvert.Serialize(orderAddrs));
|
|
|
foreach (var order in orders)
|
|
|
{
|
|
|
//if (order.orderNo != "GSUNJ020M00NV4G")
|
|
|
//{
|
|
|
// continue;
|
|
|
//}
|
|
|
|
|
|
var detail = orderDetails == null ? null : orderDetails.Where(r => r.orderNo == order.orderNo).FirstOrDefault();
|
|
|
var addr = orderAddrs == null ? null : orderAddrs.Where(r => r.orderNo == order.orderNo).FirstOrDefault();
|
|
|
if (detail != null)
|
|
|
{
|
|
|
if (order.orderStatus != "6") //订单状态6为订单中所有商品已退款,这种订单不导入
|
|
|
{
|
|
|
var rmodel = ToOrderModel(detail, addr);
|
|
|
ErrorFollow.TraceWrite("自动导入Shein订单rmodel信息", " ", "rmodel:" + JsonConvert.Serialize(rmodel));
|
|
|
if (rmodel != null)
|
|
|
orderModels.Add(rmodel);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
pageIndex++;
|
|
|
}
|
|
|
errorMessage = "";
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ErrorFollow.TraceWrite("自动导入Shein订单总错", " ", "错误信息:" + ex.Message);
|
|
|
errorMessage = ex.Message;
|
|
|
}
|
|
|
return orderModels;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取订单列表
|
|
|
/// </summary>
|
|
|
/// <param name="pageIndex"></param>
|
|
|
/// <param name="pageCount"></param>
|
|
|
/// <param name="errorMessage"></param>
|
|
|
/// <returns></returns>
|
|
|
public List<SheinOrderListModel> GetSheinOrder(int pageIndex, out int pageCount, out string errorMessage)
|
|
|
{
|
|
|
var rmodel = new List<SheinOrderListModel>();
|
|
|
try
|
|
|
{
|
|
|
string url = IP + "/api/SheinAPi/getSheinOrderList?keyid=" + AppKey + "&secret=" + AppSecret + "&sDate=" + StartTime.Date.ToString("yyyy-MM-dd HH:mm:ss") + "&eDate=" + StartTime.AddDays(2).Date.ToString("yyyy-MM-dd HH:mm:ss") + "&page=" + pageIndex;
|
|
|
//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();
|
|
|
// ErrorFollow.TraceWrite("自动导入Shein订单列表", " URL:"+url, " 返回信息:" + responseContent);
|
|
|
// var obj = JsonConvert.Deserialize<SheinOrderListApiModel>(responseContent);
|
|
|
// if (obj != null && obj.code == "0" && obj.info != null)
|
|
|
// {
|
|
|
// pageCount = (obj.info.count % 30 == 0) ? (obj.info.count / 30) : (obj.info.count / 30 + 1);
|
|
|
// errorMessage = "";
|
|
|
// rmodel = obj.info.orderList;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// rmodel = null;
|
|
|
// pageCount = 0;
|
|
|
// errorMessage="同步Shein订单出错:"+responseContent.ToString();
|
|
|
// }
|
|
|
//}
|
|
|
|
|
|
|
|
|
using (WebClient client = new WebClient())
|
|
|
{
|
|
|
client.Encoding = Encoding.UTF8; // 设置编码为 UTF-8
|
|
|
string responseContent = client.DownloadString(url);
|
|
|
ErrorFollow.TraceWrite("自动导入Shein订单列表", " URL:" + url, " 返回信息:" + responseContent);
|
|
|
var obj = JsonConvert.Deserialize<SheinOrderListApiModel>(responseContent);
|
|
|
if (obj != null && obj.code == "0" && obj.info != null)
|
|
|
{
|
|
|
pageCount = (obj.info.count % 30 == 0) ? (obj.info.count / 30) : (obj.info.count / 30 + 1);
|
|
|
errorMessage = "";
|
|
|
rmodel = obj.info.orderList;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
rmodel = null;
|
|
|
pageCount = 0;
|
|
|
errorMessage = "同步Shein订单出错:" + responseContent.ToString();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
|
|
|
pageCount = 0;
|
|
|
rmodel = null;
|
|
|
errorMessage = "同步Shein订单出错:" + ex.Message;
|
|
|
}
|
|
|
return rmodel;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取订单详情信息
|
|
|
/// </summary>
|
|
|
/// <param name="orderIds"></param>
|
|
|
/// <returns></returns>
|
|
|
public List<SheinOrderDetailApiInfoModel> GetSheinOrderDetail(List<string> orderIds)
|
|
|
{
|
|
|
var _orderIds = JsonConvert.Serialize(orderIds);
|
|
|
var rmodel = new List<SheinOrderDetailApiInfoModel>();
|
|
|
string url = IP + "/api/SheinAPi/getSheinOrderDetailList?keyid=" + AppKey + "&secret=" + AppSecret + "&orderIds=" + _orderIds;
|
|
|
try
|
|
|
{
|
|
|
|
|
|
//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();
|
|
|
// ErrorFollow.TraceWrite("自动导入Shein订单详情", " URL:" + url, " 返回信息:" + responseContent);
|
|
|
// var detailObj = JsonConvert.Deserialize<SheinOrderDetailApiModel>(responseContent);
|
|
|
|
|
|
// rmodel = detailObj.info;
|
|
|
//}
|
|
|
|
|
|
|
|
|
using (WebClient client = new WebClient())
|
|
|
{
|
|
|
client.Encoding = Encoding.UTF8; // 设置编码为 UTF-8
|
|
|
string responseContent = client.DownloadString(url);
|
|
|
ErrorFollow.TraceWrite("自动导入Shein订单详情", " URL:" + url, " 返回信息:" + responseContent);
|
|
|
var detailObj = JsonConvert.Deserialize<SheinOrderDetailApiModel>(responseContent);
|
|
|
|
|
|
rmodel = detailObj.info;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ErrorFollow.TraceWrite("自动导入Shein订单详情出错", " " , " 错误信息:" + ex.Message);
|
|
|
rmodel = null;
|
|
|
}
|
|
|
|
|
|
return rmodel;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取订单收件人地址信息
|
|
|
/// </summary>
|
|
|
/// <param name="orderIds"></param>
|
|
|
/// <returns></returns>
|
|
|
public List<SheinOrderExportAddressInfoReceiveMsg> GetSheinOrderBuyerAddress(List<string> orderIds)
|
|
|
{
|
|
|
var rmodel = new List<SheinOrderExportAddressInfoReceiveMsg>();
|
|
|
|
|
|
foreach (var orderId in orderIds)
|
|
|
{
|
|
|
string url = IP + "/api/SheinAPi/getSheinOrderBuyerAddress?keyid=" + AppKey + "&secret=" + AppSecret + "&orderId=" + orderId;
|
|
|
try
|
|
|
{
|
|
|
//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();
|
|
|
// ErrorFollow.TraceWrite("自动导入Shein订单地址", " URL:" + url, " 返回信息:" + responseContent);
|
|
|
// var obj = JsonConvert.Deserialize<SheinOrderExportAddressApiModel>(responseContent);
|
|
|
// if (obj != null && obj.info != null && obj.info.receiveMsgList != null)
|
|
|
// {
|
|
|
// rmodel.Add(obj.info.receiveMsgList.FirstOrDefault());
|
|
|
// }
|
|
|
//}
|
|
|
|
|
|
using (WebClient client = new WebClient())
|
|
|
{
|
|
|
client.Encoding = Encoding.UTF8; // 设置编码为 UTF-8
|
|
|
string responseContent = client.DownloadString(url);
|
|
|
ErrorFollow.TraceWrite("自动导入Shein订单地址", " URL:" + url, " 返回信息:" + responseContent);
|
|
|
var obj = JsonConvert.Deserialize<SheinOrderExportAddressApiModel>(responseContent);
|
|
|
if (obj != null && obj.info != null && obj.info.receiveMsgList != null)
|
|
|
{
|
|
|
rmodel.Add(obj.info.receiveMsgList.FirstOrDefault());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ErrorFollow.TraceWrite("自动导入Shein订单地址出错", " ", " 错误信息:" + ex.Message);
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return rmodel;
|
|
|
}
|
|
|
|
|
|
public OrderModel ToOrderModel(SheinOrderDetailApiInfoModel detail, SheinOrderExportAddressInfoReceiveMsg addr)
|
|
|
{
|
|
|
OrderModel rmodel = new OrderModel();
|
|
|
try
|
|
|
{
|
|
|
rmodel.OrderCode = detail.orderNo;
|
|
|
rmodel.PlatOrderCode = detail.orderNo;
|
|
|
|
|
|
if (ShopId == 95)//Shein半托管店铺的价格
|
|
|
{
|
|
|
rmodel.TotalPrice = detail.estimatedGrossIncome;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
rmodel.TotalPrice = detail.productTotalPrice - detail.storeDiscountTotalPrice - detail.promotionDiscountTotalPrice - detail.totalCommission;
|
|
|
}
|
|
|
|
|
|
rmodel.MoneyCode = detail.orderCurrency;
|
|
|
rmodel.OrderDate = detail.orderTime;
|
|
|
rmodel.OrderState = 1;
|
|
|
if (addr != null)
|
|
|
{
|
|
|
rmodel.BuyerName = addr.firstName + " " + (string.IsNullOrEmpty(addr.middleName) ? "" : addr.middleName + "") + addr.lastName;
|
|
|
rmodel.BuyerCountry = addr.country;
|
|
|
rmodel.BuyerAddr = addr.address;
|
|
|
rmodel.BuyerPhone = addr.phone;
|
|
|
rmodel.BuyerZip = addr.postCode;
|
|
|
//rmodel.BuyerProvince=addr.province;
|
|
|
|
|
|
var proviceCode = DataNew.GetProvinceCode(addr.province);
|
|
|
rmodel.BuyerProvince = string.IsNullOrEmpty(proviceCode) ? addr.province : proviceCode;
|
|
|
|
|
|
rmodel.BuyerCity = addr.city;
|
|
|
rmodel.BuyerArea = addr.district;
|
|
|
}
|
|
|
if (detail.paymentTime != null)
|
|
|
rmodel.PayDate = detail.paymentTime;
|
|
|
else
|
|
|
rmodel.PayDate = rmodel.OrderDate;
|
|
|
rmodel.OutOrderDate = DateTime.Now.AddDays(7);
|
|
|
if (rmodel.OrderDate != null && rmodel.OrderDate.Value <= Convert.ToDateTime("1753-01-01"))
|
|
|
{
|
|
|
rmodel.OrderDate = DateTime.Now;
|
|
|
}
|
|
|
if (rmodel.PayDate != null && rmodel.PayDate.Value <= Convert.ToDateTime("1753-01-01"))
|
|
|
{
|
|
|
rmodel.PayDate = DateTime.Now;
|
|
|
}
|
|
|
if (rmodel.OutOrderDate != null && rmodel.OutOrderDate.Value <= Convert.ToDateTime("1753-01-01"))
|
|
|
{
|
|
|
rmodel.OutOrderDate = DateTime.Now.AddDays(7);
|
|
|
}
|
|
|
|
|
|
if (detail.packageWaybillList != null && detail.packageWaybillList.Count > 0)
|
|
|
rmodel.PostInfo = detail.packageWaybillList[0].carrier;
|
|
|
rmodel.ListModel = new List<OrderDetailModel>();
|
|
|
|
|
|
if (detail.orderGoodsInfoList != null && detail.orderGoodsInfoList.Count > 0)
|
|
|
{
|
|
|
foreach (var item2 in detail.orderGoodsInfoList)
|
|
|
{
|
|
|
OrderDetailModel model2 = new OrderDetailModel();
|
|
|
|
|
|
//model2.TypeDesc = item2.newGoodsStatus.ToString();
|
|
|
|
|
|
model2.OrderItemId = item2.goodsId.ToString();
|
|
|
model2.GoodsNum = 1;
|
|
|
|
|
|
model2.GoodsName = item2.goodsTitle;
|
|
|
model2.GoodsSKU = item2.sellerSku;
|
|
|
|
|
|
rmodel.ListModel.Add(model2);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
rmodel = null;
|
|
|
ErrorFollow.TraceWrite("自动导入Shein订单ToOrderModel出错", " ", " 错误信息:" + ex.Message);
|
|
|
}
|
|
|
|
|
|
return rmodel;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
} |