wwservice/wwsync/userdesc.cs

95 lines
3.2 KiB
C#

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<ww_user_extuser> 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<bool> 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;
}
}
}