コード例 #1
0
 /// <summary>
 /// 设置案例楼盘ID,行政区ID,片区ID
 /// </summary>
 /// <param name="_list"></param>
 /// <param name="_dc"></param>
 /// <returns></returns>
 public static List <VIEW_案例信息_城市表_网站表> SetProjectId(List <VIEW_案例信息_城市表_网站表> _list, DataClass _dc = null)
 {
     if (_list != null && _list.Count > 0)
     {
         List <long> longs = new List <long>();
         _list.ForEach(delegate(VIEW_案例信息_城市表_网站表 obj)
         {
             if ((!string.IsNullOrEmpty(obj.楼盘名.TrimBlank()) && obj.ProjectId == null) ||
                 (!string.IsNullOrEmpty(obj.行政区.TrimBlank()) && obj.AreaId == null) ||
                 !string.IsNullOrEmpty(obj.片区.TrimBlank()) && obj.SubAreaId == null)
             {
                 longs.Add(obj.ID);
             }
         });
         if (longs != null && longs.Count > 0)
         {
             DataClass   dc   = new DataClass(_dc);
             List <案例信息> list = dc.DB.案例信息.Where(p => longs.Contains(p.ID)).ToList();
             list.ForEach(delegate(案例信息 obj)
             {
                 if (!string.IsNullOrEmpty(obj.楼盘名.TrimBlank()) && obj.ProjectId == null)
                 {
                     SysData_Project project = ProjectManager.GetProjectByProjectNameAndCityId(obj.楼盘名.TrimBlank(), obj.城市ID, _db: dc);
                     if (project == null)
                     {
                         project = ProjectManager.InsertProject(obj.楼盘名, obj.城市ID, Convert.ToInt32(obj.网站ID), _db: dc);
                     }
                     obj.ProjectId = project.ID;
                     obj.楼盘名       = null;
                 }
                 if (!string.IsNullOrEmpty(obj.行政区.TrimBlank()) && obj.AreaId == null)
                 {
                     SysData_Area areaObj = AreaManager.GetAreaByAreaNameLikeByCityId(obj.行政区, obj.城市ID, _db: dc);
                     if (areaObj == null)
                     {
                         areaObj = AreaManager.InsertArea(obj.行政区, obj.城市ID, Convert.ToInt32(obj.网站ID), _db: dc);
                     }
                     obj.AreaId = areaObj.ID;
                     obj.行政区    = null;
                 }
                 else if (string.IsNullOrEmpty(obj.行政区.TrimBlank()) && obj.AreaId == null)
                 {
                     obj.AreaId = 0;
                     obj.行政区    = null;
                 }
                 if (!string.IsNullOrEmpty(obj.片区.TrimBlank()) && obj.SubAreaId == null)
                 {
                     SysData_SubArea subAreaObj = SubAreaManager.GetAreaByAreaNameByCityId(obj.片区, obj.城市ID, _db: dc);
                     if (subAreaObj == null)
                     {
                         subAreaObj = SubAreaManager.InsertArea(obj.片区, obj.城市ID, Convert.ToInt32(obj.网站ID), _db: dc);
                     }
                     obj.SubAreaId = subAreaObj.ID;
                     obj.片区        = null;
                 }
                 VIEW_案例信息_城市表_网站表 vObj = _list.Where(p => p.ID == obj.ID).FirstOrDefault();
                 if (vObj != null)
                 {
                     vObj.ProjectId = obj.ProjectId;
                     vObj.楼盘名       = obj.楼盘名;
                     vObj.AreaId    = obj.AreaId;
                     vObj.行政区       = obj.行政区;
                     vObj.SubAreaId = obj.SubAreaId;
                     vObj.片区        = obj.片区;
                 }
             });
             dc.DB.SubmitChanges();
             dc.Connection_Close();
             dc.Dispose();
         }
     }
     return(_list);
 }
コード例 #2
0
ファイル: CaseManager.cs プロジェクト: kingshhh/fxtcode
        /// <summary>
        ///
        /// </summary>
        /// <param name="网站名称"></param>
        /// <param name="城市名称"></param>
        /// <param name="网站ID"></param>
        /// <param name="城市ID"></param>
        /// <param name="楼盘名"></param>
        /// <param name="案例时间"></param>
        /// <param name="行政区"></param>
        /// <param name="片区"></param>
        /// <param name="楼栋"></param>
        /// <param name="房号"></param>
        /// <param name="用途"></param>
        /// <param name="面积"></param>
        /// <param name="单价"></param>
        /// <param name="案例类型"></param>
        /// <param name="结构"></param>
        /// <param name="建筑类型"></param>
        /// <param name="总价"></param>
        /// <param name="所在楼层"></param>
        /// <param name="总楼层"></param>
        /// <param name="户型"></param>
        /// <param name="朝向"></param>
        /// <param name="装修"></param>
        /// <param name="建筑年代"></param>
        /// <param name="信息"></param>
        /// <param name="电话"></param>
        /// <param name="URL"></param>
        /// <param name="币种"></param>
        /// <param name="地址"></param>
        /// <param name="创建时间"></param>
        /// <param name="车位数量"></param>
        /// <param name="地下室面积"></param>
        /// <param name="花园面积"></param>
        /// <param name="建筑形式"></param>
        /// <param name="配套设施"></param>
        /// <param name="厅结构"></param>
        /// <param name="中介公司"></param>
        /// <param name="门店"></param>
        /// <param name="_db"></param>
        /// <returns>1:成功,0:失败,-1:失败,已存在</returns>
        public static int 往案例表插入爬取数据(string 网站名称, string 城市名称, int 网站ID, int 城市ID, string 楼盘名, string 案例时间, string 行政区,
                                     string 片区, string 楼栋, string 房号, string 用途, string 面积, string 单价,
                                     string 案例类型, string 结构, string 建筑类型, string 总价, string 所在楼层, string 总楼层,
                                     string 户型, string 朝向, string 装修, string 建筑年代, string 信息, string 电话,
                                     string URL, string 币种, string 地址, DateTime 创建时间, string 车位数量, string 地下室面积,
                                     string 花园面积, string 建筑形式, string 配套设施, string 厅结构, string 中介公司, string 门店, DateTime startSpiderDate, DataClass _db = null)
        {
work:
            if (!WorkItemManager.CheckPassSpider())//****检查数据库是否有维护程序在执行******//
            {
                System.Threading.Thread.Sleep(60000);
                goto work;
            }
            DataClass db = new DataClass(_db);

            try
            {
                //
                案例信息 caseObj = new 案例信息
                {
                    城市ID        = 城市ID,
                    网站ID        = 网站ID,
                    楼盘名         = 楼盘名.TrimBlank().RemoveHeml(),
                    行政区         = 行政区.TrimBlank().RemoveHeml(),
                    片区          = 片区.TrimBlank().RemoveHeml(),
                    楼栋          = 楼栋.GetSubstring(100),
                    房号          = 房号.GetSubstring(100),
                    用途          = 用途,
                    面积String    = 面积.TrimBlank().RemoveHeml(),
                    单价String    = 单价.TrimBlank().RemoveHeml(),
                    案例类型        = 案例类型.TrimBlank().RemoveHeml(),
                    结构          = 结构.TrimBlank().RemoveHeml(),
                    建筑类型        = 建筑类型.TrimBlank().RemoveHeml(),
                    总价String    = 总价.TrimBlank().RemoveHeml(),
                    所在楼层String  = 所在楼层.TrimBlank().RemoveHeml(),
                    总楼层String   = 总楼层.TrimBlank().RemoveHeml(),
                    户型          = 户型.TrimBlank().RemoveHeml(),
                    朝向          = 朝向.TrimBlank().RemoveHeml(),
                    装修          = 装修.TrimBlank().RemoveHeml().GetSubstring(50),
                    建筑年代        = 建筑年代.TrimBlank().RemoveHeml().GetSubstring(50),
                    信息          = 信息.RemoveHTMLTags(),
                    电话          = 电话.TrimBlank().RemoveHeml().GetSubstring(50),
                    URL         = URL,
                    币种          = 币种,
                    地址          = 地址.RemoveHeml(),
                    创建时间        = 创建时间,
                    建筑形式        = 建筑形式.TrimBlank().RemoveHeml().GetSubstring(100),
                    花园面积String  = 花园面积.TrimBlank().RemoveHeml(),
                    厅结构         = 厅结构.TrimBlank().RemoveHeml().GetSubstring(100),
                    车位数量String  = 车位数量.TrimBlank().RemoveHeml(),
                    配套设施        = 配套设施.RemoveHeml().GetSubstring(200),
                    地下室面积String = 地下室面积.TrimBlank().RemoveHeml(),
                    来源          = 网站名称
                };
                //验证传过来的用途是否存在
                if (!string.IsNullOrEmpty(StringHelp.TrimBlank(caseObj.用途).ToRemoveSpe()))
                {
                    if (caseObj.用途.Contains("其它") || 用途Manager.Get用途_根据名称(StringHelp.TrimBlank(caseObj.用途).ToRemoveSpe()) < 1)
                    {
                        caseObj.用途 = "";
                    }
                }
                //数据格式计算整理
                caseObj = 爬取信息数据格式计算整理(caseObj, 案例时间, 城市名称);
                //检查数据字符串
                if (caseObj.行政区.Contains("东莞") || caseObj.行政区.Contains("惠州"))
                {
                    db.Connection_Close();
                    db.Dispose();
                    return(0);
                }
                string checkMessage = "";
                if (!SpiderHelp.CheckHouseAll(caseObj, 城市名称, out checkMessage))
                {
                    db.Connection_Close();
                    db.Dispose();
                    log.Debug(checkMessage);
                    return(0);
                }
                //数据库插入操作
                int?案例类型ID = 案例类型Manager.Get案例类型_根据名称(caseObj.案例类型); caseObj.案例类型 = null;
                int?币种ID   = 币种Manager.Get币种_根据名称(caseObj.币种); caseObj.币种 = null;
                int?朝向ID   = 朝向Manager.Get朝向_根据名称(caseObj.朝向); caseObj.朝向 = null;
                int?户型ID   = 户型Manager.Get户型_根据名称(caseObj.户型); caseObj.户型 = null;
                int?建筑类型ID = 建筑类型Manager.Get建筑类型_根据名称(caseObj.建筑类型); caseObj.建筑类型 = null;
                int?结构ID   = 结构Manager.Get结构_根据名称(caseObj.结构); caseObj.结构 = null;
                int?用途ID   = 用途Manager.Get用途_根据名称(caseObj.用途); caseObj.用途 = null;
                //int? 装修ID = 装修Manager.Get装修_根据名称(caseObj.装修); caseObj.装修 = null;//暂时不限制
                caseObj.案例类型ID = Convert.ToInt32(案例类型ID); // == 0 ? null : 案例类型ID;
                caseObj.币种ID   = Convert.ToInt32(币种ID);   //== 0 ? null : 币种ID;
                caseObj.朝向ID   = Convert.ToInt32(朝向ID);   // == 0 ? null : 朝向ID;
                caseObj.户型ID   = Convert.ToInt32(户型ID);   // == 0 ? null : 户型ID;
                caseObj.建筑类型ID = Convert.ToInt32(建筑类型ID); // == 0 ? null : 建筑类型ID;
                caseObj.结构ID   = Convert.ToInt32(结构ID);   // == 0 ? null : 结构ID;
                caseObj.用途ID   = Convert.ToInt32(用途ID);   // == 0 ? null : 用途ID;
                //caseObj.装修ID = Convert.ToInt32(装修ID) == 0 ? null : 装修ID;//暂时不限制
                中介公司 = 中介公司.TrimBlank();
                门店   = 门店.TrimBlank();
                //获取中介公司
                //中介公司 = 中介公司 + "test";
                caseObj.CompanyId = 0;
                if (!string.IsNullOrEmpty(中介公司))
                {
                    SysData_Company com = CompanyManager.GetByCompanyName(中介公司, _db: db);
                    if (com == null)
                    {
                        com = CompanyManager.Insert(中介公司, _db: db);
                    }
                    caseObj.CompanyId = com.ID;
                }
                //获取中介公司门店
                //门店 = 门店 + "test";
                caseObj.CompanyAreaId = 0;
                if (!string.IsNullOrEmpty(门店))
                {
                    SysData_CompanyArea comArea = CompanyAreaManager.GetByCompanyAreaName(门店, _db: db);
                    if (comArea == null)
                    {
                        comArea = CompanyAreaManager.Insert(门店, _db: db);
                    }
                    caseObj.CompanyAreaId = comArea.ID;
                }
                //获取楼盘ID
                //caseObj.楼盘名 = caseObj.楼盘名 + "test";
                caseObj.ProjectId = 0;
                if (string.IsNullOrEmpty(caseObj.楼盘名))
                {
                    log.Debug(string.Format("数据保存结束:网站:{0}--城市:{1}-(url:{2}--),(楼盘名为null)", 网站名称, 城市名称, caseObj.URL));
                    db.Connection_Close();
                    db.Dispose();
                    return(0);
                }
                //if (!string.IsNullOrEmpty(caseObj.楼盘名))
                //{
                //    SysData_Project project = ProjectManager.GetProjectByProjectNameAndCityId(caseObj.楼盘名, 城市ID, _db: db);
                //    if (project == null)
                //    {
                //        project = ProjectManager.InsertProject(caseObj.楼盘名, 城市ID, 网站ID, _db: db);
                //    }
                //    caseObj.ProjectId = project.ID;
                //}
                //else
                //{
                //    log.Debug(string.Format("数据保存结束:网站:{0}--城市:{1}-(url:{2}--),(楼盘名为null)", 网站名称, 城市名称, caseObj.URL));
                //    db.Connection_Close();
                //    db.Dispose();
                //    return 0;
                //}
                //caseObj.楼盘名 = null;

                //获取行政区ID
                caseObj.AreaId = 0;
                if (!string.IsNullOrEmpty(caseObj.行政区))
                {
                    SysData_Area areaObj = AreaManager.GetAreaByAreaNameLikeByCityId(caseObj.行政区, 城市ID, _db: db);
                    if (areaObj == null)
                    {
                        areaObj = AreaManager.InsertArea(caseObj.行政区, 城市ID, 网站ID, _db: db);
                    }
                    caseObj.AreaId = areaObj.ID;
                }
                else
                {
                    caseObj.AreaId = 0;
                }
                caseObj.行政区 = null;
                //获取片区ID
                //caseObj.片区 = caseObj.片区 + "test";
                caseObj.SubAreaId = 0;
                if (!string.IsNullOrEmpty(caseObj.片区))
                {
                    SysData_SubArea subAreaObj = SubAreaManager.GetAreaByAreaNameByCityId(caseObj.片区, 城市ID, _db: db);
                    if (subAreaObj == null)
                    {
                        subAreaObj = SubAreaManager.InsertArea(caseObj.片区, 城市ID, 网站ID, _db: db);
                    }
                    caseObj.SubAreaId = subAreaObj.ID;
                }
                caseObj.片区 = null;
                //获取装修
                //caseObj.装修 = caseObj.装修 + "test";
                caseObj.装修ID = 0;
                if (!string.IsNullOrEmpty(caseObj.装修))
                {
                    SysData_装修 zhuangxiuObj = 装修Manager.Get装修_根据名称(caseObj.装修, db);
                    if (zhuangxiuObj == null)
                    {
                        zhuangxiuObj = 装修Manager.Insert(caseObj.装修, db);
                    }
                    caseObj.装修ID = zhuangxiuObj.ID;
                }
                caseObj.装修 = null;
                //验证数据是否存在
                案例信息 obj = CaseManager.GetCaseIdentical(caseObj, _db: db);
                if (obj != null)
                {
                    //记录个数
                    SpiderRepetitionLogManager.SetSpiderRepetitionCount(网站ID, 城市ID, startSpiderDate, db);
                    log.Debug(string.Format("{0}-数据保存结束:网站:{1}--城市:{2}-(url:{3}--),(数据已存在)", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), 网站名称, 城市名称, caseObj.URL));
                    db.Connection_Close();
                    db.Dispose();
                    return(-1);
                }
                Insert(caseObj, db);
                //db.DB.案例信息.InsertOnSubmit(caseObj);
                //db.DB.SubmitChanges();

                db.Connection_Close();
                db.Dispose();
            }
            catch (Exception ex)
            {
                log.Error(string.Format("{0}-系统异常:网站:{1}--城市:{2}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), 网站名称, 城市名称), ex);
                db.Connection_Close();
                db.Dispose();
                return(0);
            }
            return(1);
        }