Browse Source

更新退款同步,售后同步

qianyi
shanji 3 years ago
parent
commit
15e4883c45
  1. 34
      BBWY.Server.Business/Sync/AfterSaleOrderSyncBusiness.cs
  2. 15
      BBWY.Server.Business/Sync/RefundOrderSyncBusiness.cs
  3. 131
      BBWY.Server.Model/Db/Aftersaleorder.cs
  4. 53
      BBWY.Server.Model/Db/Order/AfterSaleOrder.cs
  5. 2
      BBWY.Server.Model/Db/Order/OrderSku.cs

34
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<Order>().Where(o => orderIds.Contains(o.Id) && o.IsAfterSaleOrder == false).ToList();
var updateOrderSkus = fsql.Select<OrderSku>().Where(osku => orderIds.Contains(osku.OrderId) &&
orderSkuIds.Contains(osku.SkuId)).ToList();
var dbOrderSkus = fsql.Select<OrderSku>().Where(osku => orderIds.Contains(osku.OrderId) && orderSkuIds.Contains(osku.SkuId)).ToList();
var updateOrderSkus = dbOrderSkus.Where(osku => osku.IsRefund == false).ToList();
var afterOrders = fsql.Select<AfterSaleOrder>().Where(aso => orderIds.Contains(aso.OrderId)).ToList();
@ -75,30 +76,35 @@ namespace BBWY.Server.Business
{
var orderId = afterOrderJToken.Value<string>("orderId");
var skuId = afterOrderJToken.Value<string>("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<long>("serviceId");
var processResult = processResultDic[afterOrderJToken.Value<int>("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<AfterSaleOrder>(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<Order>(updateOrder.Id).Set(o => o.IsAfterSaleOrder, true).ExecuteAffrows();
if (updateOrderSkus.Count() > 0)
foreach (var updateOrderSku in updateOrderSkus)
fsql.Update<OrderSku>(updateOrderSku.Id).Set(osku => osku.IsRefund, true).ExecuteAffrows();
if (insertAfterSaleOrders.Count() > 0)
fsql.Insert(insertAfterSaleOrders).ExecuteAffrows();
if (updateAfterSaleOrders.Count() > 0)

15
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<decimal>("refoundAmount");
var refundCompleteTime = refundOrderJToken.Value<long>("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<AfterSaleOrder>(afterOrder.Id).Set(aso => aso.RefundAmount, refundAmount)
.Set(aso => aso.RefundTime, refundCompleteTime);
updateAfterSaleOrders.Add(update);

131
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; }
/// <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(DbType = "decimal(18,2)")]
public decimal? FirstFreight { get; set; } = 0.00M;
/// <summary>
/// 入仓操作费
/// </summary>
[JsonProperty, Column(DbType = "decimal(18,2)")]
public decimal? InStorageAmount { get; set; } = 0.00M;
[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>
/// 商品情况
/// </summary>
[JsonProperty, Column(DbType = "int(1)")]
public int? ProductHealth { get; set; }
[JsonProperty, Column(StringLength = 50)]
public string ProductId { get; set; }
/// <summary>
/// 商品处理方式
/// </summary>
[JsonProperty, Column(DbType = "int(255)")]
public int? ProductResult { 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(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>
/// 服务单号
/// </summary>
[JsonProperty]
public long? ServiceId { get; set; }
/// <summary>
/// 服务单处理结果
/// </summary>
[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; }
}
}

53
BBWY.Server.Model/Db/Order/AfterSaleOrder.cs

@ -67,6 +67,59 @@ namespace BBWY.Server.Model.Db
[Column(StringLength = 50)]
public string SkuId { get; set; }
/// <summary>
/// 服务单号
/// </summary>
public long? ServiceId { get; set; }
/// <summary>
/// 退货入仓操作费
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? RefundInStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 退款采购成本
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? RefundPurchaseAmount { get; set; } = 0.00M;
/// <summary>
/// 耗材费
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? ConsumableAmount { get; set; } = 0.00M;
/// <summary>
/// 发货快递费
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? DeliveryExpressFreight { get; set; } = 0.00M;
/// <summary>
/// 头程费
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? FirstFreight { get; set; } = 0.00M;
/// <summary>
/// 入仓操作费
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? InStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 出仓操作费
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? OutStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 商品情况
/// </summary>
[Column(DbType = "int(1)", MapType = typeof(int?))]
public Enums.ProductHealth? ProductHealth { get; set; }
}
}

2
BBWY.Server.Model/Db/Order/OrderSku.cs

@ -57,7 +57,7 @@ namespace BBWY.Server.Model.Db
public long? OrderDropShippingId { get; set; }
/// <summary>
/// 是否退款
/// 是否售后
/// </summary>
[Column(DbType = "bit")]
public bool IsRefund { get; set; } = false;

Loading…
Cancel
Save