Ejemplo n.º 1
0
        // 로그인
        public virtual bool Login()
        {
            LQStructures.LQCrawlerInfo pCrawler = CrawlerManager.Instance.GetCrawlerInfo();
            cookie_ = new CookieContainer();

            try
            {
                string loginurl    = pCrawler.LoginUrl_;
                string loginstring = pCrawler.LoginParam_.Replace("{LoginID}", pCrawler.LoginID_);
                loginstring = loginstring.Replace("{LoginPW}", pCrawler.LoginPW_);
                byte[] sendData = UTF8Encoding.UTF8.GetBytes(loginstring);

                HttpWebResponse pResponse  = HKHttpWebRequest.ReqHttpRequest(pCrawler.LoginMethod_, loginurl, loginstring, cookie_);
                TextReader      r          = (TextReader) new StreamReader(pResponse.GetResponseStream());
                string          htmlBuffer = r.ReadToEnd();

                if (htmlBuffer.IndexOf(pCrawler.LoginCheck_) < 0)
                {
                    return(false);
                }
            }
            catch (System.Exception ex)
            {
                LogManager.Instance.Log(ex.Message);
                return(false);
            }

            return(true);
        }
Ejemplo n.º 2
0
        public override void MakeDBData(tblOrderData pExcelData)
        {
            Dictionary <string, tblOrderData> pOrderList = OrderManager.Instance.GetOrderList();

            LQStructures.LQCrawlerInfo pCrawler = CrawlerManager.Instance.GetCrawlerInfo();

            // DB에 저장되어 있던 값이 아니면 들어온 값이라면
            if (pOrderList.ContainsKey(pExcelData.channelOrderCode_) == false)
            {
                pExcelData.State_ = DealStateManager.Instance.StateString_[(Int32)DealStateEnum.FINISH_BUY];

                // 신규 데이터라면 일단 DB에 넣는다.
                pExcelData.NeedDBProc_ = tblOrderData.NeedDBProc.Insert;
                pOrderList.Add(pExcelData.channelOrderCode_, pExcelData);
            }
            else
            {
                tblOrderData pDBData = pOrderList[pExcelData.channelOrderCode_];

                if (pDBData.State_ == DealStateManager.Instance.StateString_[(Int32)DealStateEnum.FINISH_BUY])
                {
                }
                else if (pDBData.State_ == DealStateManager.Instance.StateString_[(Int32)DealStateEnum.USED])
                {
                    // 사용 처리된 상태인데, 뭔가 해줘야 할게 있는가?
                }
            }
        }
Ejemplo n.º 3
0
        public override bool Login()
        {
            LQStructures.LQCrawlerInfo pCrawler = CrawlerManager.Instance.GetCrawlerInfo();
            cookie_ = new CookieContainer();


            // 1차 쿠키 받아오는곳
            try
            {
                string loginurl = "https://partneradmin.ezwel.com/cpadm/login/loginForm.ez";

                HttpWebResponse pResponse  = HKHttpWebRequest.ReqHttpRequest("GET", loginurl, "", cookie_);
                TextReader      r          = (TextReader) new StreamReader(pResponse.GetResponseStream(), Encoding.GetEncoding("EUC-KR"));
                string          htmlBuffer = r.ReadToEnd();
            }
            catch (System.Exception ex)
            {
                LogManager.Instance.Log(ex.Message);
            }

            // 2차 로그인 처리
            try
            {
                string loginurl       = "https://partneradmin.ezwel.com/cpadm/login/newLoginCheckAction.ez";
                string loginparameter = "&userId={0}&password={1}";
                loginparameter = string.Format(loginparameter, pCrawler.LoginID_, pCrawler.LoginPW_);

                HttpWebResponse pResponse  = HKHttpWebRequest.ReqHttpRequest("POST", loginurl, loginparameter, cookie_);
                TextReader      r          = (TextReader) new StreamReader(pResponse.GetResponseStream(), Encoding.GetEncoding("EUC-KR"));
                string          htmlBuffer = r.ReadToEnd();
            }
            catch (System.Exception ex)
            {
                LogManager.Instance.Log(ex.Message);
            }

            // 실제 로그인
            try
            {
                string loginurl    = pCrawler.LoginUrl_;
                string loginstring = pCrawler.LoginParam_.Replace("{LoginID}", pCrawler.LoginID_);
                loginstring = loginstring.Replace("{LoginPW}", pCrawler.LoginPW_);
                //byte[] sendData = UTF8Encoding.UTF8.GetBytes(loginstring);

                HttpWebResponse pResponse  = HKHttpWebRequest.ReqHttpRequest(pCrawler.LoginMethod_, loginurl, loginstring, cookie_);
                TextReader      r          = (TextReader) new StreamReader(pResponse.GetResponseStream());
                string          htmlBuffer = r.ReadToEnd();

                //if (htmlBuffer.IndexOf(pCrawler.LoginCheck_) < 0)
                //    return false;
            }
            catch (System.Exception ex)
            {
                LogManager.Instance.Log(ex.Message);
                return(false);
            }

            return(true);
        }
Ejemplo n.º 4
0
 void SetChannelName()
 {
     LQStructures.LQCrawlerInfo pCrawler = CrawlerManager.Instance.GetCrawlerInfo();
     if (pCrawler == null)
     {
         label_ChannelName.Text = "-";
     }
     else
     {
         label_ChannelName.Text = pCrawler.ChannelName_;
     }
 }
Ejemplo n.º 5
0
        public override void MakeDBData(tblOrderData pExcelData)
        {
            Dictionary <string, tblOrderData> pOrderList = OrderManager.Instance.GetOrderList();

            LQStructures.LQCrawlerInfo pCrawler = CrawlerManager.Instance.GetCrawlerInfo();

            // DB에 저장되어 있던 값이 아니면 들어온 값이라면
            if (pOrderList.ContainsKey(pExcelData.channelOrderCode_) == false)
            {
                //if (pExcelData.ExData_Use_ == pCrawler.ExData_UseCheck_)
                //{
                //    pExcelData.State_ = DealStateManager.Instance.StateString_[(Int32)DealStateEnum.USED];
                //}
                //else if (pExcelData.ExData_Cancel_ == pCrawler.ExData_CancelCheck_)
                //{
                //    pExcelData.State_ = DealStateManager.Instance.StateString_[(Int32)DealStateEnum.CANCEL];
                //}
                //else
                //{

                //}

                pExcelData.State_ = DealStateManager.Instance.StateString_[(Int32)DealStateEnum.FINISH_BUY];

                // 신규 데이터라면 일단 DB에 넣는다.
                pExcelData.NeedDBProc_   = tblOrderData.NeedDBProc.Insert;
                pExcelData.bFindInExcel_ = true;
                pExcelData.bProcessed_   = true;
                pOrderList.Add(pExcelData.channelOrderCode_, pExcelData);
            }
            else
            {
                tblOrderData pDBData = pOrderList[pExcelData.channelOrderCode_];
                if (pExcelData.State_ == pDBData.State_)
                {
                    return;
                }

                pDBData.bFindInExcel_ = true;
                pDBData.bProcessed_   = true;
            }
        }
Ejemplo n.º 6
0
        // 크롤링까지 남은 시간 표시
        void SetNextCrawlingLeftTime()
        {
            if (LastCrawlingTick_ == 0)
            {
                label_NextCrawling.Text = "-";
            }
            else
            {
                LQStructures.LQCrawlerInfo pCrawler = CrawlerManager.Instance.GetCrawlerInfo();
                Int32 nNextTick = LastCrawlingTick_ + CrawlerInfoManager.Instance.crawlingtick_;
                Int32 nCurrent  = Environment.TickCount;

                Int32 nLeftTime = nNextTick - nCurrent;
                nLeftTime /= 1000;
                if (nLeftTime > 0)
                {
                    label_NextCrawling.Text = string.Format("{0} 초 후", nLeftTime);
                }
            }
        }
Ejemplo n.º 7
0
        public override bool LoadExcelAndInsertList(string filepath, Int32 GoodsAttrType, bool bFixedType, string goodsname)
        {
            LQStructures.LQCrawlerInfo pCrawlerInfo = CrawlerManager.Instance.GetCrawlerInfo();

            Microsoft.Office.Interop.Excel.Application ap = null;
            Workbook  wb = null;
            Worksheet ws = null;

            HKExcelHelper.GetWorkSheet(filepath, ref ap, ref wb, ref ws);


            Range  tRange          = null;
            string tempString      = "";
            string comparesitename = "";

            Int32 nCurrentRow      = 0;
            Int32 ExData_Option    = 0;
            Int32 ExData_Coupncode = 0;
            Int32 ExData_Buyer     = 0;
            Int32 ExData_Cancel    = 0;

            Int32 ExData_Use      = 0;
            Int32 ExData_Buyphone = 0;
            Int32 ExData_Price    = 0;
            Int32 ExData_BuyDate  = 0;
            Int32 ExData_BuyCount = 0;

            if (bFixedType == true)
            {// 레저큐 양식일때는 고정값으로
                nCurrentRow      = 2;
                ExData_Option    = 4;
                ExData_Coupncode = 3;
                ExData_Buyer     = 1;
                ExData_Cancel    = 6;
                ExData_Use       = 6;
                ExData_Buyphone  = 2;
                ExData_Price     = 5;
                ExData_BuyDate   = 7;
                ExData_BuyCount  = 8;
            }
            else
            {
                nCurrentRow      = pCrawlerInfo.ExData_Start_;
                ExData_Option    = pCrawlerInfo.ExData_Option_;
                ExData_Coupncode = pCrawlerInfo.ExData_Coupncode_;
                ExData_Buyer     = pCrawlerInfo.ExData_Buyer_;
                ExData_Cancel    = pCrawlerInfo.ExData_Cancel_;
                ExData_Use       = pCrawlerInfo.ExData_Use_;
                ExData_Buyphone  = pCrawlerInfo.ExData_Buyphone_;
                ExData_Price     = pCrawlerInfo.ExData_Price_;
                ExData_BuyDate   = pCrawlerInfo.ExData_Buydate_;
                ExData_BuyCount  = pCrawlerInfo.ExData_Count_;

                // 티몬을 위한 변경
                if (GoodsAttrType == 1)
                {
                    nCurrentRow      = 3;
                    ExData_Option    = 6;
                    ExData_Coupncode = 3;
                    ExData_Buyer     = 1;
                    ExData_Cancel    = 8;
                    ExData_Use       = 8;
                    ExData_Buyphone  = 2;
                    ExData_Price     = 7;
                    ExData_BuyDate   = 9;
                }
            }

            while (true)
            {
                try
                {
                    tRange          = ws.Cells[nCurrentRow, 1];
                    comparesitename = Convert.ToString(tRange.Value2);

                    tRange = ws.Cells[nCurrentRow, ExData_Option];
                    if (tRange == null)
                    {
                        break;
                    }

                    tempString = tRange.Value2;
                    if (tempString == null)
                    {
                        break;
                    }

                    Int32        tempgoodSeq = -1;
                    tblOrderData pExcelData  = new tblOrderData();
                    pExcelData.channelSeq_   = pCrawlerInfo.Channel_Idx_;
                    pExcelData.authoritySeq_ = pCrawlerInfo.AuthoritySeq_;
                    //pExcelData.goodsCode_ = pGoodInfo.Goods_Code_;
                    pExcelData.goodsSeq_              = tempgoodSeq;
                    pExcelData.ExData_Option_         = tempString;
                    pExcelData.ExData_OptionOriginal_ = tempString;
                    if (string.IsNullOrEmpty(goodsname) == false)
                    {
                        pExcelData.ExData_GoodsName_ = goodsname;
                    }

                    tRange = ws.Cells[nCurrentRow, ExData_Coupncode];
                    if (tRange == null)
                    {
                        break;
                    }

                    pExcelData.channelOrderCode_ = Convert.ToString(tRange.Value2);
                    if (pExcelData.channelOrderCode_ == null)
                    {
                        break;
                    }
                    pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Replace("'", "");
                    pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Trim();   // 공백 제거

                    tRange = ws.Cells[nCurrentRow, ExData_Buyer];
                    pExcelData.orderName_ = Convert.ToString(tRange.Value2);
                    if (pExcelData.orderName_ == null)
                    {
                        pExcelData.orderName_ = "";
                    }

                    tRange = ws.Cells[nCurrentRow, ExData_Cancel];
                    pExcelData.ExData_Cancel_ = tRange.Value2;
                    if (pExcelData.ExData_Cancel_ == null)
                    {
                        pExcelData.ExData_Cancel_ = "";
                    }

                    tRange = ws.Cells[nCurrentRow, ExData_Use];
                    pExcelData.ExData_Use_ = tRange.Value2;
                    if (pExcelData.ExData_Use_ == null)
                    {
                        pExcelData.ExData_Use_ = "";
                    }

                    tRange = ws.Cells[nCurrentRow, ExData_Buyphone];
                    pExcelData.orderPhone_ = Convert.ToString(tRange.Value2);
                    if (pExcelData.orderPhone_ == null || pExcelData.orderPhone_ == "")
                    {
                        tRange = ws.Cells[nCurrentRow, 15];
                        pExcelData.orderPhone_ = Convert.ToString(tRange.Value2);
                    }

                    pExcelData.orderPhone_ = pExcelData.orderPhone_.Replace("'", "");

                    if (ExData_Price != 0)
                    {
                        tRange = ws.Cells[nCurrentRow, ExData_Price];

                        if (tRange.Value2 != null)
                        {// 돈에 , 가 있으면 제거하자.
                            tempString = Convert.ToString(tRange.Value2);
                            tempString = tempString.Replace(",", "");
                            pExcelData.orderSettlePrice_ = Convert.ToInt32(tempString);
                        }
                    }

                    tRange = ws.Cells[nCurrentRow, ExData_BuyDate];
                    if (pCrawlerInfo.Channel_Idx_ == 9 || pCrawlerInfo.Channel_Idx_ == 14 || pCrawlerInfo.Channel_Idx_ == 15 ||
                        pCrawlerInfo.Channel_Idx_ == 18)
                    {
                        double   temp = Convert.ToDouble(tRange.Value2);
                        DateTime dta  = DateTime.FromOADate(temp);
                        pExcelData.BuyDate_ = dta.ToString("u");
                        pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace("Z", "");
                    }
                    else if (pCrawlerInfo.Channel_Idx_ == 22 || pCrawlerInfo.Channel_Idx_ == 23)
                    {
                        pExcelData.BuyDate_ = Convert.ToString(tRange.Value2);
                        pExcelData.BuyDate_ = pExcelData.BuyDate_ + " 00:00:00";
                    }
                    else
                    {
                        pExcelData.BuyDate_ = Convert.ToString(tRange.Value2);
                    }

                    pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace('.', '-');

                    if (ExData_BuyCount != 0)// 구매갯수를 따로 뽑아야 하는 채널에서만
                    {
                        tRange = ws.Cells[nCurrentRow, ExData_BuyCount];
                        pExcelData.BuyCount_ = Convert.ToInt32(tRange.Value2);
                    }

                    SplitDealAndInsertExcelData(pExcelData, comparesitename);
                }
                catch (System.Exception ex)
                {
                    LogManager.Instance.Log(string.Format("엑셀 파싱 에러 : {0}", ex.Message));
                    nCurrentRow++;
                    continue;
                }

                nCurrentRow++;
            }

            wb.Close(false, Type.Missing, Type.Missing);
            ap.Quit();

            Marshal.FinalReleaseComObject(ws);
            Marshal.FinalReleaseComObject(wb);
            Marshal.FinalReleaseComObject(ap);
            ws = null;
            wb = null;
            ap = null;
            GC.Collect();

            return(true);
        }
Ejemplo n.º 8
0
    // 크롤링 정보 로드 하기
    public static bool GetCrawlerInfo(SqlHelper dbHelper, Int32 nChannelIdx, Int32 PartnerIdx, ref LQCrawlerInfo pLQCrawlerInfo)
    {
        bool bResult = false;

        try
        {
            Dictionary<string, object> argdic = new Dictionary<string, object>();
            argdic.Add("xChannelIdx", nChannelIdx.ToString());
            argdic.Add("xPartnerIdx", PartnerIdx.ToString());

            MySqlDataReader datareader = dbHelper.call_proc("sp_select_Crawler_Info", argdic);
            while (datareader.Read())
            {
                bResult = true;

                pLQCrawlerInfo = new LQCrawlerInfo();
                pLQCrawlerInfo.nIdx_ = Convert.ToInt32(datareader["idx"]);
                pLQCrawlerInfo.Channel_Idx_ = Convert.ToInt32(datareader["Channel_Idx"]);
                pLQCrawlerInfo.ChannelName_ = Convert.ToString(datareader["AuthorityName"]);
                pLQCrawlerInfo.PartnerSeq_ = Convert.ToInt32(datareader["PartnerSeq"]);
                pLQCrawlerInfo.PartnerName_ = Convert.ToString(datareader["PartnerName"]);

                pLQCrawlerInfo.MainUrl_ = Convert.ToString(datareader["MainUrl"]);         // 메인 URL
                pLQCrawlerInfo.LoginIDTAG_ = Convert.ToString(datareader["LoginIDTAG"]);
                pLQCrawlerInfo.LoginPWTAG_ = Convert.ToString(datareader["LoginPWTAG"]);
                pLQCrawlerInfo.LoginUrl_ = Convert.ToString(datareader["LoginUrl"]);
                pLQCrawlerInfo.LoginParam_ = Convert.ToString(datareader["LoginParam"]);      // 로그인 셋팅값
                pLQCrawlerInfo.LoginID_ = Convert.ToString(datareader["LoginID"]);         // 로그인 아이디
                pLQCrawlerInfo.LoginPW_ = Convert.ToString(datareader["LoginPW"]);         // 로그인 암호
                pLQCrawlerInfo.LoginMethod_ = Convert.ToString(datareader["LoginMethod"]);     // 로그인 방식
                pLQCrawlerInfo.LoginEvent_ = Convert.ToString(datareader["LoginEvent"]);      // 로그인 버튼 이벤트
                pLQCrawlerInfo.LoginCheck_ = Convert.ToString(datareader["LoginCheck"]);
                pLQCrawlerInfo.LoginType_ = Convert.ToChar(datareader["LoginType"]);
                pLQCrawlerInfo.ExcelDownUrl_ = Convert.ToString(datareader["ExcelDownUrl"]);    // 엑셀 다운로드 URL
                pLQCrawlerInfo.ExcelDownParameter_ = Convert.ToString(datareader["ExcelDownParameter"]);
                pLQCrawlerInfo.ExcelDownMethod_ = Convert.ToString(datareader["ExcelDownMethod"]);    // 엑셀 다운로드 방식
                pLQCrawlerInfo.ExcelDownRule_ = Convert.ToString(datareader["ExcelDownRule"]);

                pLQCrawlerInfo.UseGoodsUrl_ = Convert.ToString(datareader["UseGoodsUrl"]);
                pLQCrawlerInfo.UseGoodsParam_ = Convert.ToString(datareader["UseGoodsParam"]);
                pLQCrawlerInfo.UseGoodsCheck_ = Convert.ToString(datareader["UseGoodsCheck"]);
                pLQCrawlerInfo.UseGoodsRule_ = Convert.ToString(datareader["UseGoodsRule"]);

                pLQCrawlerInfo.UseUserUrl_ = Convert.ToString(datareader["UseUserUrl"]);
                pLQCrawlerInfo.UseUserParam_ = Convert.ToString(datareader["UseUserParam"]);
                pLQCrawlerInfo.UseUserCheck_ = Convert.ToString(datareader["UseUserCheck"]);

                pLQCrawlerInfo.NUseGoodsUrl_ = Convert.ToString(datareader["NUseGoodsUrl"]);
                pLQCrawlerInfo.NUseGoodsParam_ = Convert.ToString(datareader["NUseGoodsParam"]);
                pLQCrawlerInfo.NUseGoodsCheck_ = Convert.ToString(datareader["NUseGoodsCheck"]);
                pLQCrawlerInfo.NUseGoodsRule_ = Convert.ToString(datareader["NUseGoodsRule"]);

                pLQCrawlerInfo.NUseUserUrl_ = Convert.ToString(datareader["NUseUserUrl"]);
                pLQCrawlerInfo.NUseUserParam_ = Convert.ToString(datareader["NUseUserParam"]);
                pLQCrawlerInfo.NUseUserCheck_ = Convert.ToString(datareader["NUseUserCheck"]);

                pLQCrawlerInfo.RUseUserUrl_ = Convert.ToString(datareader["RUseUserUrl"]);
                pLQCrawlerInfo.RUseUserParam_ = Convert.ToString(datareader["RUseUserParam"]);
                pLQCrawlerInfo.RUseUserCheck_ = Convert.ToString(datareader["RUseUserCheck"]);

                pLQCrawlerInfo.ExData_Start_ = Convert.ToInt32(datareader["ExData_Start"]);
                pLQCrawlerInfo.ExData_Coupncode_ = Convert.ToInt32(datareader["ExData_Coupncode"]);
                pLQCrawlerInfo.ExData_Buydate_ = Convert.ToInt32(datareader["ExData_Buydate"]);
                pLQCrawlerInfo.ExData_Option_ = Convert.ToInt32(datareader["ExData_Option"]);
                pLQCrawlerInfo.ExData_Cancel_ = Convert.ToInt32(datareader["ExData_Cancel"]);
                pLQCrawlerInfo.ExData_Count_ = Convert.ToInt32(datareader["ExData_Count"]);
                pLQCrawlerInfo.ExData_Use_ = Convert.ToInt32(datareader["ExData_Use"]);
                pLQCrawlerInfo.ExData_Buyer_ = Convert.ToInt32(datareader["ExData_Buyer"]);
                pLQCrawlerInfo.ExData_Buyphone_ = Convert.ToInt32(datareader["ExData_Buyphone"]);
                pLQCrawlerInfo.ExData_Price_ = Convert.ToInt32(datareader["ExData_Price"]);
                pLQCrawlerInfo.ExData_UseCheck_ = Convert.ToString(datareader["ExData_UseCheck"]);
                pLQCrawlerInfo.ExData_CancelCheck_ = Convert.ToString(datareader["ExData_CancelCheck"]);

                break;
            }
            datareader.Close();
            datareader.Dispose();
            datareader = null;
        }
        catch (System.Exception ex)
        {
            NewLogManager2.Instance.Log(string.Format("Error bool GetCrawlerInfo - {0}", ex.Message));
            bResult = false;
        }

        return bResult;
    }
Ejemplo n.º 9
0
        public virtual void MakeDBData(tblOrderData pExcelData)
        {
            Dictionary <string, tblOrderData> pOrderList = OrderManager.Instance.GetOrderList();

            LQStructures.LQCrawlerInfo pCrawler = CrawlerManager.Instance.GetCrawlerInfo();

            // DB에 저장되어 있던 값이 아니면 들어온 값이라면
            if (pOrderList.ContainsKey(pExcelData.channelOrderCode_) == false)
            {
                // 상태값 변경
                if (pExcelData.ExData_Use_ == pCrawler.ExData_UseCheck_)
                {
                    pExcelData.State_ = DealStateManager.Instance.StateString_[(Int32)DealStateEnum.A];
                }
                else if (pExcelData.ExData_Cancel_ == pCrawler.ExData_CancelCheck_)
                {
                    pExcelData.State_ = DealStateManager.Instance.StateString_[(Int32)DealStateEnum.FINISH_REFUND];
                }
                else if (pExcelData.ExData_Use_ == "정산완료" || pExcelData.ExData_Cancel_ == "정산완료")
                {
                    pExcelData.State_ = DealStateManager.Instance.StateString_[(Int32)DealStateEnum.A];
                }
                else
                {
                    pExcelData.State_ = DealStateManager.Instance.StateString_[(Int32)DealStateEnum.FINISH_BUY];
                }

                // 신규 데이터라면 일단 DB에 넣는다.
                pExcelData.NeedDBProc_   = tblOrderData.NeedDBProc.Insert;
                pExcelData.bFindInExcel_ = true;
                pExcelData.bProcessed_   = true;
                pOrderList.Add(pExcelData.channelOrderCode_, pExcelData);
            }
            else
            {
                tblOrderData pDBData = pOrderList[pExcelData.channelOrderCode_];
                if (pExcelData.State_ == pDBData.State_)
                {
                    return;
                }

                pDBData.bFindInExcel_ = true;
                pDBData.bProcessed_   = true;

                if (pDBData.State_ == DealStateManager.Instance.StateString_[(Int32)DealStateEnum.FINISH_RESERVED])
                {// 예약한 상태 사용처리 해야함
                }
                else if (pDBData.State_ == DealStateManager.Instance.StateString_[(Int32)DealStateEnum.USER_WANT_REFUND])
                {// 사용 취소를 요청한 상태 사용취소처리 해야함
                }
                else if (pDBData.State_ == DealStateManager.Instance.StateString_[(Int32)DealStateEnum.FINISH_BUY])
                {// DB 에는 구매만 한 상태인데, 엑셀에는 취소 요청을 해둔 상태라면 환불이다.
                    if (pExcelData.ExData_Cancel_ == pCrawler.ExData_CancelCheck_)
                    {
                        pDBData.State_ = DealStateManager.Instance.StateString_[(Int32)DealStateEnum.USER_WANT_REFUND];
                    }
                }
                else if (pDBData.State_ == DealStateManager.Instance.StateString_[(Int32)DealStateEnum.USED])
                {
                    // 사용 처리된 상태인데, 뭔가 해줘야 할게 있는가?
                }
                else if (pDBData.State_ == DealStateManager.Instance.StateString_[(Int32)DealStateEnum.FINISH_REFUND])
                {// 환불이 끝난 상태 아무것도 하지 않는다.
                }
                else
                {
                    //pCrawler.ExData_UseCheck_
                    if (pExcelData.ExData_Use_.IndexOf(pCrawler.ExData_UseCheck_) >= 0)
                    {
                        pDBData.State_      = DealStateManager.Instance.StateString_[(Int32)DealStateEnum.A];
                        pDBData.NeedDBProc_ = tblOrderData.NeedDBProc.Update;
                        LogManager.Instance.Log(string.Format("채널에서 이미 사용처리 되어 있어서 DB 값만 바꾸자.{0}", pDBData.channelOrderCode_));
                    }
                    else
                    {
                        string log = string.Format("C:{0}, CP:{1}, S:{2}, {3}, {4} "
                                                   , pDBData.channelSeq_, pDBData.channelOrderCode_, pDBData.State_, pExcelData.ExData_Cancel_, pExcelData.ExData_Use_);
                        LogManager.Instance.Log(log);
                    }
                }
            }
        }
Ejemplo n.º 10
0
        // 상품 판매 다운로드하고 데이터 정리
        public virtual bool DownloadExcelAndDataMake()
        {
            Dictionary <string, string> GoodsDownInfo = OrderManager.Instance.GetGoodsList();

            LQStructures.LQCrawlerInfo pCrawler = CrawlerManager.Instance.GetCrawlerInfo();
            DateTime dtNow = DateTime.Now;

            // 하위 폴더 만들기
            string makefolder = HKLibrary.UTIL.HKFileHelper.GetCurrentDirectory();

            makefolder += "\\";
            makefolder += pCrawler.Channel_Idx_.ToString();
            makefolder += "\\";
            makefolder += dtNow.ToShortDateString();
            HKLibrary.UTIL.HKFileHelper.MakeFolder(makefolder);

            Dictionary <Int32, ChannelGoodInfo> pInfoList = CrawlerManager.Instance.GetGoodsInfo();

            foreach (var pData in pInfoList)
            {
                ChannelGoodInfo pGoodInfo = pData.Value;

                string downString = makefolder;
                downString += "\\";
                downString += pGoodInfo.Goods_Code_;
                downString += "_";
                downString += Convert.ToString(dtNow.Ticks);
                downString += ".xls";

                // 이미 다운로드가 끝난 파일이라면 다시 다운로드 하지 않는다.
                if (GoodsDownInfo.ContainsKey(pGoodInfo.Goods_Code_) == false)
                {
                    try
                    {
                        string method = pCrawler.ExcelDownMethod_;
                        string url    = pCrawler.ExcelDownUrl_;
                        url = url.Replace("{GoodsCode}", pGoodInfo.Goods_Code_);

                        string sendparameter = pCrawler.ExcelDownParameter_;

                        string eDate = "";
                        string sData = "";
                        if (pGoodInfo.eDateFormat_ != null)
                        {
                            DateTime beforeData = dtNow.AddDays(-7);  // 이지웰 건수가 많으면 데이터를 못들고옴, 10일전 건수만 들고오게 함
                            eDate = string.Format(pGoodInfo.eDateFormat_, dtNow.Year, dtNow.Month, dtNow.Day);
                            sData = string.Format(pGoodInfo.eDateFormat_, beforeData.Year, beforeData.Month, beforeData.Day);
                        }

                        sendparameter = sendparameter.Replace("{GoodsCode}", pGoodInfo.Goods_Code_);
                        sendparameter = sendparameter.Replace("{sDate}", sData);
                        sendparameter = sendparameter.Replace("{eDate}", eDate);

                        HttpWebResponse pResponse = HKHttpWebRequest.ReqHttpRequest(method, url, sendparameter, cookie_, null, null, 180000);

                        if (pResponse.CharacterSet == "" || pResponse.CharacterSet == "euc-kr" || pResponse.CharacterSet == "EUC-KR")
                        {
                            FileStream fs = File.OpenWrite(downString);

                            string d = pResponse.CharacterSet;
                            Stream responsestream = pResponse.GetResponseStream();
                            byte[] buffer         = new byte[2048];

                            long totalBytesRead = 0;
                            int  bytesRead;

                            while ((bytesRead = responsestream.Read(buffer, 0, buffer.Length)) > 0)
                            {
                                totalBytesRead += bytesRead;
                                fs.Write(buffer, 0, bytesRead);
                            }
                            fs.Close();
                            fs.Dispose();
                        }
                        else
                        {
                            TextReader textReader = (TextReader) new StreamReader(pResponse.GetResponseStream(), Encoding.GetEncoding(pResponse.CharacterSet));
                            string     htmlBuffer = textReader.ReadToEnd();
                            HKLibrary.UTIL.HKFileHelper.SaveToFile(downString, htmlBuffer);
                            textReader.Close();
                            textReader.Dispose();
                        }
                    }
                    catch (System.Exception ex)
                    {
                        LogManager.Instance.Log(ex.Message);
                        continue;
                    }

                    GoodsDownInfo.Add(pGoodInfo.Goods_Code_, downString);
                }

                LoadExcelAndInsertList(GoodsDownInfo[pGoodInfo.Goods_Code_], pGoodInfo.GoodsAttrType_, false, pGoodInfo.GoodsName_);
            }

            return(true);
        }
Ejemplo n.º 11
0
        public override bool LoadExcelAndInsertList(string filepath, Int32 GoodsAttrType, bool bFixedType, string goodsname)
        {
            LQStructures.LQCrawlerInfo pCrawlerInfo = CrawlerManager.Instance.GetCrawlerInfo();

            Microsoft.Office.Interop.Excel.Application ap = null;
            Workbook  wb = null;
            Worksheet ws = null;

            HKExcelHelper.GetWorkSheet(filepath, ref ap, ref wb, ref ws);


            Range  tRange          = null;
            string tempString      = "";
            string comparesitename = "";
            string beforeOrderCode = "";

            Int32 nCurrentRow      = 0;
            Int32 ExData_Option    = 0;
            Int32 ExData_Coupncode = 0;
            Int32 ExData_Buyer     = 0;
            Int32 ExData_Cancel    = 0;

            Int32 ExData_Use      = 0;
            Int32 ExData_Buyphone = 0;
            Int32 ExData_Price    = 0;
            Int32 ExData_BuyDate  = 0;
            Int32 ExData_BuyCount = 0;

            if (bFixedType == true)
            {// 레저큐 양식일때는 고정값으로
                nCurrentRow      = 2;
                ExData_Option    = 4;
                ExData_Coupncode = 3;
                ExData_Buyer     = 1;
                ExData_Cancel    = 6;
                ExData_Use       = 6;
                ExData_Buyphone  = 2;
                ExData_Price     = 5;
                ExData_BuyDate   = 7;
                ExData_BuyCount  = 8;
            }
            else
            {
                nCurrentRow      = pCrawlerInfo.ExData_Start_;
                ExData_Option    = pCrawlerInfo.ExData_Option_;
                ExData_Coupncode = pCrawlerInfo.ExData_Coupncode_;
                ExData_Buyer     = pCrawlerInfo.ExData_Buyer_;
                ExData_Cancel    = pCrawlerInfo.ExData_Cancel_;
                ExData_Use       = pCrawlerInfo.ExData_Use_;
                ExData_Buyphone  = pCrawlerInfo.ExData_Buyphone_;
                ExData_Price     = pCrawlerInfo.ExData_Price_;
                ExData_BuyDate   = pCrawlerInfo.ExData_Buydate_;
                ExData_BuyCount  = pCrawlerInfo.ExData_Count_;

                // 티몬을 위한 변경
                if (GoodsAttrType == 1)
                {
                    nCurrentRow      = 3;
                    ExData_Option    = 6;
                    ExData_Coupncode = 3;
                    ExData_Buyer     = 1;
                    ExData_Cancel    = 8;
                    ExData_Use       = 8;
                    ExData_Buyphone  = 2;
                    ExData_Price     = 7;
                    ExData_BuyDate   = 9;
                }
            }

            while (true)
            {
                try
                {
                    tRange          = ws.Cells[nCurrentRow, 1];
                    comparesitename = Convert.ToString(tRange.Value2);

                    tRange     = ws.Cells[nCurrentRow, ExData_Option];
                    tempString = Convert.ToString(tRange.Value2);
                    if (tempString == null)
                    {
                        break;
                    }

                    string SecondOrderCode = "";
                    Int32  tempgoodSeq     = -1;

                    tblOrderData pExcelData = new tblOrderData();
                    pExcelData.channelSeq_            = pCrawlerInfo.Channel_Idx_;
                    pExcelData.authoritySeq_          = pCrawlerInfo.AuthoritySeq_;
                    pExcelData.goodsSeq_              = tempgoodSeq;
                    pExcelData.ExData_Option_         = tempString;
                    pExcelData.ExData_OptionOriginal_ = tempString;
                    if (string.IsNullOrEmpty(goodsname) == false)
                    {
                        pExcelData.ExData_GoodsName_ = goodsname;
                    }

                    tRange = ws.Cells[nCurrentRow, ExData_Coupncode];
                    if (tRange == null)
                    {
                        break;
                    }

                    pExcelData.channelOrderCode_ = Convert.ToString(tRange.Value2);
                    if (pExcelData.channelOrderCode_ == null)
                    {
                        break;
                    }
                    pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Replace("'", "");
                    pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Trim();   // 공백 제거

                    pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_ + "_" + comparesitename;


                    //Second CouponCode
                    tRange          = ws.Cells[nCurrentRow, 2];
                    SecondOrderCode = Convert.ToString(tRange.Value2);
                    pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_ + "_" + SecondOrderCode;


                    tRange = ws.Cells[nCurrentRow, ExData_Buyer];
                    pExcelData.orderName_ = Convert.ToString(tRange.Value2);
                    pExcelData.orderName_ = pExcelData.orderName_.Trim();

                    Regex regex = new Regex(@"\((?<OrderName>\S+)\)");
                    Match mc    = regex.Match(pExcelData.orderName_);
                    if (mc.Success)
                    {
                        pExcelData.orderName_ = Convert.ToString(mc.Groups["OrderName"].Value);
                    }

                    if (pExcelData.orderName_ == null)
                    {
                        pExcelData.orderName_ = "";
                    }

                    tRange = ws.Cells[nCurrentRow, ExData_Cancel];
                    pExcelData.ExData_Cancel_ = tRange.Value2;
                    if (pExcelData.ExData_Cancel_ == null)
                    {
                        pExcelData.ExData_Cancel_ = "";
                    }

                    tRange = ws.Cells[nCurrentRow, ExData_Use];
                    pExcelData.ExData_Use_ = tRange.Value2;
                    if (pExcelData.ExData_Use_ == null)
                    {
                        pExcelData.ExData_Use_ = "";
                    }

                    tRange = ws.Cells[nCurrentRow, ExData_Buyphone];
                    pExcelData.orderPhone_ = Convert.ToString(tRange.Value2);
                    pExcelData.orderPhone_ = "0" + pExcelData.orderPhone_;
                    if (pExcelData.orderPhone_ == null)
                    {
                        pExcelData.orderPhone_ = "";
                    }
                    pExcelData.orderPhone_ = Regex.Replace(pExcelData.orderPhone_, @"^(01[016789]{1}|02|0[3-9]{1}[0-9]{1})-?([0-9]{3,4})-?([0-9]{4})$", @"$1-$2-$3");

                    if (ExData_Price != 0)
                    {
                        tRange = ws.Cells[nCurrentRow, ExData_Price];

                        if (tRange.Value2 != null)
                        {// 돈에 , 가 있으면 제거하자.
                            tempString = Convert.ToString(tRange.Value2);
                            tempString = tempString.Replace(",", "");
                            pExcelData.orderSettlePrice_ = Convert.ToInt32(tempString);
                        }
                    }

                    tRange = ws.Cells[nCurrentRow, ExData_BuyDate];
                    DateTime dta = Convert.ToDateTime(tRange.Value2);
                    pExcelData.BuyDate_ = dta.ToString("u");
                    pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace("Z", "");

                    if (ExData_BuyCount != 0)// 구매갯수를 따로 뽑아야 하는 채널에서만
                    {
                        tRange = ws.Cells[nCurrentRow, ExData_BuyCount];
                        pExcelData.BuyCount_ = Convert.ToInt32(tRange.Value2);
                    }

                    SplitDealAndInsertExcelData(pExcelData, comparesitename);
                }
                catch (System.Exception ex)
                {
                    LogManager.Instance.Log(string.Format("엑셀 파싱 에러 : {0}", ex.Message));
                    nCurrentRow++;
                    continue;
                }

                nCurrentRow++;
            }

            wb.Close(false, Type.Missing, Type.Missing);
            ap.Quit();

            Marshal.FinalReleaseComObject(ws);
            Marshal.FinalReleaseComObject(wb);
            Marshal.FinalReleaseComObject(ap);
            ws = null;
            wb = null;
            ap = null;
            GC.Collect();

            return(true);
        }
Ejemplo n.º 12
0
        // 모든 크롤러 정보 로드 하기
        public bool SelectAllChannelInfos()
        {
            try
            {
                SqlHelper pMySqlDB = new SqlHelper();

                pMySqlDB.Connect(CrawlerInfoManager.Instance.method_, CrawlerInfoManager.Instance.dbip_, CrawlerInfoManager.Instance.dbport_, CrawlerInfoManager.Instance.dbname_
                    , CrawlerInfoManager.Instance.dbaccount_, CrawlerInfoManager.Instance.dbpw_, CrawlerInfoManager.Instance.sshhostname_, CrawlerInfoManager.Instance.sshuser_
                    , CrawlerInfoManager.Instance.sshpw_);

                MySqlDataReader datareader = pMySqlDB.call_proc("sp_select_All_Crawler_Info", null);

                while (datareader.Read())
                {
                    LQCrawlerInfo pInfo = new LQCrawlerInfo();
                    pInfo.nIdx_ = Convert.ToInt32(datareader["idx"]);
                    pInfo.Channel_Idx_ = Convert.ToInt32(datareader["Channel_Idx"]);
                    pInfo.ChannelName_ = Convert.ToString(datareader["Channel_Name"]);
                    pInfo.PartnerSeq_ = Convert.ToInt32(datareader["PartnerSeq"]);
                    pInfo.PartnerName_ = Convert.ToString(datareader["PartnerName"]);

                    // 권리사 (2014-07-30) . 추가
                    pInfo.AuthoritySeq_ = Convert.ToInt32(datareader["AuthoritySeq"]);
                    pInfo.AuthoriryName_ = Convert.ToString(datareader["AuthorityName"]);

                    pInfo.MainUrl_ = Convert.ToString(datareader["MainUrl"]);         // 메인 URL
                    pInfo.LoginIDTAG_ = Convert.ToString(datareader["LoginIDTAG"]);
                    pInfo.LoginPWTAG_ = Convert.ToString(datareader["LoginPWTAG"]);
                    pInfo.LoginUrl_ = Convert.ToString(datareader["LoginUrl"]);
                    pInfo.LoginParam_ = Convert.ToString(datareader["LoginParam"]);      // 로그인 셋팅값
                    pInfo.LoginID_ = Convert.ToString(datareader["LoginID"]);         // 로그인 아이디
                    pInfo.LoginPW_ = Convert.ToString(datareader["LoginPW"]);         // 로그인 암호
                    pInfo.LoginMethod_ = Convert.ToString(datareader["LoginMethod"]);     // 로그인 방식
                    pInfo.LoginEvent_ = Convert.ToString(datareader["LoginEvent"]);      // 로그인 버튼 이벤트
                    pInfo.LoginCheck_ = Convert.ToString(datareader["LoginCheck"]);
                    pInfo.LoginType_ = Convert.ToChar(datareader["LoginType"]);
                    pInfo.ExcelDownUrl_ = Convert.ToString(datareader["ExcelDownUrl"]);    // 엑셀 다운로드 URL
                    pInfo.ExcelDownParameter_ = Convert.ToString(datareader["ExcelDownParameter"]);
                    pInfo.ExcelDownMethod_ = Convert.ToString(datareader["ExcelDownMethod"]);    // 엑셀 다운로드 방식
                    pInfo.ExcelDownRule_ = Convert.ToString(datareader["ExcelDownRule"]);

                    pInfo.UseGoodsUrl_ = Convert.ToString(datareader["UseGoodsUrl"]);
                    pInfo.UseGoodsParam_ = Convert.ToString(datareader["UseGoodsParam"]);
                    pInfo.UseGoodsCheck_ = Convert.ToString(datareader["UseGoodsCheck"]);
                    pInfo.UseGoodsRule_ = Convert.ToString(datareader["UseGoodsRule"]);

                    pInfo.UseUserUrl_ = Convert.ToString(datareader["UseUserUrl"]);
                    pInfo.UseUserParam_ = Convert.ToString(datareader["UseUserParam"]);
                    pInfo.UseUserCheck_ = Convert.ToString(datareader["UseUserCheck"]);

                    pInfo.NUseGoodsUrl_ = Convert.ToString(datareader["NUseGoodsUrl"]);
                    pInfo.NUseGoodsParam_ = Convert.ToString(datareader["NUseGoodsParam"]);
                    pInfo.NUseGoodsCheck_ = Convert.ToString(datareader["NUseGoodsCheck"]);
                    pInfo.NUseGoodsRule_ = Convert.ToString(datareader["NUseGoodsRule"]);

                    pInfo.NUseUserUrl_ = Convert.ToString(datareader["NUseUserUrl"]);
                    pInfo.NUseUserParam_ = Convert.ToString(datareader["NUseUserParam"]);
                    pInfo.NUseUserCheck_ = Convert.ToString(datareader["NUseUserCheck"]);

                    pInfo.RUseUserUrl_ = Convert.ToString(datareader["RUseUserUrl"]);
                    pInfo.RUseUserParam_ = Convert.ToString(datareader["RUseUserParam"]);
                    pInfo.RUseUserCheck_ = Convert.ToString(datareader["RUseUserCheck"]);

                    pInfo.ExData_Start_ = Convert.ToInt32(datareader["ExData_Start"]);
                    pInfo.ExData_Coupncode_ = Convert.ToInt32(datareader["ExData_Coupncode"]);
                    pInfo.ExData_Buydate_ = Convert.ToInt32(datareader["ExData_Buydate"]);
                    pInfo.ExData_Option_ = Convert.ToInt32(datareader["ExData_Option"]);
                    pInfo.ExData_Cancel_ = Convert.ToInt32(datareader["ExData_Cancel"]);
                    pInfo.ExData_Use_ = Convert.ToInt32(datareader["ExData_Use"]);
                    pInfo.ExData_Buyer_ = Convert.ToInt32(datareader["ExData_Buyer"]);
                    pInfo.ExData_Count_ = Convert.ToInt32(datareader["ExData_Count"]);
                    pInfo.ExData_Buyphone_ = Convert.ToInt32(datareader["ExData_Buyphone"]);
                    pInfo.ExData_Price_ = Convert.ToInt32(datareader["ExData_Price"]);
                    pInfo.ExData_UseCheck_ = Convert.ToString(datareader["ExData_UseCheck"]);
                    pInfo.ExData_CancelCheck_ = Convert.ToString(datareader["ExData_CancelCheck"]);

                    CrawlerInfoList_.Add(pInfo.AuthoritySeq_, pInfo);
                }

                datareader.Close();
                datareader.Dispose();
                datareader = null;
            }
            catch (System.Exception ex)
            {
                LogManager.Instance.Log(string.Format("채널정보 로드 실패 {0}",ex.Message));
                return false;
            }

            return true;
        }
Ejemplo n.º 13
0
 public void SetCrawlerInfo(LQStructures.LQCrawlerInfo pInfo)
 {
     CrawlerInfo_ = pInfo;
 }