步步为盈
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.

68 lines
2.8 KiB

using BBWY.Common.Models;
using BBWY.JDSDK.Request;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
using Jd.Api;
using Jd.Api.Request;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using io = System.IO;
namespace BBWY.Test
{
internal class Program
{
private static IJdClient GetJdClient(string appKey, string appSecret)
{
return new DefaultJdClient("https://api.jd.com/routerjson", appKey, appSecret);
}
static void Main(string[] args)
{
var sqlConnectString = "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy_test;charset=utf8;sslmode=none;";
var fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, sqlConnectString).Build();
var orderDropShippingList = fsql.Select<OrderSku, OrderDropShipping>()
.InnerJoin((osku, ods) => osku.OrderId == ods.OrderId)
.Where((osku, ods) => osku.OrderDropShippingId == null)
.ToList((osku, ods) => new OrderDropShipping
{
Id = ods.Id,
OrderId = ods.OrderId
});
var orderDropShoppingCount = orderDropShippingList.Count();
var threadCount = 3;
var perTaskCount = orderDropShoppingCount / threadCount;
var lastTaskCount = orderDropShoppingCount % threadCount;
Action<IList<OrderDropShipping>, int, int> insertAction = (taskList, threadIndex, lessCount) =>
{
foreach (var ods in taskList)
{
fsql.Update<OrderSku>().Set(osku => osku.OrderDropShippingId, ods.Id).Where(osku => osku.OrderId == ods.OrderId).ExecuteAffrows();
lessCount--;
Console.WriteLine($"ThreadId:{threadIndex} OrderDropShippingId {ods.Id},Less {lessCount}");
}
};
for (var i = 0; i < threadCount; i++)
{
var taskList = orderDropShippingList.Skip(i * perTaskCount).Take(perTaskCount + (i == threadCount - 1 ? lastTaskCount : 0)).ToList();
var threadIndex = i;
Task.Factory.StartNew(() =>
{
var lessCount = taskList.Count();
insertAction(taskList, threadIndex, lessCount);
});
}
Console.ReadKey();
}
}
}