diff --git a/BBWY.Server.API/Controllers/AfterSaleOrderController.cs b/BBWY.Server.API/Controllers/AfterSaleOrderController.cs new file mode 100644 index 00000000..2e19509a --- /dev/null +++ b/BBWY.Server.API/Controllers/AfterSaleOrderController.cs @@ -0,0 +1,28 @@ +using BBWY.Server.Business; +using BBWY.Server.Model.Dto; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace BBWY.Server.API.Controllers +{ + public class AfterSaleOrderController : BaseApiController + { + private AfterSaleOrderBusiness afterSaleOrderBusiness; + + public AfterSaleOrderController(IHttpContextAccessor httpContextAccessor, AfterSaleOrderBusiness afterSaleOrderBusiness) : base(httpContextAccessor) + { + this.afterSaleOrderBusiness = afterSaleOrderBusiness; + } + + /// + /// 获取服务单列表 + /// + /// + /// + [HttpPost] + public AfterSaleOrderListResponse GetAfterSaleOrderList([FromBody] SearchAfterSaleOrderRequest request) + { + return afterSaleOrderBusiness.GetAfterSaleOrderList(request); + } + } +} diff --git a/BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs b/BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs new file mode 100644 index 00000000..39bb4095 --- /dev/null +++ b/BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs @@ -0,0 +1,74 @@ +using BBWY.Common.Models; +using BBWY.Server.Model.Db; +using BBWY.Server.Model.Dto; +using BBWY.Server.Model.Dto.Request; +using System; +using System.Collections.Generic; +using System.Text; +using Yitter.IdGenerator; + +namespace BBWY.Server.Business +{ + public class AfterSaleOrderBusiness : BaseBusiness, IDenpendency + { + public AfterSaleOrderBusiness(IFreeSql fsql, NLog.ILogger logger, IIdGenerator idGenerator) : base(fsql, logger, idGenerator) + { + + } + + public AfterSaleOrderListResponse GetAfterSaleOrderList(SearchAfterSaleOrderRequest request) + { + var select = fsql.Select().InnerJoin((aso, osku) => aso.SkuId == osku.SkuId); + if (!string.IsNullOrEmpty(request.ServiceId)) + { + select = select.Where((aso, osku) => aso.ServiceId == request.ServiceId); + } + else + { + select = select.WhereIf(request.StartDate != null, (aso, osku) => aso.ApplyTime >= request.StartDate) + .WhereIf(request.EndDate != null, (aso, osku) => aso.ApplyTime <= request.EndDate) + .WhereIf(!string.IsNullOrEmpty(request.Spu), (aso, osku) => aso.ProductId == request.Spu) + .WhereIf(!string.IsNullOrEmpty(request.Sku), (aso, osku) => aso.SkuId == request.Sku) + .WhereIf(!string.IsNullOrEmpty(request.OrderId), (aso, osku) => aso.OrderId == request.OrderId); + } + select = select.Where((aso, osku) => aso.ShopId == request.ShopId) + .OrderByDescending((aso, osku) => aso.CreateTime) + .Count(out var total) + .Page(request.PageIndex, request.PageSize); + + var list = select.ToList((aso, osku) => new AfterSaleOrderResponse + { + Id = aso.Id, + ApplyTime = aso.ApplyTime, + ConsumableAmount = aso.ConsumableAmount, + CreateTime = aso.CreateTime, + DeliveryExpressFreight = aso.DeliveryExpressFreight, + FirstFreight = aso.FirstFreight, + InStorageAmount = aso.InStorageAmount, + Logo = osku.Logo, + OrderId = aso.OrderId, + OutStorageAmount = aso.OutStorageAmount, + ProductHealth = aso.ProductHealth, + ProductId = aso.ProductId, + ProductResult = aso.ProductResult, + RefundAmount = aso.RefundAmount, + RefundInStorageAmount = aso.RefundInStorageAmount, + RefundPurchaseAmount = aso.RefundPurchaseAmount, + RefundTime = aso.RefundTime, + ReissueAfterSaleAmount = aso.ReissueAfterSaleAmount, + ReissueFreight = aso.ReissueFreight, + ReissueProductAmount = aso.ReissueProductAmount, + ServiceId = aso.ServiceId, + ServiceResult = aso.ServiceResult, + ShopId = aso.ShopId, + SkuId = aso.SkuId, + Title = osku.Title + }); + return new AfterSaleOrderListResponse() + { + Count = total, + Items = list + }; + } + } +} diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index 83496dc9..82643af8 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -156,14 +156,6 @@ namespace BBWY.Server.Business ReissueAfterSaleAmount = oct.ReissueAfterSaleAmount, ReissueFreight = oct.ReissueFreight, ReissueProductAmount = oct.ReissueProductAmount - - //BuyerAccount = ods.BuyerAccount, - //DeliveryFreight = ods.DeliveryFreight, - //PurchaseOrderId = ods.PurchaseOrderId, - //PurchasePlatform = ods.PurchasePlatform, - //SellerAccount = ods.SellerAccount, - //OrderDropShippingSkuAmount = ods.SkuAmount, - //OrderDropShippingPurchaseFreight = ods.PurchaseFreight, }); var orderList = orderSourceList.Map>(); @@ -206,11 +198,11 @@ namespace BBWY.Server.Business order.OrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList(); #endregion - #region 处理售后信息 - var afterSaleOrderList = fsql.Select().Where(aso => orderIdList.Contains(aso.OrderId)).ToList(); - foreach (var order in orderList) - order.AfterSaleOrderList = afterSaleOrderList.Where(aso => aso.OrderId == order.Id).ToList(); - #endregion + //#region 处理售后信息 + //var afterSaleOrderList = fsql.Select().Where(aso => orderIdList.Contains(aso.OrderId)).ToList(); + //foreach (var order in orderList) + // order.AfterSaleOrderList = afterSaleOrderList.Where(aso => aso.OrderId == order.Id).ToList(); + //#endregion #region 翻译仓库Id foreach (var order in orderList) diff --git a/BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs b/BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs index e69861b0..05866f1d 100644 --- a/BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs @@ -1,4 +1,5 @@ -using BBWY.Common.Http; +using BBWY.Common.Extensions; +using BBWY.Common.Http; using BBWY.Common.Models; using BBWY.Server.Model; using BBWY.Server.Model.Db; @@ -76,7 +77,7 @@ namespace BBWY.Server.Business { var orderId = afterOrderJToken.Value("orderId"); var skuId = afterOrderJToken.Value("skuId"); - var serviceId = afterOrderJToken.Value("serviceId"); + var serviceId = afterOrderJToken.Value("serviceId"); var processResult = processResultDic[afterOrderJToken.Value("processResult")]; var afterOrder = afterOrders.FirstOrDefault(aso => aso.ServiceId == serviceId); @@ -96,7 +97,8 @@ namespace BBWY.Server.Business SkuId = skuId, ShopId = shopId, ServiceResult = processResult, - ServiceId = serviceId + ServiceId = serviceId, + ApplyTime = afterOrderJToken.Value("applyTime").StampToDateTime() }); } else diff --git a/BBWY.Server.Business/Sync/RefundOrderSyncBusiness.cs b/BBWY.Server.Business/Sync/RefundOrderSyncBusiness.cs index 404215e5..19de66a5 100644 --- a/BBWY.Server.Business/Sync/RefundOrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/RefundOrderSyncBusiness.cs @@ -67,7 +67,7 @@ namespace BBWY.Server.Business var refundAmount = refundOrderJToken.Value("refoundAmount"); var refundCompleteTime = refundOrderJToken.Value("completeTime").StampToDateTime(); - var serviceId = long.Parse(refundOrderJToken["sameOrderServiceBill"]["serviceId"].ToString()); + var serviceId = refundOrderJToken["sameOrderServiceBill"]["serviceId"].ToString(); var afterOrder = afterOrders.FirstOrDefault(aso => aso.ServiceId == serviceId); if (afterOrder == null) @@ -85,7 +85,8 @@ namespace BBWY.Server.Business RefundTime = refundCompleteTime, SkuId = skuId, ShopId = shopId, - ServiceId = serviceId + ServiceId = serviceId, + ApplyTime = long.Parse(refundOrderJToken["sameOrderServiceBill"]["afsApplyTime"].ToString()).StampToDateTime() }); } else if (afterOrder.RefundAmount == 0) diff --git a/BBWY.Server.Model/Db/Aftersaleorder.cs b/BBWY.Server.Model/Db/Aftersaleorder.cs deleted file mode 100644 index ea505cc1..00000000 --- a/BBWY.Server.Model/Db/Aftersaleorder.cs +++ /dev/null @@ -1,131 +0,0 @@ -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 { - - [JsonObject(MemberSerialization.OptIn), Table(Name = "aftersaleorder", DisableSyncStructure = true)] - public partial class Aftersaleorder { - - [JsonProperty, Column(IsPrimary = true)] - public long Id { get; set; } - - /// - /// 耗材费 - /// - [JsonProperty, Column(DbType = "decimal(18,2)")] - public decimal? ConsumableAmount { get; set; } = 0.00M; - - [JsonProperty, Column(DbType = "datetime")] - public DateTime? CreateTime { get; set; } - - /// - /// 发货快递费 - /// - [JsonProperty, Column(DbType = "decimal(18,2)")] - public decimal? DeliveryExpressFreight { get; set; } = 0.00M; - - /// - /// 头程费 - /// - [JsonProperty, Column(DbType = "decimal(18,2)")] - public decimal? FirstFreight { get; set; } = 0.00M; - - /// - /// 入仓操作费 - /// - [JsonProperty, Column(DbType = "decimal(18,2)")] - public decimal? InStorageAmount { get; set; } = 0.00M; - - [JsonProperty, Column(StringLength = 50)] - public string OrderId { get; set; } - - /// - /// 出仓操作费 - /// - [JsonProperty, Column(DbType = "decimal(18,2)")] - public decimal? OutStorageAmount { get; set; } = 0.00M; - - /// - /// 商品情况 - /// - [JsonProperty, Column(DbType = "int(1)")] - public int? ProductHealth { get; set; } - - [JsonProperty, Column(StringLength = 50)] - public string ProductId { get; set; } - - /// - /// 商品处理方式 - /// - [JsonProperty, Column(DbType = "int(255)")] - public int? ProductResult { get; set; } - - /// - /// 退款金额 - /// - [JsonProperty, Column(DbType = "decimal(20,2)")] - public decimal? RefundAmount { get; set; } = 0.00M; - - /// - /// 退货入仓操作费 - /// - [JsonProperty, Column(DbType = "decimal(18,2)")] - public decimal? RefundInStorageAmount { get; set; } = 0.00M; - - /// - /// 退款采购成本 - /// - [JsonProperty, Column(DbType = "decimal(18,2)")] - public decimal? RefundPurchaseAmount { get; set; } = 0.00M; - - /// - /// 退款时间 - /// - [JsonProperty, Column(DbType = "datetime")] - public DateTime? RefundTime { get; set; } - - /// - /// 售后补发成本 - /// - [JsonProperty, Column(DbType = "decimal(20,2)")] - public decimal? ReissueAfterSaleAmount { get; set; } = 0.00M; - - /// - /// 补发快递费 - /// - [JsonProperty, Column(DbType = "decimal(20,2)")] - public decimal? ReissueFreight { get; set; } = 0.00M; - - /// - /// 补发货款成本 - /// - [JsonProperty, Column(DbType = "decimal(20,2)")] - public decimal? ReissueProductAmount { get; set; } = 0.00M; - - /// - /// 服务单号 - /// - [JsonProperty] - public long? ServiceId { get; set; } - - /// - /// 服务单处理结果 - /// - [JsonProperty, Column(DbType = "int(1)")] - public int? ServiceResult { get; set; } - - [JsonProperty] - public long? ShopId { get; set; } - - [JsonProperty, Column(StringLength = 50)] - public string SkuId { get; set; } - - } - -} diff --git a/BBWY.Server.Model/Db/Order/AfterSaleOrder.cs b/BBWY.Server.Model/Db/Order/AfterSaleOrder.cs index 7fc94395..c98ee04b 100644 --- a/BBWY.Server.Model/Db/Order/AfterSaleOrder.cs +++ b/BBWY.Server.Model/Db/Order/AfterSaleOrder.cs @@ -14,6 +14,12 @@ namespace BBWY.Server.Model.Db [Column(DbType = "datetime")] public DateTime? CreateTime { get; set; } + /// + /// 申请时间 + /// + [Column(DbType = "datetime")] + public DateTime? ApplyTime { get; set; } + [Column(StringLength = 50)] public string OrderId { get; set; } @@ -68,9 +74,10 @@ namespace BBWY.Server.Model.Db public string SkuId { get; set; } /// - /// 服务单号 - /// - public long? ServiceId { get; set; } + /// 服务单号 + /// + [Column(StringLength = 20)] + public string ServiceId { get; set; } /// /// 退货入仓操作费 diff --git a/BBWY.Server.Model/Dto/Request/AfterSaleOrder/SearchAfterSaleOrderRequest.cs b/BBWY.Server.Model/Dto/Request/AfterSaleOrder/SearchAfterSaleOrderRequest.cs new file mode 100644 index 00000000..aa67f3e7 --- /dev/null +++ b/BBWY.Server.Model/Dto/Request/AfterSaleOrder/SearchAfterSaleOrderRequest.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Server.Model.Dto +{ + public class SearchAfterSaleOrderRequest + { + public long ShopId { get; set; } + + public string OrderId { get; set; } + + public DateTime? StartDate { get; set; } + + public DateTime? EndDate { get; set; } + + public string Spu { get; set; } + + public string Sku { get; set; } + + public string ServiceId { get; set; } + + public int PageIndex { get; set; } + + public int PageSize { get; set; } + } +} diff --git a/BBWY.Server.Model/Dto/Response/AfterSaleOrder/AfterSaleOrderListResponse.cs b/BBWY.Server.Model/Dto/Response/AfterSaleOrder/AfterSaleOrderListResponse.cs new file mode 100644 index 00000000..0ab1b573 --- /dev/null +++ b/BBWY.Server.Model/Dto/Response/AfterSaleOrder/AfterSaleOrderListResponse.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Server.Model.Dto +{ + public class AfterSaleOrderListResponse + { + public long Count { get; set; } + + public IList Items { get; set; } + } +} diff --git a/BBWY.Server.Model/Dto/Response/Order/AfterSaleOrderResponse.cs b/BBWY.Server.Model/Dto/Response/AfterSaleOrder/AfterSaleOrderResponse.cs similarity index 61% rename from BBWY.Server.Model/Dto/Response/Order/AfterSaleOrderResponse.cs rename to BBWY.Server.Model/Dto/Response/AfterSaleOrder/AfterSaleOrderResponse.cs index cdd94b2b..8dfc7b75 100644 --- a/BBWY.Server.Model/Dto/Response/Order/AfterSaleOrderResponse.cs +++ b/BBWY.Server.Model/Dto/Response/AfterSaleOrder/AfterSaleOrderResponse.cs @@ -1,11 +1,11 @@ using BBWY.Server.Model.Db; -using System; -using System.Collections.Generic; -using System.Text; namespace BBWY.Server.Model.Dto { public class AfterSaleOrderResponse : AfterSaleOrder { + public string Logo { get; set; } + + public string Title { get; set; } } } diff --git a/BBWY.Test/Program.cs b/BBWY.Test/Program.cs index cd143f02..d1669bdb 100644 --- a/BBWY.Test/Program.cs +++ b/BBWY.Test/Program.cs @@ -1,19 +1,8 @@ -using BBWY.Common.Models; -using BBWY.JDSDK.Request; -using BBWY.Server.Model.Db; -using BBWY.Server.Model.Dto; -using Jd.Api; +using Jd.Api; using Jd.Api.Request; using Jd.Api.Response; using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using io = System.IO; namespace BBWY.Test { internal class Program @@ -30,19 +19,26 @@ namespace BBWY.Test var token = "2ace3023200c4ea9aa682bbf8bffee18jztm"; var jdClient = GetJdClient(appKey, appSecret); - var req = new AscQueryListRequest(); - req.buId = "10598776"; - req.operatePin = "开发测试"; - req.operateNick = "开发测试"; - req.pageNumber = "1"; - req.pageSize ="50"; + //var req = new AscQueryListRequest(); + //req.buId = "10598776"; + //req.operatePin = "开发测试"; + //req.operateNick = "开发测试"; + //req.pageNumber = "1"; + //req.pageSize ="50"; + //req.serviceId = 1472302469; + //AscQueryListResponse response1 = jdClient.Execute(req, token, DateTime.Now.ToLocalTime()); - req.orderId = null; + //Console.WriteLine(JsonConvert.SerializeObject(response1)); - req.serviceId = 1377757485; + //250134673037 - AscQueryListResponse response = jdClient.Execute(req, token, DateTime.Now.ToLocalTime()); + AscServiceAndRefundViewRequest req = new AscServiceAndRefundViewRequest(); + req.orderId = 250134673037; + req.pageNumber = 1.ToString(); + req.pageSize = 10.ToString(); + + var response = jdClient.Execute(req, token, DateTime.Now.ToLocalTime()); Console.WriteLine(JsonConvert.SerializeObject(response)); Console.ReadKey(); }