From d4a6d65f5e449c3e5464aa18ae97bf8953987217 Mon Sep 17 00:00:00 2001 From: LR-20210131IOQH\Administrator <jackcold@163.com> Date: 星期二, 10 八月 2021 15:44:14 +0800 Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/zhengcaioa --- zhengcaioa/zhengcaioa/Timer/TimerGetShopUsersService.cs | 374 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 374 insertions(+), 0 deletions(-) diff --git a/zhengcaioa/zhengcaioa/Timer/TimerGetShopUsersService.cs b/zhengcaioa/zhengcaioa/Timer/TimerGetShopUsersService.cs new file mode 100644 index 0000000..ae5d141 --- /dev/null +++ b/zhengcaioa/zhengcaioa/Timer/TimerGetShopUsersService.cs @@ -0,0 +1,374 @@ +锘縰sing DTO; +using IServices; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Threading; +using System.Threading.Tasks; +using System.Transactions; +using zhengcaioa.IService; +using zhengcaioa.Models; + +namespace zhengcaioa.Timer +{ + public class TimerGetShopUsersService : BackgroundService + { + private readonly ILogger _logger; + private readonly IConfiguration _configuration; + private readonly ILiaotianService _liaotianService; + private readonly IHttpClientFactory _clientFactory; + private readonly ICooperatecustomCustomerService _cooperatecustomCustomerService; + + + public TimerGetShopUsersService(ILogger<TimerGetShopUsersService> logger, IServiceScopeFactory factory) + { + _logger = logger; + _configuration = factory.CreateScope().ServiceProvider.GetRequiredService<IConfiguration>(); + _liaotianService = factory.CreateScope().ServiceProvider.GetRequiredService<ILiaotianService>(); + _clientFactory = factory.CreateScope().ServiceProvider.GetRequiredService<IHttpClientFactory>(); + _cooperatecustomCustomerService = factory.CreateScope().ServiceProvider.GetRequiredService<ICooperatecustomCustomerService>(); + + + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + _logger.LogInformation("TimerGetShopUsersService is starting."); + + //stoppingToken.Register(() => File.Create($"E:\\dotnetCore\\Practice\\Practice\\{DateTime.Now.Millisecond}.txt")); + + DateTime datenow = DateTime.Now; + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation("TimerGetShopUsersService 寮�濮嬫墽琛�"); + _logger.LogInformation(datenow.ToString("yyyy-MM-dd HH:mm:ss")); + //姣忎釜灏忔椂璁$畻涓�娆� + if (datenow.Hour == DateTime.Now.Hour) + //if (true) + { + + try + { + + await this.huoquhuiyuanAsync(); + + } + catch (Exception ex) + { + _logger.LogInformation(ex.ToString()); + } + + datenow = DateTime.Now.AddHours(1); + } + + + await Task.Delay(TimeSpan.FromMinutes(10), stoppingToken); + + _logger.LogInformation("TimerGetShopUsersService 缁х画鎵ц"); + } + + _logger.LogInformation("TimerGetShopUsersService background task is stopping."); + } + + public override void Dispose() + { + base.Dispose(); + } + + + public async Task huoquhuiyuanAsync() + { + string Shuchengurl = _configuration.GetSection("Shuchengurl").Value; + string GetShopUsers = _configuration.GetSection("GetShopUsers").Value; + + + string huiyuanurl = _configuration.GetSection("huiyuanurl").Value; + string GetDateFirstOrderUser = _configuration.GetSection("GetDateFirstOrderUser").Value; + string GetUserinfoAndRule = _configuration.GetSection("GetUserinfoAndRule").Value; + + ResultEntity resultEntity = new ResultEntity(); + resultEntity.Result = false; + + + + // new TransactionScope(TransactionScopeOption.Required, + // new TransactionOptions + // { + // IsolationLevel = IsolationLevel.ReadCommitted, + // Timeout = TransactionManager.MaximumTimeout + // } + //) + + + + + + + + //using (TransactionScope scope = new TransactionScope()) + //{ + //鑾峰彇鏈�鍚庢洿鏂版椂闂� + DateTime start = DateTime.Now.AddYears(-10); + DateTime end = DateTime.Now; + + var ssss = _liaotianService.GetSysUpdatetime("getCustomers"); + + if (ssss != null) + { + start = ssss.Updatetime; + } + _logger.LogInformation("start:" + start); + _logger.LogInformation("end:" + end); + + + //鑾峰彇瀹㈡埛骞朵笖淇濆瓨鍒板悎浣滃鎴� + + #region 涔﹀煄 + string result = string.Empty; + Uri getUrl = new Uri(Shuchengurl + GetShopUsers + "?start="+ start.ToString("yyyy-MM-dd HH:mm:ss") + "&end="+ end.ToString("yyyy-MM-dd HH:mm:ss")); + + var httpClient = _clientFactory.CreateClient(); + httpClient.Timeout = new TimeSpan(0, 0, 10); + var Result = await httpClient.GetAsync(getUrl); + result = Result.Content.ReadAsStringAsync().Result; + + + _logger.LogInformation("result:" + result); + JObject jobjectresult = (JObject)JsonConvert.DeserializeObject(result); + + if (jobjectresult["code"] != null && jobjectresult["code"].ToString() == "1") + { + if(jobjectresult["returnObj"] != null && jobjectresult["returnObj"].ToString() != "") + { + + + JArray hits = (JArray)jobjectresult["returnObj"]; + foreach (var hit in hits) + { + string id = hit["id"].ToString().ToLower(); + CooperatecustomCustomerDTO cooperatecustomCustomerDTO = _cooperatecustomCustomerService.GetList(id).FirstOrDefault(); + //濡傛灉涓嶅瓨鍦ㄥ叧鑱斿鎴� + if (cooperatecustomCustomerDTO == null) + { + + string result2 = string.Empty; + Uri postUrl2 = new Uri(huiyuanurl + GetUserinfoAndRule); + + JObject questions2 = new JObject(); + questions2.Add("UserID", id); + + string requestJson2 = questions2.ToString(); + + using (HttpContent httpContent = new StringContent(requestJson2)) + { + httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + + var httpClient2 = _clientFactory.CreateClient(); + httpClient2.Timeout = new TimeSpan(0, 0, 10); + var Result2 = await httpClient2.PostAsync(postUrl2, httpContent); + result2 = Result2.Content.ReadAsStringAsync().Result; + } + + _logger.LogInformation("result2:" + result2); + + JObject jobjectresult2 = (JObject)JsonConvert.DeserializeObject(result2); + if (jobjectresult2["code"] == null || jobjectresult2["code"].ToString() != "1") + { + throw new Exception(jobjectresult2["msg"].ToString()); + } + + JObject jobjectkehu = (JObject)jobjectresult2["data"]; + if (jobjectkehu == null || jobjectkehu["Name"] == null || jobjectkehu["Name"].ToString() == "") + { + throw new Exception("鏈壘鍒板搴旂殑浼氬憳锛�"); + } + + + cooperatecustomCustomerDTO = _cooperatecustomCustomerService.GetList("", jobjectkehu["Name"].ToString()).FirstOrDefault(); + //濡傛灉涓嶅瓨鍦ㄥ綋鍓嶅悕瀛楃殑瀹㈡埛 + if (cooperatecustomCustomerDTO == null) + { + cooperatecustomCustomerDTO = new CooperatecustomCustomerDTO(); + cooperatecustomCustomerDTO.Name = jobjectkehu["Name"].ToString(); + cooperatecustomCustomerDTO.Tel = jobjectkehu["phonecode"].ToString(); + cooperatecustomCustomerDTO.Phone = jobjectkehu["phonecode"].ToString(); + + cooperatecustomCustomerDTO.HuiyuanId = id; + //cooperatecustomCustomerDTO.Remark = hit["personal"].ToString() + "涓嬪崟鏃堕棿" + hit["Firsttime"].ToString(); + cooperatecustomCustomerDTO.Khly = "01"; + cooperatecustomCustomerDTO.Creater = "1"; + cooperatecustomCustomerDTO.Createtime = DateTime.Now; + cooperatecustomCustomerDTO.Modifier = cooperatecustomCustomerDTO.Creater; + cooperatecustomCustomerDTO.Modifytime = cooperatecustomCustomerDTO.Createtime; + + cooperatecustomCustomerDTO.ShrName = hit["accept_name"].ToString(); + cooperatecustomCustomerDTO.ShrTel = hit["mobile"].ToString(); + cooperatecustomCustomerDTO.ShrAddress = hit["area"].ToString() + hit["address"].ToString(); + + resultEntity = _cooperatecustomCustomerService.save(cooperatecustomCustomerDTO); + if (!resultEntity.Result) + { + throw new Exception("淇濆瓨鍚堜綔瀹㈡埛:" + cooperatecustomCustomerDTO.Name + "鍑洪敊锛�"); + } + } + else + { + cooperatecustomCustomerDTO.HuiyuanId = id; + cooperatecustomCustomerDTO.ShrName = hit["accept_name"].ToString(); + cooperatecustomCustomerDTO.ShrTel = hit["mobile"].ToString(); + cooperatecustomCustomerDTO.ShrAddress = hit["area"].ToString() + hit["address"].ToString(); + resultEntity = _cooperatecustomCustomerService.save(cooperatecustomCustomerDTO); + if (!resultEntity.Result) + { + throw new Exception("淇濆瓨鍚堜綔瀹㈡埛:" + cooperatecustomCustomerDTO.Name + "鍑洪敊锛�"); + } + } + } + else + { + cooperatecustomCustomerDTO.HuiyuanId = id; + cooperatecustomCustomerDTO.ShrName = hit["accept_name"].ToString(); + cooperatecustomCustomerDTO.ShrTel = hit["mobile"].ToString(); + cooperatecustomCustomerDTO.ShrAddress = hit["area"].ToString() + hit["address"].ToString(); + resultEntity = _cooperatecustomCustomerService.save(cooperatecustomCustomerDTO); + if (!resultEntity.Result) + { + throw new Exception("淇濆瓨鍚堜綔瀹㈡埛:" + cooperatecustomCustomerDTO.Name + "鍑洪敊锛�"); + } + } + + } + + } + } + else + { + throw new Exception(jobjectresult["error"].ToString()); + } + + + + + + #endregion + + + #region 浼氬憳 + string result1 = string.Empty; + Uri postUrl = new Uri(huiyuanurl + GetDateFirstOrderUser); + + JObject questions = new JObject(); + questions.Add("start", start.ToString("yyyy-MM-dd HH:mm:ss")); + questions.Add("end", end.ToString("yyyy-MM-dd HH:mm:ss")); + + string requestJson = questions.ToString(); + + using (HttpContent httpContent = new StringContent(requestJson)) + { + httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + + var httpClient1 = _clientFactory.CreateClient(); + httpClient1.Timeout = new TimeSpan(0, 0, 10); + var Result1 = await httpClient1.PostAsync(postUrl, httpContent); + result1 = Result1.Content.ReadAsStringAsync().Result; + } + + _logger.LogInformation("result1:" + result1); + JObject jobject = (JObject)JsonConvert.DeserializeObject(result1); + + if (jobject["code"] != null && jobject["code"].ToString() == "1") + { + if (jobject["data"] != null && jobject["data"].ToString() != "") + { + JArray hits = (JArray)jobject["data"]; + foreach (var hit in hits) + { + CooperatecustomCustomerDTO cooperatecustomCustomerDTO = _cooperatecustomCustomerService.GetList(hit["ID"].ToString()).FirstOrDefault(); + //濡傛灉涓嶅瓨鍦ㄥ叧鑱斿鎴� + if (cooperatecustomCustomerDTO == null) + { + cooperatecustomCustomerDTO = _cooperatecustomCustomerService.GetList("", hit["Name"].ToString()).FirstOrDefault(); + //濡傛灉涓嶅瓨鍦ㄥ綋鍓嶅悕瀛楃殑瀹㈡埛 + if (cooperatecustomCustomerDTO == null) + { + cooperatecustomCustomerDTO = new CooperatecustomCustomerDTO(); + cooperatecustomCustomerDTO.Name = hit["Name"].ToString(); + cooperatecustomCustomerDTO.Tel = hit["PhoneCode"].ToString(); + cooperatecustomCustomerDTO.Phone = hit["PhoneCode"].ToString(); + + cooperatecustomCustomerDTO.HuiyuanId = hit["ID"].ToString(); + cooperatecustomCustomerDTO.Remark = hit["personal"].ToString() + "涓嬪崟鏃堕棿" + hit["Firsttime"].ToString(); + cooperatecustomCustomerDTO.Khly = "01"; + cooperatecustomCustomerDTO.Creater = "1"; + cooperatecustomCustomerDTO.Createtime = DateTime.Now; + cooperatecustomCustomerDTO.Modifier = cooperatecustomCustomerDTO.Creater; + cooperatecustomCustomerDTO.Modifytime = cooperatecustomCustomerDTO.Createtime; + + resultEntity = _cooperatecustomCustomerService.save(cooperatecustomCustomerDTO); + if (!resultEntity.Result) + { + throw new Exception("淇濆瓨鍚堜綔瀹㈡埛:" + cooperatecustomCustomerDTO.Name + "鍑洪敊锛�"); + } + } + else + { + cooperatecustomCustomerDTO.HuiyuanId = hit["ID"].ToString(); + resultEntity = _cooperatecustomCustomerService.save(cooperatecustomCustomerDTO); + if (!resultEntity.Result) + { + throw new Exception("淇濆瓨鍚堜綔瀹㈡埛:" + cooperatecustomCustomerDTO.Name + "鍑洪敊锛�"); + } + } + } + + } + } + + } + else + { + throw new Exception(jobject["msg"].ToString()); + } + + #endregion + + + //淇濆瓨鏈�鍚庢洿鏂版椂闂� + if (ssss != null) + { + ssss.Updatetime = end; + } + else + { + ssss = new SysUpdatetime(); + ssss.Updatetime = end; + ssss.Updatename = "getCustomers"; + } + resultEntity = _liaotianService.saveSysUpdatetime(ssss); + if (!resultEntity.Result) + { + throw new Exception("淇濆瓨鏇存柊鏃堕棿鍑洪敊锛�"); + } + + // scope.Complete(); + //} + + + + + + + + } + } +} -- Gitblit v1.9.1