public override void CheckedData(SynCheckedDataInfoEntity entity, SynDataInfoEntity item) { BaiduV2AccountService serviceAccount = new BaiduV2AccountService(item.AccountName, CryptHelper.DESDecode(item.AccountPwd), CryptHelper.DESDecode(item.Token)); while (string.IsNullOrEmpty(entity.FilePath)) { Thread.Sleep(1000); if (serviceAccount.HasFileOnServer(item.DealWithId)) { List<FilePathInfo> alls = new List<FilePathInfo>(); while (!alls.Any()) { alls = serviceAccount.GetAllObjectsPath(item.DealWithId); } if (alls.Any()) { foreach (var url in alls) { entity.FilePath = url.FilePath; entity.FileName = url.FileName; // 记录获取下载链接的时间,精确到小时 entity.DealWithDate = DateTime.Now; // 直接下载 base.DownloadFileAndSynData(entity); DataHelper.AppendSynCheckedDataInfo(entity); } DataHelper.RemoveSynDataInfo(item); } } } serviceAccount = null; }
protected override void DealRowData(string[] fields, SynCheckedDataInfoEntity entity) { KeywordStatisticsEntity model = new KeywordStatisticsEntity(); // 日期 model.SynchroDate = DateTime.Parse(fields[0]); // 账户ID model.AccountId = long.Parse(fields[1]); // 推广计划ID model.CampaignId = long.Parse(fields[3]); // 推广单元ID model.AdgroupId = long.Parse(fields[5]); // 关键词ID model.KeywordId = long.Parse(fields[7]); // 推广方式 model.ExpandType = fields[9]; // 消费 model.TotalCost = decimal.Parse(DataHelper.SetDefault(fields[10])); // 平均点击价格 model.AvgClickedPrice = decimal.Parse(DataHelper.SetDefault(fields[11])); // 点击量 model.Clicked = long.Parse(DataHelper.SetDefault(fields[12])); // 展现量 model.ShowCnt = long.Parse(DataHelper.SetDefault(fields[13])); // 点击率 model.ClickedRate = decimal.Parse(DataHelper.SetDefault(fields[14]).Replace("%", "")); // 千次展现消费 model.ThousandCost = decimal.Parse(DataHelper.SetDefault(fields[15])); //平均排名 model.AvgRang = decimal.Parse(DataHelper.SetDefault(fields[16])); // 转化 model.TransformCnt = int.Parse(DataHelper.SetDefault(fields[17])); ParamHelper.wcfKeywordStatistics.Add(model); // 日期 账户ID 账户 推广计划ID 推广计划 推广单元ID 推广单元 关键词keywordID 关键词 推广方式 消费 平均点击价格 点击量 展现量 点击率 千次展现消费 平均排名 转化 }
protected override void DealRowData(string[] fields, SynCheckedDataInfoEntity entity) { long id = long.Parse(fields[1]); AdgroupInfoEntity model = ParamHelper.wcfAdgroup.FindByID(id); bool b = false; if (model == null) { b = true; model = new AdgroupInfoEntity(); } model.CampaignId = long.Parse(fields[0]); model.ID = id; model.Name = fields[2]; model.MaxPrice = fields[3] == "-" ? 0 : decimal.Parse(fields[3]); model.NegativeWords = fields[4]; model.ExactNegativeWords = fields[5]; model.Pause = bool.Parse(fields[6]); model.Status = int.Parse(fields[7]); model.AccountName = entity.AccountName; if (b) { ParamHelper.wcfAdgroup.Add(model); } else { ParamHelper.wcfAdgroup.Update(model); } }
protected override void DealRowData(string[] fields, SynCheckedDataInfoEntity entity) { long id = long.Parse(fields[2]); KeywordInfoEntity model = ParamHelper.wcfKeyword.FindByID(id); bool b = false; if (model == null) { b = true; model = new KeywordInfoEntity(); } model.CampaignId = long.Parse(fields[0]); model.AdgroupId = long.Parse(fields[1]); model.ID = id; model.Keyword = fields[3]; model.Price = fields[4] == "-" ? 0 : decimal.Parse(fields[4]); model.DestinationUrl = fields[5]; model.MatchType = int.Parse(fields[6]); model.Pause = bool.Parse(fields[7]); model.Status = int.Parse(fields[8]); model.Quality = int.Parse(fields[9]); model.Temp = int.Parse(fields[10]); model.AccountName = entity.AccountName; if (b) { ParamHelper.wcfKeyword.Add(model); } else { ParamHelper.wcfKeyword.Update(model); } }
public void SynData(SynCheckedDataInfoEntity entity) { if (manager.ContainsKey(entity.DealWithType ?? 0)) { manager[entity.DealWithType ?? 0].SynData(entity); } }
protected override void DealRowData(string[] fields, SynCheckedDataInfoEntity entity) { long id = long.Parse(fields[2]); CreativeInfoEntity model = ParamHelper.wcfCreative.FindByID(id); bool b = false; if (model == null) { b = true; model = new CreativeInfoEntity(); } model.CampaignId = long.Parse(fields[0]); model.AdgroupId = long.Parse(fields[1]); model.ID = id; model.Title = fields[3]; model.Description1 = fields[4]; model.Description2 = fields[5]; model.DestinationUrl = fields[6]; model.DisplayUrl = fields[7]; model.Pause = bool.Parse(fields[8]); model.Status = int.Parse(fields[9]); model.Temp = int.Parse(fields[10]); model.AccountName = entity.AccountName; if (b) { ParamHelper.wcfCreative.Add(model); } else { ParamHelper.wcfCreative.Update(model); } }
public void CheckedData(SynCheckedDataInfoEntity entity, SynDataInfoEntity model) { if (manager.ContainsKey(model.DealWithType ?? 0)) { manager[model.DealWithType ?? 0].CheckedData(entity, model); } }
protected override void DealRowData(string[] fields, SynCheckedDataInfoEntity entity) { AccountStatisticsEntity model = new AccountStatisticsEntity(); // 日期 model.SynchroDate = DateTime.Parse(fields[0]); // 账户ID model.AccountId = long.Parse(fields[1]); // 推广方式 model.ExpandType = fields[3]; // 消费 model.TotalCost = decimal.Parse(DataHelper.SetDefault(fields[4])); // 平均点击价格 model.AvgClickedPrice = decimal.Parse(DataHelper.SetDefault(fields[5])); // 点击量 model.Clicked = long.Parse(DataHelper.SetDefault(fields[6])); // 展现量 model.ShowCnt = long.Parse(DataHelper.SetDefault(fields[7])); // 点击率 model.ClickedRate = decimal.Parse(DataHelper.SetDefault(fields[8]).Replace("%", "")); // 千次展现消费 model.ThousandCost = decimal.Parse(DataHelper.SetDefault(fields[9])); // 转化 model.TransformCnt = int.Parse(DataHelper.SetDefault(fields[10])); ParamHelper.wcfAccountStatistics.Add(model); // 日期 账户ID 账户 推广方式 消费 平均点击价格 点击量 展现量 点击率 千次展现消费 转化 }
public override void CheckedData(SynCheckedDataInfoEntity entity, SynDataInfoEntity item) { BaiduV2ReportService serviceReport = new BaiduV2ReportService(item.AccountName, CryptHelper.DESDecode(item.AccountPwd), CryptHelper.DESDecode(item.Token)); while (string.IsNullOrEmpty(entity.FilePath)) { Thread.Sleep(1000); if (serviceReport.HasReportOnServer(item.DealWithId)) { FilePathInfo fpi = null; while (fpi == null) { fpi = serviceReport.GetReportFileUrl(item.DealWithId); } if (fpi != null) { entity.FilePath = fpi.FilePath; entity.FileName = fpi.FileName; // 记录获取下载链接的时间,精确到小时 entity.DealWithDate = DateTime.Now; // 直接下载 base.DownloadFileAndSynData(entity); DataHelper.AppendSynCheckedDataInfo(entity); DataHelper.RemoveSynDataInfo(item); } } } serviceReport = null; }
public void Update(string key, SynCheckedDataInfoEntity entity) { if (manager.ContainsKey(key)) { manager[key].Update(entity); } }
public void Update(SynCheckedDataInfoEntity entity) { LogInfoEntity log = new LogInfoEntity() { AccountName = entity.AccountName, Operation = GetOperation(), ErrorDate = DateTime.Now, Tag = entity.DealWithId }; try { string fileContent = string.Empty; string filePath = PathHelper.GetDirectoryName("Files") + entity.FileName; using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { using (StreamReader sr = new StreamReader(fs, Encoding.Default)) { fileContent = sr.ReadToEnd(); } } if (string.IsNullOrWhiteSpace(fileContent) == false) { string[] rows = fileContent.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); if (rows.Length > 1) { // 第一行是标题,从第2行开始读 for (int i = 1; i < rows.Length; i++) { string row = rows[i]; string[] fields = row.Split('\t'); DealRowData(fields, entity); } // 读取完成,删除缓存、数据库数据、文件 DataHelper.RemoveSynCheckedDataInfo(entity); File.Delete(filePath); log.ErrorMsg = "同步完成"; ParamHelper.wcfLog.Add(log); } else { // 只有标题,没有谁数据,删掉文件和记录 DataHelper.RemoveSynCheckedDataInfo(entity); File.Delete(filePath); log.ErrorMsg = "因为没有数据而删除"; ParamHelper.wcfLog.Add(log); } } } catch (Exception ex) { log.ErrorMsg = ex.Message; // 找不到文件删除记录 DataHelper.RemoveSynCheckedDataInfo(entity); ParamHelper.wcfLog.Add(log); } }
// 检查文件是否生成,并获取链接,下载文件 public override void CheckedDealWithId() { if (ParamHelper.SynDataMax > 0) { // 发送请求成功后需要等待一些时间,目前设定5分种 LogHelper.AddLog("等待5分钟,等服务器产生文件", "Run"); Thread.Sleep(1000 * 60 * 5); } LogHelper.AddLog(string.Format("开始轮询,待轮询请求{0}个", ParamHelper.SynDataMax), "CheckedDealWithId"); try { while (ParamHelper.SynDataMax > 0) { var item = ParamHelper.SynDatas[0]; SynCheckedDataInfoEntity entity = new SynCheckedDataInfoEntity() { AccountName = item.AccountName, DataTag = item.DataTag, DataType = item.DataType, DealWithDate = item.DealWithDate, DealWithId = item.DealWithId, DealWithType = item.DealWithType, IsDownLoad = false }; try { ParamHelper.managerDealWith.CheckedData(entity, item); } catch (Exception ex) { LogHelper.AddLog(ex.Message, item.AccountName, "CheckedDealWithId", item.DealWithId); } finally { entity = null; } } LogHelper.AddLog(string.Format("轮询结束,成功的请求{0}个,正在处理的请求{1}个", ParamHelper.SynCheckedDataMax, ParamHelper.SynDataMax), "CheckedDealWithId"); } catch (Exception ex) { LogHelper.AddLog(ex.Message, "CheckedDealWithId"); } }
protected override void DealRowData(string[] fields, SynCheckedDataInfoEntity entity) { AccountInfoEntity model = ParamHelper.wcfAccount.FindByExpression(x => x.AccountName == entity.AccountName).FirstOrDefault(); if (model != null) { model.AccountId = long.Parse(fields[0]); model.Balance = fields[1] == "-" ? 0 : decimal.Parse(fields[1]); model.Cost = fields[2] == "-" ? 0 : decimal.Parse(fields[2]); model.Payment = fields[3] == "-" ? 0 : decimal.Parse(fields[3]); model.Budget = fields[4] == "-" ? 0 : decimal.Parse(fields[4]); model.RegionTarget = fields[5]; model.ExcludeIp = fields[6]; model.OpenDomains = fields[7]; ParamHelper.wcfAccount.Update(model); } }
public static void AppendSynCheckedDataInfo(SynCheckedDataInfoEntity entity) { ParamHelper.wcfSynCheckedData.Add(entity); // 新建一个对象,避免操作同一个对象引起的ID问题 SynCheckedDataInfoEntity model = new SynCheckedDataInfoEntity(); model.ID = entity.ID; model.AccountName = entity.AccountName; model.DataTag = entity.DataTag; model.DataType = entity.DataType; model.DealWithDate = entity.DealWithDate; model.DealWithId = entity.DealWithId; model.DealWithType = entity.DealWithType; model.FileName = entity.FileName; model.FilePath = entity.FilePath; model.IsDownLoad = entity.IsDownLoad; DataHelper.AppendData(model, ParamHelper.SynCheckedDatas); ParamHelper.SynCheckedDataMax++; }
protected override void DealRowData(string[] fields, SynCheckedDataInfoEntity entity) { long id = long.Parse(fields[2]); SublinkInfoEntity model = ParamHelper.wcfSublink.FindByID(id); bool b = false; if (model == null) { b = true; model = new SublinkInfoEntity(); } model.CampaignId = long.Parse(fields[0]); model.AdgroupId = long.Parse(fields[1]); model.ID = id; model.Pause = bool.Parse(fields[3]); model.Status = int.Parse(fields[4]); model.Temp = int.Parse(fields[5]); model.AccountName = entity.AccountName; string subinfos = string.Empty; for (int i = 6; i < fields.Length; i += 2) { subinfos += string.Format("{0}**{1}||", fields[i], fields[i + 1]); } model.SublinkInfos = subinfos.Trim('|'); if (b) { ParamHelper.wcfSublink.Add(model); } else { ParamHelper.wcfSublink.Update(model); } }
protected override void DealRowData(string[] fields, SynCheckedDataInfoEntity entity) { long id = long.Parse(fields[0]); CampaignInfoEntity model = ParamHelper.wcfCampaign.FindByID(id); bool b = false; if (model == null) { b = true; model = new CampaignInfoEntity(); } model.ID = id; model.Name = fields[1]; model.Budget = fields[2] == "-" ? 0 : decimal.Parse(fields[2]); model.RegionTarget = fields[3]; model.ExcludeIp = fields[4]; model.NegativeWords = fields[5]; model.ExactNegativeWords = fields[6]; model.Schedule = fields[7]; model.BudgetOfflineTime = fields[8]; model.ShowProb = fields[9] == "-" ? 0 : int.Parse(fields[9]); model.Pause = fields[10] == "-" ? false : bool.Parse(fields[10]); model.JoinContent = fields[11] == "-" ? false : bool.Parse(fields[11]); model.ContentPrice = fields[12] == "-" ? 0 : decimal.Parse(fields[12]); model.Status = int.Parse(fields[13]); model.AccountName = entity.AccountName; if (b) { ParamHelper.wcfCampaign.Add(model); } else { ParamHelper.wcfCampaign.Update(model); } }
protected virtual void DownloadFileAndSynData(SynCheckedDataInfoEntity entity) { try { string directotyName = PathHelper.GetDirectoryName("Files"); bool b = Core.FileHelper.DownLoadFile(entity.FilePath, directotyName, entity.FileName); if (b) { entity.IsDownLoad = true; if (entity.FileName.Contains(".zip")) { string filePath = directotyName + entity.FileName; string newFilePath = directotyName; ZipHelper.UnZip(filePath, newFilePath); // 新文件名 entity.FileName = entity.FileName.Replace(".zip", ".csv"); } } } catch (Exception ex) { LogHelper.AddLog(ex.Message, "DownloadFileAndSynData"); } }
public static void RemoveSynCheckedDataInfo(SynCheckedDataInfoEntity entity) { DataHelper.RemoveData(entity, ParamHelper.SynCheckedDatas); ParamHelper.wcfSynCheckedData.Delete(entity); ParamHelper.SynCheckedDataMax--; }
protected abstract void DealRowData(string[] fields, SynCheckedDataInfoEntity entity);
public virtual void CheckedData(SynCheckedDataInfoEntity entity, SynDataInfoEntity item) { }
protected virtual string GetKeyOfSynData(SynCheckedDataInfoEntity entity) { return(string.Empty); }
public void SynData(SynCheckedDataInfoEntity entity) { string key = GetKeyOfSynData(entity); ParamHelper.managerMaterail.Update(key, entity); }
protected override string GetKeyOfSynData(SynCheckedDataInfoEntity entity) { return ParamHelper.GetMaterialKey(entity.FileName) + "-material"; }
protected override string GetKeyOfSynData(SynCheckedDataInfoEntity entity) { return(entity.DataTag + "-statistics"); }