diff --git a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs index 2a90f0af..8d9c0635 100644 --- a/BBWY.Server.Business/PlatformSDK/JDBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/JDBusiness.cs @@ -1379,5 +1379,25 @@ namespace BBWY.Server.Business return (JArray)res.Json["jingdong_asc_sync_list_responce"]["pageResult"]["data"]; } + + public override JToken GetServiceOrderDetail(QueryServiceOrderDetailRequest request) + { + var jdClient = GetJdClient(request.AppKey, request.AppSecret); + var req = new AscQueryViewRequest(); + req.buId = request.VenderId; + req.operatePin = "开发测试"; + req.operateNick = "开发测试"; + req.serviceId = int.Parse(request.ServiceId); + req.orderId = long.Parse(request.OrderId); + + var res = jdClient.Execute(req, request.AppToken, DateTime.Now.ToLocalTime()); + if (res.IsError) + throw new BusinessException($"查询服务单详情失败-{(string.IsNullOrEmpty(res.ErrorMsg) ? res.ErrMsg : res.ErrorMsg)}"); + if (res.Json == null) + res.Json = JsonConvert.DeserializeObject(res.Body); + + + return res.Json["jingdong_asc_query_view_responce"]["result"]["data"]; + } } } diff --git a/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs b/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs index 45789760..6a28ee2b 100644 --- a/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs @@ -192,5 +192,10 @@ namespace BBWY.Server.Business { throw new NotImplementedException(); } + + public virtual JToken GetServiceOrderDetail(QueryServiceOrderDetailRequest request) + { + throw new NotImplementedException(); + } } } diff --git a/BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs b/BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs index fb8371ae..6ea23f9d 100644 --- a/BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs @@ -94,12 +94,22 @@ namespace BBWY.Server.Business.Sync #endregion var serviceIdList = jtokenList.Select(j => j.Value("serviceId")).ToList(); - var dbServiceOrderList = fsql.Select().Where(s => serviceIdList.Contains(s.ServiceId)).ToList(); + var dbServiceOrderList = fsql.Select().Where(s => s.ShopId == shop.ShopId && 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("serviceId"))).Select(j => j.Value("orderId")).ToList(); - var dbOrderSkuList = fsql.Select().Where(osku => osku.ShopId == shopId && apiOrderIdList.Contains(osku.OrderId)).ToList(); + var dbOrderSkuList = fsql.Select().InnerJoin((osku, o) => osku.OrderId == o.Id) + .Where((osku, o) => osku.ShopId == shopId && apiOrderIdList.Contains(osku.OrderId)) + .ToList((osku, o) => new + { + Id = osku.Id, + ProductId = osku.ProductId, + SkuId = osku.SkuId, + OrderId = osku.OrderId, + ItemTotal = osku.ItemTotal, + StorageType = o.StorageType + }); foreach (var serviceOrderJToken in jtokenList) { @@ -112,6 +122,16 @@ namespace BBWY.Server.Business.Sync var dbOsku = dbOrderSkuList.FirstOrDefault(osku => osku.OrderId == serviceOrderId && osku.SkuId == skuId); if (dbOsku == null) continue; + var isNeedSubscribeKuaiDi100 = false; + + if (dbOsku.StorageType == Enums.StorageType.代发) + isNeedSubscribeKuaiDi100 = true; + else + { + //检查退货城市是否为泉州 + + } + dbServiceOrder = new ServiceOrder() { Id = idGenerator.NewLong(), @@ -125,6 +145,7 @@ namespace BBWY.Server.Business.Sync SkuId = skuId, StatusUpdateTime = serviceOrderJToken.Value("updateTime"), IsSubscribeKuaiDi100 = false, + IsNeedSubscribeKuaiDi100 = isNeedSubscribeKuaiDi100, WaybillNo = string.Empty, ExpressName = string.Empty, ApplyTime = serviceOrderJToken.Value("applyTime") diff --git a/BBWY.Server.Model/Db/Order/Serviceorder.cs b/BBWY.Server.Model/Db/Order/Serviceorder.cs index 260ed66b..9c15f9a2 100644 --- a/BBWY.Server.Model/Db/Order/Serviceorder.cs +++ b/BBWY.Server.Model/Db/Order/Serviceorder.cs @@ -12,271 +12,276 @@ namespace BBWY.Server.Model.Db { /// /// 服务单表(new) /// - [JsonObject(MemberSerialization.OptIn), Table(Name = "serviceorder", DisableSyncStructure = true)] + [ Table(Name = "serviceorder", DisableSyncStructure = true)] public partial class ServiceOrder { - [JsonProperty, Column(IsPrimary = true, IsIdentity = true)] + [Column(IsPrimary = true, IsIdentity = true)] public long Id { get; set; } /// /// 售后成本(不含退款采购成本) /// - [JsonProperty, Column(DbType = "decimal(18,2)")] + [Column(DbType = "decimal(18,2)")] public decimal? AfterTotalCost { get; set; } = 0.00M; /// /// 申请时间 /// - [JsonProperty, Column(DbType = "datetime")] + [Column(DbType = "datetime")] public DateTime? ApplyTime { get; set; } /// /// 耗材费 /// - [JsonProperty, Column(DbType = "decimal(18,2)")] + [Column(DbType = "decimal(18,2)")] public decimal? ConsumableAmount { get; set; } = 0.00M; - [JsonProperty, Column(DbType = "datetime")] + [Column(DbType = "datetime")] public DateTime? CreateTime { get; set; } /// /// 发货快递费 /// - [JsonProperty, Column(DbType = "decimal(18,2)")] + [Column(DbType = "decimal(18,2)")] public decimal? DeliveryExpressFreight { get; set; } = 0.00M; /// /// 快递公司名称 /// - [JsonProperty, Column(StringLength = 100)] + [Column(StringLength = 100)] public string ExpressName { get; set; } /// /// 头程费 /// - [JsonProperty, Column(DbType = "decimal(18,2)")] + [Column(DbType = "decimal(18,2)")] public decimal? FirstFreight { get; set; } = 0.00M; /// /// 退货拍摄图(名称) /// - [JsonProperty, Column(StringLength = 1000)] + [Column(StringLength = 1000)] public string ImageName { get; set; } /// /// 入仓操作费 /// - [JsonProperty, Column(DbType = "decimal(18,2)")] + [Column(DbType = "decimal(18,2)")] public decimal? InStorageAmount { get; set; } = 0.00M; /// /// 是否订阅快递100 /// - [JsonProperty] + public bool? IsSubscribeKuaiDi100 { get; set; } - [JsonProperty, Column(StringLength = 50)] + /// + /// 是否需要订阅快递100 + /// + public bool? IsNeedSubscribeKuaiDi100 { get; set; } + + [Column(StringLength = 50)] public string OrderId { get; set; } /// /// 出仓操作费 /// - [JsonProperty, Column(DbType = "decimal(18,2)")] + [Column(DbType = "decimal(18,2)")] public decimal? OutStorageAmount { get; set; } = 0.00M; /// /// 产品外观 (严重损=0 轻微损=1 新=2) /// - [JsonProperty] + public int? ProductAppearance { get; set; } /// /// 产品功能 (坏=0 好=1) /// - [JsonProperty] + public int? ProductFunction { get; set; } /// /// 商品健康状态 (残次品=0 良品=1) /// - [JsonProperty] + public int? ProductHealth { get; set; } /// /// 商品情况(定义待变更);名称待定,以前的商品情况,叶总需要更换定义 /// - [JsonProperty] + public int? ProductHealth2 { get; set; } - [JsonProperty, Column(StringLength = 50)] + [Column(StringLength = 50)] public string ProductId { get; set; } /// /// 产品包装(无=0 非新=1 新=2) /// - [JsonProperty] + public int? ProductPackage { get; set; } /// /// 商品处理方式;弃用 /// - [JsonProperty] + public int? ProductResult { get; set; } /// /// 采购方式 /// - [JsonProperty] + public int? PurchaseMethod { get; set; } /// /// 采购单号 /// - [JsonProperty, Column(StringLength = 100)] + [Column(StringLength = 100)] public string PurchaseOrderId { get; set; } /// /// 采购单主键 /// - [JsonProperty] + public long? PurchaseOrderPKId { get; set; } /// /// 采购平台 /// - [JsonProperty] + public int? PurchasePlatform { get; set; } /// /// 退款支付宝订单号 /// - [JsonProperty, Column(StringLength = 100)] + [Column(StringLength = 100)] public string RefundAlipayOrderNo { get; set; } /// /// 退款金额 /// - [JsonProperty, Column(DbType = "decimal(20,2)")] + [Column(DbType = "decimal(20,2)")] public decimal? RefundAmount { get; set; } = 0.00M; /// /// 退货入仓操作费 /// - [JsonProperty, Column(DbType = "decimal(18,2)")] + [Column(DbType = "decimal(18,2)")] public decimal? RefundInStorageAmount { get; set; } = 0.00M; /// /// 退款商户订单号 /// - [JsonProperty, Column(StringLength = 100)] + [Column(StringLength = 100)] public string RefundMerchantOrderNo { get; set; } /// /// 退款采购成本 /// - [JsonProperty, Column(DbType = "decimal(18,2)")] + [Column(DbType = "decimal(18,2)")] public decimal? RefundPurchaseAmount { get; set; } = 0.00M; /// /// 退款时间 /// - [JsonProperty, Column(DbType = "datetime")] + [Column(DbType = "datetime")] public DateTime? RefundTime { get; set; } /// /// 售后补发成本 /// - [JsonProperty, Column(DbType = "decimal(20,2)")] + [Column(DbType = "decimal(20,2)")] public decimal? ReissueAfterSaleAmount { get; set; } = 0.00M; /// /// 补发快递费 /// - [JsonProperty, Column(DbType = "decimal(20,2)")] + [Column(DbType = "decimal(20,2)")] public decimal? ReissueFreight { get; set; } = 0.00M; /// /// 补发货款成本 /// - [JsonProperty, Column(DbType = "decimal(20,2)")] + [Column(DbType = "decimal(20,2)")] public decimal? ReissueProductAmount { get; set; } = 0.00M; /// /// 退货去向(退货仓=0,采购商=1,原返=2,无退货=3) /// - [JsonProperty] + public int? ReturnDirection { get; set; } /// /// SD退货运费 /// - [JsonProperty, Column(DbType = "decimal(18,2)")] + [Column(DbType = "decimal(18,2)")] public decimal? SDRefundFreight { get; set; } = 0.00M; /// /// 服务单号 /// - [JsonProperty, Column(StringLength = 20)] + [Column(StringLength = 20)] public string ServiceId { get; set; } /// /// 服务单租备注 /// - [JsonProperty, Column(StringLength = 100)] + [Column(StringLength = 100)] public string ServiceOrderRemark { get; set; } /// /// 服务单处理结果 /// - [JsonProperty] + public int? ServiceResult { get; set; } - [JsonProperty, Column(StringLength = 20)] + [Column(StringLength = 20)] public string ShopId { get; set; } - [JsonProperty, Column(StringLength = 50)] + [Column(StringLength = 50)] public string SkuId { get; set; } /// /// SKU销售件数 /// - [JsonProperty] + public int? SkuItemCount { get; set; } /// /// 服务单状态 /// - [JsonProperty] + public int? Status { get; set; } /// /// 变更时间 /// - [JsonProperty, Column(DbType = "datetime")] + [Column(DbType = "datetime")] public DateTime? StatusUpdateTime { get; set; } /// /// 仓储费 /// - [JsonProperty, Column(DbType = "decimal(18,2)")] + [Column(DbType = "decimal(18,2)")] public decimal? StorageAmount { get; set; } = 0.00M; /// /// 服务单物流状态(0=待入库,1=已入库,2=派送中,3=运输中) /// - [JsonProperty] + public int? TransportDetails { get; set; } /// /// 仓库组备注 /// - [JsonProperty, Column(StringLength = 100)] + [Column(StringLength = 100)] public string WareHouseGrounpRemark { get; set; } /// /// 退货运单号 /// - [JsonProperty, Column(StringLength = 100)] + [Column(StringLength = 100)] public string WaybillNo { get; set; } } diff --git a/BBWY.Server.Model/Dto/Request/Sync/QueryServiceOrderDetailRequest.cs b/BBWY.Server.Model/Dto/Request/Sync/QueryServiceOrderDetailRequest.cs new file mode 100644 index 00000000..49b023be --- /dev/null +++ b/BBWY.Server.Model/Dto/Request/Sync/QueryServiceOrderDetailRequest.cs @@ -0,0 +1,14 @@ +namespace BBWY.Server.Model.Dto +{ + public class QueryServiceOrderDetailRequest : PlatformRequest + { + public QueryServiceOrderDetailRequest() + { + } + + public string ServiceId { get; set; } + public string OrderId { get; set; } + + public string VenderId { get; set; } + } +} diff --git a/BBWY.Test/Program.cs b/BBWY.Test/Program.cs index e3c2223a..81fb46d9 100644 --- a/BBWY.Test/Program.cs +++ b/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 list = new List(); @@ -60,19 +60,19 @@ namespace BBWY.Test var jdClient = GetJdClient(appkey, appSecret); - 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()); + //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()); /* @@ -97,6 +97,17 @@ namespace BBWY.Test var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime()); */ + var req = new AscQueryViewRequest(); + + req.buId = "10598776"; + req.operatePin = "开发测试"; + req.operateNick = "开发测试"; + req.serviceId = 1688379598; + req.orderId = 262837096353; + + + + var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime()); //var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime()); diff --git a/JD.API/Controllers/PlatformSDKController.cs b/JD.API/Controllers/PlatformSDKController.cs index 1aad4bb0..ab99992d 100644 --- a/JD.API/Controllers/PlatformSDKController.cs +++ b/JD.API/Controllers/PlatformSDKController.cs @@ -340,9 +340,20 @@ namespace JD.API.API.Controllers /// /// [HttpPost] - public JArray GetServiceOrderList([FromBody]QueryServiceOrderRequest request) + public JArray GetServiceOrderList([FromBody] QueryServiceOrderRequest request) { return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).GetServiceOrderList(request); } + + /// + /// 查询服务单详情 + /// + /// + /// + [HttpPost] + public JToken GetServiceOrderDetail(QueryServiceOrderDetailRequest request) + { + return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).GetServiceOrderDetail(request); + } } }