Beispiel #1
0
 public static bool 添加商品(商品 product, long productCatID, long userID)
 {
     //var 商品分类 = product.商品信息.所属商品分类.商品分类;
     //if (null != 商品分类.商品属性模板) 商品分类.商品属性模板 = new Dictionary<string, Dictionary<string, 商品属性数据>>();
     //foreach (var item in product.商品数据.商品属性)
     //{
     //    if (!商品分类.商品属性模板.ContainsKey(item.Key))
     //    {
     //        商品分类.商品属性模板.Add(item.Key, new Dictionary<string, 商品属性数据>(item.Value.Count));
     //    }
     //    var 商品属性分类模板 = 商品分类.商品属性模板[item.Key];
     //    foreach (var item1 in item.Value)
     //    {
     //        if (!商品属性分类模板.ContainsKey(item1.Key))
     //        {
     //            商品属性分类模板.Add(item1.Key, new 商品属性数据() { 频率 = 1, 必需 = false, 销售属性 = false, 值 = item1.Value });
     //        }
     //        else
     //        {
     //            商品属性分类模板[item1.Key].频率 += 1;
     //            商品属性分类模板[item1.Key].值.AddRange(item1.Value);
     //        }
     //    }
     //}
     product.商品信息.所属商品分类.商品分类ID = productCatID;
     product.商品信息.所属供应商.用户ID = userID;
     return Mongo.添加(product);
 }
Beispiel #2
0
 public static void 更新商品价格(商品 product, decimal 价格, 商品._价格属性组合 价格组合)
 {
     if (product.销售信息.价格 == 价格
         && EqualityComparer<商品._价格属性组合>.Default.Equals(product.销售信息.价格属性组合, 价格组合))
         return;
     product.销售信息.价格 = 价格;
     product.销售信息.价格属性组合 = 价格组合;
     product.销售信息.价格修改日期 = DateTime.Now;
     更新商品价格历史(product);
     Mongo.更新(product);
 }
Beispiel #3
0
 public static bool 更新商品(商品 product, bool updateModifiedTime = true, bool setUnverified = true)
 {
     var oldProduct = 查找商品(product.Id);
     if (product.销售信息.价格 != oldProduct.销售信息.价格
         || !EqualityComparer<商品._价格属性组合>.Default.Equals(product.销售信息.价格属性组合, oldProduct.销售信息.价格属性组合))
     {
         product.销售信息.价格修改日期 = DateTime.Now;
         更新商品价格历史(product);
     }
     if(setUnverified) product.审核数据.审核状态 = 审核状态.未审核;
     return Mongo.更新(product, updateModifiedTime);
 }
Beispiel #4
0
 private static bool 更新商品价格历史(商品 product)
 {
     var hsi = new 商品历史销售信息()
     {
         价格修改日期 = product.销售信息.价格修改日期,
         价格 = product.销售信息.价格,
         销量 = product.销售信息.销量,
         点击量 = product.销售信息.点击量,
         价格属性组合 = product.销售信息.价格属性组合,
     };
     hsi.所属商品.商品ID = product.Id;
     return Mongo.添加(hsi);
 }
        public ActionResult Part_GysSelect_pagechange(int? page)
        {
            if (-1 != HttpContext.检查登录())
            {
                ViewData["已登录"] = "1";
            }
            else
            {
                ViewData["已登录"] = "0";
            }

            TopDocs serchalllist = null;

            PanGu.Segment.Init(PanGuXmlPath);

            string provence = Request.Params["provence"];//所在省份
            string city = Request.Params["city"];//所在城市
            string area = Request.Params["area"];//所在区县
            string industry = Request.Params["industry"];//所属行业
            string comname = Request.Params["comname"];//企业名称

            if (provence == "不限省份" && industry == "请选择行业" && string.IsNullOrEmpty(comname))
            {
                return Content("0");
            }

            try
            {
                BooleanQuery bQuery = new BooleanQuery();
                if (provence != "不限省份")
                {
                    //Lucene.Net.Search.Query query = new QueryParser("Province", PanGuAnalyzer).Parse(provence);
                    Lucene.Net.Search.Query query = new TermQuery(new Term("Province", provence));
                    bQuery.Add(query, BooleanClause.Occur.MUST);//其中的MUST、SHOULD、MUST_NOT表示与、或、非

                    if (city != "不限城市")
                    {
                        //query = new QueryParser("City", PanGuAnalyzer).Parse(city);
                        query = new TermQuery(new Term("City", city));
                        bQuery.Add(query, BooleanClause.Occur.MUST);

                        if (area != "不限区县")
                        {
                            //query = new QueryParser("Area", PanGuAnalyzer).Parse(area);
                            //query = new TermQuery(new Term("Area", area));
                            query = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "Area", PanGuAnalyzer).Parse(area);
                            bQuery.Add(query, BooleanClause.Occur.MUST);
                        }
                    }
                }


                if (industry != "请选择行业")
                {
                    Lucene.Net.Search.Query query = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "Industry", PanGuAnalyzer).Parse(industry);
                    //Lucene.Net.Search.Query query = new TermQuery(new Term("Industry", industry));
                    bQuery.Add(query, BooleanClause.Occur.MUST);
                }

                Dictionary<string, string> dic = new Dictionary<string, string>();
                if (!string.IsNullOrEmpty(comname))
                {
                    //bQuery1.Add(query5, BooleanClause.Occur.MUST);
                    //bQuery.Add(bQuery1, BooleanClause.Occur.MUST);

                    string title = GetKeyWordsSplitBySpace(comname);
                    Lucene.Net.Search.Query query = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "Name", PanGuAnalyzer).Parse(title);
                    bQuery.Add(query, BooleanClause.Occur.MUST);
                    dic.Add("title", comname);
                }

                if (bQuery != null && bQuery.GetClauses().Length > 0)
                {
                    serchalllist = GetSearchResult(bQuery, dic, "/Lucene.Net/IndexDic/Gys");
                }

                int listcount = serchalllist.totalHits > 1000 ? 1000 : serchalllist.totalHits;
                int maxpage = Math.Max((listcount + PAGESIZE - 1) / PAGESIZE, 1);
                if (string.IsNullOrEmpty(page.ToString()) || page < 0 || page > maxpage)
                {
                    page = 1;
                }

                IList<供应商读出Lucene> serchlist = new List<供应商读出Lucene>();
                if (serchalllist != null && listcount > 0)
                {
                    int length = PAGESIZE;
                    if (maxpage == page && listcount % PAGESIZE != 0)
                        length = listcount % PAGESIZE;

                    int count = PAGESIZE * ((int)page - 1);
                    //IndexSearcher search = new IndexSearcher(IndexDic("/Lucene.Net/IndexDic/Gys"), true);
                    IndexSearcher search = new IndexSearcher(new Lucene.Net.Store.SimpleFSDirectory(new System.IO.DirectoryInfo(IndexDic("/Lucene.Net/IndexDic/Gys"))), true);
                    for (int i = count; i < count + length; i++)
                    {
                        供应商 model = new 供应商();
                        model.Id = long.Parse(search.Doc(serchalllist.scoreDocs[i].doc).Get("NumId"));
                        model.企业基本信息.企业名称 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Name");

                        model.企业基本信息.所属行业 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Industry");

                        ////可提供商品类别
                        //供应商._产品类别 lb = new 供应商._产品类别();
                        //lb.一级分类 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Industry");
                        //model.可提供产品类别列表.Add(lb);

                        model.所属地域.省份 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Province");
                        model.所属地域.城市 = search.Doc(serchalllist.scoreDocs[i].doc).Get("City");
                        model.所属地域.区县 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Area");
                        model.企业联系人信息.联系人固定电话 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Telephone");
                        model.企业联系人信息.联系人姓名 = search.Doc(serchalllist.scoreDocs[i].doc).Get("P_Name");


                        var Rzjb = search.Doc(serchalllist.scoreDocs[i].doc).Get("Rzjb");
                        model.供应商用户信息.认证级别 = Rzjb == null ? 供应商.认证级别.未设置 : (供应商.认证级别)(int.Parse(Rzjb));

                        ///////////////////图标拆分
                        var 图标 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Level_Flage").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        if (图标[0] == "1")
                        {
                            model.供应商用户信息.年检列表.Add(DateTime.Now.Year.ToString(), new 操作数据());
                        }
                        model.供应商用户信息.应急供应商 = 图标[1] == "1";
                        model.供应商用户信息.协议供应商 = 图标[2] == "1";
                        model.供应商用户信息.入库级别 = (供应商.入库级别)(int.Parse(图标[3]));
                        ///////////////////图标拆分

                        //员工人数
                        model.企业基本信息.员工人数 = (供应商.员工人数)Enum.Parse(typeof(供应商.员工人数), search.Doc(serchalllist.scoreDocs[i].doc).Get("People_Count"));

                        供应商读出Lucene m = new 供应商读出Lucene();
                        m.供应商 = model;
                        m.登记商品数 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Pro_Count");
                        m.历史参标次数 = search.Doc(serchalllist.scoreDocs[i].doc).Get("History_Count");
                        m.经营类型 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Management");
                        m.主营产品 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Pro_Industry");
                        m.资质证书 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Zzzs_Pic");
                        m.厂房及设备图 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Gys_Pic");

                        //////////////////////////////////////////右边商品图片
                        var pro = search.Doc(serchalllist.scoreDocs[i].doc).Get("Show_Product");
                        if (!string.IsNullOrWhiteSpace(pro))
                        {
                            var prolist = pro.Split(new[] { "||||" }, StringSplitOptions.RemoveEmptyEntries);
                            foreach (var item in prolist)
                            {
                                商品 sp = new 商品();
                                var itemlist = item.Split(new[] { "****" }, StringSplitOptions.RemoveEmptyEntries);
                                sp.商品信息.商品图片.Add(itemlist[0]);
                                sp.商品信息.商品名 = itemlist[1];
                                sp.销售信息.价格 = decimal.Parse(itemlist[2]);
                                sp.Id = long.Parse(itemlist[3]);
                                m.商品列表.Add(sp);
                            }
                        }
                        //判断会员类别
                        var 服务记录 = 供应商服务记录管理.查询供应商服务记录(0, 0, Query<供应商服务记录>.Where(o => o.所属供应商.用户ID == model.Id));
                        if (服务记录.Any())
                        {
                            var 已开通服务 = 服务记录.First().已开通的服务;
                            if (已开通服务.Any())
                            {
                                if (已开通服务.Where(o => o.所申请项目名.Contains("商务会员") && o.结束时间 > DateTime.Now).Any())
                                {
                                    m.会员类别 = "商务会员";
                                }
                                else if (已开通服务.Where(o => o.所申请项目名.Contains("标准会员") && o.结束时间 > DateTime.Now).Any())
                                {
                                    m.会员类别 = "标准会员";
                                }
                                else if (已开通服务.Where(o => o.所申请项目名.Contains("基础会员") && o.结束时间 > DateTime.Now).Any())
                                {
                                    m.会员类别 = "基础会员";
                                }
                            }
                        }
                        //判断会员类别
                        serchlist.Add(SetHighlighter(dic, m));
                    }
                }
                ViewData["供应商列表"] = serchlist;

                //ViewData["listcount"] = listcount;
                //ViewData["pagesize"] = 2;
                ViewData["currentpage"] = page;
                ViewData["pagecount"] = maxpage;
            }
            catch
            {
                ViewData["供应商列表"] = new List<供应商读出Lucene>();

                ViewData["currentpage"] = 1;
                ViewData["pagecount"] = 1;
            }


            ViewBag.Provence = provence;
            ViewBag.City = city;
            ViewBag.Area = area;
            ViewBag.Industry = industry;
            ViewBag.Comname = comname;

            return PartialView("Part_Gys/Part_GysSelect_Page");
        }
        public ActionResult Part_GysList() //供应商列表
        {
            if (-1 != HttpContext.检查登录())
            {
                ViewData["已登录"] = "1";
            }
            else
            {
                ViewData["已登录"] = "0";
            }
            ViewData["行业列表"] = 商品分类管理.查找子分类();
            var name = Request.QueryString["name"];
            if (!string.IsNullOrWhiteSpace(name))
            {
                string comname = name;//企业名称
                try
                {
                    TopDocs serchalllist = null;
                    int page = 1;

                    PanGu.Segment.Init(PanGuXmlPath);
                    BooleanQuery bQuery = new BooleanQuery();

                    Dictionary<string, string> dic = new Dictionary<string, string>();
                    if (!string.IsNullOrEmpty(comname))
                    {
                        string title = GetKeyWordsSplitBySpace(comname);
                        Lucene.Net.Search.Query query = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "Name", PanGuAnalyzer).Parse(title);
                        bQuery.Add(query, BooleanClause.Occur.MUST);
                        dic.Add("title", comname);
                    }

                    if (bQuery != null && bQuery.GetClauses().Length > 0)
                    {
                        serchalllist = GetSearchResult(bQuery, dic, "/Lucene.Net/IndexDic/Gys");
                    }
                    var serchlist = new List<供应商读出Lucene>();
                    int listcount = serchalllist.totalHits > 1000 ? 1000 : serchalllist.totalHits;
                    int maxpage = Math.Max((listcount + PAGESIZE - 1) / PAGESIZE, 1);
                    if (serchalllist != null && listcount > 0)
                    {

                        int length = PAGESIZE;
                        if (maxpage == page && listcount % PAGESIZE != 0)
                            length = listcount % PAGESIZE;

                        //IndexSearcher search = new IndexSearcher(IndexDic("/Lucene.Net/IndexDic/Gys"), true);
                        IndexSearcher search = new IndexSearcher(new Lucene.Net.Store.SimpleFSDirectory(new System.IO.DirectoryInfo(IndexDic("/Lucene.Net/IndexDic/Gys"))), true);

                        for (int i = 0; i < length; i++)
                        {
                            供应商 model = new 供应商();
                            model.Id = long.Parse(search.Doc(serchalllist.scoreDocs[i].doc).Get("NumId"));
                            model.企业基本信息.企业名称 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Name");
                            model.企业基本信息.所属行业 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Industry");
                            model.所属地域.省份 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Province");
                            model.所属地域.城市 = search.Doc(serchalllist.scoreDocs[i].doc).Get("City");
                            model.所属地域.区县 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Area");
                            model.企业联系人信息.联系人固定电话 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Telephone");
                            model.企业联系人信息.联系人姓名 = search.Doc(serchalllist.scoreDocs[i].doc).Get("P_Name");

                            var Rzjb = search.Doc(serchalllist.scoreDocs[i].doc).Get("Rzjb");
                            model.供应商用户信息.认证级别 = Rzjb == null ? 供应商.认证级别.未设置 : (供应商.认证级别)(int.Parse(Rzjb));

                            ///////////////////图标拆分
                            var 图标 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Level_Flage").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                            if (图标[0] == "1")
                            {
                                model.供应商用户信息.年检列表.Add(DateTime.Now.Year.ToString(), new 操作数据());
                            }
                            model.供应商用户信息.应急供应商 = 图标[1] == "1";
                            model.供应商用户信息.协议供应商 = 图标[2] == "1";
                            model.供应商用户信息.入库级别 = (供应商.入库级别)(int.Parse(图标[3]));
                            ///////////////////图标拆分

                            //员工人数
                            model.企业基本信息.员工人数 = (供应商.员工人数)Enum.Parse(typeof(供应商.员工人数), search.Doc(serchalllist.scoreDocs[i].doc).Get("People_Count"));

                            供应商读出Lucene m = new 供应商读出Lucene();
                            m.供应商 = model;
                            m.登记商品数 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Pro_Count");
                            m.历史参标次数 = search.Doc(serchalllist.scoreDocs[i].doc).Get("History_Count");
                            m.经营类型 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Management");
                            m.主营产品 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Pro_Industry");
                            m.资质证书 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Zzzs_Pic");
                            m.厂房及设备图 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Gys_Pic");


                            //////////////////////////////////////////右边商品图片
                            var pro = search.Doc(serchalllist.scoreDocs[i].doc).Get("Show_Product");
                            if (!string.IsNullOrWhiteSpace(pro))
                            {
                                var prolist = pro.Split(new[] { "||||" }, StringSplitOptions.RemoveEmptyEntries);
                                foreach (var item in prolist)
                                {
                                    商品 sp = new 商品();
                                    var itemlist = item.Split(new[] { "****" }, StringSplitOptions.RemoveEmptyEntries);
                                    sp.商品信息.商品图片.Add(itemlist[0]);
                                    sp.商品信息.商品名 = itemlist[1];
                                    sp.销售信息.价格 = decimal.Parse(itemlist[2]);
                                    sp.Id = long.Parse(itemlist[3]);
                                    m.商品列表.Add(sp);
                                }
                            }
                            //判断会员类别
                            var 服务记录 = 供应商服务记录管理.查询供应商服务记录(0, 0, Query<供应商服务记录>.Where(o => o.所属供应商.用户ID == model.Id));
                            if (服务记录.Any())
                            {
                                var 已开通服务 = 服务记录.First().已开通的服务;
                                if (已开通服务.Any())
                                {
                                    if (已开通服务.Where(o => o.所申请项目名.Contains("商务会员") && o.结束时间 > DateTime.Now).Any())
                                    {
                                        m.会员类别 = "商务会员";
                                    }
                                    else if (已开通服务.Where(o => o.所申请项目名.Contains("标准会员") && o.结束时间 > DateTime.Now).Any())
                                    {
                                        m.会员类别 = "标准会员";
                                    }
                                    else if (已开通服务.Where(o => o.所申请项目名.Contains("基础会员") && o.结束时间 > DateTime.Now).Any())
                                    {
                                        m.会员类别 = "基础会员";
                                    }
                                }
                            }
                            //判断会员类别
                            serchlist.Add(SetHighlighter(dic, m));
                        }
                    }

                    ViewData["供应商列表"] = serchlist;
                    ViewData["currentpage"] = page;
                    ViewData["pagecount"] = maxpage;
                }
                catch
                {
                    ViewData["供应商列表"] = new List<供应商读出Lucene>();

                    ViewData["currentpage"] = 1;
                    ViewData["pagecount"] = 1;
                }

                ViewBag.Provence = "不限省份";
                ViewBag.City = "不限城市";
                ViewBag.Area = "不限区县";
                ViewBag.Industry = "请选择行业";
                ViewBag.Comname = comname;

                return PartialView("Part_Gys/Part_GysList_SearchBox");


            }
            else
            {
                //未付费
                var q = MongoDB.Driver.Builders.Query<供应商>.Where(o => o.审核数据.审核状态 == 审核状态.审核通过||o.入网审核数据.审核状态== 审核状态.审核通过);
                long listcount = (int)用户管理.计数用户<供应商>(0, 0, q, false);
                long maxpagesize = Math.Max((listcount + PAGESIZE - 1) / PAGESIZE, 1);
                ViewData["currentpage"] = 1;
                ViewData["pagecount"] = maxpagesize;

                ViewData["供应商列表"] = 用户管理.查询用户<供应商>(0, PAGESIZE, q, false, SortBy<供应商>.Descending(o => o.供应商用户信息.认证级别).Descending(o => o.基本数据.修改时间), false);
                return PartialView("Part_Gys/Part_GysList");
            }



        }
Beispiel #7
0
 public static List<List<Tuple<商品, string>>> 读取商品(string path, long 供应商ID)
 {
     var wb = LoadFromFile(path);
     if (null == wb || wb.NumberOfSheets < 1) return null;//加载文件失败,或没有可用的工作表
     var ret = new List<List<Tuple<商品, string>>>();
     for (var i = 0; i < wb.NumberOfSheets; ++i)
     {
         var wsName = wb.GetSheetName(i);
         if (string.IsNullOrWhiteSpace(wsName)) continue;//第一个工作表名为空
         var 商品分类名及ID = wsName.Split(".".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
         long catId;
         if (商品分类名及ID.Length != 2 || !long.TryParse(商品分类名及ID[1], out catId)) continue;//工作表名格式不正确,或商品分类ID无效
         var cat = 商品分类管理.查找分类(catId);
         if (商品分类名及ID[0] != cat.分类名) continue;//商品分类名和ID不匹配
         var ws = wb.GetSheetAt(i);
         var ret2 = new List<Tuple<商品, string>>();
         //验证并解析格式
         for (var ci = 1; ci <
             (ws is HSSFSheet ? SpreadsheetVersion.EXCEL97.MaxColumns : SpreadsheetVersion.EXCEL2007.MaxColumns);
             ++ci)
         {
             var hitColumn = false;
             var p = new 商品();
             string imgDir = null;
             string lv1 = null, lv2 = null, lv3 = null;
             for (var ri = 0; ri < ws.PhysicalNumberOfRows; ++ri)
             {
                 var r = ws.GetRow(ri);
                 //检查第一列的属性名
                 var c = r.GetCell(0);
                 if (null == c) continue;
                 switch (c.CellStyle.Indention)
                 {
                     case 0:
                         try { lv1 = c.StringCellValue; }
                         catch { lv1 = null; }
                         continue;
                     case 1:
                         try { lv2 = c.StringCellValue; }
                         catch { lv2 = null; }
                         continue;
                     case 2:
                         try { lv3 = c.StringCellValue; }
                         catch { lv3 = null; }
                         break;//只有叶端节点继续进行值解析
                     default:
                         continue;//跳过缩进不正确的行
                 }
                 //取值
                 c = r.GetCell(ci);
                 if (null == c) continue;//值为空
                 c.SetCellType(CellType.String);
                 var val = c.StringCellValue.Trim();
                 if (string.IsNullOrWhiteSpace(val)) continue;//值为空
                 hitColumn = true;
                 //放置值
                 switch (lv1)
                 {
                     case "商品信息":
                         switch (lv3)
                         {
                             case "图片目录":
                                 imgDir = val; break;
                             case "商品名":
                                 p.商品信息.商品名 = val; break;
                             case "品牌":
                                 p.商品信息.品牌 = val; break;
                             case "型号":
                                 p.商品信息.型号 = val; break;
                             case "计量单位":
                                 p.商品信息.计量单位 = val; break;
                         }
                         break;
                     case "商品数据":
                         switch (lv3)
                         {
                             case "商品简介":
                                 p.商品数据.商品简介 = val; break;
                             case "商品详情":
                                 p.商品数据.商品详情 = val; break;
                             case "售后服务":
                                 p.商品数据.售后服务 = val; break;
                         }
                         break;
                     case "销售信息":
                         switch (lv3)
                         {
                             case "价格":
                                 decimal price;
                                 if (decimal.TryParse(val, out price))
                                     p.销售信息.价格 = price;
                                 break;
                         }
                         break;
                     case "商品属性":
                         if (string.IsNullOrWhiteSpace(lv2) || string.IsNullOrWhiteSpace(lv3)) continue;
                         var tpl = cat.商品属性模板;
                         if (tpl.ContainsKey(lv2) && tpl[lv2].ContainsKey(lv3))
                         {
                             if (!p.商品数据.商品属性.ContainsKey(lv2)) p.商品数据.商品属性[lv2] = new Dictionary<string, List<string>>();
                             if (!p.商品数据.商品属性[lv2].ContainsKey(lv3)) p.商品数据.商品属性[lv2][lv3] = new List<string>();
                             if (属性类型.复选 == tpl[lv2][lv3].属性类型)
                                 p.商品数据.商品属性[lv2][lv3].AddRange(val.Split(",,;;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries));
                             else
                                 p.商品数据.商品属性[lv2][lv3].Add(val);
                         }
                         break;
                     default:
                         continue;
                 }
             }
             if (!hitColumn) break;
             p.商品信息.所属供应商.用户ID = 供应商ID;
             p.商品信息.所属商品分类.商品分类ID = catId;
             ret2.Add(Tuple.Create(p, imgDir));
         }
         ret.Add(ret2);
     }
     return ret;
 }
Beispiel #8
0
        /// <summary>
        /// 创建商品索引
        /// </summary>
        /// <param name="analyzer"></param>
        /// <param name="title"></param>
        /// <param name="content"></param>
        public static void AddIndex(IndexWriter writer, 商品 model)
        {
            try
            {
                Document doc = new Document();
                doc.Add(new Field("NumId", model.Id.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));//存储且索引

                Field f = new Field("Name", model.商品信息.商品名, Field.Store.YES, Field.Index.ANALYZED);
                f.SetBoost(5F);//为标题增加权重
                doc.Add(f);

                f = new Field("ExactModel", model.商品信息.精确型号, Field.Store.YES, Field.Index.ANALYZED);
                f.SetBoost(4F);//为精确型号增加权重
                doc.Add(f);

                doc.Add(new Field("Description", model.商品数据.商品简介, Field.Store.YES, Field.Index.NOT_ANALYZED));//存储且索引

                if (model.商品信息.商品图片.Count > 0)
                {
                    doc.Add(new Field("Pic", model.商品信息.商品图片[0], Field.Store.YES, Field.Index.NOT_ANALYZED));//存储且索引
                }
                else
                {
                    doc.Add(new Field("Pic", "/images/noimage.jpg", Field.Store.YES, Field.Index.NOT_ANALYZED));//存储且索引
                }
                doc.Add(new Field("Price", model.销售信息.价格.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));//存储且索引
                doc.Add(new Field("Company", model.商品信息.所属供应商.用户ID.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));//存储且索引
                doc.Add(new Field("Attribute", JsonConvert.SerializeObject(model.商品数据.商品属性), Field.Store.YES, Field.Index.NOT_ANALYZED));//存储且索引
                doc.Add(new Field("AddTime", model.基本数据.修改时间.ToString("yyyy-MM-dd"), Field.Store.YES, Field.Index.NOT_ANALYZED));//存储且索引
                writer.AddDocument(doc);
            }
            catch
            {
                return;
            }
        }
Beispiel #9
0
        /// <summary>
        /// 创建商品索引
        /// </summary>
        public static void CreateIndex(商品 model, string indexdic)
        {
            string Indexdic_Server = IndexDic(indexdic);

            PanGu.Segment.Init(PanGuXmlPath);
            //创建索引目录
            if (!Directory.Exists(Indexdic_Server))
            {
                Directory.CreateDirectory(Indexdic_Server);
            }
            Lucene.Net.Store.Directory dir = new Lucene.Net.Store.SimpleFSDirectory(new DirectoryInfo(Indexdic_Server));
            //IndexWriter第三个参数:true指重新创建索引,false指从当前索引追加....此处为追加索引所以为false
            try
            {
                //IndexWriter writer = new IndexWriter(Indexdic_Server, PanGuAnalyzer, false, Lucene.Net.Index.IndexWriter.MaxFieldLength.LIMITED);
                IndexWriter writer = new IndexWriter(dir, PanGuAnalyzer, false, IndexWriter.MaxFieldLength.UNLIMITED);
                AddIndex(writer, model);

                writer.Optimize();
                writer.Close();
            }
            catch
            {
                //IndexWriter writer = new IndexWriter(Indexdic_Server, PanGuAnalyzer, true, Lucene.Net.Index.IndexWriter.MaxFieldLength.LIMITED);
                IndexWriter writer = new IndexWriter(dir, PanGuAnalyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
                AddIndex(writer, model);

                writer.Optimize();
                writer.Close();
            }

        }
Beispiel #10
0
 public static void 更新商品价格(long 商品ID, decimal 价格,  商品._价格属性组合 价格组合)
 {
     更新商品价格(查找商品(商品ID), 价格, 价格组合);
 }
Beispiel #11
0
 public static bool 删除商品(商品 product)
 {
     return 删除商品(product.Id);
 }
        public ActionResult Gys_Product_Add(商品 model)
        {
            商品 Pro_Model = new 商品();
            Pro_Model.商品信息.单位重量 = model.商品信息.单位重量;
            Pro_Model.销售信息.活动价 = model.销售信息.活动价;
            Pro_Model.销售信息.军采价 = model.销售信息.军采价;
            Pro_Model.销售信息.销售地域.省份 = model.销售信息.销售地域.省份;
            Pro_Model.销售信息.销售地域.城市 = model.销售信息.销售地域.城市;
            Pro_Model.销售信息.销售地域.区县 = model.销售信息.销售地域.区县;
            try
            {
                string price_sttr = Request.Form["pricesttrsrr"];

                if (!string.IsNullOrEmpty(price_sttr))
                {
                    string[] price_a1 = price_sttr.Split(new[] { "^^^^" }, StringSplitOptions.None);
                    //price_a1[0]:组合名称(系列、系列||||型号、系列||||型号||||颜色)

                    Pro_Model.销售信息.价格属性组合 = new 商品._价格属性组合();
                    string tempindexstr = "||||";
                    if (price_a1[0].IndexOf(tempindexstr) > -1)
                    {
                        Pro_Model.销售信息.价格属性组合.设置属性组合列表(price_a1[0].Split(new[] { tempindexstr }, StringSplitOptions.None));
                    }
                    else
                    {
                        Pro_Model.销售信息.价格属性组合.设置属性组合列表(price_a1[0]);
                    }

                    //price_a1[1]:价格####属性1||||属性2||||属性3&&&&、价格####属性1||||属性2&&&&、价格####属性1&&&&(无、)

                    string[] price_a2 = price_a1[1].Split(new[] { "&&&&" }, StringSplitOptions.None);
                    //price_a2[i]:价格####属性1||||属性2||||属性3、价格####属性1||||属性2、价格####属性1

                    for (int i = 0; i < price_a2.Length; i++)
                    {
                        string[] price_a3 = price_a2[i].Split(new[] { "####" }, StringSplitOptions.None);
                        //price_a3[0]:价格    price_a3[1]:属性1||||属性2||||属性3、属性1||||属性2、属性1

                        if (!string.IsNullOrEmpty(price_a3[0]))
                        {
                            var price_march = decimal.Parse(price_a3[0]);
                            if (price_a3[1].IndexOf(tempindexstr) > -1)
                            {
                                Pro_Model.销售信息.价格属性组合.添加组合(price_march, price_a3[1].Split(new[] { tempindexstr }, StringSplitOptions.None));
                            }
                            else
                            {
                                Pro_Model.销售信息.价格属性组合.添加组合(price_march, price_a3[1]);
                            }
                        }
                    }
                }
                if (!string.IsNullOrEmpty(Request.Form["sttrsrr"]))
                {
                    Dictionary<string, Dictionary<string, List<string>>> proatt = new Dictionary<string, Dictionary<string, List<string>>>();
                    string sttr = Request.Form["sttrsrr"];
                    sttr = sttr.Substring(0, sttr.Length - 4);
                    string[] a1 = sttr.Split(new[] { "$$$$" }, StringSplitOptions.None);
                    for (int i = 0; i < a1.Length; i++)
                    {
                        string a2 = a1[i];//   测试分类222|测试属性999^值11#值22#值33#值44#值55#值66#*测试属性888^值111#值222#值333#*
                        string[] a3 = a2.Split(new[] { "||||" }, StringSplitOptions.None);   //a3[0]:测试分类222  a3[1]:测试属性999^值11#值22#值33#值44#值55#值66#*测试属性888^值111#值222#值333#*
                        //尺寸^*颜色^*材料^丝绸#纯棉#*重量^8kg#*

                        //string a4=a3[1];//测试属性999^值11#值22#值33#值44#值55#值66#测试属性888^值111#值222#值333#
                        string[] a4 = a3[1].Substring(0, a3[1].Length - 4).Split(new[] { "****" }, StringSplitOptions.None);    //a4[i]:测试属性888^值111#值222#值333#
                        Dictionary<string, List<string>> temp = new Dictionary<string, List<string>>();
                        for (int j = 0; j < a4.Length; j++)
                        {
                            if (a4[j].Substring(a4[j].Length - 4) != "^^^^")
                            {
                                string[] a5 = a4[j].Split(new[] { "^^^^" }, StringSplitOptions.None);    //a5[0]:测试属性888   a5[1]:值111#值222#值333#
                                var a_value = a5[1].Substring(0, a5[1].Length - 4);
                                if (a_value == "")
                                {
                                    temp.Add(a5[0], new List<string>());
                                }
                                else
                                {
                                    string[] a6 = a_value.Split(new[] { "####" }, StringSplitOptions.None);
                                    a6 = a6.Select(o => o.Trim()).ToArray();
                                    temp.Add(a5[0], new List<string>(a6));
                                }
                            }
                            else
                            {
                                temp.Add(a4[j].Substring(0, a4[j].Length - 4), new List<string>());
                            }
                        }
                        proatt.Add(a3[0], temp);
                    }
                    Pro_Model.商品数据.商品属性 = proatt;
                }
                Pro_Model.商品信息.商品名 = model.商品信息.商品名.Trim();

                if (!string.IsNullOrWhiteSpace(model.商品信息.品牌))
                {
                    Pro_Model.商品信息.品牌 = model.商品信息.品牌.Trim().ToLower();
                }
                Pro_Model.商品信息.型号 = model.商品信息.型号.Trim();
                Pro_Model.商品信息.计量单位 = model.商品信息.计量单位.Trim();
                Pro_Model.销售信息.价格 = model.销售信息.价格;
                List<string> picUrl = new List<string>();
                string[] url = Request.Form["pro_imgstr"].ToString().Split('|');
                for (int k = 0; k < url.Length - 1; k++)
                {
                    if (System.IO.File.Exists(Server.MapPath(@url[k])))
                    {
                        picUrl.Add(url[k]);
                    }
                }
                if (picUrl != null && picUrl.Count() != 0)
                {
                    Pro_Model.商品信息.商品图片 = picUrl;
                }
                Pro_Model.商品数据.商品简介 = model.商品数据.商品简介;
                Pro_Model.商品数据.商品详情 = model.商品数据.商品详情;
                Pro_Model.商品数据.售后服务 = model.商品数据.售后服务;
                if (currentUser.供应商用户信息.协议供应商)
                {
                    Pro_Model.采购信息.参与协议采购 = true;
                }
                if (currentUser.供应商用户信息.应急供应商)
                {
                    Pro_Model.采购信息.参与应急采购 = true;
                }
                Pro_Model.基本数据.已屏蔽 = true;
                //判断是否有项目编号 中标信息
                var proliststr = Request.Form["proliststr"];
                if (!string.IsNullOrWhiteSpace(proliststr))
                {
                    Pro_Model.基本数据.已屏蔽 = false;
                    Pro_Model.中标商品 = true;
                    var pronamelist = proliststr.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (var proname in pronamelist)
                    {
                        Pro_Model.中标信息.Add(new 商品._中标信息
                        {
                            中标项目编号 = Request.Form["pronum___" + proname],
                            中标数量 = int.Parse(Request.Form["procount___" + proname]),
                            中标金额 = decimal.Parse(Request.Form["proprice___" + proname])
                        });
                    }
                }
                if (!string.IsNullOrWhiteSpace(Request.Form["pro_typeimgstr"]))
                {
                    List<string> imglist = new List<string>();
                    string[] img = Request.Form["pro_typeimgstr"].Split('|');
                    for (int i = 0; i < img.Length - 1; i++)
                    {
                        imglist.Add(img[i]);
                    }
                    Pro_Model.商品信息.商品型号图片 = imglist;
                }
                商品管理.添加商品(Pro_Model, long.Parse(Request.Form["idsttrsrr"]), currentUser.Id);
                //CreateIndex(Pro_Model, "/Lucene.Net/IndexDic/Product");

                return RedirectToAction("Gys_Product_List", "供应商后台");
            }
            catch
            {
                return Content("<script>alert('输入有误!请检查数据格式');location.href='javascript:history.go(-1)';</script>");
            }
        }
        public ActionResult Gys_Product_Modify(商品 model)
        {

            try
            {
                //商品 Pro_Model = new 商品();
                商品 Pro_Model = 商品管理.查找商品(long.Parse(Request.Form["idsttrsrr"]));
                Pro_Model.商品信息.单位重量 = model.商品信息.单位重量;
                Pro_Model.销售信息.军采价 = model.销售信息.军采价;
                if (Pro_Model.中标商品)
                {
                    Pro_Model.中标信息 = new List<商品._中标信息>();
                    //判断是否有项目编号
                    var proliststr = Request.Form["proliststr"];
                    if (!string.IsNullOrWhiteSpace(proliststr))
                    {
                        Pro_Model.基本数据.已屏蔽 = false;
                        var pronamelist = proliststr.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (var proname in pronamelist)
                        {
                            Pro_Model.中标信息.Add(new 商品._中标信息
                            {
                                中标项目编号 = Request.Form["pronum___" + proname],
                                中标数量 = int.Parse(Request.Form["procount___" + proname]),
                                中标金额 = decimal.Parse(Request.Form["proprice___" + proname])
                            });
                        }
                    }
                }
                //Pro_Model.Id = int.Parse(Request.Form["idsttrsrr"]);
                //Pro_Model.商品信息.所属供应商.用户ID = this.currentUser.Id;
                //Pro_Model.商品信息.所属商品分类.商品分类ID = long.Parse(Request.Form["classsttrsrr"]);
                string price_sttr = Request.Form["pricesttrsrr"];   //尺寸|颜色^1|155|红色&2|155|黄色&3|160|红色&4|160|黄色&

                if (!string.IsNullOrEmpty(price_sttr))
                {
                    string[] price_a1 = price_sttr.Split(new[] { "^^^^" }, StringSplitOptions.None);//price_a1[0]:尺寸|颜色、尺寸
                    Pro_Model.销售信息.价格属性组合 = new 商品._价格属性组合();
                    string tempindexstr = "||||";
                    if (price_a1[0].IndexOf(tempindexstr) > -1)
                    {
                        Pro_Model.销售信息.价格属性组合.设置属性组合列表(price_a1[0].Split(new[] { tempindexstr }, StringSplitOptions.None));
                    }
                    else
                    {
                        Pro_Model.销售信息.价格属性组合.设置属性组合列表(price_a1[0]);
                    }
                    //price_a1[1]:1|155|红色&2|155|黄色&3|160|红色&4|160|黄色&

                    string[] price_a2 = price_a1[1].Substring(0, price_a1[1].Length - 4).Split(new[] { "&&&&" }, StringSplitOptions.None); //price_a2[i]:4#160|黄色、4#160
                    for (int i = 0; i < price_a2.Length; i++)
                    {
                        string[] price_a3 = price_a2[i].Split(new[] { "####" }, StringSplitOptions.None);  //price_a3[0]:4 price_a3[1]:160|黄色、160
                        if (!string.IsNullOrEmpty(price_a3[0]))
                        {
                            var price_march = decimal.Parse(price_a3[0]);
                            if (price_a3[1].IndexOf(tempindexstr) > -1)
                            {
                                Pro_Model.销售信息.价格属性组合.添加组合(price_march, price_a3[1].Split(new[] { tempindexstr }, StringSplitOptions.None));
                            }
                            else
                            {
                                Pro_Model.销售信息.价格属性组合.添加组合(price_march, price_a3[1]);
                            }
                        }
                    }
                }
                if (!string.IsNullOrEmpty(Request.Form["sttrsrr"]))
                {
                    Dictionary<string, Dictionary<string, List<string>>> proatt = new Dictionary<string, Dictionary<string, List<string>>>();
                    string sttr = Request.Form["sttrsrr"];
                    sttr = sttr.Substring(0, sttr.Length - 4);
                    string[] a1 = sttr.Split(new[] { "$$$$" }, StringSplitOptions.None);
                    for (int i = 0; i < a1.Length; i++)
                    {
                        string a2 = a1[i];//   测试分类222|测试属性999^值11#值22#值33#值44#值55#值66#*测试属性888^值111#值222#值333#*
                        string[] a3 = a2.Split(new[] { "||||" }, StringSplitOptions.None);   //a3[0]:测试分类222  a3[1]:测试属性999^值11#值22#值33#值44#值55#值66#*测试属性888^值111#值222#值333#*
                        //尺寸^*颜色^*材料^丝绸#纯棉#*重量^8kg#*

                        //string a4=a3[1];//测试属性999^值11#值22#值33#值44#值55#值66#测试属性888^值111#值222#值333#
                        string[] a4 = a3[1].Substring(0, a3[1].Length - 4).Split(new[] { "****" }, StringSplitOptions.None);    //a4[i]:测试属性888^值111#值222#值333#
                        Dictionary<string, List<string>> temp = new Dictionary<string, List<string>>();
                        for (int j = 0; j < a4.Length; j++)
                        {
                            if (a4[j].Substring(a4[j].Length - 4) != "^^^^")
                            {
                                string[] a5 = a4[j].Split(new[] { "^^^^" }, StringSplitOptions.None);    //a5[0]:测试属性888   a5[1]:值111#值222#值333#
                                var a_value = a5[1].Substring(0, a5[1].Length - 4);
                                if (a_value == "")
                                {
                                    temp.Add(a5[0], new List<string>());
                                }
                                else
                                {
                                    string[] a6 = a_value.Split(new[] { "####" }, StringSplitOptions.None);
                                    a6 = a6.Select(o => o.Trim()).ToArray();
                                    temp.Add(a5[0], new List<string>(a6));
                                }
                            }
                            else
                            {
                                temp.Add(a4[j].Substring(0, a4[j].Length - 4), new List<string>());
                            }
                        }
                        proatt.Add(a3[0], temp);
                    }
                    Pro_Model.商品数据.商品属性 = proatt;
                }
                Pro_Model.商品信息.商品名 = model.商品信息.商品名.Trim();
                if (!string.IsNullOrWhiteSpace(model.商品信息.品牌))
                {
                    Pro_Model.商品信息.品牌 = model.商品信息.品牌.Trim().ToLower();
                }
                else
                {
                    Pro_Model.商品信息.品牌 = model.商品信息.品牌;
                }
                if (!string.IsNullOrWhiteSpace(model.商品信息.型号))
                {
                    Pro_Model.商品信息.型号 = model.商品信息.型号.Trim();
                }
                else
                {
                    Pro_Model.商品信息.型号 = model.商品信息.型号;
                }
                Pro_Model.商品信息.计量单位 = model.商品信息.计量单位.Trim();
                Pro_Model.销售信息.价格 = model.销售信息.价格;
                if (!string.IsNullOrWhiteSpace(Request.Form["oldpicture"].ToString()))
                {
                    Pro_Model.商品信息.商品图片 = new List<string>(Request.Form["oldpicture"].Substring(0, Request.Form["oldpicture"].Length - 1).Split('|'));
                }
                if (!string.IsNullOrWhiteSpace(Request.Form["oldpicture1"].ToString()))
                {
                    Pro_Model.商品信息.商品型号图片 = new List<string>(Request.Form["oldpicture1"].Substring(0, Request.Form["oldpicture1"].Length - 1).Split('|'));
                }
                if (!string.IsNullOrEmpty(Request.Form["pro_imgstr"]))
                {
                    string[] img = Request.Form["pro_imgstr"].Substring(0, Request.Form["pro_imgstr"].Length - 1).Split('|');
                    foreach (var item in img)
                    {
                        if (System.IO.File.Exists(Server.MapPath(@item)))
                        {
                            Pro_Model.商品信息.商品图片.Add(item);
                        }
                    }
                }
                if (!string.IsNullOrEmpty(Request.Form["pro_imgstr1"]))
                {
                    string[] img = Request.Form["pro_imgstr1"].Substring(0, Request.Form["pro_imgstr1"].Length - 1).Split('|');
                    foreach (var item in img)
                    {
                        if (System.IO.File.Exists(Server.MapPath(@item)))
                        {
                            if (Pro_Model.商品信息.商品型号图片 != null)
                            {
                                Pro_Model.商品信息.商品型号图片.Add(item);
                            }
                            else
                            {
                                Pro_Model.商品信息.商品型号图片 = new List<string>();
                            }
                        }
                    }
                }
                Pro_Model.商品数据.商品简介 = model.商品数据.商品简介;
                Pro_Model.商品数据.商品详情 = model.商品数据.商品详情;
                Pro_Model.商品数据.售后服务 = model.商品数据.售后服务;
                Pro_Model.基本数据.已屏蔽 = true;
                商品管理.更新商品(Pro_Model);
                //CreateIndex(Pro_Model, "/Lucene.Net/IndexDic/Product");

                deleteIndex("/Lucene.Net/IndexDic/Product", Pro_Model.Id.ToString());

                return RedirectToAction("Gys_Product_List", "供应商后台");
            }
            catch
            {
                return Content("<script>alert('输入有误!请检查数据格式');location.href='javascript:history.go(-1)';</script>");
            }
        }