コード例 #1
0
        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;
        }
コード例 #2
0
        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	关键词	推广方式	消费	平均点击价格	点击量	展现量	点击率	千次展现消费	平均排名	转化
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
 public void SynData(SynCheckedDataInfoEntity entity)
 {
     if (manager.ContainsKey(entity.DealWithType ?? 0))
     {
         manager[entity.DealWithType ?? 0].SynData(entity);
     }
 }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
 public void CheckedData(SynCheckedDataInfoEntity entity, SynDataInfoEntity model)
 {
     if (manager.ContainsKey(model.DealWithType ?? 0))
     {
         manager[model.DealWithType ?? 0].CheckedData(entity, model);
     }
 }
コード例 #8
0
        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	账户	推广方式	消费	平均点击价格	点击量	展现量	点击率	千次展现消费	转化
        }
コード例 #9
0
        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;
        }
コード例 #10
0
 public void Update(string key, SynCheckedDataInfoEntity entity)
 {
     if (manager.ContainsKey(key))
     {
         manager[key].Update(entity);
     }
 }
コード例 #11
0
        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);
            }
        }
コード例 #12
0
        // 检查文件是否生成,并获取链接,下载文件
        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");
            }
        }
コード例 #13
0
        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);
            }
        }
コード例 #14
0
        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++;
        }
コード例 #15
0
        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);
            }
        }
コード例 #16
0
        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);
            }
        }
コード例 #17
0
 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");
     }
 }
コード例 #18
0
 public static void RemoveSynCheckedDataInfo(SynCheckedDataInfoEntity entity)
 {
     DataHelper.RemoveData(entity, ParamHelper.SynCheckedDatas);
     ParamHelper.wcfSynCheckedData.Delete(entity);
     ParamHelper.SynCheckedDataMax--;
 }
コード例 #19
0
 protected abstract void DealRowData(string[] fields, SynCheckedDataInfoEntity entity);
コード例 #20
0
 public virtual void CheckedData(SynCheckedDataInfoEntity entity, SynDataInfoEntity item)
 {
 }
コード例 #21
0
 protected virtual string GetKeyOfSynData(SynCheckedDataInfoEntity entity)
 {
     return(string.Empty);
 }
コード例 #22
0
        public void SynData(SynCheckedDataInfoEntity entity)
        {
            string key = GetKeyOfSynData(entity);

            ParamHelper.managerMaterail.Update(key, entity);
        }
コード例 #23
0
 protected override string GetKeyOfSynData(SynCheckedDataInfoEntity entity)
 {
     return ParamHelper.GetMaterialKey(entity.FileName) + "-material";
 }
コード例 #24
0
 protected override string GetKeyOfSynData(SynCheckedDataInfoEntity entity)
 {
     return(entity.DataTag + "-statistics");
 }