|
|
@ -12,6 +12,9 @@ using System.IO; |
|
|
|
using System.Linq; |
|
|
|
using System.Threading; |
|
|
|
using BBWY.Server.Business.Extensions; |
|
|
|
using Newtonsoft.Json; |
|
|
|
using System.Net.Http; |
|
|
|
using System.Threading.Tasks; |
|
|
|
|
|
|
|
namespace BBWY.Server.Business |
|
|
|
{ |
|
|
@ -21,18 +24,21 @@ namespace BBWY.Server.Business |
|
|
|
private VenderBusiness venderBusiness; |
|
|
|
private IFreeSql fsql; |
|
|
|
private OrderSyncBusiness orderSyncBusiness; |
|
|
|
private TaskSchedulerManager taskSchedulerManager; |
|
|
|
public TestBusiness(RestApiService restApiService, |
|
|
|
IOptions<GlobalConfig> options, |
|
|
|
FreeSqlMultiDBManager freeSqlMultiDBManager, |
|
|
|
VenderBusiness venderBusiness, |
|
|
|
YunDingBusiness yunDingBusiness, |
|
|
|
IFreeSql fsql, |
|
|
|
OrderSyncBusiness orderSyncBusiness) : base(restApiService, options, yunDingBusiness) |
|
|
|
OrderSyncBusiness orderSyncBusiness, |
|
|
|
TaskSchedulerManager taskSchedulerManager) : base(restApiService, options, yunDingBusiness) |
|
|
|
{ |
|
|
|
this.freeSqlMultiDBManager = freeSqlMultiDBManager; |
|
|
|
this.venderBusiness = venderBusiness; |
|
|
|
this.fsql = fsql; |
|
|
|
this.orderSyncBusiness = orderSyncBusiness; |
|
|
|
this.taskSchedulerManager = taskSchedulerManager; |
|
|
|
} |
|
|
|
|
|
|
|
public void SyncVenderId() |
|
|
@ -164,101 +170,130 @@ namespace BBWY.Server.Business |
|
|
|
"瑞源玩具专营店" |
|
|
|
}; |
|
|
|
var shopList = venderBusiness.GetShopList(request.ShopId, Enums.Platform.京东); |
|
|
|
var shopIndex = 0; |
|
|
|
//var shopIndex = 0;
|
|
|
|
|
|
|
|
foreach (var shop in shopList) |
|
|
|
{ |
|
|
|
shopIndex++; |
|
|
|
Console.WriteLine($"shopProgress {shopIndex}/{shopList.Count()}"); |
|
|
|
var shopId = long.Parse(shop.ShopId); |
|
|
|
if (banedList.Contains(shop.ShopName)) |
|
|
|
continue; |
|
|
|
var orderIdList = fsql.Select<Order>() |
|
|
|
.Where(o => o.ShopId == shopId && |
|
|
|
o.OrderState != Enums.OrderState.已取消 && |
|
|
|
o.StorageType != Enums.StorageType.SD && |
|
|
|
o.StartTime >= request.StartTime && |
|
|
|
o.StartTime <= request.EndTime) |
|
|
|
.WhereIf(!string.IsNullOrEmpty(request.OrderId), o => o.Id == request.OrderId) |
|
|
|
.OrderByDescending(o => o.StartTime) |
|
|
|
.ToList(o => o.Id); |
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Delete<OrderTotalInfo>(orderIdList).ExecuteAffrows(); |
|
|
|
fsql.Delete<OrderCoupon_New>().Where(on => orderIdList.Contains(on.OrderId)).ExecuteAffrows(); |
|
|
|
fsql.Delete<OrderPromotion>().Where(op => orderIdList.Contains(op.OrderId)).ExecuteAffrows(); |
|
|
|
fsql.Update<OrderSku>().Set(osku => osku.ShouldPay, 0).Where(osku => orderIdList.Contains(osku.OrderId)).ExecuteAffrows(); |
|
|
|
}); |
|
|
|
|
|
|
|
for (var i = 0; i < orderIdList.Count(); i++) |
|
|
|
Task.Factory.StartNew(() => |
|
|
|
{ |
|
|
|
var orderId = orderIdList[i]; |
|
|
|
orderSyncBusiness.SyncOrder(shop, orderId); |
|
|
|
Console.WriteLine($"shopProgress {shopIndex}/{shopList.Count()} {shop.ShopName},orderProgress {i + 1}/{orderIdList.Count()}"); |
|
|
|
} |
|
|
|
// foreach (var orderId in orderIdList)
|
|
|
|
// {
|
|
|
|
// orderSyncBusiness.SyncOrder(shop, orderId);
|
|
|
|
// Thread.Sleep(1000);
|
|
|
|
// }
|
|
|
|
Console.WriteLine(shop.ShopName); |
|
|
|
//shopIndex++;
|
|
|
|
//Console.WriteLine($"shopProgress {shopIndex}/{shopList.Count()}");
|
|
|
|
var shopId = long.Parse(shop.ShopId); |
|
|
|
if (banedList.Contains(shop.ShopName)) |
|
|
|
return; |
|
|
|
var orderIdList = fsql.Select<Order>() |
|
|
|
.Where(o => o.ShopId == shopId && |
|
|
|
o.OrderState != Enums.OrderState.已取消 && |
|
|
|
o.StorageType != Enums.StorageType.SD && |
|
|
|
o.StartTime >= request.StartTime && |
|
|
|
o.StartTime <= request.EndTime) |
|
|
|
.WhereIf(!string.IsNullOrEmpty(request.OrderId), o => o.Id == request.OrderId) |
|
|
|
.OrderByDescending(o => o.StartTime) |
|
|
|
.ToList(o => o.Id); |
|
|
|
|
|
|
|
var orderList = fsql.Select<Order>(orderIdList).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(); |
|
|
|
var orderCostList = fsql.Select<OrderCost>(orderIdList).ToList(); |
|
|
|
var afterOrderList = fsql.Select<AfterSaleOrder>().Where(af => orderIdList.Contains(af.OrderId)).ToList(); |
|
|
|
var orderTotalList = fsql.Select<OrderTotalInfo>().Where(on => orderIdList.Contains(on.Id)).ToList(); |
|
|
|
var orderIndex = 0; |
|
|
|
foreach (var order in orderList) |
|
|
|
{ |
|
|
|
orderIndex++; |
|
|
|
Console.WriteLine($"shopProgress {shopIndex}/{shopList.Count()}, orderProgress {orderIndex}/{orderList.Count()}"); |
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Delete<OrderTotalInfo>(orderIdList).ExecuteAffrows(); |
|
|
|
fsql.Delete<OrderCoupon_New>().Where(on => orderIdList.Contains(on.OrderId)).ExecuteAffrows(); |
|
|
|
fsql.Delete<OrderPromotion>().Where(op => orderIdList.Contains(op.OrderId)).ExecuteAffrows(); |
|
|
|
fsql.Update<OrderSku>().Set(osku => osku.ShouldPay, 0).Where(osku => orderIdList.Contains(osku.OrderId)).ExecuteAffrows(); |
|
|
|
}); |
|
|
|
|
|
|
|
var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList(); |
|
|
|
for (var i = 0; i < orderIdList.Count(); i++) |
|
|
|
{ |
|
|
|
var orderId = orderIdList[i]; |
|
|
|
orderSyncBusiness.SyncOrder(shop, orderId); |
|
|
|
Console.WriteLine($"SyncOrder {shop.ShopName},orderProgress {i + 1}/{orderIdList.Count()}"); |
|
|
|
} |
|
|
|
// foreach (var orderId in orderIdList)
|
|
|
|
// {
|
|
|
|
// orderSyncBusiness.SyncOrder(shop, orderId);
|
|
|
|
// Thread.Sleep(1000);
|
|
|
|
// }
|
|
|
|
|
|
|
|
if (currentOrderCostDetailList.Count() > 0) |
|
|
|
var orderList = fsql.Select<Order>(orderIdList).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(); |
|
|
|
var orderCostList = fsql.Select<OrderCost>(orderIdList).ToList(); |
|
|
|
var afterOrderList = fsql.Select<AfterSaleOrder>().Where(af => orderIdList.Contains(af.OrderId)).ToList(); |
|
|
|
var orderTotalList = fsql.Select<OrderTotalInfo>().Where(on => orderIdList.Contains(on.Id)).ToList(); |
|
|
|
var orderIndex = 0; |
|
|
|
foreach (var order in orderList) |
|
|
|
{ |
|
|
|
List<IUpdate<OrderCostDetail>> updateOrderCostDetailList = new List<IUpdate<OrderCostDetail>>(); |
|
|
|
var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); |
|
|
|
foreach (var orderSku in currentOrderSkuList) |
|
|
|
orderIndex++; |
|
|
|
Console.WriteLine($"Calculation {shop.ShopName}, orderProgress {orderIndex}/{orderList.Count()}"); |
|
|
|
|
|
|
|
var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList(); |
|
|
|
|
|
|
|
if (currentOrderCostDetailList.Count() > 0) |
|
|
|
{ |
|
|
|
var ocd = currentOrderCostDetailList.FirstOrDefault(x => x.SkuId == orderSku.SkuId); |
|
|
|
if (ocd != null) |
|
|
|
List<IUpdate<OrderCostDetail>> updateOrderCostDetailList = new List<IUpdate<OrderCostDetail>>(); |
|
|
|
var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); |
|
|
|
foreach (var orderSku in currentOrderSkuList) |
|
|
|
{ |
|
|
|
ocd.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M, |
|
|
|
orderSku.PingTaiChengDanYouHuiQuan ?? 0M, |
|
|
|
orderSku.SuperRedEnvelope ?? 0M, |
|
|
|
orderSku.XianPinLeiDongQuan ?? 0M, |
|
|
|
orderSku.VenderFee ?? 0M, |
|
|
|
shop.PlatformCommissionRatio ?? 0.05M); |
|
|
|
var update = fsql.Update<OrderCostDetail>(ocd.Id).Set(x => x.SkuGrossProfit, ocd.SkuGrossProfit); |
|
|
|
updateOrderCostDetailList.Add(update); |
|
|
|
var ocd = currentOrderCostDetailList.FirstOrDefault(x => x.SkuId == orderSku.SkuId); |
|
|
|
if (ocd != null) |
|
|
|
{ |
|
|
|
ocd.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M, |
|
|
|
orderSku.PingTaiChengDanYouHuiQuan ?? 0M, |
|
|
|
orderSku.SuperRedEnvelope ?? 0M, |
|
|
|
orderSku.XianPinLeiDongQuan ?? 0M, |
|
|
|
orderSku.VenderFee ?? 0M, |
|
|
|
shop.PlatformCommissionRatio ?? 0.05M); |
|
|
|
var update = fsql.Update<OrderCostDetail>(ocd.Id).Set(x => x.SkuGrossProfit, ocd.SkuGrossProfit); |
|
|
|
updateOrderCostDetailList.Add(update); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
var currentAfterOrderList = afterOrderList.Where(af => af.OrderId == order.Id).ToList(); |
|
|
|
var orderTotal = orderTotalList.FirstOrDefault(on => on.Id == order.Id); |
|
|
|
var orderCost = orderCostList.FirstOrDefault(oc => oc.OrderId == order.Id); |
|
|
|
if (orderCost != null && orderTotal != null) |
|
|
|
{ |
|
|
|
orderCost.CalculationOrderProfitAndCost(order.ActualProductAmount ?? 0M, |
|
|
|
currentAfterOrderList); |
|
|
|
if (updateOrderCostDetailList.Count() > 0) |
|
|
|
var currentAfterOrderList = afterOrderList.Where(af => af.OrderId == order.Id).ToList(); |
|
|
|
var orderTotal = orderTotalList.FirstOrDefault(on => on.Id == order.Id); |
|
|
|
var orderCost = orderCostList.FirstOrDefault(oc => oc.OrderId == order.Id); |
|
|
|
if (orderCost != null && orderTotal != null) |
|
|
|
{ |
|
|
|
fsql.Transaction(() => |
|
|
|
orderCost.CalculationOrderProfitAndCost(order.ActualProductAmount ?? 0M, |
|
|
|
currentAfterOrderList); |
|
|
|
if (updateOrderCostDetailList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var update in updateOrderCostDetailList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
fsql.Update<OrderCost>(orderCost.OrderId).Set(oc => oc.Profit, orderCost.Profit) |
|
|
|
.Set(oc => oc.PlatformCommissionAmount, orderCost.PlatformCommissionAmount).ExecuteAffrows(); |
|
|
|
}); |
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
foreach (var update in updateOrderCostDetailList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
fsql.Update<OrderCost>(orderCost.OrderId).Set(oc => oc.Profit, orderCost.Profit) |
|
|
|
.Set(oc => oc.PlatformCommissionAmount, orderCost.PlatformCommissionAmount).ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}, CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncOrderTaskScheduler); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void DeleteJDTask() |
|
|
|
{ |
|
|
|
var appKey = "E1AA9247D5583A6D87449CE6AB290185"; |
|
|
|
var appSecret = "e479558ddd9e40f8929cfc00c6cbbc9c"; |
|
|
|
var appToken = "578d4074d5c04272af72de7f5fbe0ff2qwnz"; |
|
|
|
var promotionId = 6106235467; |
|
|
|
var httpResult = restApiService.SendRequest(GetPlatformRelayAPIHost(Enums.Platform.京东), |
|
|
|
"api/platformsdk/DeleteJDPromotionTask", |
|
|
|
new DeleteJDPromotionTaskRequest() |
|
|
|
{ |
|
|
|
AppKey = appKey, |
|
|
|
AppSecret = appSecret, |
|
|
|
AppToken = appToken, |
|
|
|
Platform = Enums.Platform.京东, |
|
|
|
PromotionId = promotionId |
|
|
|
}, |
|
|
|
GetYunDingRequestHeader(), |
|
|
|
HttpMethod.Post); |
|
|
|
if (httpResult.StatusCode != System.Net.HttpStatusCode.OK) |
|
|
|
throw new BusinessException(httpResult.Content); |
|
|
|
var response = JsonConvert.DeserializeObject<ApiResponse>(httpResult.Content); |
|
|
|
if (!response.Success) |
|
|
|
throw new BusinessException(response.Msg); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public class JPCount |
|
|
|