shanji 3 years ago
parent
commit
64cd680173
  1. 14
      BBWY.Server.Business/Order/OrderBusiness.cs
  2. 4
      BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  3. 2
      BBWY.Server.Business/Statistics/StatisticsBusiness.cs
  4. 2
      BBWY.Server.Business/Sync/JD/JDPopularizeReportFormAdLevelSyncBusiness.cs
  5. 301
      BBWY.Server.Business/Sync/OrderSyncBusiness.cs
  6. 8
      BBWY.Server.Model/Db/Order/GiftOrder.cs
  7. 36
      BBWY.Server.Model/Db/Order/GiftOrderSku.cs

14
BBWY.Server.Business/Order/OrderBusiness.cs

@ -186,7 +186,9 @@ namespace BBWY.Server.Business
#endregion
#region 处理Sku
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList().Map<IList<OrderSkuResponse>>();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 &&
orderIdList.Contains(osku.OrderId)).ToList()
.Map<IList<OrderSkuResponse>>();
foreach (var order in orderList)
{
order.ItemList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList();
@ -294,7 +296,7 @@ namespace BBWY.Server.Business
});
var orderIdList = orderSourceList.Select(o => o.OrderId).ToList();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && orderIdList.Contains(osku.OrderId)).ToList();
var orderCostDetailGroup = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true)
.GroupBy(ocd => ocd.OrderId).ToList(g => new
{
@ -344,7 +346,7 @@ namespace BBWY.Server.Business
throw new BusinessException("订单不存在");
var orderResponse = order.Map<OrderResponse>();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == orderId).ToList().Map<IList<OrderSkuResponse>>();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && osku.OrderId == orderId).ToList().Map<IList<OrderSkuResponse>>();
var orderCouponList = fsql.Select<OrderCoupon>().Where(oc => oc.OrderId == orderId).ToList().Map<IList<OrderCouponResponse>>();
var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == orderId && ocd.IsEnabled == true).ToList().Map<IList<OrderCostDetailResponse>>();
var orderDropShippingList = fsql.Select<OrderDropShipping>().Where(ods => ods.OrderId == orderId).ToList().Map<IList<OrderDropShippingResponse>>();
@ -438,7 +440,7 @@ namespace BBWY.Server.Business
if (dbOrder == null)
throw new BusinessException($"订单号{autoCalculationCostRequest.OrderId}不存在");
var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.OrderId == autoCalculationCostRequest.OrderId).ToList();
var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && osku.OrderId == autoCalculationCostRequest.OrderId).ToList();
var orderSkuIds = orderSkus.Select(osku => osku.SkuId).ToList();
var purchaserOrders = fsql.Select<PurchaseOrder>().Where(po => po.StorageType == autoCalculationCostRequest.StorageType &&
po.RemainingQuantity != 0 &&
@ -592,7 +594,7 @@ namespace BBWY.Server.Business
IUpdate<OrderCost> updateOrderCost = null;
IInsert<OrderCost> insertOrderCost = null;
List<OrderCostDetail> insertOrderCostDetailList = new List<OrderCostDetail>();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == manualCalculationCostRequest.OrderId).ToList(osku => new
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && osku.OrderId == manualCalculationCostRequest.OrderId).ToList(osku => new
{
osku.SkuId,
osku.Price,
@ -784,7 +786,7 @@ namespace BBWY.Server.Business
List<PurchaseOrder> insertPurchaseOrderList = new List<PurchaseOrder>();
List<OrderCostDetail> insertOrderCostDetailList = new List<OrderCostDetail>();
var dbOrderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == dbOrder.Id).ToList();
var dbOrderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && osku.OrderId == dbOrder.Id).ToList();
var oldPourchaseIdList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == dbOrder.Id)
.ToList(ocd => ocd.PurchaseOrderPKId);

4
BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -164,7 +164,7 @@ namespace BBWY.Server.Business
}
#endregion
var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.OrderId == createOnlinePurchaseOrderRequest.OrderId).ToList();
var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && osku.OrderId == createOnlinePurchaseOrderRequest.OrderId).ToList();
var orderSkuIds = orderSkus.Select(osku => osku.Id).ToList();
var createOrderResponse = platformSDKBusinessList.FirstOrDefault(p => p.Platform == createOnlinePurchaseOrderRequest.Platform)
@ -557,7 +557,7 @@ namespace BBWY.Server.Business
#region 查询订单Sku
currentProgress = "查询订单Sku";
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == orderDropshipping.OrderId).ToList();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && osku.OrderId == orderDropshipping.OrderId).ToList();
if (orderSkuList == null || orderSkuList.Count() == 0)
throw new BusinessException("订单Sku不存在");
#endregion

2
BBWY.Server.Business/Statistics/StatisticsBusiness.cs

@ -191,7 +191,7 @@ namespace BBWY.Server.Business
var orderIdList = orderList.Select(o => o.Id).ToList();
//查询orderSku
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && orderIdList.Contains(osku.OrderId)).ToList();
//查询成本明细
var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList();

2
BBWY.Server.Business/Sync/JD/JDPopularizeReportFormAdLevelSyncBusiness.cs

@ -129,7 +129,7 @@ namespace BBWY.Server.Business.Sync
{
if (jArray == null || !jArray.HasValues)
return;
var insertList = new List<JDPopularizeAdSku>();
var insertList = new List<JDPopularizeAdSku>();
foreach (var j in jArray)
{
var adName = j.Value<string>("adName");

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

@ -164,10 +164,10 @@ 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));
}
//if (shopId == 10388155)
//{
// nLogManager.GetLogger("订单同步-布莱特玩具专营店").Info(JsonConvert.SerializeObject(orderTokenJArray));
//}
#region 数据库操作
List<Order> insertOrderList = new List<Order>();
@ -176,14 +176,13 @@ namespace BBWY.Server.Business
List<OrderCostDetail> insertOrderCostDetailList = new List<OrderCostDetail>();
List<OrderSku> insertOrderSkuList = new List<OrderSku>();
List<OrderCoupon> insertOrderCouponList = new List<OrderCoupon>();
List<SkuDailySalesDetail> insertSkuDailySaleDetailList = new List<SkuDailySalesDetail>();
List<Giftorder> insertGiftorderList = new List<Giftorder>();
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>>();
IList<IUpdate<SkuDailySalesDetail>> updateSkuDailySalesDetailList = new List<IUpdate<SkuDailySalesDetail>>();
Dictionary<DateTime, List<SkuDailySalesDetail>> skuDailySalesDetailDictionary = new Dictionary<DateTime, List<SkuDailySalesDetail>>();
#endregion
#region 赠品
@ -191,7 +190,9 @@ namespace BBWY.Server.Business
if (giftOrderJArray.Count() > 0)
{
var giftOrderIds = giftOrderJArray.Select(orderJToken => orderJToken.Value<string>("orderId")).ToArray();
var dbGiftOrderIds = fsql.Select<Giftorder>(giftOrderIds).ToList(o => o.Id);
var dbGiftOrderList = fsql.Select<GiftOrder>(giftOrderIds).ToList();
var dbGiftOrderIds = dbGiftOrderList.Select(go => go.Id).ToList();
var exceptIds = giftOrderIds.Except(dbGiftOrderIds);
if (exceptIds.Count() > 0)
{
@ -199,13 +200,16 @@ namespace BBWY.Server.Business
foreach (var orderJToken in newGiftOrderJArray)
{
var orderStartTime = orderJToken.Value<DateTime>("orderStartTime");
insertGiftorderList.Add(new Giftorder()
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
StartTime = orderStartTime,
ModifyTime = modifyTime,
OrderState = ConvertOrderState(orderJToken)
});
var itemInfoList = orderJToken["itemInfoList"] as JArray;
@ -215,8 +219,33 @@ namespace BBWY.Server.Business
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
});
}
}
}
CumulativeSkuDailySalesDetail(skuDailySalesDetailDictionary, orderStartTime, shopId, skuId, wareId, jdPrice, itemTotal);
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 update = fsql.Update<GiftOrder>(intersercId).Set(go => go.OrderState, orderState);
updateGiftOrderList.Add(update);
}
}
}
@ -330,24 +359,23 @@ namespace BBWY.Server.Business
var wareId = orderSkuJToken.Value<string>("wareId");
var skuId = orderSkuJToken.Value<string>("skuId");
if (orderSkuJToken.Value<decimal>("jdPrice") != 0M)
//if (orderSkuJToken.Value<decimal>("jdPrice") != 0M)
//{
var osku = new OrderSku()
{
var osku = new OrderSku()
{
Id = idGenerator.NewLong(),
ItemTotal = itemTotal,
Price = jdPrice,
ProductId = wareId,
Title = orderSkuJToken.Value<string>("skuName").SimplifySkuName(),
ProductNo = orderSkuJToken.Value<string>("productNo"),
CreateTime = DateTime.Now,
OrderId = orderId,
SkuId = skuId
};
insertOrderSkuList.Add(osku);
}
CumulativeSkuDailySalesDetail(skuDailySalesDetailDictionary, dbOrder.StartTime.Value, shopId, skuId, wareId, jdPrice, itemTotal);
Id = idGenerator.NewLong(),
ItemTotal = itemTotal,
Price = jdPrice,
ProductId = wareId,
Title = orderSkuJToken.Value<string>("skuName").SimplifySkuName(),
ProductNo = orderSkuJToken.Value<string>("productNo"),
CreateTime = DateTime.Now,
OrderId = orderId,
SkuId = skuId
};
insertOrderSkuList.Add(osku);
//}
//CumulativeSkuDailySalesDetail(skuDailySalesDetailDictionary, dbOrder.StartTime.Value, shopId, skuId, wareId, jdPrice, itemTotal);
}
#endregion
@ -398,65 +426,7 @@ namespace BBWY.Server.Business
#endregion
#region 订单状态转换
var jdOrderState = orderJToken.Value<string>("orderState");
Enums.OrderState? orderState = null;
#region SOP状态翻译
if (jdOrderState.Equals("NOT_PAY")) //未付款
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("WAIT_SELLER_STOCK_OUT")) //等待出库
{
orderState = Enums.OrderState.;
if (dbOrder.StorageType != null)
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("WAIT_GOODS_RECEIVE_CONFIRM"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("FINISHED_L"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("LOCKED"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("TRADE_CANCELED"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("POP_ORDER_PAUSE") || jdOrderState.Equals("PAUSE"))
{
orderState = Enums.OrderState.;
}
#endregion
#region FBP状态翻译
else if (jdOrderState.Equals("DengDaiDaYin") || jdOrderState.Equals("DengDaiChuKu") || jdOrderState.Equals("DengDaiDaBao") || jdOrderState.Equals("DengDaiFaHuo"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("DengDaiQueRenShouHuo"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("WanCheng"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("SuoDing") || jdOrderState.Equals("LOCKED"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("TRADE_CANCELED"))
{
orderState = Enums.OrderState.;
}
#endregion
var orderState = ConvertOrderState(orderJToken, dbOrder.StorageType);
#endregion
#region 取消订单恢复库存
@ -677,47 +647,6 @@ namespace BBWY.Server.Business
}
#endregion
#region sku销量统计
if (skuDailySalesDetailDictionary.Keys.Count > 0)
{
foreach (var date in skuDailySalesDetailDictionary.Keys)
{
var skuDailySalesDetailList = skuDailySalesDetailDictionary[date];
var skuDailySalesDetailIds = skuDailySalesDetailList.Select(s => s.Sku).ToList();
var dbSkuDailySalesDetailList = fsql.Select<SkuDailySalesDetail>().Where(s => s.ShopId == shopId &&
s.Date == date &&
skuDailySalesDetailIds.Contains(s.Sku)).ToList();
var dbSkuDailySalesDetailIds = dbSkuDailySalesDetailList.Select(s => s.Sku);
var exceptIds = skuDailySalesDetailIds.Except(dbSkuDailySalesDetailIds).ToList();
if (exceptIds.Count() > 0)
{
var insertList = skuDailySalesDetailList.Where(s => exceptIds.Contains(s.Sku));
foreach (var s in insertList)
{
s.Id = idGenerator.NewLong();
s.CreateTime = DateTime.Now;
insertSkuDailySaleDetailList.Add(s);
}
}
var intersectIds = skuDailySalesDetailIds.Intersect(dbSkuDailySalesDetailIds).ToList();
if (intersectIds.Count() > 0)
{
foreach (var intersectId in intersectIds)
{
var skudaily = skuDailySalesDetailList.FirstOrDefault(s => s.Sku == intersectId);
var dbSkudaily = dbSkuDailySalesDetailList.FirstOrDefault(s => s.Sku == intersectId);
var update = fsql.Update<SkuDailySalesDetail>(dbSkudaily.Id).Set(ds => ds.Amount + skudaily.Amount)
.Set(ds => ds.OrderCount + skudaily.OrderCount)
.Set(ds => ds.ItemTotal + skudaily.ItemTotal);
updateSkuDailySalesDetailList.Add(update);
}
}
}
}
#endregion
fsql.Transaction(() =>
{
if (insertOrderList.Count() > 0)
@ -732,10 +661,11 @@ namespace BBWY.Server.Business
fsql.Insert(insertOrderCostDetailList).ExecuteAffrows();
if (insertOrderCouponList.Count() > 0)
fsql.Insert(insertOrderCouponList).ExecuteAffrows();
if (insertSkuDailySaleDetailList.Count() > 0)
fsql.Insert(insertSkuDailySaleDetailList).ExecuteAffrows();
if (insertGiftorderList.Count > 0)
fsql.Insert(insertGiftorderList).ExecuteAffrows();
if (insertGiftOrderList.Count() > 0)
fsql.Insert(insertGiftOrderList).ExecuteAffrows();
if (insertGiftOrderSkuList.Count() > 0)
fsql.Insert(insertGiftOrderSkuList).ExecuteAffrows();
if (updatePurchaseOrderList.Count() > 0)
{
@ -749,9 +679,12 @@ namespace BBWY.Server.Business
update.ExecuteAffrows();
}
if (updateSkuDailySalesDetailList.Count > 0)
foreach (var update in updateSkuDailySalesDetailList)
if (updateGiftOrderList.Count() > 0)
{
foreach (var update in updateGiftOrderList)
update.ExecuteAffrows();
}
});
}
@ -768,47 +701,73 @@ namespace BBWY.Server.Business
}
/// <summary>
/// 累计
/// 转换订单状态
/// </summary>
/// <param name="skuDailySalesDetailDictionary"></param>
/// <param name="orderStartTime"></param>
/// <param name="shopId"></param>
/// <param name="skuId"></param>
/// <param name="spuId"></param>
/// <param name="price"></param>
/// <param name="itemTotal"></param>
private void CumulativeSkuDailySalesDetail(Dictionary<DateTime, List<SkuDailySalesDetail>> skuDailySalesDetailDictionary,
DateTime orderStartTime,
long shopId,
string skuId,
string spuId,
decimal price,
int itemTotal)
/// <param name="orderJToken"></param>
/// <param name="storageType"></param>
/// <returns></returns>
private Enums.OrderState? ConvertOrderState(JToken orderJToken, Enums.StorageType? storageType = null)
{
var startDate = orderStartTime.Date;
if (!skuDailySalesDetailDictionary.TryGetValue(startDate, out List<SkuDailySalesDetail> skuDailySalesDetailList))
var jdOrderState = orderJToken.Value<string>("orderState");
Enums.OrderState? orderState = null;
#region SOP状态翻译
if (jdOrderState.Equals("NOT_PAY")) //未付款
{
skuDailySalesDetailList = new List<SkuDailySalesDetail>();
skuDailySalesDetailDictionary.Add(startDate, skuDailySalesDetailList);
orderState = Enums.OrderState.;
}
var skuDailySalesDetail = skuDailySalesDetailList.FirstOrDefault(s => s.Sku == skuId);
if (skuDailySalesDetail == null)
else if (jdOrderState.Equals("WAIT_SELLER_STOCK_OUT")) //等待出库
{
skuDailySalesDetail = new SkuDailySalesDetail()
{
ShopId = shopId,
Spu = spuId,
Sku = skuId,
Platform = Enums.Platform.,
Price = price,
Date = startDate,
IsGift = price == 0M
};
skuDailySalesDetailList.Add(skuDailySalesDetail);
orderState = Enums.OrderState.;
if (storageType != null)
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("WAIT_GOODS_RECEIVE_CONFIRM"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("FINISHED_L"))
{
orderState = Enums.OrderState.;
}
skuDailySalesDetail.Amount += price * itemTotal;
skuDailySalesDetail.ItemTotal += itemTotal;
skuDailySalesDetail.OrderCount++;
else if (jdOrderState.Equals("LOCKED"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("TRADE_CANCELED"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("POP_ORDER_PAUSE") || jdOrderState.Equals("PAUSE"))
{
orderState = Enums.OrderState.;
}
#endregion
#region FBP状态翻译
else if (jdOrderState.Equals("DengDaiDaYin") || jdOrderState.Equals("DengDaiChuKu") || jdOrderState.Equals("DengDaiDaBao") || jdOrderState.Equals("DengDaiFaHuo"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("DengDaiQueRenShouHuo"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("WanCheng"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("SuoDing") || jdOrderState.Equals("LOCKED"))
{
orderState = Enums.OrderState.;
}
else if (jdOrderState.Equals("TRADE_CANCELED"))
{
orderState = Enums.OrderState.;
}
#endregion
return orderState;
}
}
}

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

@ -5,7 +5,7 @@ namespace BBWY.Server.Model.Db
{
[Table(Name = "giftorder", DisableSyncStructure = true)]
public partial class Giftorder
public partial class GiftOrder
{
[Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
@ -14,6 +14,12 @@ namespace BBWY.Server.Model.Db
[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; }

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

@ -0,0 +1,36 @@
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; }
}
}
Loading…
Cancel
Save