using System; using System.Linq; using System.Collections.Generic; using System.Threading.Tasks; using System.Threading; using Quartz; using System.Net.Http; using model; using Newtonsoft.Json.Linq; namespace wwsync { [DisallowConcurrentExecutionAttribute] public class userdesc : IJob { static bool userdesc_running = false; public userdesc() { } public Task Execute(IJobExecutionContext context) { if(userdesc_running) return Task.CompletedTask; try { userdesc_running = true; Console.WriteLine($"userdesc Execute at {DateTime.Now}."); var t = userdesc_sync(); t.Wait(); } finally { userdesc_running = false; } return Task.CompletedTask; } public async Task userdesc_sync() { int maxcount = 500; while (true) { List allfriends; using (var context = new DataContext()) { allfriends = context.ww_user_extusers.Where(obj => !obj.description.Contains("@[")&&obj.errnum<4).OrderBy(obj=>obj.errnum).Take(maxcount).ToList(); // obj.userid== "211229-101938-24" } LogHelper.Info($"userdesc_sync({allfriends.Count})"); if (allfriends == null || allfriends.Count == 0) return; int i = 0; foreach (var user in allfriends) { //LogHelper.Info($"setdescription: ({user.corpid},{user.userid},{user.extuserid}) {i++}"); var finish = await setdescription(user); if (finish) Thread.Sleep(100); else Thread.Sleep(200); } if (allfriends.Count < maxcount) return; Thread.Sleep(15*1000); } } public async Task setdescription(ww_user_extuser ueu) { string desc = $"{ueu.description}@[{ueu.extuserid}]@"; //string desc = ueu.description.Replace("@id@20220206",""); object data = new { userid = ueu.userid, external_userid = ueu.extuserid, description = desc }; var obj = await apicaller.wwapiwithtoken(appsetteings.URL_remark, ueu.corpid, appsetteings.allcorp[ueu.corpid].khsecret, "post", data); using (var context = new DataContext()) { context.Attach(ueu); if (obj["errcode"].ToString() != "0") ueu.errnum = ueu.errnum + 1; else ueu.description = desc; context.SaveChanges(); } if (obj["errcode"].ToString() != "0") { if (obj["errcode"].ToString() != "84061") { LogHelper.Info($"setdescription err:{obj.ToString()},{ueu.userid},{ueu.extuserid}"); Thread.Sleep(2 * 1000); } return false; } return true; } } }