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); }
public static void 更新商品价格(商品 product, decimal 价格, 商品._价格属性组合 价格组合) { if (product.销售信息.价格 == 价格 && EqualityComparer<商品._价格属性组合>.Default.Equals(product.销售信息.价格属性组合, 价格组合)) return; product.销售信息.价格 = 价格; product.销售信息.价格属性组合 = 价格组合; product.销售信息.价格修改日期 = DateTime.Now; 更新商品价格历史(product); Mongo.更新(product); }
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); }
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"); } }
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; }
/// <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; } }
/// <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(); } }
public static void 更新商品价格(long 商品ID, decimal 价格, 商品._价格属性组合 价格组合) { 更新商品价格(查找商品(商品ID), 价格, 价格组合); }
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>"); } }