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() .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, int, int> insertAction = (taskList, threadIndex, lessCount) => { foreach (var ods in taskList) { fsql.Update().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(); } } }