Browse Source

新服务单同步

qianyi
shanji 2 years ago
parent
commit
5a10ac85c0
  1. 67
      BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs
  2. 284
      BBWY.Server.Model/Db/Order/Serviceorder.cs
  3. 34
      BBWY.Test/Program.cs

67
BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs

@ -6,9 +6,12 @@ using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Yitter.IdGenerator;
using System.Linq;
using BBWY.Server.Model.Db;
namespace BBWY.Server.Business.Sync
{
@ -59,10 +62,11 @@ namespace BBWY.Server.Business.Sync
{
var shopId = long.Parse(shop.ShopId);
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
var _10005ServiceOrderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetServiceOrderList", new QueryServiceOrderRequest()
var serviceStatusList = new List<int>() { 10005, 10011, 10010 };
#region
var request = new QueryServiceOrderRequest()
{
UpdateTimeBegin = startTime ?? DateTime.Now.Date.AddDays(-3),
UpdateTimeBegin = startTime ?? DateTime.Now.Date.AddHours(-1),
UpdateTimeEnd = endTime ?? DateTime.Now,
AppKey = shop.AppKey,
AppSecret = shop.AppSecret,
@ -72,18 +76,61 @@ namespace BBWY.Server.Business.Sync
Platform = shop.PlatformId,
SaveResponseLog = true,
OrderId = orderId,
VenderId = shop.VenderId,
ServiceStatus = 10005
}, GetYunDingRequestHeader(), HttpMethod.Post);
if (_10005ServiceOrderListApiResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"获取服务单失败 {_10005ServiceOrderListApiResult.Content}");
VenderId = shop.VenderId
};
var serviceOrderListResponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(_10005ServiceOrderListApiResult.Content);
List<JToken> jtokenList = new List<JToken>();
foreach (var serviceStatus in serviceStatusList)
{
request.ServiceStatus = serviceStatus;
var serviceOrderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetServiceOrderList", request, GetYunDingRequestHeader(), HttpMethod.Post);
if (serviceOrderListApiResult.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"获取服务单失败 {serviceOrderListApiResult.Content}");
var serviceOrderListResponse = JsonConvert.DeserializeObject<ApiResponse<JArray>>(serviceOrderListApiResult.Content);
if (!serviceOrderListResponse.Success)
throw new Exception($"获取服务单失败 {serviceOrderListResponse.Msg}");
jtokenList.AddRange(serviceOrderListResponse.Data);
}
#endregion
var serviceIdList = jtokenList.Select(j => j.Value<string>("serviceId")).ToList();
var dbServiceOrderList = fsql.Select<ServiceOrder>().Where(s => serviceIdList.Contains(s.ServiceId)).ToList();
var dbServiceIdList = dbServiceOrderList.Select(s => s.ServiceId).ToList();
var exceptServiceIdList = serviceIdList.Except(dbServiceIdList);
var apiOrderIdList = jtokenList.Where(j => exceptServiceIdList.Contains(j.Value<string>("serviceId"))).Select(j => j.Value<string>("orderId")).ToList();
var dbOrderSkuList = fsql.Select<OrderSku>().Where(osku => osku.ShopId == shopId && apiOrderIdList.Contains(osku.OrderId)).ToList();
foreach (var serviceOrderJToken in jtokenList)
{
var serviceId = serviceOrderJToken.Value<string>("serviceId");
var dbServiceOrder = dbServiceOrderList.FirstOrDefault(s => s.ServiceId == serviceId);
if (dbServiceOrder == null)
{
var serviceOrderId = serviceOrderJToken.Value<string>("orderId");
var skuId = serviceOrderJToken.Value<string>("skuId");
var dbOsku = dbOrderSkuList.FirstOrDefault(osku => osku.OrderId == serviceOrderId && osku.SkuId == skuId);
if (dbOsku == null)
continue;
dbServiceOrder = new ServiceOrder()
{
Id = idGenerator.NewLong(),
ServiceId = serviceId,
OrderId = serviceOrderId,
ShopId = shop.ShopId,
ProductId = dbOsku.ProductId,
SkuItemCount = dbOsku.ItemTotal,
Status = serviceOrderJToken.Value<int>("sserviceOrderJToken"),
CreateTime = DateTime.Now,
SkuId = skuId,
StatusUpdateTime = serviceOrderJToken.Value<DateTime>("updateTime"),
IsSubscribeKuaiDi100 = false,
WaybillNo = string.Empty,
ExpressName = string.Empty,
ApplyTime = serviceOrderJToken.Value<DateTime>("applyTime")
};
}
}
//SyncServiceOrder(shop, serviceOrderListResponse.Data);
}

284
BBWY.Server.Model/Db/Order/Serviceorder.cs

@ -0,0 +1,284 @@
using FreeSql.DatabaseModel;using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Newtonsoft.Json;
using FreeSql.DataAnnotations;
namespace BBWY.Server.Model.Db {
/// <summary>
/// 服务单表(new)
/// </summary>
[JsonObject(MemberSerialization.OptIn), Table(Name = "serviceorder", DisableSyncStructure = true)]
public partial class ServiceOrder {
[JsonProperty, Column(IsPrimary = true, IsIdentity = true)]
public long Id { get; set; }
/// <summary>
/// 售后成本(不含退款采购成本)
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? AfterTotalCost { get; set; } = 0.00M;
/// <summary>
/// 申请时间
/// </summary>
[JsonProperty, Column(DbType = "datetime")]
public DateTime? ApplyTime { get; set; }
/// <summary>
/// 耗材费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? ConsumableAmount { get; set; } = 0.00M;
[JsonProperty, Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 发货快递费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? DeliveryExpressFreight { get; set; } = 0.00M;
/// <summary>
/// 快递公司名称
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string ExpressName { get; set; }
/// <summary>
/// 头程费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? FirstFreight { get; set; } = 0.00M;
/// <summary>
/// 退货拍摄图(名称)
/// </summary>
[JsonProperty, Column(StringLength = 1000)]
public string ImageName { get; set; }
/// <summary>
/// 入仓操作费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? InStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 是否订阅快递100
/// </summary>
[JsonProperty]
public bool? IsSubscribeKuaiDi100 { get; set; }
[JsonProperty, Column(StringLength = 50)]
public string OrderId { get; set; }
/// <summary>
/// 出仓操作费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? OutStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 产品外观 (严重损=0 轻微损=1 新=2)
/// </summary>
[JsonProperty]
public int? ProductAppearance { get; set; }
/// <summary>
/// 产品功能 (坏=0 好=1)
/// </summary>
[JsonProperty]
public int? ProductFunction { get; set; }
/// <summary>
/// 商品健康状态 (残次品=0 良品=1)
/// </summary>
[JsonProperty]
public int? ProductHealth { get; set; }
/// <summary>
/// 商品情况(定义待变更);名称待定,以前的商品情况,叶总需要更换定义
/// </summary>
[JsonProperty]
public int? ProductHealth2 { get; set; }
[JsonProperty, Column(StringLength = 50)]
public string ProductId { get; set; }
/// <summary>
/// 产品包装(无=0 非新=1 新=2)
/// </summary>
[JsonProperty]
public int? ProductPackage { get; set; }
/// <summary>
/// 商品处理方式;弃用
/// </summary>
[JsonProperty]
public int? ProductResult { get; set; }
/// <summary>
/// 采购方式
/// </summary>
[JsonProperty]
public int? PurchaseMethod { get; set; }
/// <summary>
/// 采购单号
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string PurchaseOrderId { get; set; }
/// <summary>
/// 采购单主键
/// </summary>
[JsonProperty]
public long? PurchaseOrderPKId { get; set; }
/// <summary>
/// 采购平台
/// </summary>
[JsonProperty]
public int? PurchasePlatform { get; set; }
/// <summary>
/// 退款支付宝订单号
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string RefundAlipayOrderNo { get; set; }
/// <summary>
/// 退款金额
/// </summary>
[JsonProperty, Column(DbType = "decimal(20,2)")]
public decimal? RefundAmount { get; set; } = 0.00M;
/// <summary>
/// 退货入仓操作费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? RefundInStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 退款商户订单号
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string RefundMerchantOrderNo { get; set; }
/// <summary>
/// 退款采购成本
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? RefundPurchaseAmount { get; set; } = 0.00M;
/// <summary>
/// 退款时间
/// </summary>
[JsonProperty, Column(DbType = "datetime")]
public DateTime? RefundTime { get; set; }
/// <summary>
/// 售后补发成本
/// </summary>
[JsonProperty, Column(DbType = "decimal(20,2)")]
public decimal? ReissueAfterSaleAmount { get; set; } = 0.00M;
/// <summary>
/// 补发快递费
/// </summary>
[JsonProperty, Column(DbType = "decimal(20,2)")]
public decimal? ReissueFreight { get; set; } = 0.00M;
/// <summary>
/// 补发货款成本
/// </summary>
[JsonProperty, Column(DbType = "decimal(20,2)")]
public decimal? ReissueProductAmount { get; set; } = 0.00M;
/// <summary>
/// 退货去向(退货仓=0,采购商=1,原返=2,无退货=3)
/// </summary>
[JsonProperty]
public int? ReturnDirection { get; set; }
/// <summary>
/// SD退货运费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? SDRefundFreight { get; set; } = 0.00M;
/// <summary>
/// 服务单号
/// </summary>
[JsonProperty, Column(StringLength = 20)]
public string ServiceId { get; set; }
/// <summary>
/// 服务单租备注
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string ServiceOrderRemark { get; set; }
/// <summary>
/// 服务单处理结果
/// </summary>
[JsonProperty]
public int? ServiceResult { get; set; }
[JsonProperty, Column(StringLength = 20)]
public string ShopId { get; set; }
[JsonProperty, Column(StringLength = 50)]
public string SkuId { get; set; }
/// <summary>
/// SKU销售件数
/// </summary>
[JsonProperty]
public int? SkuItemCount { get; set; }
/// <summary>
/// 服务单状态
/// </summary>
[JsonProperty]
public int? Status { get; set; }
/// <summary>
/// 变更时间
/// </summary>
[JsonProperty, Column(DbType = "datetime")]
public DateTime? StatusUpdateTime { get; set; }
/// <summary>
/// 仓储费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? StorageAmount { get; set; } = 0.00M;
/// <summary>
/// 服务单物流状态(0=待入库,1=已入库,2=派送中,3=运输中)
/// </summary>
[JsonProperty]
public int? TransportDetails { get; set; }
/// <summary>
/// 仓库组备注
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string WareHouseGrounpRemark { get; set; }
/// <summary>
/// 退货运单号
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string WaybillNo { get; set; }
}
}

34
BBWY.Test/Program.cs

@ -37,13 +37,13 @@ namespace BBWY.Test
var appSecret = "8a42bc2301e8439b896e99f5475e0a9b";
////0e61c4a8ec3e4df4b5836e10884db9220yth 齐盛
var token = "2ace3023200c4ea9aa682bbf8bffee18jztm"; //布莱特玩具
//var token = "2ace3023200c4ea9aa682bbf8bffee18jztm"; //布莱特玩具
//var token = "01f5be2cb4d741dda66bce2356941597mdfm"; //布莱特玩具 token2
//var token = "01dc6f6e7fc34dcd99090d690312556cmdfk"; //齐盛
//var token = "9fffa982da23446fb035499ae5622f49odjk"; //腾奇
//var token = "c22ff4d37b6c4bbd82cd9e8d0dab42dbziyz"; //森王车品
//var token = "44c19a1c1fbd4641957e6e8985ed1358jmtl"; //森王玩具
//var token = "4a0ddc095e054c7aa90adcaccb14f83cwzgr";
var token = "4a0ddc095e054c7aa90adcaccb14f83cwzgr"; //可比车品
//var dt1 = DateTime.Now;
//List<string> list = new List<string>();
@ -60,18 +60,19 @@ namespace BBWY.Test
var jdClient = GetJdClient(appkey, appSecret);
//var req = new AdsIbgUniversalJosServiceAdQueryRequest();
//req.businessType = "2";
//req.isDaily = "true";
//req.clickOrOrderDay = "0";
//req.pageSize = "100";
//req.page = "1";
//req.clickOrOrderCaliber = "1";
//req.startDay = "2023-03-10";
//req.endDay = "2023-03-10";
//req.giftFlag = "0";
//req.orderStatusCategory = "1";
//var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
var req = new AdsIbgUniversalJosServiceAdQueryRequest();
req.accessPin = "可比玩具";
req.businessType = "2";
req.isDaily = "true";
req.clickOrOrderDay = "0";
req.pageSize = "100";
req.page = "1";
req.clickOrOrderCaliber = "1";
req.startDay = "2023-03-10";
req.endDay = "2023-03-10";
req.giftFlag = "0";
req.orderStatusCategory = "1";
var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
/*
@ -96,11 +97,8 @@ namespace BBWY.Test
var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
*/
var req = new PopOrderEnGetRequest();
req.optionalFields = "orderId,venderId,orderType,payType,orderTotalPrice,orderSellerPrice,orderPayment,freightPrice,orderState,orderStateRemark,orderRemark,orderStartTime,orderEndTime,modified,consigneeInfo,itemInfoList,couponDetailList,taxFee,venderRemark,pin,waybill,storeOrder,storeId,sellerDiscount";
req.orderId = "261814087672";
var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
//var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
Console.WriteLine(JsonConvert.SerializeObject(res));

Loading…
Cancel
Save