예제 #1
0
        public FrmEditCompanyRegion()
        {
            InitializeComponent();
            connectionStringCompanyAddress = Entities.Server.ConnectionString;
            if (string.IsNullOrEmpty(connectionStringCompanyAddress))
            {
                connectionStringCompanyAddress =
                    ConfigurationManager.ConnectionStrings["UpdateSolrTools.Properties.Settings.QTConnectionString"].ToString();
            }
            companyAddressTableAdapter.Connection = new SqlConnection(connectionStringCompanyAddress);
            companyAddressTableAdapter.Connection.Open();
            regionTree = RegionBAL.GetRegionTree(connectionStringCompanyAddress);
            var provinNodes = regionTree.GetAllNodeInLevel(1);

            foreach (var provinNode in provinNodes)
            {
                comboBoxProvin.Items.Add(new ComboboxItem()
                {
                    ID    = provinNode.ID,
                    Value = provinNode.Value.Name
                });
            }

            RefreshData();
        }
예제 #2
0
 private void UpdateData()
 {
     while (_isRunning)
     {
         if ((DateTime.Now - LastUpdateDataTime) > TimeSpan.FromMinutes(600))
         {
             try
             {
                 var regionTree         = RegionBAL.GetRegionTree(_productConnectionString);
                 var categoryTree       = ProductCategoryBAL.GetProductCategoryTree(_productConnectionString);
                 var categoryTags       = IndexProductTools.GetAllCategoryTags(_productConnectionString);
                 var listPrefixCategory = IndexProductTools.GetAllPrefixCategory(_productConnectionString);
                 solrIndexer.RegionTree         = regionTree;
                 solrIndexer.CategoryTree       = categoryTree;
                 solrIndexer.CategoryTags       = categoryTags;
                 solrIndexer.ListPrefixCategory = listPrefixCategory;
                 LastUpdateDataTime             = DateTime.Now;
                 Logger.Info("Update Data Success!");
             }
             catch (Exception exception)
             {
                 Logger.Error("Update Data Error.", exception);
                 Thread.Sleep(30000);
             }
         }
         else
         {
             Thread.Sleep(10000);
         }
     }
 }
예제 #3
0
        private void InitData()
        {
            this.Invoke((MethodInvoker) delegate
            {
                panelMainControl.Enabled = false;
            });
            var listMerchantUseDatafeedID = IndexProductTools.GetListMerchantUseDatafeedID(_productConnectionString);;
            var listSpecialMerchantID     = IndexProductTools.GetListSpecialMerchantID(_productConnectionString);
            var listPriorMerchants        = IndexProductTools.GetAllPriorMerchants(_productConnectionString);
            var listBadMerchant           = IndexProductTools.GetAllBadMerchantId(_productConnectionString, 35);

            solrIndexer.ListMerchantUseDatafeedID = listMerchantUseDatafeedID;
            solrIndexer.ListSpecialMerchantID     = listSpecialMerchantID;
            solrIndexer.ListPriorMerchants        = listPriorMerchants;
            solrIndexer.ListBadMerchantID         = listBadMerchant;
            var regionTree         = RegionBAL.GetRegionTree(_productConnectionString);
            var categoryTree       = ProductCategoryBAL.GetProductCategoryTree(_productConnectionString);
            var categoryTags       = IndexProductTools.GetAllCategoryTags(_productConnectionString);
            var listPrefixCategory = IndexProductTools.GetAllPrefixCategory(_productConnectionString);

            solrIndexer.RegionTree         = regionTree;
            solrIndexer.CategoryTree       = categoryTree;
            solrIndexer.CategoryTags       = categoryTags;
            solrIndexer.ListPrefixCategory = listPrefixCategory;
            var propertyValueDictionary = WebProductPropertyBAL.GetAllPropertyValues(_productConnectionString);
            var propertyUnitDictionary  = WebProductPropertyBAL.GetPropertyUnitDictionary(_productConnectionString);

            solrIndexer.PropertyUnitDictionary  = propertyUnitDictionary;
            solrIndexer.PropertyValueDictionary = propertyValueDictionary;
            this.Invoke((MethodInvoker) delegate
            {
                panelMainControl.Enabled = true;
            });
        }
예제 #4
0
        private void frmChonRegion_Load(object sender, EventArgs e)
        {
            connectionStringCompanyAddress = Entities.Server.ConnectionString;
            //if (string.IsNullOrEmpty(connectionStringCompanyAddress))
            //    connectionStringCompanyAddress =
            //        ConfigurationManager.ConnectionStrings["UpdateSolrTools.Properties.Settings.QTConnectionString"].ToString();
            companyAddressTableAdapter.Connection.ConnectionString = QT.Entities.Server.ConnectionString;// = new SqlConnection(connectionStringCompanyAddress);
            //companyAddressTableAdapter.Connection.Open();
            regionTree = RegionBAL.GetRegionTree(connectionStringCompanyAddress);
            var provinNodes = regionTree.GetAllNodeInLevel(1);

            foreach (var provinNode in provinNodes)
            {
                comboBoxProvin.Items.Add(new ComboboxItem()
                {
                    ID    = provinNode.ID,
                    Value = provinNode.Value.Name
                });
            }
        }
예제 #5
0
        public static int InsertAllBranchesAndRegionsOfMerchant(long merchantID, string productConnectionString)
        {
            var merchantBranches = MerchantBranchBAL.GetAllBranchesOfMerchant(merchantID, productConnectionString);

            if (merchantBranches != null && merchantBranches.Count != 0)
            {
                MerchantBranchBAL.InsertAllBranchesOfMerchantToCache(merchantID, merchantBranches);
                MerchantBranchBAL.InsertAllBranchShortInfoOfMerchantToCache(merchantID, merchantBranches.Select(x => new MerchantBranchShortInfo(x)).ToList());
                if (_regionParentDictionary == null)
                {
                    _regionParentDictionary = RegionBAL.GetRegionParentDictionary(productConnectionString);
                }
                var merchantRegions = new MerchantRegions();
                merchantRegions.AllMerchantDistrict = merchantBranches.Select(x => x.RegionID).Distinct().ToList();
                merchantRegions.AllMerchantProvins  = merchantRegions.AllMerchantDistrict.Select(x => _regionParentDictionary[x]).Distinct().ToList();
                MerchantRegionBAL.InsertMerchantRegions(merchantID, merchantRegions);
                return(merchantBranches.Count);
            }
            return(0);
        }
예제 #6
0
        public static void InsertAllBranchesAndRegionsOfAllMerchant(string productConnectionString)
        {
            var startTime           = DateTime.Now;
            var allMerchantBranches = MerchantBranchBAL.GetAllBranchesOfAllMerchants(productConnectionString);
            var getSqlDuration      = DateTime.Now - startTime;

            startTime = DateTime.Now;
            MerchantBranchBAL.InsertAllBranchesOfAllMerchantsToCache(allMerchantBranches);
            MerchantBranchBAL.InsertAllBranchShortInfoOfAllMerchantsToCache(allMerchantBranches);
            if (_regionParentDictionary == null)
            {
                _regionParentDictionary = RegionBAL.GetRegionParentDictionary(productConnectionString);
            }
            var provinViewOrders = RegionBAL.GetAllRegionOrder(productConnectionString);

            MerchantRegionBAL.InsertMerchantRegionsOfAllMerchant(allMerchantBranches, provinViewOrders, _regionParentDictionary);
            var insertDuration = DateTime.Now - startTime;

            Logger.InfoFormat("InsertAllBranchesAndRegionsOfAllMerchant: {0} merchantBranches, GetSQLTime: {1} second, InsertTime: {2} second", allMerchantBranches.Count, getSqlDuration.TotalSeconds, insertDuration.TotalSeconds);
        }
예제 #7
0
        public int UpdateProductOfCompany(long companyId, string companyName, Tree <int, Region> regionTree = null)
        {
            if (regionTree == null)
            {
                regionTree = RegionBAL.GetRegionTree(ConnectionStringProducts);
            }

            // Get Company Address
            var companyAddressTableAdapter = new Company_AddressTableAdapter
            {
                Connection = { ConnectionString = ConnectionStringProducts }
            };

            var companyAddressDataTable = companyAddressTableAdapter.GetData(companyId);
            //var companyRegions = new List<int>();
            var companyProvins   = new List <int>();
            var companyDistricts = new List <int>();

            for (var rowIndex = 0; rowIndex < companyAddressDataTable.Rows.Count; rowIndex++)
            {
                var branchDistrict = companyAddressDataTable.Rows[rowIndex]["RegionID"] == DBNull.Value ? -1 : (int)companyAddressDataTable.Rows[rowIndex]["RegionID"];
                if (branchDistrict == -1 || companyDistricts.Contains(branchDistrict))
                {
                    continue;
                }
                companyDistricts.Add(branchDistrict);
                var branchProvinNode = regionTree.GetParentNode(branchDistrict);
                if (branchProvinNode != null && !companyProvins.Contains(branchProvinNode.ID))
                {
                    companyProvins.Add(branchProvinNode.ID);
                }
            }
            //var dtCompanyRegion =
            var dtProduct  = new DBTool2.Product_SolrDataTable();
            var adtProduct = new DBTool2TableAdapters.Product_SolrTableAdapter
            {
                Connection = { ConnectionString = ConnectionStringProducts }
            };

            //this.Invoke((MethodInvoker)(() =>
            //    WriteLog(String.Format("Start download list products of company {0}", companyName))));
            try
            {
                adtProduct.FillBy_Company(dtProduct, companyId);
                SolrDriver.DeleteByCompanyId(companyId);
            }
            catch (Exception ex)
            {
                return(-1);
                //this.Invoke((MethodInvoker)(() =>
                //WriteLog(string.Format("Update Products Of Company {0}", companyId), ex)));
            }
            var solrProductItems = new List <SolrProductItem>();
            var numProduct       = dtProduct.Rows.Count;

            for (var index = 0; index < numProduct; index++)
            {
                var productRow = dtProduct.Rows[index];
                try
                {
                    var item = new SolrProductItem
                    {
                        Id               = QT.Entities.Common.Obj2Int64(productRow["ID"]),
                        Price            = QT.Entities.Common.Obj2Int(productRow["Price"]),
                        Warranty         = QT.Entities.Common.Obj2Int(productRow["Warranty"]),
                        Status           = QT.Entities.Common.Obj2Int(productRow["Status"]),
                        Company          = QT.Entities.Common.Obj2Int64(productRow["Company"]),
                        CompanyProvins   = companyProvins,
                        CompanyDistricts = companyDistricts,
                        LastUpdate       = QT.Entities.Common.ObjectToDataTime(productRow["LastUpdate"]),
                        Summary          = productRow["Summary"].ToString(),
                        Description      = "",
                        ProductId        = QT.Entities.Common.Obj2Int(productRow["ProductID"]),
                        ProductType      = 2,
                        Name             = productRow["Name"].ToString(),
                        NameFT           = productRow["NameFT"].ToString(),
                        DetailUrl        = productRow["DetailUrl"].ToString(),
                        ImagePath        = productRow["ImagePath"].ToString(),
                        CategoryId       = QT.Entities.Common.Obj2Int(productRow["CategoryID"]),
                        ContentFT        =
                            productRow["ContentFT"] != DBNull.Value ? productRow["ContentFT"].ToString() : "c000",
                        ViewCount            = QT.Entities.Common.Obj2Int(productRow["ViewCount"]),
                        AddPosition          = QT.Entities.Common.Obj2Int(productRow["AddPosition"]),
                        StringFilterFields   = new Dictionary <string, object>(),
                        DoubleFilterFields   = new Dictionary <string, object>(),
                        DateTimeFilterFields = new Dictionary <string, object>(),
                        IntFilterFields      = new Dictionary <string, object>()
                    };
                    for (int exIndex = 1; exIndex <= 10; exIndex++)
                    {
                        string filterPropertyId    = QT.Entities.Common.Obj2String(productRow["EX" + exIndex]);
                        string filterPropertyValue = QT.Entities.Common.Obj2String(productRow["EXVALUE" + exIndex]);
                        if (string.IsNullOrEmpty(filterPropertyId) || filterPropertyId.Equals("0") ||
                            string.IsNullOrEmpty(filterPropertyValue))
                        {
                            continue;
                        }
                        try
                        {
                            if (filterPropertyValue.StartsWith("number:"))
                            {
                                if (filterPropertyValue.Equals("number:"))
                                {
                                    continue;
                                }
                                double filterDoubleValue;
                                string filterIDAndValue = filterPropertyValue.Substring(7);
                                string filterValueID    = filterIDAndValue.Substring(0,
                                                                                     filterIDAndValue.IndexOf(":"));
                                string filterValue = filterIDAndValue.Length > filterValueID.Length + 1
                                    ? filterIDAndValue.Substring(filterValueID.Length + 1)
                                    : "";
                                var filterPropertyIdKey =
                                    SolrProductUtils.GetFilterIdKey(Int32.Parse(filterPropertyId));
                                if (item.IntFilterFields.ContainsKey(filterPropertyIdKey))
                                {
                                    continue;
                                }
                                int filterValueInt;
                                if (!int.TryParse(filterValueID, out filterValueInt))
                                {
                                    continue;
                                }
                                item.IntFilterFields.Add(filterPropertyIdKey, filterValueID);
                                if (Double.TryParse(filterValue, out filterDoubleValue))
                                {
                                    item.DoubleFilterFields.Add(filterPropertyId, filterDoubleValue);
                                }
                            }
                            else
                            {
                                string filterValueID = filterPropertyValue.Substring(0,
                                                                                     filterPropertyValue.IndexOf(":"));
                                string filterValue = filterPropertyValue.Length > filterValueID.Length + 1
                                    ? filterPropertyValue.Substring(filterValueID.Length + 1)
                                    : "";
                                var filterPropertyIdKey =
                                    SolrProductUtils.GetFilterIdKey(Int32.Parse(filterPropertyId));
                                if (item.IntFilterFields.ContainsKey(filterPropertyIdKey))
                                {
                                    continue;
                                }
                                int filterValueInt;
                                if (!int.TryParse(filterValueID, out filterValueInt))
                                {
                                    continue;
                                }
                                item.IntFilterFields.Add(filterPropertyIdKey, filterValueID);
                                item.StringFilterFields.Add(filterPropertyId, filterValue);
                            }
                        }
                        catch (Exception ex)
                        {
                            throw;
                        }
                    }
                    solrProductItems.Add(item);
                }
                catch (Exception oex)
                {
                    return(-2);
                    //Invoke((MethodInvoker)(() => WriteLog(string.Format("Update Products Of Company {0}", companyId), oex)));
                }
                if (index % 1000 == 0 || index == numProduct - 1)
                {
                    try
                    {
                        SolrDriver.IndexItems(solrProductItems);
                        solrProductItems.Clear();
                        var numUpdatedProducts = index;
                        //Invoke((MethodInvoker)(() => WriteLog(String.Format("Updated solr {0}/{1} products", numUpdatedProducts, numProduct))));
                    }
                    catch (Exception solrEx)
                    {
                        return(-3);
                        //Invoke((MethodInvoker)(() => WriteLog(string.Format("Update Products Of Company {0}", companyId), solrEx)));
                    }
                }
            }
            try
            {
                SolrDriver.IndexItems(solrProductItems);
                var adtCom = new DBToolTableAdapters.CompanyTableAdapter
                {
                    Connection = { ConnectionString = ConnectionStringProducts }
                };
                adtCom.UpdateQuery_LastUpdateSolr(DateTime.Now, companyId);
                adtCom.Dispose();
                //this.Invoke((MethodInvoker)(() =>
                //    this.richTextBoxInfo.AppendText(String.Format("Update Finish Company {0} - {1} products",
                //        companyName, numProduct))));
            }
            catch (Exception ex)
            {
                return(-4);
            }
            dtProduct.Dispose();
            adtProduct.Dispose();
            return(dtProduct.Rows.Count);
        }