Browse Source

删除过期的待付款订单

qianyi
shanji 2 years ago
parent
commit
c09ece6e41
  1. 9
      BBWY.Server.API/Controllers/OrderSyncController.cs
  2. 80
      BBWY.Server.Business/Sync/OrderSkuSaleDetailSyncBusiness.cs
  3. 121
      BBWY.Server.Business/Sync/OrderSyncBusiness.cs
  4. 34
      BBWY.Server.Model/Db/Order/GiftOrder.cs
  5. 36
      BBWY.Server.Model/Db/Order/GiftOrderSku.cs
  6. 2
      JD.API/Controllers/PlatformSDKController.cs

9
BBWY.Server.API/Controllers/OrderSyncController.cs

@ -85,5 +85,14 @@ namespace BBWY.Server.API.Controllers
{
orderSyncBusiness.CheckJDPauseOrder(shopId);
}
/// <summary>
/// 删除过期的待付款订单
/// </summary>
[HttpPost]
public void DeleteTimeOutWaitPayOrder()
{
orderSyncBusiness.DeleteTimeOutWaitPayOrder();
}
}
}

80
BBWY.Server.Business/Sync/OrderSkuSaleDetailSyncBusiness.cs

@ -88,59 +88,6 @@ namespace BBWY.Server.Business
CancelItemTotal = (int)g.Sum(g.Value.Item1.ItemTotal)
});
var giftOskuGroups = fsql.Select<GiftOrderSku, GiftOrder>()
.InnerJoin((gos, go) => gos.GiftOrderId == go.Id)
.WhereIf(shopId != null, (gos, go) => go.ShopId == shopId)
.Where((gos, go) => go.StartTime >= startDate && go.StartTime <= endTime)
//.Where((gos, go) => go.OrderState != Model.Enums.OrderState.已取消)
.GroupBy((gos, go) => new
{
go.Platform,
go.ShopId,
gos.ProductId,
gos.SkuId,
gos.Price,
go.StartTime.Value.Date
})
.ToList(g => new SkuDailySalesDetail
{
Platform = g.Key.Platform,
ShopId = g.Key.ShopId,
Spu = g.Key.ProductId,
Sku = g.Key.SkuId,
Date = g.Key.Date,
Price = g.Key.Price,
Amount = g.Sum(g.Value.Item1.Price * g.Value.Item1.ItemTotal),
ItemTotal = (int)g.Sum(g.Value.Item1.ItemTotal)
});
var cancelGiftOskuGroups = fsql.Select<GiftOrderSku, GiftOrder>()
.InnerJoin((gos, go) => gos.GiftOrderId == go.Id)
.WhereIf(shopId != null, (gos, go) => go.ShopId == shopId)
.Where((gos, go) => go.ModifyTime >= startDate && go.ModifyTime <= endTime)
.Where((gos, go) => go.OrderState == Model.Enums.OrderState.)
.GroupBy((gos, go) => new
{
go.Platform,
go.ShopId,
gos.ProductId,
gos.SkuId,
gos.Price,
go.ModifyTime.Value.Date
})
.ToList(g => new SkuDailySalesDetail
{
Platform = g.Key.Platform,
ShopId = g.Key.ShopId,
Spu = g.Key.ProductId,
Sku = g.Key.SkuId,
Date = g.Key.Date,
Price = g.Key.Price,
Amount = 0,
ItemTotal = 0,
CancelItemTotal = (int)g.Sum(g.Value.Item1.ItemTotal)
});
insertSkuDailySalesDetailList.AddRange(oskuGroups);
foreach (var canceloSkuGroup in cancelOskuGroups)
@ -154,33 +101,6 @@ namespace BBWY.Server.Business
insertSkuDailySalesDetailList.Add(canceloSkuGroup);
}
foreach (var giftOskuGroup in giftOskuGroups)
{
var skuDaily = insertSkuDailySalesDetailList.FirstOrDefault(s => s.ShopId == giftOskuGroup.ShopId &&
s.Date == giftOskuGroup.Date &&
s.Sku == giftOskuGroup.Sku);
if (skuDaily != null)
{
skuDaily.ItemTotal += giftOskuGroup.ItemTotal;
skuDaily.Amount += giftOskuGroup.Amount;
}
else
insertSkuDailySalesDetailList.Add(giftOskuGroup);
}
foreach (var cancelGiftOskuGroup in cancelGiftOskuGroups)
{
var skuDaily = insertSkuDailySalesDetailList.FirstOrDefault(s => s.ShopId == cancelGiftOskuGroup.ShopId &&
s.Date == cancelGiftOskuGroup.Date &&
s.Sku == cancelGiftOskuGroup.Sku);
if (skuDaily != null)
skuDaily.CancelItemTotal = cancelGiftOskuGroup.CancelItemTotal;
else
insertSkuDailySalesDetailList.Add(cancelGiftOskuGroup);
}
if (insertSkuDailySalesDetailList.Count() > 0)
{
var noSpuSkuIds = insertSkuDailySalesDetailList.Where(s => string.IsNullOrEmpty(s.Spu)).Select(s => s.Sku).Distinct().ToList();

121
BBWY.Server.Business/Sync/OrderSyncBusiness.cs

@ -192,10 +192,9 @@ namespace BBWY.Server.Business
private void SyncJDOrder(JArray orderTokenJArray, long shopId, string relayAPIHost, string appKey, string appSecret, string appToken, decimal platformCommissionRatio)
{
//if (shopId == 10388155)
//{
// nLogManager.GetLogger("订单同步-布莱特玩具专营店").Info(JsonConvert.SerializeObject(orderTokenJArray));
//}
var validOrders = orderTokenJArray.Where(o => o.Value<string>("orderState") != "NOT_PAY");
if (validOrders.Count() == 0)
return;
#region 数据库操作
List<Order> insertOrderList = new List<Order>();
@ -205,90 +204,13 @@ namespace BBWY.Server.Business
List<OrderSku> insertOrderSkuList = new List<OrderSku>();
List<OrderCoupon> insertOrderCouponList = new List<OrderCoupon>();
List<GiftOrder> insertGiftOrderList = new List<GiftOrder>();
List<GiftOrderSku> insertGiftOrderSkuList = new List<GiftOrderSku>();
IList<IUpdate<GiftOrder>> updateGiftOrderList = new List<IUpdate<GiftOrder>>();
IList<IUpdate<Order>> updateOrderList = new List<IUpdate<Order>>();
IList<IUpdate<PurchaseOrder>> updatePurchaseOrderList = new List<IUpdate<PurchaseOrder>>();
#endregion
#region 赠品
var giftOrderJArray = orderTokenJArray.Where(o => o.Value<decimal>("orderTotalPrice") == 0M);
if (giftOrderJArray.Count() > 0)
{
var giftOrderIds = giftOrderJArray.Select(orderJToken => orderJToken.Value<string>("orderId")).ToArray();
var dbGiftOrderList = fsql.Select<GiftOrder>(giftOrderIds).ToList();
var dbGiftOrderIds = dbGiftOrderList.Select(go => go.Id).ToList();
var exceptIds = giftOrderIds.Except(dbGiftOrderIds);
if (exceptIds.Count() > 0)
{
var newGiftOrderJArray = giftOrderJArray.Where(o => exceptIds.Contains(o.Value<string>("orderId")));
foreach (var orderJToken in newGiftOrderJArray)
{
var orderState = ConvertOrderState(orderJToken);
if (orderState == Enums.OrderState. || orderState == Enums.OrderState.)
continue;
var orderStartTime = orderJToken.Value<DateTime>("orderStartTime");
var modifyTime = orderJToken.Value<DateTime?>("modified");
insertGiftOrderList.Add(new GiftOrder()
{
Id = orderJToken.Value<string>("orderId"),
CreateTime = DateTime.Now,
Platform = Enums.Platform.,
ShopId = shopId,
StartTime = orderStartTime,
ModifyTime = modifyTime,
OrderState = orderState
});
var itemInfoList = orderJToken["itemInfoList"] as JArray;
foreach (var orderSkuJToken in itemInfoList)
{
var itemTotal = orderSkuJToken.Value<int>("itemTotal");
var jdPrice = orderSkuJToken.Value<decimal>("jdPrice");
var wareId = orderSkuJToken.Value<string>("wareId");
var skuId = orderSkuJToken.Value<string>("skuId");
insertGiftOrderSkuList.Add(new GiftOrderSku()
{
Id = idGenerator.NewLong(),
CreateTime = DateTime.Now,
GiftOrderId = orderJToken.Value<string>("orderId"),
ItemTotal = itemTotal,
Price = jdPrice,
ProductId = wareId,
ShopId = shopId,
SkuId = skuId
});
}
}
}
var intersectIds = giftOrderIds.Intersect(dbGiftOrderIds);
if (intersectIds.Count() > 0)
{
foreach (var intersercId in intersectIds)
{
var orderJToken = giftOrderJArray.FirstOrDefault(o => o.Value<string>("orderId") == intersercId);
var dbGiftOrder = dbGiftOrderList.FirstOrDefault(o => o.Id == intersercId);
var orderState = ConvertOrderState(orderJToken);
if (orderState != null && orderState != dbGiftOrder.OrderState)
{
var modifyTime = orderJToken.Value<DateTime?>("modified");
var update = fsql.Update<GiftOrder>(intersercId).Set(go => go.OrderState, orderState)
.Set(go => go.ModifyTime, modifyTime);
updateGiftOrderList.Add(update);
}
}
}
}
#endregion
var noGiftOrderList = orderTokenJArray.Where(o => o.Value<decimal>("orderTotalPrice") != 0M);
var interfaceOrderIdList = noGiftOrderList.Select(orderJToken => orderJToken.Value<string>("orderId"));
var interfaceCanceledOrderIdList = noGiftOrderList.Where(orderJToken => orderJToken.Value<string>("orderState").Equals("TRADE_CANCELED"))
var interfaceOrderIdList = validOrders.Select(orderJToken => orderJToken.Value<string>("orderId"));
var interfaceCanceledOrderIdList = validOrders.Where(orderJToken => orderJToken.Value<string>("orderState").Equals("TRADE_CANCELED"))
.Select(orderJToken => orderJToken.Value<string>("orderId")); //接口查询结果中取消状态的订单Id
var dbOrderList = fsql.Select<Order>().Where(o => interfaceOrderIdList.Contains(o.Id)).ToList(o => new Order()
@ -309,7 +231,7 @@ namespace BBWY.Server.Business
}
var orderSkuIds = new List<string>();
foreach (var orderJToken in noGiftOrderList)
foreach (var orderJToken in validOrders)
{
var itemInfoList = orderJToken["itemInfoList"].Where(skuJToken => skuJToken.Value<decimal>("jdPrice") != 0M);
foreach (var josku in itemInfoList)
@ -319,13 +241,13 @@ namespace BBWY.Server.Business
orderSkuIds.Add(skuId);
}
}
var dbPurchaseOrderList = fsql.Select<PurchaseOrder>().Where(po => po.RemainingQuantity != 0 && orderSkuIds.Contains(po.SkuId)).ToList(); //数据库采购单
var dbPurchaseOrderList = fsql.Select<PurchaseOrder>().Where(po => po.ShopId == shopId && po.RemainingQuantity != 0 && orderSkuIds.Contains(po.SkuId)).ToList(); //数据库采购单
orderSkuIds.Clear();
foreach (var orderJToken in noGiftOrderList)
foreach (var orderJToken in validOrders)
{
var orderId = orderJToken.Value<string>("orderId");
if (insertOrderList.Count(o => o.Id == orderId) > 0)
if (insertOrderList.Any(o => o.Id == orderId))
continue;
var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == orderId);
var isNewOrder = dbOrder == null;
@ -358,7 +280,8 @@ namespace BBWY.Server.Business
//VenderId = orderJToken.Value<long>("venderId"),
WaybillNo = waybillNo,
StoreOrder = orderJToken.Value<string>("storeOrder") ?? string.Empty,
StoreId = orderJToken.Value<string>("storeId")
StoreId = orderJToken.Value<string>("storeId"),
IsGift = orderJToken.Value<decimal>("orderTotalPrice") == 0M || orderJToken.Value<decimal>("orderSellerPrice") == 0M
};
if (memoryCache.TryGetValue(orderId, out sDCalculationCostRequest))
@ -620,6 +543,7 @@ namespace BBWY.Server.Business
if (isNewOrder)
{
dbOrder.OrderState = orderState;
//dbOrder.IsGift =
}
else if ((orderState != null && orderState != dbOrder.OrderState) ||
buyerRemark != dbOrder.BuyerRemark ||
@ -684,8 +608,6 @@ namespace BBWY.Server.Business
}
#endregion
fsql.Transaction(() =>
{
if (insertOrderList.Count() > 0)
@ -701,11 +623,6 @@ namespace BBWY.Server.Business
if (insertOrderCouponList.Count() > 0)
fsql.Insert(insertOrderCouponList).ExecuteAffrows();
if (insertGiftOrderList.Count() > 0)
fsql.Insert(insertGiftOrderList).ExecuteAffrows();
if (insertGiftOrderSkuList.Count() > 0)
fsql.Insert(insertGiftOrderSkuList).ExecuteAffrows();
if (updatePurchaseOrderList.Count() > 0)
{
foreach (var update in updatePurchaseOrderList)
@ -717,13 +634,6 @@ namespace BBWY.Server.Business
foreach (var update in updateOrderList)
update.ExecuteAffrows();
}
if (updateGiftOrderList.Count() > 0)
{
foreach (var update in updateGiftOrderList)
update.ExecuteAffrows();
}
});
}
@ -838,7 +748,7 @@ namespace BBWY.Server.Business
#region 同步暂停订单
public void CheckJDPauseOrder(long? shopId)
{
var shopList = venderBusiness.GetShopList(shopId);
var shopList = venderBusiness.GetShopList(shopId, platform: Enums.Platform.);
var shopIds = shopList.Select(s => long.Parse(s.ShopId)).ToList();
var deleteRow = fsql.Select<WaitPayOrder>().Where(wo => shopIds.Contains(wo.ShopId.Value))
@ -869,6 +779,11 @@ namespace BBWY.Server.Business
}
}
public void DeleteTimeOutWaitPayOrder()
{
var deleteTime = DateTime.Now.AddHours(-24);
fsql.Delete<WaitPayOrder>().Where(w => w.CreateTime <= deleteTime).ExecuteAffrows();
}
#endregion
}
}

34
BBWY.Server.Model/Db/Order/GiftOrder.cs

@ -1,34 +0,0 @@
using FreeSql.DataAnnotations;
using System;
namespace BBWY.Server.Model.Db
{
[Table(Name = "giftorder", DisableSyncStructure = true)]
public partial class GiftOrder
{
[Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
public string Id { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
[Column(DbType = "datetime")]
public DateTime? ModifyTime { get; set; }
[Column(MapType = typeof(int?))]
public Enums.OrderState? OrderState { get; set; }
[Column(MapType = typeof(int))]
public Enums.Platform Platform { get; set; }
public long ShopId { get; set; }
[Column(DbType = "datetime")]
public DateTime? StartTime { get; set; }
}
}

36
BBWY.Server.Model/Db/Order/GiftOrderSku.cs

@ -1,36 +0,0 @@
using FreeSql.DataAnnotations;
using System;
namespace BBWY.Server.Model.Db
{
[Table(Name = "giftordersku", DisableSyncStructure = true)]
public partial class GiftOrderSku {
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
[Column(StringLength = 50)]
public string GiftOrderId { get; set; }
public long? Id { get; set; }
public int? ItemTotal { get; set; }
[Column(DbType = "decimal(18,2)")]
public decimal? Price { get; set; }
[Column(StringLength = 50)]
public string ProductId { get; set; }
public long? ShopId { get; set; }
[Column(StringLength = 50)]
public string SkuId { get; set; }
}
}

2
JD.API/Controllers/PlatformSDKController.cs

@ -16,7 +16,7 @@ namespace JD.API.API.Controllers
[Produces("application/json")]
[Route("Api/[Controller]/[Action]")]
[ApiController]
[ServiceFilter(typeof(YunDingFilter))]
//[ServiceFilter(typeof(YunDingFilter))]
public class PlatformSDKController : ControllerBase
{
private IEnumerable<PlatformSDKBusiness> platformSDKBusinessList;

Loading…
Cancel
Save