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); 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) 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); insertSkuDailySalesDetailList.AddRange(oskuGroups);
foreach (var canceloSkuGroup in cancelOskuGroups) foreach (var canceloSkuGroup in cancelOskuGroups)
@ -154,33 +101,6 @@ namespace BBWY.Server.Business
insertSkuDailySalesDetailList.Add(canceloSkuGroup); 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) if (insertSkuDailySalesDetailList.Count() > 0)
{ {
var noSpuSkuIds = insertSkuDailySalesDetailList.Where(s => string.IsNullOrEmpty(s.Spu)).Select(s => s.Sku).Distinct().ToList(); 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) private void SyncJDOrder(JArray orderTokenJArray, long shopId, string relayAPIHost, string appKey, string appSecret, string appToken, decimal platformCommissionRatio)
{ {
//if (shopId == 10388155) var validOrders = orderTokenJArray.Where(o => o.Value<string>("orderState") != "NOT_PAY");
//{ if (validOrders.Count() == 0)
// nLogManager.GetLogger("订单同步-布莱特玩具专营店").Info(JsonConvert.SerializeObject(orderTokenJArray)); return;
//}
#region 数据库操作 #region 数据库操作
List<Order> insertOrderList = new List<Order>(); List<Order> insertOrderList = new List<Order>();
@ -205,90 +204,13 @@ namespace BBWY.Server.Business
List<OrderSku> insertOrderSkuList = new List<OrderSku>(); List<OrderSku> insertOrderSkuList = new List<OrderSku>();
List<OrderCoupon> insertOrderCouponList = new List<OrderCoupon>(); 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<Order>> updateOrderList = new List<IUpdate<Order>>();
IList<IUpdate<PurchaseOrder>> updatePurchaseOrderList = new List<IUpdate<PurchaseOrder>>(); IList<IUpdate<PurchaseOrder>> updatePurchaseOrderList = new List<IUpdate<PurchaseOrder>>();
#endregion #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); var interfaceOrderIdList = validOrders.Select(orderJToken => orderJToken.Value<string>("orderId"));
if (exceptIds.Count() > 0) var interfaceCanceledOrderIdList = validOrders.Where(orderJToken => orderJToken.Value<string>("orderState").Equals("TRADE_CANCELED"))
{
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"))
.Select(orderJToken => orderJToken.Value<string>("orderId")); //接口查询结果中取消状态的订单Id .Select(orderJToken => orderJToken.Value<string>("orderId")); //接口查询结果中取消状态的订单Id
var dbOrderList = fsql.Select<Order>().Where(o => interfaceOrderIdList.Contains(o.Id)).ToList(o => new Order() 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>(); 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); var itemInfoList = orderJToken["itemInfoList"].Where(skuJToken => skuJToken.Value<decimal>("jdPrice") != 0M);
foreach (var josku in itemInfoList) foreach (var josku in itemInfoList)
@ -319,13 +241,13 @@ namespace BBWY.Server.Business
orderSkuIds.Add(skuId); 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(); orderSkuIds.Clear();
foreach (var orderJToken in noGiftOrderList) foreach (var orderJToken in validOrders)
{ {
var orderId = orderJToken.Value<string>("orderId"); var orderId = orderJToken.Value<string>("orderId");
if (insertOrderList.Count(o => o.Id == orderId) > 0) if (insertOrderList.Any(o => o.Id == orderId))
continue; continue;
var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == orderId); var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == orderId);
var isNewOrder = dbOrder == null; var isNewOrder = dbOrder == null;
@ -358,7 +280,8 @@ namespace BBWY.Server.Business
//VenderId = orderJToken.Value<long>("venderId"), //VenderId = orderJToken.Value<long>("venderId"),
WaybillNo = waybillNo, WaybillNo = waybillNo,
StoreOrder = orderJToken.Value<string>("storeOrder") ?? string.Empty, 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)) if (memoryCache.TryGetValue(orderId, out sDCalculationCostRequest))
@ -620,6 +543,7 @@ namespace BBWY.Server.Business
if (isNewOrder) if (isNewOrder)
{ {
dbOrder.OrderState = orderState; dbOrder.OrderState = orderState;
//dbOrder.IsGift =
} }
else if ((orderState != null && orderState != dbOrder.OrderState) || else if ((orderState != null && orderState != dbOrder.OrderState) ||
buyerRemark != dbOrder.BuyerRemark || buyerRemark != dbOrder.BuyerRemark ||
@ -684,8 +608,6 @@ namespace BBWY.Server.Business
} }
#endregion #endregion
fsql.Transaction(() => fsql.Transaction(() =>
{ {
if (insertOrderList.Count() > 0) if (insertOrderList.Count() > 0)
@ -701,11 +623,6 @@ namespace BBWY.Server.Business
if (insertOrderCouponList.Count() > 0) if (insertOrderCouponList.Count() > 0)
fsql.Insert(insertOrderCouponList).ExecuteAffrows(); fsql.Insert(insertOrderCouponList).ExecuteAffrows();
if (insertGiftOrderList.Count() > 0)
fsql.Insert(insertGiftOrderList).ExecuteAffrows();
if (insertGiftOrderSkuList.Count() > 0)
fsql.Insert(insertGiftOrderSkuList).ExecuteAffrows();
if (updatePurchaseOrderList.Count() > 0) if (updatePurchaseOrderList.Count() > 0)
{ {
foreach (var update in updatePurchaseOrderList) foreach (var update in updatePurchaseOrderList)
@ -717,13 +634,6 @@ namespace BBWY.Server.Business
foreach (var update in updateOrderList) foreach (var update in updateOrderList)
update.ExecuteAffrows(); update.ExecuteAffrows();
} }
if (updateGiftOrderList.Count() > 0)
{
foreach (var update in updateGiftOrderList)
update.ExecuteAffrows();
}
}); });
} }
@ -838,7 +748,7 @@ namespace BBWY.Server.Business
#region 同步暂停订单 #region 同步暂停订单
public void CheckJDPauseOrder(long? shopId) 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 shopIds = shopList.Select(s => long.Parse(s.ShopId)).ToList();
var deleteRow = fsql.Select<WaitPayOrder>().Where(wo => shopIds.Contains(wo.ShopId.Value)) 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 #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")] [Produces("application/json")]
[Route("Api/[Controller]/[Action]")] [Route("Api/[Controller]/[Action]")]
[ApiController] [ApiController]
[ServiceFilter(typeof(YunDingFilter))] //[ServiceFilter(typeof(YunDingFilter))]
public class PlatformSDKController : ControllerBase public class PlatformSDKController : ControllerBase
{ {
private IEnumerable<PlatformSDKBusiness> platformSDKBusinessList; private IEnumerable<PlatformSDKBusiness> platformSDKBusinessList;

Loading…
Cancel
Save