From 15e4883c4528924c4247e4faad43672ff8d06b50 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 13 Aug 2022 04:20:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=80=80=E6=AC=BE=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=EF=BC=8C=E5=94=AE=E5=90=8E=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sync/AfterSaleOrderSyncBusiness.cs | 34 +++-- .../Sync/RefundOrderSyncBusiness.cs | 15 +- BBWY.Server.Model/Db/Aftersaleorder.cs | 131 ++++++++++++++++++ BBWY.Server.Model/Db/Order/AfterSaleOrder.cs | 53 +++++++ BBWY.Server.Model/Db/Order/OrderSku.cs | 2 +- 5 files changed, 215 insertions(+), 20 deletions(-) create mode 100644 BBWY.Server.Model/Db/Aftersaleorder.cs diff --git a/BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs b/BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs index 28e16ce9..e69861b0 100644 --- a/BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs @@ -49,6 +49,7 @@ namespace BBWY.Server.Business { 40,Enums.ServiceResult.退货}, { 60,Enums.ServiceResult.原返}, { 90,Enums.ServiceResult.线下换新}, + { 110,Enums.ServiceResult.商品补发} }; } @@ -63,8 +64,8 @@ namespace BBWY.Server.Business var orderSkuIds = validAfterOrderJArray.Select(j => j["skuId"].ToString()).Distinct().ToList(); var updateOrders = fsql.Select().Where(o => orderIds.Contains(o.Id) && o.IsAfterSaleOrder == false).ToList(); - var updateOrderSkus = fsql.Select().Where(osku => orderIds.Contains(osku.OrderId) && - orderSkuIds.Contains(osku.SkuId)).ToList(); + var dbOrderSkus = fsql.Select().Where(osku => orderIds.Contains(osku.OrderId) && orderSkuIds.Contains(osku.SkuId)).ToList(); + var updateOrderSkus = dbOrderSkus.Where(osku => osku.IsRefund == false).ToList(); var afterOrders = fsql.Select().Where(aso => orderIds.Contains(aso.OrderId)).ToList(); @@ -75,30 +76,35 @@ namespace BBWY.Server.Business { var orderId = afterOrderJToken.Value("orderId"); var skuId = afterOrderJToken.Value("skuId"); - - var updateSku = updateOrderSkus.FirstOrDefault(osku => osku.OrderId == orderId && osku.SkuId == skuId); - if (updateSku == null) - continue; - - var afterOrder = afterOrders.FirstOrDefault(aso => aso.OrderId == orderId && aso.SkuId == skuId); + var serviceId = afterOrderJToken.Value("serviceId"); var processResult = processResultDic[afterOrderJToken.Value("processResult")]; + + var afterOrder = afterOrders.FirstOrDefault(aso => aso.ServiceId == serviceId); if (afterOrder == null) { + var dbOrderSku = dbOrderSkus.FirstOrDefault(osku => osku.OrderId == orderId && osku.SkuId == skuId); + if (dbOrderSku == null) + continue; + insertAfterSaleOrders.Add(new AfterSaleOrder() { Id = idGenerator.NewLong(), CreateTime = DateTime.Now, - OrderId = updateSku.OrderId, - ProductId = updateSku.ProductId, + OrderId = dbOrderSku.OrderId, + ProductId = dbOrderSku.ProductId, RefundAmount = 0, SkuId = skuId, ShopId = shopId, - ServiceResult = processResult + ServiceResult = processResult, + ServiceId = serviceId }); } else { - if (afterOrder.ServiceResult == null && afterOrder.ServiceResult != processResult) + if (afterOrder.ServiceResult == null || + (afterOrder.ServiceResult != processResult && + afterOrder.ServiceResult != Enums.ServiceResult.维修 && + afterOrder.ServiceResult != Enums.ServiceResult.仅退款)) { var update = fsql.Update(afterOrder.Id).Set(aso => aso.ServiceResult, processResult); updateAfterSaleOrders.Add(update); @@ -112,6 +118,10 @@ namespace BBWY.Server.Business foreach (var updateOrder in updateOrders) fsql.Update(updateOrder.Id).Set(o => o.IsAfterSaleOrder, true).ExecuteAffrows(); + if (updateOrderSkus.Count() > 0) + foreach (var updateOrderSku in updateOrderSkus) + fsql.Update(updateOrderSku.Id).Set(osku => osku.IsRefund, true).ExecuteAffrows(); + if (insertAfterSaleOrders.Count() > 0) fsql.Insert(insertAfterSaleOrders).ExecuteAffrows(); if (updateAfterSaleOrders.Count() > 0) diff --git a/BBWY.Server.Business/Sync/RefundOrderSyncBusiness.cs b/BBWY.Server.Business/Sync/RefundOrderSyncBusiness.cs index 899f870b..404215e5 100644 --- a/BBWY.Server.Business/Sync/RefundOrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/RefundOrderSyncBusiness.cs @@ -63,16 +63,18 @@ namespace BBWY.Server.Business { var skuId = refundOrderJToken["sameOrderServiceBill"]["wareId"].ToString(); var orderId = refundOrderJToken["sameOrderServiceBill"]["orderId"].ToString(); - var updateSku = updateOrderSkus.FirstOrDefault(osku => osku.OrderId == orderId && osku.SkuId == skuId); - if (updateSku == null) - continue; var refundAmount = refundOrderJToken.Value("refoundAmount"); var refundCompleteTime = refundOrderJToken.Value("completeTime").StampToDateTime(); - var afterOrder = afterOrders.FirstOrDefault(aso => aso.OrderId == orderId && aso.SkuId == skuId); + var serviceId = long.Parse(refundOrderJToken["sameOrderServiceBill"]["serviceId"].ToString()); + + var afterOrder = afterOrders.FirstOrDefault(aso => aso.ServiceId == serviceId); if (afterOrder == null) { + var updateSku = updateOrderSkus.FirstOrDefault(osku => osku.OrderId == orderId && osku.SkuId == skuId); + if (updateSku == null) + continue; insertAfterSaleOrders.Add(new AfterSaleOrder() { Id = idGenerator.NewLong(), @@ -82,13 +84,12 @@ namespace BBWY.Server.Business RefundAmount = refundAmount, RefundTime = refundCompleteTime, SkuId = skuId, - ShopId = shopId + ShopId = shopId, + ServiceId = serviceId }); } else if (afterOrder.RefundAmount == 0) { - //afterOrder.RefundAmount = refundAmount; - //afterOrder.RefundTime = refundCompleteTime; var update = fsql.Update(afterOrder.Id).Set(aso => aso.RefundAmount, refundAmount) .Set(aso => aso.RefundTime, refundCompleteTime); updateAfterSaleOrders.Add(update); diff --git a/BBWY.Server.Model/Db/Aftersaleorder.cs b/BBWY.Server.Model/Db/Aftersaleorder.cs new file mode 100644 index 00000000..ea505cc1 --- /dev/null +++ b/BBWY.Server.Model/Db/Aftersaleorder.cs @@ -0,0 +1,131 @@ +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 4d398b58..7fc94395 100644 --- a/BBWY.Server.Model/Db/Order/AfterSaleOrder.cs +++ b/BBWY.Server.Model/Db/Order/AfterSaleOrder.cs @@ -67,6 +67,59 @@ namespace BBWY.Server.Model.Db [Column(StringLength = 50)] public string SkuId { get; set; } + /// + /// 服务单号 + /// + public long? ServiceId { get; set; } + + /// + /// 退货入仓操作费 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? RefundInStorageAmount { get; set; } = 0.00M; + + /// + /// 退款采购成本 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? RefundPurchaseAmount { get; set; } = 0.00M; + + /// + /// 耗材费 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? ConsumableAmount { get; set; } = 0.00M; + + /// + /// 发货快递费 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? DeliveryExpressFreight { get; set; } = 0.00M; + + /// + /// 头程费 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? FirstFreight { get; set; } = 0.00M; + + /// + /// 入仓操作费 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? InStorageAmount { get; set; } = 0.00M; + + /// + /// 出仓操作费 + /// + [Column(DbType = "decimal(18,2)")] + public decimal? OutStorageAmount { get; set; } = 0.00M; + + /// + /// 商品情况 + /// + [Column(DbType = "int(1)", MapType = typeof(int?))] + public Enums.ProductHealth? ProductHealth { get; set; } + } } diff --git a/BBWY.Server.Model/Db/Order/OrderSku.cs b/BBWY.Server.Model/Db/Order/OrderSku.cs index a9f1cb95..c141930d 100644 --- a/BBWY.Server.Model/Db/Order/OrderSku.cs +++ b/BBWY.Server.Model/Db/Order/OrderSku.cs @@ -57,7 +57,7 @@ namespace BBWY.Server.Model.Db public long? OrderDropShippingId { get; set; } /// - /// 是否退款 + /// 是否售后 /// [Column(DbType = "bit")] public bool IsRefund { get; set; } = false;