You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
477 lines
26 KiB
477 lines
26 KiB
using BBWY.Common.Http;
|
|
using BBWY.Common.Models;
|
|
using BBWY.Server.Business.Extensions;
|
|
using BBWY.Server.Model;
|
|
using BBWY.Server.Model.Db;
|
|
using BBWY.Server.Model.Db.Mds;
|
|
using BBWY.Server.Model.Dto;
|
|
using FreeSql;
|
|
using Jd.Api.Request;
|
|
using Microsoft.Extensions.Caching.Memory;
|
|
using Microsoft.Extensions.Options;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Concurrent;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net.Http;
|
|
using System.Reflection;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BBWY.Server.Business
|
|
{
|
|
public class TestBusiness : BasePlatformRelayBusiness, IDenpendency
|
|
{
|
|
private FreeSqlMultiDBManager freeSqlMultiDBManager;
|
|
private VenderBusiness venderBusiness;
|
|
private IFreeSql fsql;
|
|
private OrderSyncBusiness orderSyncBusiness;
|
|
private TaskSchedulerManager taskSchedulerManager;
|
|
private PurchaseOrderBusiness purchaseOrderBusiness;
|
|
private IMemoryCache memoryCache;
|
|
public TestBusiness(RestApiService restApiService,
|
|
IOptions<GlobalConfig> options,
|
|
FreeSqlMultiDBManager freeSqlMultiDBManager,
|
|
VenderBusiness venderBusiness,
|
|
YunDingBusiness yunDingBusiness,
|
|
IFreeSql fsql,
|
|
OrderSyncBusiness orderSyncBusiness,
|
|
TaskSchedulerManager taskSchedulerManager,
|
|
PurchaseOrderBusiness purchaseOrderBusiness,
|
|
IMemoryCache memoryCache) : base(restApiService, options, yunDingBusiness)
|
|
{
|
|
this.freeSqlMultiDBManager = freeSqlMultiDBManager;
|
|
this.venderBusiness = venderBusiness;
|
|
this.fsql = fsql;
|
|
this.orderSyncBusiness = orderSyncBusiness;
|
|
this.taskSchedulerManager = taskSchedulerManager;
|
|
this.purchaseOrderBusiness = purchaseOrderBusiness;
|
|
this.memoryCache = memoryCache;
|
|
}
|
|
|
|
public void SyncVenderId()
|
|
{
|
|
var noVenderShops = freeSqlMultiDBManager.MDSfsql.Select<Shops>().Where(s => !string.IsNullOrEmpty(s.AppToken) && !string.IsNullOrEmpty(s.ShopId) && string.IsNullOrEmpty(s.VenderId)).ToList();
|
|
//IList < IUpdate < Shops >> updateShops = new List<IUpdate<Shops>>();
|
|
foreach (var noVenderShop in noVenderShops)
|
|
{
|
|
if (string.IsNullOrEmpty(noVenderShop.AppKey))
|
|
{
|
|
|
|
}
|
|
var venderResponse = venderBusiness.GetVenderInfo(new Model.Dto.PlatformRequest()
|
|
{
|
|
AppKey = noVenderShop.AppKey,
|
|
AppSecret = noVenderShop.AppSecret,
|
|
AppToken = noVenderShop.AppToken,
|
|
Platform = (Enums.Platform)noVenderShop.PlatformId
|
|
});
|
|
|
|
freeSqlMultiDBManager.MDSfsql.Update<Shops>(noVenderShop.Id).Set(s => s.VenderId, venderResponse.VenderId).ExecuteAffrows();
|
|
}
|
|
}
|
|
|
|
public void StatisticsProduct()
|
|
{
|
|
var shopList = venderBusiness.GetShopList(platform: Enums.Platform.京东);
|
|
var list = new List<string>();
|
|
foreach (var shop in shopList)
|
|
{
|
|
long shopId = long.Parse(shop.ShopId);
|
|
var productCount = fsql.Select<Product>().Where(p => p.ShopId == shopId)
|
|
.Where(p => p.State == 8)
|
|
.Count();
|
|
|
|
var productSkuCount = fsql.Select<ProductSku>().Where(p => p.ShopId == shopId)
|
|
.Where(p => p.State == 1)
|
|
.Count();
|
|
var jpspu_sql = $"select count(1) as Count,t.ShopId from (select max(osku1.Id) as oskuId,max(osku1.CreateTime) as maxTime,osku1.ProductId,o.ShopId from OrderSku osku1 inner join `Order` o on osku1.OrderId=o.Id where o.OrderState !=6 and o.IsGift=0 and o.StartTime>='2022-05-01' and o.ShopId='{shopId}' Group By osku1.ProductId,o.ShopId order by maxTime desc,osku1.ProductId desc,o.ShopId desc) as t inner join orderSku osku on t.oskuId=osku.Id inner join `order` o on osku.OrderId=o.Id inner join product p on t.ProductId = p.Id where o.StorageType in (0,1) and p.state=8 group by t.ShopId";
|
|
|
|
//京配spu数
|
|
var jpspu = fsql.Ado.QuerySingle<JPCount>(jpspu_sql);
|
|
|
|
|
|
var jpsku_sql = $"select count(1) as Count,t.ShopId from (select max(osku1.Id) as oskuId,max(osku1.CreateTime) as maxTime,osku1.SkuId,o.ShopId from OrderSku osku1 inner join `Order` o on osku1.OrderId=o.Id where o.OrderState !=6 and o.IsGift=0 and o.StartTime>='2022-05-01' and o.ShopId='{shopId}' Group By osku1.SkuId,o.ShopId order by maxTime desc,osku1.SkuId desc,o.ShopId desc) as t inner join orderSku osku on t.oskuId=osku.Id inner join `order` o on osku.OrderId=o.Id inner join productsku psku on t.SkuId = psku.Id where o.StorageType in (0,1) and psku.State=1 group by t.ShopId";
|
|
|
|
var jpsku = fsql.Ado.QuerySingle<JPCount>(jpsku_sql);
|
|
|
|
//list.Add($"{shop.ShopName},{productCount},{productSkuCount},{productSkuCount}/{productCount},{jpspu?.Count ?? 0},{jpsku?.Count ?? 0},{(productCount == 0 ? 0 : Math.Round(1.0 * jpspu?.Count ?? 0 / productCount * 100, 2))}%,{(productSkuCount == 0 ? 0 : Math.Round(1.0 * jpsku?.Count ?? 0 / productSkuCount * 100, 2))}%");
|
|
|
|
var jpspuCount = jpspu?.Count ?? 0;
|
|
var jpskuCount = jpsku?.Count ?? 0;
|
|
|
|
var jpspuPercent = productCount == 0 ? 0 : Math.Round(1.0 * jpspuCount / productCount * 100, 2);
|
|
var jpskuPercent = productSkuCount == 0 ? 0 : Math.Round(1.0 * jpskuCount / productSkuCount * 100, 2);
|
|
|
|
list.Add($"{shop.ShopName},{productCount},{productSkuCount},{productSkuCount}/{productCount},{jpspuCount},{jpskuCount},{jpspuPercent}%,{jpskuPercent}%");
|
|
}
|
|
list.Insert(0, "店铺,SPU数,SKU数,SKU/SPU,京配SPU数,京配SKU数,京配SPU占比,京配SKU占比");
|
|
var filePath = Path.Combine(AppContext.BaseDirectory, "result.csv");
|
|
File.WriteAllLines(filePath, list, System.Text.Encoding.UTF8);
|
|
}
|
|
|
|
public void XiuFu()
|
|
{
|
|
var st = DateTime.Parse("2023-09-01");
|
|
var orderList = fsql.Select<OrderCoupon, Order>().InnerJoin((oc, o) => oc.OrderId == o.Id)
|
|
.Where((oc, o) => o.OrderState != Enums.OrderState.已取消 && o.StartTime >= st && o.PreferentialAmount == 0)
|
|
.GroupBy((oc, o) => oc.OrderId)
|
|
.ToList(g => new Order
|
|
{
|
|
Id = g.Key,
|
|
PreferentialAmount = g.Sum(g.Value.Item1.CouponPrice)
|
|
});
|
|
|
|
List<IUpdate<Order>> updateOrderList = new List<IUpdate<Order>>();
|
|
var totalCount = orderList.Count();
|
|
for (var i = 0; i < totalCount; i++)
|
|
{
|
|
var order = orderList[i];
|
|
updateOrderList.Add(fsql.Update<Order>(order.Id).Set(o => o.PreferentialAmount, order.PreferentialAmount));
|
|
if (updateOrderList.Count() == 50)
|
|
{
|
|
Console.WriteLine($"执行数据库更新 {i}/{totalCount}");
|
|
fsql.Transaction(() =>
|
|
{
|
|
foreach (var update in updateOrderList)
|
|
update.ExecuteAffrows();
|
|
});
|
|
updateOrderList.Clear();
|
|
}
|
|
}
|
|
|
|
if (updateOrderList.Count() > 0)
|
|
{
|
|
fsql.Transaction(() =>
|
|
{
|
|
foreach (var update in updateOrderList)
|
|
update.ExecuteAffrows();
|
|
});
|
|
updateOrderList.Clear();
|
|
}
|
|
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)
|
|
{
|
|
Task.Factory.StartNew(() =>
|
|
{
|
|
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 != null && o.StorageType != Enums.StorageType.SD &&
|
|
o.StartTime >= request.StartTime &&
|
|
o.StartTime <= request.EndTime)
|
|
.WhereIf(!string.IsNullOrEmpty(request.OrderId), o => o.Id == request.OrderId)
|
|
.WhereIf(request.OrderIdList != null && request.OrderIdList.Count() > 0, o => request.OrderIdList.Contains(o.Id))
|
|
.OrderByDescending(o => o.StartTime)
|
|
.ToList(o => o.Id);
|
|
|
|
if (orderIdList.Count() == 0)
|
|
return;
|
|
|
|
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++)
|
|
{
|
|
var orderId = orderIdList[i];
|
|
orderSyncBusiness.SyncOrder(shop, orderId);
|
|
Console.WriteLine($"SyncOrder {shop.ShopName},SyncProgress {i + 1}/{orderIdList.Count()}");
|
|
}
|
|
|
|
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($"Calculation {shop.ShopName}, CalculationProgress {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);
|
|
if (ocd != null)
|
|
{
|
|
ocd.CalculationSkuGrossProfit(orderSku.ShouldPay ?? 0M,
|
|
orderSku.PingTaiChengDanYouHuiQuan ?? 0M,
|
|
orderSku.SuperRedEnvelope ?? 0M,
|
|
orderSku.XianPinLeiDongQuan ?? 0M,
|
|
orderSku.VenderFee ?? 0M,
|
|
orderSku.JingDou ?? 0M,
|
|
orderSku.DongQuan ?? 0M,
|
|
orderSku.Balance ?? 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)
|
|
{
|
|
var actualAmount = order.OrderSellerPrice + order.FreightPrice + (order.PingTaiChengDanYouHuiQuan ?? 0M);
|
|
orderCost.CalculationOrderProfitAndCost(actualAmount, currentAfterOrderList);
|
|
if (updateOrderCostDetailList.Count() > 0)
|
|
{
|
|
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.RepairOrderTaskScheduler);
|
|
}
|
|
}
|
|
|
|
public void RepairOrderProfit()
|
|
{
|
|
var startTime = DateTime.Parse("2023-12-12");
|
|
var orderList = fsql.Select<Order>().Where(o => o.IsGift == false &&
|
|
o.OrderState != Enums.OrderState.已取消 &&
|
|
o.StorageType == Enums.StorageType.本地自发 &&
|
|
o.StartTime >= startTime)
|
|
.ToList();
|
|
var shopList = venderBusiness.GetShopList(platform: Enums.Platform.京东);
|
|
var orderIdList = orderList.Select(o => o.Id).ToList();
|
|
var orderCostList = fsql.Select<OrderCost>(orderIdList).ToList();
|
|
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId) && osku.Price > 0).ToList();
|
|
var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true && ocd.IsEstimateCost == false).ToList();
|
|
|
|
List<IUpdate<OrderCost>> updateList = new List<IUpdate<OrderCost>>();
|
|
List<IUpdate<OrderCostDetail>> updateDetailList = new List<IUpdate<OrderCostDetail>>();
|
|
int index = 0;
|
|
foreach (var orderCost in orderCostList)
|
|
{
|
|
index++;
|
|
Console.WriteLine($"{DateTime.Now} OrderProgress {index}/{orderCostList.Count()}");
|
|
var order = orderList.FirstOrDefault(o => o.Id == orderCost.OrderId);
|
|
if (order == null)
|
|
continue;
|
|
|
|
var shop = shopList.FirstOrDefault(s => s.ShopId == order.ShopId.ToString());
|
|
|
|
var currentOCDList = orderCostDetailList.Where(ocd => ocd.OrderId == orderCost.OrderId).ToList();
|
|
var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == orderCost.OrderId).ToList();
|
|
foreach (var ocd in currentOCDList)
|
|
{
|
|
var osku = currentOrderSkuList.FirstOrDefault(x => x.SkuId == ocd.SkuId);
|
|
if (osku == null)
|
|
continue;
|
|
ocd.CalculationSkuGrossProfit(osku.ShouldPay ?? 0M,
|
|
osku.PingTaiChengDanYouHuiQuan ?? 0M,
|
|
osku.SuperRedEnvelope ?? 0M,
|
|
osku.XianPinLeiDongQuan ?? 0M,
|
|
osku.VenderFee ?? 0M,
|
|
osku.JingDou ?? 0M,
|
|
osku.DongQuan ?? 0M,
|
|
osku.Balance ?? 0M,
|
|
shop.PlatformCommissionRatio ?? 0.05M);
|
|
var update = fsql.Update<OrderCostDetail>().SetSource(ocd);
|
|
updateDetailList.Add(update);
|
|
}
|
|
|
|
orderCost.PurchaseAmount = currentOCDList.Sum(ocd => ocd.TotalCost);
|
|
orderCost.DeliveryExpressFreight = currentOCDList.Sum(ocd => ocd.DeliveryExpressFreight);
|
|
|
|
orderCost.CalculationOrderProfitAndCost(order, null);
|
|
updateList.Add(fsql.Update<OrderCost>(orderCost.OrderId)
|
|
.Set(oc => oc.PurchaseAmount, orderCost.PurchaseAmount)
|
|
.Set(oc => oc.DeliveryExpressFreight, orderCost.DeliveryExpressFreight)
|
|
.Set(oc => oc.Profit, orderCost.Profit)
|
|
.Set(oc => oc.PlatformCommissionAmount, orderCost.PlatformCommissionAmount));
|
|
|
|
|
|
|
|
if (updateList.Count() > 10)
|
|
{
|
|
Console.WriteLine($"{DateTime.Now} 执行数据库更新");
|
|
fsql.Transaction(() =>
|
|
{
|
|
foreach (var update in updateList)
|
|
update.ExecuteAffrows();
|
|
foreach (var update in updateDetailList)
|
|
update.ExecuteAffrows();
|
|
});
|
|
updateList.Clear();
|
|
updateDetailList.Clear();
|
|
}
|
|
}
|
|
|
|
if (updateList.Count() > 0)
|
|
{
|
|
Console.WriteLine($"{DateTime.Now} 最后执行数据库更新");
|
|
fsql.Transaction(() =>
|
|
{
|
|
foreach (var update in updateList)
|
|
update.ExecuteAffrows();
|
|
foreach (var update in updateDetailList)
|
|
update.ExecuteAffrows();
|
|
});
|
|
updateList.Clear();
|
|
updateDetailList.Clear();
|
|
}
|
|
}
|
|
|
|
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 void RepairDFOrder()
|
|
{
|
|
var st = DateTime.Parse("2023-11-01");
|
|
var et = DateTime.Parse("2023-11-30 23:59:59");
|
|
var list = fsql.Select<Order, OrderDropShipping, OrderCostDetail>()
|
|
.InnerJoin((o, ods, ocd) => o.Id == ods.OrderId)
|
|
.InnerJoin((o, ods, ocd) => o.Id == ocd.OrderId)
|
|
.Where((o, ods, ocd) => o.ShopId == 12897067 && o.OrderState != Enums.OrderState.已取消 && o.StartTime >= st && o.StartTime <= et && o.StorageType == Enums.StorageType.代发 && ocd.IsEnabled == true && ocd.SkuAmount == 0)
|
|
.ToList((o, ods, ocd) => ods.PurchaseOrderId).Distinct().ToList();
|
|
|
|
for (var i = 0; i < list.Count; i++)
|
|
{
|
|
Console.WriteLine($"{i + 1}/{list.Count()},{list[i]}");
|
|
var param = new { type = "ORDER_BUYER_VIEW_ORDER_PRICE_MODIFY", data = new { orderId = list[i] } };
|
|
purchaseOrderBusiness.CallbackFrom1688(JsonConvert.SerializeObject(param));
|
|
Thread.Sleep(1000);
|
|
}
|
|
}
|
|
|
|
public void Test_20231221()
|
|
{
|
|
memoryCache.Set("test123", new ConcurrentDictionary<string, int>());
|
|
var c = memoryCache.Get<ConcurrentDictionary<string, int>>("test123");
|
|
c.AddOrUpdate("123", 1, (k, v) => v + 1);
|
|
c.AddOrUpdate("123", 1, (k, v) => v + 1);
|
|
Console.WriteLine(c["123"]);
|
|
var b = memoryCache.Get<ConcurrentDictionary<string, int>>("test123");
|
|
Console.WriteLine(b["123"]);
|
|
}
|
|
|
|
public void UpdateSkuGift()
|
|
{
|
|
var dbSkuIdList = fsql.Select<ProductSku>().Where(ps => ps.IsGift == false).ToList(ps => ps.Id);
|
|
var ptList = fsql.Select<PromotionTask>().Where(pt => !string.IsNullOrEmpty(pt.GiftTemplatePutNewSku)).ToList();
|
|
var giftSkuList = new List<string>();
|
|
var splitChar = new char[] { ',' };
|
|
foreach (var pt in ptList)
|
|
{
|
|
giftSkuList.AddRange(pt.GiftTemplatePutNewSku.Split(splitChar, StringSplitOptions.RemoveEmptyEntries));
|
|
}
|
|
var updateGiftSkuIdList = dbSkuIdList.Intersect(giftSkuList).ToList();
|
|
|
|
var updateList = new List<string>();
|
|
var index = 1;
|
|
foreach (var skuId in updateGiftSkuIdList)
|
|
{
|
|
updateList.Add(skuId);
|
|
if (updateList.Count() == 20)
|
|
{
|
|
fsql.Transaction(() =>
|
|
{
|
|
fsql.Update<ProductSku>(updateList).Set(ps => ps.IsGift, true).ExecuteAffrows();
|
|
});
|
|
updateList.Clear();
|
|
Console.WriteLine($"update productsku gift {index}");
|
|
index++;
|
|
}
|
|
}
|
|
if (updateList.Count() > 0)
|
|
{
|
|
fsql.Transaction(() =>
|
|
{
|
|
fsql.Update<ProductSku>(updateList).Set(ps => ps.IsGift, true).ExecuteAffrows();
|
|
});
|
|
updateList.Clear();
|
|
Console.WriteLine($"last update productsku gift");
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public class JPCount
|
|
{
|
|
public int Count { get; set; }
|
|
public long ShopId { get; set; }
|
|
}
|
|
|
|
|
|
}
|
|
|