| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181 |
- using System;
- using System.Collections.Generic;
- using System.Common;
- using System.IO;
- using System.IRepositories;
- using System.IRepositories.Bus;
- using System.IRepositories.Call;
- using System.IRepositories.Sys;
- using System.Linq;
- using System.Model;
- using System.Model.Bus;
- using System.Model.Call;
- using System.Model.Sys;
- using System.Net;
- using System.Security.Claims;
- using System.Threading.Tasks;
- using System.Utility;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.Extensions.Configuration;
- using SqlSugar;
- using TVShoppingCallCenter_ZLJ.Controllers.Order;
- using Utility;
- namespace TVShoppingCallCenter_ZLJ.Controllers.CallCenter
- {
- /// <summary>
- /// 呼叫中心关联方法
- /// </summary>
- // [Authorize]
- [Produces("application/json")]
- [Route("api/[controller]")]
- public class CallFunctionController : BaseController
- {
- private readonly IConfiguration config;
- private readonly ISys_MobileDataRepository busMobileDataRepository;
- private readonly ICall_CallRecordsRepository busCallRecordsRepository;
- private readonly ICall_CallOutboundRepository CallOutboundRecordsRepository;
- private readonly ICDRRepository busCdrRepository;
- private readonly Iauto_cdrRepository auto_cdrRepository;
- private readonly ItaskRepository taskRepository;
- private readonly ISys_AutoDialRepository sys_autodialrepository;
- private readonly ISys_SystemConfigRepository busSystemConfigRepository;
- private readonly ICus_VipInfoRepository _cus_vip_infoRepository;//客户
- private readonly IBus_AfterSaleRepository busAfterSaleRepository;
- private readonly ISys_UserAccountRepository sys_UserAccountRepository;
- private readonly IBus_AutomaticOrderRepository bus_AutomaticOrderRepository;
- private readonly IBus_ProductRepository _productRepository;
- private readonly OrderFunctionController busOrderFunctionController;
- private readonly IBus_OrderRepository bus_OrderRepository;
- private readonly IBus_OrderDetailRepository bus_OrderDetailRepository;
- private readonly IBus_OrderlogsRepository busOrderlogsRepository;
- private readonly ISys_UserAccountRepository _sys_useraccountRepository;
- private readonly ICall_DistributionRepository call_DistributionRepository;
- private readonly ISys_MediaManagementRepository _sys_mediaManagement_Repository;
- public CallFunctionController(ISys_SystemConfigRepository _busSystemConfigRepository,ICDRRepository _busCdrRepository,ICall_CallRecordsRepository _busCallRecordsRepository,IConfiguration _configuration, ISys_MobileDataRepository _busMobileDataRepository, ICus_VipInfoRepository cus_vip_infoRepository,
- ICall_CallOutboundRepository _CallOutboundRecordsRepository, Iauto_cdrRepository _auto_cdrRepository
- , ItaskRepository _taskRepository, ISys_AutoDialRepository _sys_autodialrepository, IBus_AfterSaleRepository _busAfterSaleRepository, ISys_UserAccountRepository _sys_UserAccountRepository, IBus_AutomaticOrderRepository _bus_AutomaticOrderRepository,
- IBus_ProductRepository productRepository, OrderFunctionController _OrderFunctionController
- , IBus_OrderRepository _bus_OrderRepository, IBus_OrderDetailRepository _bus_OrderDetailRepository
- , IBus_OrderlogsRepository _busOrderlogsRepository,
- ISys_UserAccountRepository sys_useraccountRepository
- , ICall_DistributionRepository _call_DistributionRepository
- , ISys_MediaManagementRepository sys_mediaManagement_Repository)
-
- {
- _sys_mediaManagement_Repository = sys_mediaManagement_Repository;
- call_DistributionRepository = _call_DistributionRepository;
- busOrderlogsRepository = _busOrderlogsRepository;
- bus_OrderDetailRepository = _bus_OrderDetailRepository;
- bus_OrderRepository = _bus_OrderRepository;
- busSystemConfigRepository = _busSystemConfigRepository;
- busCdrRepository = _busCdrRepository;
- busCallRecordsRepository = _busCallRecordsRepository;
- config = _configuration;
- busMobileDataRepository = _busMobileDataRepository;
- _cus_vip_infoRepository = cus_vip_infoRepository;
- CallOutboundRecordsRepository = _CallOutboundRecordsRepository;
- auto_cdrRepository = _auto_cdrRepository;
- taskRepository = _taskRepository;
- sys_autodialrepository = _sys_autodialrepository;
- busAfterSaleRepository = _busAfterSaleRepository;
- sys_UserAccountRepository = _sys_UserAccountRepository;
- bus_AutomaticOrderRepository = _bus_AutomaticOrderRepository;
- _productRepository = productRepository;
- busOrderFunctionController = _OrderFunctionController;
- _sys_useraccountRepository = sys_useraccountRepository;
- }
-
- /// <summary>
- /// 电话归属地查询
- /// </summary>
- /// <param name="tel"></param>
- /// <returns></returns>
- [HttpPost("GetTelLocation")]
- public async Task<IActionResult> GetTelLocation(string tel, int type = 0)
- {
- string location = await GetLocationFunc(tel, type);
- return Success("归属地加载成功", location);
- }
- /// <summary>
- /// 同步通话记录
- /// </summary>
- /// <returns></returns>
- [HttpGet("GetTel")]
- public async Task<IActionResult> GetTel()
- {
- DateTime? dtime = DateTime.Now.AddYears(-10);
- T_Call_CallRecords modelCallRecord = await busCallRecordsRepository.GetFirst(q => q.CdrId > 0 && q.IvrEndTime != null, o => new { o.IvrEndTime }, OrderByType.Desc);
- if (modelCallRecord != null)
- {
- if (modelCallRecord.IvrEndTime != null)
- dtime = modelCallRecord.IvrEndTime;
- }
- //modelCallRecord = await busCallRecordsRepository.GetFirst(q => q.CdrId > 0, o => new { o.IvrEndTime }, OrderByType.Desc);
- //if (modelCallRecord != null)
- //{
- // if (modelCallRecord.EndTime != null)
- // dtime = modelCallRecord.EndTime.GetValueOrDefault();
- //}
- List<cdr> modellist = await busCdrRepository.GetListALL(q => q.hangup_time > dtime && q.hangup_time != null);
- if (modellist != null && modellist.Count > 0)
- {
- int totle = 0;
- int n = 0;
- int n1 = 0;
- totle = modellist.Count;
- int minid = modellist[0].id;
- int maxid = modellist[totle - 1].id;
- var CallRecords = await busCallRecordsRepository.AddCall(minid, maxid);
- string url = "请配置videoURL/";
- T_Sys_SystemConfig model = await busSystemConfigRepository.GetSingle(q => q.F_ParamCode == "videoURL");
- if (model != null)
- {
- url = model.F_ParamValue;
- }
- string FileUrlPath = "请配置FileUrlPath/";
- T_Sys_SystemConfig models = await busSystemConfigRepository.GetSingle(q => q.F_ParamCode == "FileUrlPath");
- var medias = await _sys_mediaManagement_Repository.GetListALL(x => x.F_IsDelete == 0);
- if (models != null)
- {
- FileUrlPath = models.F_ParamValue;
- }
- List<T_Call_CallRecords> modelRecordList = new List<T_Call_CallRecords>();
- List<T_Call_CallRecords> modelRecordLists = new List<T_Call_CallRecords>();
- // List<T_Call_Distribution> Distributions = new List<T_Call_Distribution>();
- List<T_Cus_VipInfo> vips = new List<T_Cus_VipInfo>();
- modelRecordList = await busCallRecordsRepository.GetListALL(q => q.CdrId >= minid && q.CdrId <= maxid && q.IvrEndTime != null, o => new { o.IvrEndTime }, OrderByType.Desc);
- if (modelRecordList != null || modelRecordList.Count > 0)
- {
- foreach (T_Call_CallRecords modelcdr in modelRecordList)
- {
- T_Call_CallRecords modelRecord = new T_Call_CallRecords();
- modelRecord = modelcdr;
- int Mediaid = 0;
- // modelRecord.ActionID = modelcdr.action_id;
- // modelRecord.TalkStartTime = modelcdr.answer_time;
- // modelRecord.Callee = modelcdr.callee;
- // modelRecord.RelayNumber = modelcdr.trunk_num;
- if (!string.IsNullOrEmpty(modelRecord.RelayNumber))
- {
- var Media = medias.Where(x => x.F_Telephone == modelRecord.RelayNumber);
- if (Media != null&& Media.Count() >0)
- {
- modelRecord.Media = Media.FirstOrDefault().F_Name;
- Mediaid = Media.FirstOrDefault().F_ID;
- }
- }
- if (modelRecord.CallType == 0)
- {
- string tel = "";
- string userid = "";
- if (modelRecord.Caller.Length > 11)
- tel = modelRecord.Caller.TrimStart('0');
- else
- tel = modelRecord.Caller;
- // modelcdr.UserCode = modelcdr.callee_agent;
- if (!string.IsNullOrEmpty(modelRecord.UserCode))
- {
- var user = await sys_UserAccountRepository.GetFirst(x => x.F_UserCode == modelRecord.UserCode
- && x.F_DeleteFlag == 0);
- if (user != null)
- {
- userid = user.F_UserId.ToString();
- modelRecord.UserName = user.F_UserName;
- modelRecord.Deptid = (int)user.F_DeptTeamId; ;
- modelRecord.DeptName = user.F_Dept;
- }
- }
- var cus = await _cus_vip_infoRepository.GetListVipInfo(" F_State = 1 AND (F_Phone = '" + tel + "' OR F_Mobile LIKE '" + tel + "')LIMIT 1");
- if (cus != null)
- {
- modelRecord.CusCode = cus.F_Name;
- modelRecord.CusId = cus.F_ID;
- if (modelRecord.CallState == 1)
- {
- if (cus.F_Firstcalltime == null)
- cus.F_Firstcalltime = modelRecord.EndTime;
- cus.F_Lastholetime = modelRecord.EndTime;
- if (!string.IsNullOrEmpty(modelRecord.Media))
- {
- cus.F_Media = modelRecord.Media;
- cus.F_MediaId = Mediaid;
- }
- // var res = await _cus_vip_infoRepository.Update (cus);
- }
- vips.Add(cus);
- // var res = await _cus_vip_infoRepository.Update(cus);
- }
- else
- {
- var Distributionlist = await call_DistributionRepository.GetFirst
- (x => x.F_IsDelete == 0 && x.F_Tel == tel && x.F_Type == 1);
- if (!string.IsNullOrEmpty(userid))
- {
- T_Cus_VipInfo vipInfo = new T_Cus_VipInfo();
- vipInfo.F_Name = "新客户";
- vipInfo.F_Phone = tel;
- vipInfo.F_State = (int)EnumDelState.Enabled;
- vipInfo.F_CreateBy = userid;
- vipInfo.F_CreateOn = DateTime.Now;
- vipInfo.F_Saleperson = userid;
- vipInfo.F_Firstcalltime = modelRecord.EndTime;
- vipInfo.F_Lastholetime = modelRecord.EndTime;
- if (!string.IsNullOrEmpty(modelRecord.Media))
- {
- vipInfo.F_Media = modelRecord.Media;
- vipInfo.F_MediaId = Mediaid;
- }
- var res = await _cus_vip_infoRepository.Add(vipInfo);
- }
- else
- {
- if (Distributionlist == null)
- {
- T_Call_Distribution t_Call_Distribution = new T_Call_Distribution();
- t_Call_Distribution.F_Tel = tel;
- t_Call_Distribution.F_Name = "";
- t_Call_Distribution.F_Media = 0;
- t_Call_Distribution.F_MediaName = "";
- t_Call_Distribution.F_CrateTime = DateTime.Now;
- t_Call_Distribution.F_CrateUser = "";
- t_Call_Distribution.F_Type = 1;
- if (Mediaid > 0)
- {
- t_Call_Distribution.F_Media = Mediaid;
- t_Call_Distribution.F_MediaName = modelRecord.Media;
- }
- var res = await call_DistributionRepository.Add(t_Call_Distribution);
- // Distributions.Add(t_Call_Distribution);
- }
- }
- }
- }
- else
- {
- // modelRecord.UserCode = modelcdr.caller_agent;
- var user = await sys_UserAccountRepository.GetFirst(x => x.F_UserCode == modelRecord.UserCode
- && x.F_DeleteFlag == 0);
- if (user != null)
- {
- modelRecord.UserName = user.F_UserName;
- modelRecord.Deptid = (int)user.F_DeptTeamId; ;
- modelRecord.DeptName = user.F_Dept;
- }
- string tel = "";
- if (tel.Length > 11 && tel.Length < 13)
- tel = modelRecord.Caller.Substring(1, 12);
- else if (tel.Length > 12)
- tel = modelRecord.Callee.Substring(2, 13);
- else
- tel = modelRecord.Callee;
- // modelRecord.UserCode = modelcdr.callee_agent;
- // var cus = await _cus_vip_infoRepository.GetFirst(x => x.F_State == 1 && (x.F_Phone == tel || x.F_Mobile
- //.Contains(tel)));
- var cus = await _cus_vip_infoRepository.GetListVipInfo(" F_State = 1 AND (F_Phone = '" + tel + "' OR F_Mobile LIKE '" + tel + "')LIMIT 1");
- if (cus != null)
- {
- modelRecord.CusCode = cus.F_Name;
- modelRecord.CusId = cus.F_ID;
- if (modelRecord.CallState == 1)
- {
- if (cus.F_Firstcalltime == null)
- cus.F_Firstcalltime = modelRecord.EndTime;
- cus.F_Lastholetime = modelRecord.EndTime;
- if (!string.IsNullOrEmpty(modelRecord.Media))
- {
- cus.F_Media = modelRecord.Media;
- cus.F_MediaId = Mediaid;
- }
- }
- vips.Add(cus);
- }
- }
- // modelRecord.Caller = modelcdr.caller;
- // modelRecord.CallType = modelcdr.call_type;
- // modelRecord.BeginTime = modelcdr.create_time;
- // modelRecord.EndTime = modelcdr.end_time;
- // modelRecord.CallState = modelcdr.is_answer;
- // modelcdr.hangup_cause;挂机原因不赋值 HangUpReason
- // modelcdr.leave_path 留言 赋值给了FilePath
- // modelRecord.IvrEndTime = modelcdr.hangup_time;
- // modelRecord.Id = modelcdr.id;
- // modelRecord.MYD = modelcdr.myd;
- // modelRecord.Remark = modelcdr.note;
- // modelRecord.OperateType = modelcdr.op_type;
- // modelRecord.FilePath = url+ modelcdr.record_path;
- if (!string.IsNullOrEmpty(modelRecord.FilePath))
- {
- modelRecord.FilePath = url + modelRecord.FilePath;
- }
- // else if (!string.IsNullOrEmpty(modelcdr.record_path))
- // {
- // modelRecord.FilePath = url + modelcdr.leave_path;
- // }
- // modelRecord.RingStartTime = modelcdr.ring_time;
- // modelRecord.IsReturnvisit = 0;
- // modelRecord.CallId = modelcdr.uuid;
- // modelRecord.CdrId = modelcdr.id;
- modelRecord.Location = await GetLocationFunc(modelRecord.Caller, 1);
- #region 计算时长
- modelRecord.LongTime = (int)DateTimeConvert.DateDiff(DateInterval.Second, modelRecord.TalkStartTime.GetValueOrDefault(), modelRecord.EndTime.GetValueOrDefault());
- if (modelRecord.TalkStartTime != null)
- modelRecord.TalkLongTime = (int)DateTimeConvert.DateDiff(DateInterval.Second, modelRecord.TalkStartTime.GetValueOrDefault(), modelRecord.EndTime.GetValueOrDefault());
- else
- modelRecord.TalkLongTime = 0;
- #endregion
- n++;
- n1++;
- // await busCallRecordsRepository.Add (modelRecord);
- modelRecordLists.Add(modelRecord);
- if (n >= 20)
- {
- await busCallRecordsRepository.UpdateList(modelRecordLists);
- modelRecordLists.Clear();
- // await call_DistributionRepository.AddAndUpdateList(Distributions);
- // Distributions.Clear();
- n = 0;
- }
- }
- }
- //T_Call_CallRecords modelreturn= await busCallRecordsRepository.AddAndUpdateList(modelRecordList,s=>new {s.EndTime,s.TalkEndTime,s.IvrEndTime });
- //T_Call_CallRecords modelreturn =
- if (vips.Count > 0)
- {
- await _cus_vip_infoRepository.AddAndUpdateList(vips);
- }
- if (modelRecordLists.Count > 0)
- {
- await busCallRecordsRepository.AddAndUpdateList(modelRecordLists);
- }
- if (n1 == totle)
- return Success ($"同步情况 成功/总数 = {n1}/{totle}");
- }
- return Success("");
- }
- /// <summary>
- /// 获取电话归属地
- /// </summary>
- /// <param name="tel"></param>
- /// <param name="type"></param>
- /// <returns></returns>
- [NonAction]
- internal async Task<string> GetLocationFunc(string tel, int type = 0)
- {
- string location = "未知";
- if (tel.Trim().Length == 12 && tel.Substring(0, 1) == "0")
- {
- T_Sys_MobileData mobile_Bll = new T_Sys_MobileData();
- T_Sys_MobileData mobileModel = await busMobileDataRepository.GetFirst(q => q.F_MobileNum == tel.Substring(1, 8));
- if (mobileModel != null)
- {
- location = mobileModel.F_CityDes;
- if (type == 0)
- {
- location += mobileModel.F_CardDes;
- }
- }
- }
- if (tel.Trim().Length == 11 && tel.Substring(0, 1) != "0")
- {
- T_Sys_MobileData mobile_Bll = new T_Sys_MobileData();
- T_Sys_MobileData mobileModel = await busMobileDataRepository.GetFirst(q => q.F_MobileNum == tel.Substring(0, 7));
- if (mobileModel != null)
- {
- location = mobileModel.F_CityDes;
- if (type == 0)
- {
- location += mobileModel.F_CardDes;
- }
- }
- }
- else
- {
- T_Sys_MobileData mobile_Bll = new T_Sys_MobileData();
- T_Sys_MobileData mobileModel = await busMobileDataRepository.GetFirst(q => q.F_ZipCode == tel.Substring(0, 4));
- if (mobileModel == null)
- {
- mobileModel = await busMobileDataRepository.GetFirst(q => q.F_ZipCode == tel.Substring(0, 3));
- }
- if (mobileModel != null)
- {
- location = mobileModel.F_CityDes;
- if (type == 0)
- {
- location += mobileModel.F_CardDes;
- }
- }
- }
- return location;
- }
-
- #region 同步通话记录
- /// <summary>
- /// 同步通话记录
- /// </summary>
- /// <returns></returns>
- [NonAction]
- internal async Task<string> SyncCallRecord()
- {
-
- DateTime? dtime = DateTime.Now.AddYears(-10);
- T_Call_CallRecords modelCallRecord = await busCallRecordsRepository.GetFirst(q => q.CdrId > 0 && q.IvrEndTime != null, o => new { o.IvrEndTime }, OrderByType.Desc);
-
- if (modelCallRecord != null)
- {
- if (modelCallRecord.IvrEndTime != null)
- dtime = modelCallRecord.IvrEndTime;
- }
- //modelCallRecord = await busCallRecordsRepository.GetFirst(q => q.CdrId > 0, o => new { o.IvrEndTime }, OrderByType.Desc);
- //if (modelCallRecord != null)
- //{
- // if (modelCallRecord.EndTime != null)
- // dtime = modelCallRecord.EndTime.GetValueOrDefault();
- //}
- List<cdr> modellist = await busCdrRepository.GetListALL(q => q.hangup_time > dtime && q.hangup_time != null);
-
- if (modellist != null && modellist.Count > 0)
- {
- int totle = 0;
- int n = 0;
- int n1 = 0;
- totle = modellist.Count;
- int minid = modellist[0].id;
- int maxid = modellist[totle - 1].id;
- string url = "请配置videoURL/";
- T_Sys_SystemConfig model = await busSystemConfigRepository.GetSingle(q => q.F_ParamCode == "videoURL");
- if (model != null)
- {
- url = model.F_ParamValue;
- }
- string FileUrlPath = "请配置FileUrlPath/";
- T_Sys_SystemConfig models = await busSystemConfigRepository.GetSingle(q => q.F_ParamCode == "FileUrlPath");
- var medias = await _sys_mediaManagement_Repository.GetListALL(x => x.F_IsDelete == 0);
- if (models != null)
- {
- FileUrlPath = models.F_ParamValue;
- }
- List<T_Call_CallRecords> modelRecordList = new List<T_Call_CallRecords>();
- List<T_Call_CallRecords> modelRecordLists = new List<T_Call_CallRecords>();
- // List<T_Call_Distribution> Distributions = new List<T_Call_Distribution>();
- List<T_Cus_VipInfo> vips = new List<T_Cus_VipInfo>();
- modelRecordList = await busCallRecordsRepository.GetListALL(q => q.CdrId >= minid && q.CdrId <= maxid && q.IvrEndTime != null, o => new { o.IvrEndTime }, OrderByType.Desc);
- if (modelRecordList !=null || modelRecordList.Count>0)
- {
- foreach (T_Call_CallRecords modelcdr in modelRecordList)
- {
- T_Call_CallRecords modelRecord = new T_Call_CallRecords();
- modelRecord = modelcdr;
- int Mediaid = 0;
- // modelRecord.ActionID = modelcdr.action_id;
- // modelRecord.TalkStartTime = modelcdr.answer_time;
- // modelRecord.Callee = modelcdr.callee;
- // modelRecord.RelayNumber = modelcdr.trunk_num;
- if (!string.IsNullOrEmpty(modelRecord.RelayNumber))
- {
- var Media = medias.Where(x => x.F_Telephone == modelRecord.RelayNumber);
- if (Media != null && Media.Count() > 0)
- {
- modelRecord.Media = Media.FirstOrDefault ().F_Name;
- Mediaid = Media.FirstOrDefault().F_ID;
- }
- }
- if (modelRecord.CallType == 0)
- {
- string tel = "";
- string userid = "";
- if (modelRecord.Caller.Length > 11)
- tel = modelRecord.Caller.TrimStart('0');
- else
- tel = modelRecord.Caller;
- // modelcdr.UserCode = modelcdr.callee_agent;
- if (!string.IsNullOrEmpty(modelRecord.UserCode))
- {
- var user = await sys_UserAccountRepository.GetFirst(x => x.F_UserCode == modelRecord.UserCode
- && x.F_DeleteFlag == 0);
- if (user != null)
- {
- userid = user.F_UserId.ToString();
- modelRecord.UserName = user.F_UserName;
- modelRecord.Deptid = (int)user.F_DeptTeamId; ;
- modelRecord.DeptName = user.F_Dept;
- }
- }
- var cus = await _cus_vip_infoRepository.GetListVipInfo(" F_State = 1 AND (F_Phone = '" + tel + "' OR F_Mobile LIKE '" + tel + "') LIMIT 1");
- if (cus.F_ID > 0)
- {
- modelRecord.CusCode = cus.F_Name;
- modelRecord.CusId = cus.F_ID;
- if (cus.F_Firstcalltime == null)
- cus.F_Firstcalltime = modelRecord.EndTime;
- cus.F_Lastholetime = modelRecord.EndTime;
- if (modelRecord.CallState ==0)
- cus.F_IsReturnvisit=0;
- if (!string.IsNullOrEmpty(modelRecord.Media))
- {
- cus.F_Media = modelRecord.Media;
- cus.F_MediaId = Mediaid;
- }
- vips.Add(cus);
- if (string.IsNullOrEmpty(modelRecord.UserCode))
- {
- var user = await sys_UserAccountRepository.GetFirst(x => x.F_UserId == cus.F_Saleperson.ObjToInt()
- && x.F_DeleteFlag == 0);
- if (user != null)
- {
- userid = user.F_UserId.ToString();
- modelRecord.UserName = user.F_UserName;
- modelRecord.Deptid = (int)user.F_DeptTeamId; ;
- modelRecord.DeptName = user.F_Dept;
- modelRecord.TeamId = (int)user.F_DeptTeamId ; ;
- modelRecord.Team = user.F_Team ;
- }
- }
- }
- else
- {
- var Distributionlist = await call_DistributionRepository.GetFirst
- (x => x.F_IsDelete == 0 && x.F_Tel == tel && x.F_Type == 1);
- if (!string.IsNullOrEmpty(userid))
- {
- T_Cus_VipInfo vipInfo = new T_Cus_VipInfo();
- vipInfo.F_Name = "新客户";
- vipInfo.F_Phone = tel;
- vipInfo.F_State = (int)EnumDelState.Enabled;
- vipInfo.F_CreateBy = userid;
- vipInfo.F_CreateOn = DateTime.Now;
- vipInfo.F_Saleperson = userid;
- vipInfo.F_Firstcalltime = modelRecord.EndTime;
- vipInfo.F_Lastholetime = modelRecord.EndTime;
- if (modelRecord.CallState == 0)
- vipInfo.F_IsReturnvisit = 0;
- if (!string.IsNullOrEmpty(modelRecord.Media))
- {
- vipInfo.F_Media = modelRecord.Media;
- vipInfo.F_MediaId = Mediaid;
- }
- var res = await _cus_vip_infoRepository.Add(vipInfo);
- if (res > 0)
- {
- modelRecord.CusCode = "新客户";
- modelRecord.CusId = res;
- // var res = await _cus_vip_infoRepository.Update(cus);
- }
- }
- else
- {
- if (Distributionlist == null)
- {
- T_Call_Distribution t_Call_Distribution = new T_Call_Distribution();
- t_Call_Distribution.F_Tel = tel;
- t_Call_Distribution.F_Name = "";
- t_Call_Distribution.F_Media = 0;
- t_Call_Distribution.F_MediaName = "";
- t_Call_Distribution.F_CrateTime = DateTime.Now;
- t_Call_Distribution.F_CrateUser = "";
- t_Call_Distribution.F_Type = 1;
- if (Mediaid > 0)
- {
- t_Call_Distribution.F_Media = Mediaid;
- t_Call_Distribution.F_MediaName = modelRecord.Media;
- }
- var res = await call_DistributionRepository.Add(t_Call_Distribution);
- // Distributions.Add(t_Call_Distribution);
- }
- }
- }
- }
- else
- {
- // modelRecord.UserCode = modelcdr.caller_agent;
- var user = await sys_UserAccountRepository.GetFirst(x => x.F_UserCode == modelRecord.UserCode
- && x.F_DeleteFlag == 0);
- if (user != null)
- {
- modelRecord.UserName = user.F_UserName;
- modelRecord.Deptid = (int)user.F_DeptTeamId; ;
- modelRecord.DeptName = user.F_Dept;
- }
- string tel = "";
- if (tel.Length > 11 && tel.Length < 13)
- tel = modelRecord.Caller.Substring(1, 12);
- else if (tel.Length > 12)
- tel = modelRecord.Callee.Substring(2, 13);
- else
- tel = modelRecord.Callee;
- // modelRecord.UserCode = modelcdr.callee_agent;
- // var cus = await _cus_vip_infoRepository.GetFirst(x => x.F_State == 1 && (x.F_Phone == tel || x.F_Mobile
- //.Contains(tel)));
- var cus = await _cus_vip_infoRepository.GetListVipInfo(" F_State = 1 AND (F_Phone = '" + tel + "' OR F_Mobile LIKE '" + tel + "')LIMIT 1");
- if (cus.F_ID > 0)
- {
- modelRecord.CusCode = cus.F_Name;
- modelRecord.CusId = cus.F_ID;
- if (cus.F_Firstcalltime == null)
- cus.F_Firstcalltime = modelRecord.EndTime;
- cus.F_Lastholetime = modelRecord.EndTime;
- if (!string.IsNullOrEmpty(modelRecord.Media))
- {
- cus.F_Media = modelRecord.Media;
- cus.F_MediaId = Mediaid;
- }
- vips.Add(cus);
- }
- }
- // modelRecord.Caller = modelcdr.caller;
- // modelRecord.CallType = modelcdr.call_type;
- // modelRecord.BeginTime = modelcdr.create_time;
- // modelRecord.EndTime = modelcdr.end_time;
- // modelRecord.CallState = modelcdr.is_answer;
- // modelcdr.hangup_cause;挂机原因不赋值 HangUpReason
- // modelcdr.leave_path 留言 赋值给了FilePath
- // modelRecord.IvrEndTime = modelcdr.hangup_time;
- // modelRecord.Id = modelcdr.id;
- // modelRecord.MYD = modelcdr.myd;
- // modelRecord.Remark = modelcdr.note;
- // modelRecord.OperateType = modelcdr.op_type;
- // modelRecord.FilePath = url+ modelcdr.record_path;
- if (!string.IsNullOrEmpty(modelRecord.FilePath))
- {
- modelRecord.FilePath = url + modelRecord.FilePath;
- }
- // else if (!string.IsNullOrEmpty(modelcdr.record_path))
- // {
- // modelRecord.FilePath = url + modelcdr.leave_path;
- // }
- // modelRecord.RingStartTime = modelcdr.ring_time;
- // modelRecord.IsReturnvisit = 0;
- // modelRecord.CallId = modelcdr.uuid;
- // modelRecord.CdrId = modelcdr.id;
- modelRecord.Location = await GetLocationFunc(modelRecord.Caller, 1);
- #region 计算时长
- modelRecord.LongTime = (int)DateTimeConvert.DateDiff(DateInterval.Second, modelRecord.TalkStartTime.GetValueOrDefault(), modelRecord.EndTime.GetValueOrDefault());
- if (modelRecord.TalkStartTime != null)
- modelRecord.TalkLongTime = (int)DateTimeConvert.DateDiff(DateInterval.Second, modelRecord.TalkStartTime.GetValueOrDefault(), modelRecord.EndTime.GetValueOrDefault());
- else
- modelRecord.TalkLongTime = 0;
- #endregion
- n++;
- n1++;
- // await busCallRecordsRepository.Add (modelRecord);
- modelRecordLists.Add(modelRecord);
- if (n >= 20)
- {
- await busCallRecordsRepository.UpdateList(modelRecordLists);
- modelRecordLists.Clear();
-
- // await call_DistributionRepository.AddAndUpdateList(Distributions);
- // Distributions.Clear();
- n = 0;
- }
- }
- }
- if (vips.Count > 0)
- {
- await _cus_vip_infoRepository.AddAndUpdateList(vips);
- vips.Clear();
- }
- //T_Call_CallRecords modelreturn= await busCallRecordsRepository.AddAndUpdateList(modelRecordList,s=>new {s.EndTime,s.TalkEndTime,s.IvrEndTime });
- //T_Call_CallRecords modelreturn =
- if (modelRecordLists.Count > 0)
- {
- await busCallRecordsRepository.AddAndUpdateList(modelRecordLists);
- }
- if (n1 == totle)
- return $"同步情况 成功/总数 = {n1}/{totle}";
-
-
- }
- return "";
- }
- public string Upload(string pathUrl,string url )
- {
-
- //文件下载地址
- try
- {
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(pathUrl);
- HttpWebResponse response = request.GetResponse() as HttpWebResponse;
- Stream responseStream = response.GetResponseStream();
-
- string path = "\\Upload\\video\\" + DateTime.Now.ToString("yyyy") + "\\" + DateTime.Now.ToString("MM") + "\\" + DateTime.Now.ToString("dd")+ "\\";
- string Currentpath = Directory.GetCurrentDirectory() + path;
- // 如果不存在就创建file文件夹
- if (!Directory.Exists(Currentpath))
- {
- if (Currentpath != null) Directory.CreateDirectory(Currentpath);
- }
- string newFileName = Guid.NewGuid().ToString().Replace("-", "") + ".mp4"; //随机生成新的文件名
- Stream stream = new FileStream(Currentpath + newFileName, FileMode.Create);
- byte[] bArr = new byte[1024];
- int size = responseStream.Read(bArr, 0, bArr.Length);
- while (size > 0)
- {
- stream.Write(bArr, 0, size);
- size = responseStream.Read(bArr, 0, bArr.Length);
- }
- stream.Close();
- responseStream.Close();
- return url + "/Upload/video/" +DateTime.Now.ToString("yyyy") + "/" + DateTime.Now.ToString("MM") + "/" + DateTime.Now.ToString("dd") + "/" + newFileName;
- }
- catch (Exception e)
- {
- return e.Message ;
- }
- }
-
- /// <summary>
- /// 同步自动外呼通话记录
- /// </summary>
- /// <returns></returns>
- [NonAction]
- internal async Task<string> SyncOutbound()
- {
- DateTime dtime = DateTime.Now.AddYears(-10);
- int maxid = 0;
- T_Call_CallOutbound modelCallRecord = await CallOutboundRecordsRepository.GetFirst(q => q.CdrId > 0, o => new { o.CdrId }, OrderByType.Desc);
- if (modelCallRecord != null)
- {
- maxid = modelCallRecord.CdrId;
- }
- modelCallRecord = await CallOutboundRecordsRepository.GetFirst(q => q.CdrId > 0, o => new { o.EndTime }, OrderByType.Desc);
- if (modelCallRecord != null)
- {
- if (modelCallRecord.EndTime != null)
- dtime = modelCallRecord.EndTime.GetValueOrDefault();
- }
- List<auto_cdr > modellist = await auto_cdrRepository.GetListALL(q => q.id > maxid );
- int totle = 0;
- int n = 0;
- int n1 = 0;
- if (modellist != null && modellist.Count > 0)
- {
- string url = "请配置videoURL/";
- T_Sys_SystemConfig model = await busSystemConfigRepository.GetSingle(q => q.F_ParamCode == "videoURL");
- if (model != null)
- {
- url = model.F_ParamValue;
- }
- totle = modellist.Count;
- List<T_Call_CallOutbound> modelRecordList = new List<T_Call_CallOutbound>();
- foreach (auto_cdr modelcdr in modellist)
- {
- T_Call_CallOutbound modelRecord = new T_Call_CallOutbound();
- modelRecord.ActionID =1;
- modelRecord.TalkStartTime = modelcdr.answer_time;
- modelRecord.Callee = modelcdr.callee;
- modelRecord.UserCode = modelcdr.agent;
- modelRecord.Caller = modelcdr.caller;
- modelRecord.CallType =1;
- modelRecord.BeginTime = modelcdr.create_time;
- modelRecord.EndTime = modelcdr.end_time;
- // modelRecord.CallState = modelcdr.is_answer;
- // modelRecord.Id =(int ) modelcdr.id;
- modelRecord.FilePath = url + modelcdr.record_path;
- if (string.IsNullOrEmpty(modelcdr.record_path) && !string.IsNullOrEmpty(modelcdr.record_path ))
- {
- modelRecord.FilePath = url + modelcdr.record_path;
- }
- modelRecord.RingStartTime = modelcdr.ring_time;
- modelRecord.CallId = modelcdr.uuid;
- modelRecord.CdrId = (int)modelcdr.id;
- modelRecord.Location = await GetLocationFunc(modelcdr.caller, 1);
- #region 计算时长
- modelRecord.LongTime = (int)DateTimeConvert.DateDiff(DateInterval.Second, modelcdr.create_time.GetValueOrDefault(), modelcdr.end_time.GetValueOrDefault());
- if (modelcdr.answer_time != null)
- modelRecord.TalkLongTime = (int)DateTimeConvert.DateDiff(DateInterval.Second, modelcdr.answer_time.GetValueOrDefault(), modelcdr.end_time.GetValueOrDefault());
- else
- modelRecord.TalkLongTime = 0;
- #endregion
- n++;
- n1++;
- modelRecordList.Add(modelRecord);
- if (n >= 2000)
- {
- await CallOutboundRecordsRepository.AddAndUpdateList(modelRecordList);
- modelRecordList.Clear();
- n = 0;
- }
- }
- await CallOutboundRecordsRepository.AddAndUpdateList(modelRecordList);
- }
- return $"同步情况 成功/总数 = {n1}/{totle}";
- }
- /// <summary>
- /// 同步外呼状态
- /// </summary>
- /// <returns></returns>
- [NonAction]
- internal async Task<string> SyncAutodial()
- {
- List<task > modellist = await taskRepository.GetListALL(q => q.status ==0 &&q .state ==1);
- int totle = 0;
- int n = 0;
- int n1 = 0;
- if (modellist != null && modellist.Count > 0)
- {
- List<T_Sys_AutoDial> modelAutoDial = new List<T_Sys_AutoDial>();
- List<task> taskList = new List<task>();
- foreach (task it in modellist)
- {
- var AutoDial = await sys_autodialrepository.GetSingle (q => q.F_ID == it.outbound_id );
- if (AutoDial!=null )
- {
- AutoDial.F_ISOutbound = 1;
- modelAutoDial.Add(AutoDial);
- n++;
- }
- it.status = 1;
- taskList.Add(it);
- #endregion
- n1++;
- if (n >= 2000)
- {
- await sys_autodialrepository.AddAndUpdateList(modelAutoDial);
- modelAutoDial.Clear();
- n = 0;
- }
- if (n1 >=2000)
- {
- await taskRepository.UpdateList(taskList);
- taskList.Clear();
- n1 = 0;
- }
- }
- await sys_autodialrepository.AddAndUpdateList(modelAutoDial);
- await taskRepository.UpdateList (taskList);
- }
- return $"同步情况 成功/总数 = {n1}/{totle}";
- }
- /// <summary>
- /// 同步仓库
- /// </summary>
- /// <returns></returns>
- [NonAction]
- internal async Task<string> AfterSale()
- {
- List<T_Bus_AfterSale > modellist = await busAfterSaleRepository.GetListALL(q => q.F_CheckStateSH == 0&& q.F_State ==0);
- int totle = 0;
- int n1 = 0;
- if (modellist != null && modellist.Count > 0)
- {
- DateTime t1 = DateTime.Now;
- List<T_Bus_AfterSale> afterSales = new List<T_Bus_AfterSale>();
- foreach (var it in modellist)
- {
- try
- {
- if ((int)DateTimeConvert.DateDiff(DateInterval.Day, (DateTime)it.F_CheckTimeSH, DateTime.Now) > 60)
- {
- it.F_CheckStateKG = 3;
- it.F_KGRemarks = "超过60天退回";
- it.F_CheckTimeKG = DateTime.Now;
- afterSales.Add(it);
- n1++;
- }
- }
- catch
- {
- }
- totle++;
- }
- await busAfterSaleRepository.AddAndUpdateList(afterSales);
- }
- return $"同步情况 成功/总数 = {n1}/{totle}";
- }
- /// <summary>
- /// 自动下单
- /// </summary>
- /// <returns></returns>
- [NonAction]
- internal async Task<string> Automatic()
- {
- int count=0;
- var autom =await bus_AutomaticOrderRepository.GetListALL(x => x.F_State == 1);
- List<T_Cus_VipInfo> vipInfos = new List<T_Cus_VipInfo>();
- List<T_Bus_Order > orders = new List<T_Bus_Order>();
- List<T_Bus_Orderlogs> logs = new List<T_Bus_Orderlogs>();
- List<T_Bus_OrderDetail> modelDetailList = new List<T_Bus_OrderDetail>();
- if (autom!=null && autom.Count >0)
- {
- foreach (var it in autom)
- {
- var viplist = await _cus_vip_infoRepository.GetListALL
- (x => x.F_Count >= it.F_Count && x.F_MembershipId == it.F_Grade
- && x .F_GiveTime <DateTime .Now .AddDays (-it .F_GiveTime ) );
- if (viplist!=null && viplist.Count >0)
- {
- foreach (var iv in viplist)
- {
- T_Bus_Order modelOrder = new T_Bus_Order();
- #region 订单属性
- //必填
- modelOrder.F_ADFrom = "官网";
- modelOrder.F_Type = "自动下单";
- modelOrder.F_Id = "BJ" + iv.F_Saleperson + "T" + DateTimeConvert.ToTimetag(DateTime.Now); ;
- modelOrder.F_Customer = iv.F_Name;
- modelOrder.F_CustomerPhone = iv.F_Phone;
- modelOrder.F_CustomerTel = iv.F_Phone;
- modelOrder.F_Addressee = iv.F_Name;
- //选填 快递属性
- modelOrder.F_TrackingNo = "";
- modelOrder.F_AddPhone = iv.F_Phone;
- modelOrder.F_AddProvince = iv.F_Province;
- modelOrder.F_AddCity = iv.F_City;
- modelOrder.F_AddArea = iv.F_Area;
- modelOrder.F_AddTown = iv.F_Town;
- modelOrder.F_AddDes = "赠送订单";
- modelOrder.F_Address = iv.F_Address;
- modelOrder.F_Remark = "自动下单";
- modelOrder.F_PayType = "货到付款";
- modelOrder.F_VipId = iv.F_ID;
- modelOrder.F_Belong = iv.F_Saleperson.ObjToInt();
- var useraccount = await _sys_useraccountRepository.GetSingle(x => x.F_UserId == modelOrder.F_Belong);
- if (useraccount != null)
- {
- modelOrder.F_Department = useraccount.F_DeptId;
- modelOrder.F_Core = useraccount.F_DeptTeamId;
- modelOrder.F_Group = useraccount.F_GroupId;
- }
- modelOrder.F_BelongName = "ID:" + iv.F_Saleperson;
- modelOrder.F_ExpressFee = 0;
- // modelOrder.F_Stock = input.F_Stock;
- modelOrder.F_IsExpress = 0;
- modelOrder.F_RealPrice = 0;
- modelOrder.F_MemberNotes = "自动下单";//会员备注
- modelOrder.F_UseScore = 0;
- modelOrder.F_State = 1;
- //选填 关联属性
- modelOrder.F_Status = 0;
- modelOrder.F_IsPayment = 0;
- //必须属性 系统生成
- modelOrder.F_AddTime = DateTime.Now;
- modelOrder.F_AddUser = 0;
- modelOrder.F_AddUserName = "系统";
- #endregion
- decimal totle = 0.00M;
-
- // List<T_Bus_Product> Productlist = new List<T_Bus_Product>();
- int n = 1;
- string[] ids = it.F_ProductId.Split(',');
- if (ids == null || ids.Length <= 0)
- return "没有设置商品";
- foreach (var m in ids)
- {
- T_Bus_Product modelProduct = await _productRepository.GetSingle(b => b.F_ProductId == m );
- if (modelProduct == null) return "在售商品不存在";
- T_Bus_OrderDetail modelDetail = new T_Bus_OrderDetail();
- modelDetail.F_ProductName = modelProduct.F_ProductName;
- modelDetail.F_ProductId = modelProduct.F_ProductId;
- modelDetail.F_Specifications = modelProduct.F_Specifications;
- modelDetail.F_ProductShortName = modelProduct.F_ProductShortName;
- modelDetail.F_Id = Guid.NewGuid().ToString().Replace("-", "");
- modelDetail.F_OrderId = modelOrder.F_Id;
- modelDetail.F_Count = it .F_Count;
- modelDetail.F_Price = modelProduct.F_MemberPrice;
- modelDetail.F_DealPrice = 0;
- modelOrder.F_IsZeroCommodity =0;
- modelDetail.F_Sort = n;
- modelDetail.F_AddTime = DateTime.Now;
- if (modelProduct.F_ClassName == "袜子" && modelDetail.F_DealPrice == 0)
- {
- modelOrder.F_IsZeroCommodity = 1;
- }
- modelDetail.F_AddUser = modelOrder.F_AddUser;
- modelDetail.F_AddUserName = modelOrder.F_AddUserName;
- modelDetail.F_TotlePrice = modelDetail.F_DealPrice * modelDetail.F_Count;
- modelDetail.F_Activity = 0;
- totle += modelDetail.F_TotlePrice;
- modelDetailList.Add(modelDetail);
- // List<EBossStock> listStock = await busOrderFunctionController.GetStock(it.F_ProductId, "山西仓");
- // List<EBossStock> listStock1 = await busOrderFunctionController.GetStock(it.F_ProductId, "新乡仓");
- //modelProduct.F_UseNumber += it.F_Count;
- //if (modelProduct.F_UseNumber > listStock[0].qty && modelProduct.F_UseNumber > listStock1[0].qty)
- //{
- // return "提交失败,可配量不足.";
- //}
- //else
- //{
- // Productlist.Add(modelProduct);
- //}
- n++;
- }
- // await _productRepository.UpdateList(Productlist);
- modelOrder.F_SubmitTime = DateTime.Now;
- if (modelOrder.F_IsPayment > 0)
- modelOrder.F_State = 7;
- else
- modelOrder.F_State = 1;
- modelOrder.F_FlowNum = DateTime.Now.ToString("yyMMddHHmmss") + "U" + UserLogin.UserId + "R" + new Random().Next(9);
- modelOrder.F_TotlePrice = totle;
- //订单完成后也不计算积分
- T_Bus_Orderlogs t_Bus_Orderlogs = new T_Bus_Orderlogs();
- modelOrder.F_TotlePrice = 0;//订单总额(包括快递费)
- //modelOrder.F_RecommenderTel = iv .F_RecommenderTel;
- modelOrder.F_PayState = 1;
- modelOrder.F_IsZeroCommodity = 0;
- t_Bus_Orderlogs.F_WoID = modelOrder.F_Id;
- t_Bus_Orderlogs.F_OptContent = UserLogin.UserName + "提交订单";
- t_Bus_Orderlogs.F_CreateUser = UserLogin.UserCode;
- t_Bus_Orderlogs.F_CreateTime = DateTime.Now;
- t_Bus_Orderlogs.F_WoState = modelOrder.F_State;
- logs.Add(t_Bus_Orderlogs);
- orders.Add(modelOrder);
- count++;
- }
- }
- }
-
- }
- if (await bus_OrderDetailRepository.AddMany(modelDetailList))
- {
- if (await bus_OrderRepository.AddMany(orders))
- {
- await busOrderlogsRepository.AddMany(logs);
- }
- else
- count = 0;
- }
- return "添加" + count + "条";
- }
-
- /// <summary>
- /// 同步外呼状态
- /// </summary>
- /// <returns></returns>
- [NonAction]
- internal async Task<string> SyncArchivePool()
- {
- List<task> modellist = await taskRepository.GetListALL(q => q.status == 0 && q.state == 1);
- int totle = 0;
- int n = 0;
- int n1 = 0;
- if (modellist != null && modellist.Count > 0)
- {
- List<T_Sys_AutoDial> modelAutoDial = new List<T_Sys_AutoDial>();
- List<task> taskList = new List<task>();
- foreach (task it in modellist)
- {
- var AutoDial = await sys_autodialrepository.GetSingle(q => q.F_ID == it.outbound_id);
- if (AutoDial != null)
- {
- AutoDial.F_ISOutbound = 1;
- modelAutoDial.Add(AutoDial);
- n++;
- }
- it.status = 1;
- taskList.Add(it);
-
- n1++;
- if (n >= 2000)
- {
- await sys_autodialrepository.AddAndUpdateList(modelAutoDial);
- modelAutoDial.Clear();
- n = 0;
- }
- if (n1 >= 2000)
- {
- await taskRepository.UpdateList(taskList);
- taskList.Clear();
- n1 = 0;
- }
- }
- await sys_autodialrepository.AddAndUpdateList(modelAutoDial);
- await taskRepository.UpdateList(taskList);
- }
- return $"同步情况 成功/总数 = {n1}/{totle}";
- }
- }
- }
|