|
|
@ -3,12 +3,14 @@ using BBWY.Common.Models; |
|
|
|
using BBWY.Server.Model; |
|
|
|
using BBWY.Server.Model.Db; |
|
|
|
using BBWY.Server.Model.Db.Mds; |
|
|
|
using BBWY.Server.Model.Dto; |
|
|
|
using FreeSql; |
|
|
|
using Microsoft.Extensions.Options; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.IO; |
|
|
|
using System.Linq; |
|
|
|
using System.Threading; |
|
|
|
|
|
|
|
namespace BBWY.Server.Business |
|
|
|
{ |
|
|
@ -17,14 +19,19 @@ namespace BBWY.Server.Business |
|
|
|
private FreeSqlMultiDBManager freeSqlMultiDBManager; |
|
|
|
private VenderBusiness venderBusiness; |
|
|
|
private IFreeSql fsql; |
|
|
|
private OrderSyncBusiness orderSyncBusiness; |
|
|
|
public TestBusiness(RestApiService restApiService, |
|
|
|
IOptions<GlobalConfig> options, |
|
|
|
FreeSqlMultiDBManager freeSqlMultiDBManager, |
|
|
|
VenderBusiness venderBusiness, YunDingBusiness yunDingBusiness, IFreeSql fsql) : base(restApiService, options, yunDingBusiness) |
|
|
|
VenderBusiness venderBusiness, |
|
|
|
YunDingBusiness yunDingBusiness, |
|
|
|
IFreeSql fsql, |
|
|
|
OrderSyncBusiness orderSyncBusiness) : base(restApiService, options, yunDingBusiness) |
|
|
|
{ |
|
|
|
this.freeSqlMultiDBManager = freeSqlMultiDBManager; |
|
|
|
this.venderBusiness = venderBusiness; |
|
|
|
this.fsql = fsql; |
|
|
|
this.orderSyncBusiness = orderSyncBusiness; |
|
|
|
} |
|
|
|
|
|
|
|
public void SyncVenderId() |
|
|
@ -129,6 +136,91 @@ namespace BBWY.Server.Business |
|
|
|
} |
|
|
|
Console.WriteLine("更新完毕"); |
|
|
|
} |
|
|
|
|
|
|
|
public void RepairSkuDetailAndSkuGriooProfit(RepairSkuDetailAndSkuGriooProfit request) |
|
|
|
{ |
|
|
|
request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1); |
|
|
|
var banedList = new List<string>() |
|
|
|
{ |
|
|
|
"森王汽车用品专营店", |
|
|
|
"森王玩具专营店", |
|
|
|
"广发玩具专营店", |
|
|
|
"广发汽车用品专营店", |
|
|
|
"言义汽车用品专营店", |
|
|
|
"杰博玩具专营店", |
|
|
|
"安吉玩具专营店", |
|
|
|
"布莱特玩具专营店", |
|
|
|
"畅阳汽车用品专营店", |
|
|
|
"熊猴汽车用品专营店", |
|
|
|
"布莱特汽车用品专营店", |
|
|
|
"越驭玩具专营店", |
|
|
|
"言义玩具专营店", |
|
|
|
"瑞源汽车用品专营店", |
|
|
|
"熊猴玩具专营店", |
|
|
|
"奥德汽车用品专营店", |
|
|
|
"创天户外专营店", |
|
|
|
"桑妮玩具专营店", |
|
|
|
"瑞源玩具专营店" |
|
|
|
}; |
|
|
|
var shopList = venderBusiness.GetShopList(request.ShopId, Enums.Platform.京东); |
|
|
|
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 && |
|
|
|
!fsql.Select<OrderTotalInfo>().Where(ot => ot.Id == o.Id).Any()) |
|
|
|
.ToList(o => o.Id); |
|
|
|
foreach (var orderId in orderIdList) |
|
|
|
{ |
|
|
|
orderSyncBusiness.SyncOrder(shop, orderId); |
|
|
|
Thread.Sleep(500); |
|
|
|
} |
|
|
|
|
|
|
|
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 orderIndex = 0; |
|
|
|
foreach (var order in orderList) |
|
|
|
{ |
|
|
|
orderIndex++; |
|
|
|
Console.WriteLine($"shopProgress {shopIndex}/{shopList.Count()}, orderProgress {orderIndex}/{orderList.Count()}"); |
|
|
|
|
|
|
|
var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList(); |
|
|
|
|
|
|
|
if (currentOrderCostDetailList.Count() > 0) |
|
|
|
{ |
|
|
|
List<IUpdate<OrderCostDetail>> updateOrderCostDetailList = new List<IUpdate<OrderCostDetail>>(); |
|
|
|
var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); |
|
|
|
foreach (var orderSku in currentOrderSkuList) |
|
|
|
{ |
|
|
|
var ocd = currentOrderCostDetailList.FirstOrDefault(x => x.SkuId == orderSku.SkuId); |
|
|
|
ocd.SkuGrossProfit = ((orderSku.ShouldPay ?? 0M) + (orderSku.Coupon ?? 0M)) * ocd.DeductionQuantity - ocd.TotalCost - ocd.DeliveryExpressFreight; |
|
|
|
var update = fsql.Update<OrderCostDetail>(ocd.Id).Set(x => x.SkuGrossProfit, ocd.SkuGrossProfit); |
|
|
|
updateOrderCostDetailList.Add(update); |
|
|
|
} |
|
|
|
if (updateOrderCostDetailList.Count() > 0) |
|
|
|
{ |
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
foreach (var update in updateOrderCostDetailList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public class JPCount |
|
|
|