/// <summary> /// 订单后台-添加订单-查询商品 /// </summary> /// <param name="request"> /// 请求对象 /// </param> /// <param name="searchModel"> /// 查询对象 /// </param> /// <returns> /// 查询结果 /// </returns> public ActionResult OrderEditQueryOrderProduct( [DataSourceRequest] DataSourceRequest request, OrderProductSearchModel searchModel) { int rowCount = 0; int pageCount; var productService = new ProductService(); var condition = productService.BuildProductQueryCondition( searchModel.ProductCategoryID < 1 ? string.Empty : searchModel.ProductCategoryID.ToString(), searchModel.SubProductCategoryID < 1 ? string.Empty : searchModel.SubProductCategoryID.ToString(), searchModel.ProductBrandID < 1 ? string.Empty : searchModel.ProductBrandID.ToString(), searchModel.SubProductBrandID < 1 ? string.Empty : searchModel.SubProductBrandID.ToString(), searchModel.ProductName, searchModel.Barcode, string.Empty, string.Empty); var paging = new Paging("view_Product_Paging", null, "ID", condition, request.Page, request.PageSize); var list = productService.Query(paging, out pageCount, out rowCount); if (list == null) { return Json(null, JsonRequestBehavior.AllowGet); } var modelList = new List<OrderProductModel>(); foreach (var item in list) { var model = DataTransfer.Transfer<OrderProductModel>(item, typeof(ProductSearchResult)); model.ProductID = item.ID; model.ProductName = item.Name; model.Path = item.ThumbnailPath; model.TransactPrice = item.GoujiuPrice; model.ID = 0; modelList.Add(model); } var result = new DataSourceResult { Data = modelList, Total = rowCount }; return Json(result, JsonRequestBehavior.AllowGet); }
/// <summary> /// 品牌下的商品分类 /// </summary> /// <param name="productIdString"> /// 商品编号. /// </param> /// <returns> /// The <see cref="string"/>. /// </returns> public string SimlarProduct(string productIdString) { if (!string.IsNullOrEmpty(productIdString)) { string[] CharProduct = productIdString.Split(','); var sb = new StringBuilder(); foreach (var s in CharProduct) { sb.Append("" + s + " OR ID="); } var list = new ProductService().QueryProductFromInfo(sb.ToString()); sb.Clear(); if (list != null) { foreach (var item in list) { sb.Append("<ul class=\"goods_list\">"); sb.Append(" <li class=\"goods_pic\"> <a href=\"##\" target=\"_blank\" title=\"" + item.SEOTitle + "\">"); sb.Append(" <img class=\"lazyload\" src=\"##\" alt='" + item.SEOKeywords + "' /></a></li>"); sb.Append(" <li class=\"goods_name\"><a href=\"http://www.gjw.com/product/item-id-3866.htm\" target=\"_blank\" title='53度 茅台 孝道酒 500ml'>" + item.Name + "<span class=\"red\"></span></a></li>"); sb.Append("<li class=\"goods_price\">¥" + item.GoujiuPrice + "</li>"); sb.Append(" <li class=\"goods_pinglun\"><span><a href=\"http://www.gjw.com/product/item-id-3866.htm#Comment\" target=\"_blank\">已有33人评论</a></span></li></ul>"); } } return sb.ToString(); } return ""; }
/// <summary> /// The order. /// </summary> /// <returns> /// The <see cref="PartialViewResult"/>. /// </returns> public PartialViewResult Order() { var list = new ProductService().Query(ProductType.HotSale, 10, null); return this.PartialView("Order"); }
private bool CheckBuyProducts(List<CartProduct> buyProducts,out string errorMessage) { var products = new List<CartProduct>(); var messageSB = new StringBuilder(); var whereStr = new StringBuilder(); whereStr.Append("ID in ("); for (int i = 0; i < buyProducts.Count; i++) { if (i < buyProducts.Count - 1) { whereStr.Append(buyProducts[i].ProductID).Append(","); } else { whereStr.Append(buyProducts[i].ProductID); } } whereStr.Append(")"); var productList = new ProductService().Query(ProductType.Rand, 100, whereStr.ToString()); if (productList == null || productList.Count < 1) { errorMessage = "商品不存在或已下架。"; LogUtils.Log("根据商品ID从数据批量获取商品信息为NULL;商品查询条件:" + whereStr, "BuildCartProducts", Category.Warn); return false; } foreach (var cartProduct in buyProducts) { var quantity = 0; var response = this.CheckSpecialPromote(cartProduct.ProductID, ref quantity); if (response != null) //特殊全场活动赠品 { if (response.State == 0) //不允许领取赠品 { messageSB.Append("商品:").Append(cartProduct.ProductName).Append(" ").Append(response.Message).Append("\r\n"); continue; } else { cartProduct.GoujiuPrice = 0; if (cartProduct.Quantity > quantity) //若数量大于可赠送数量 { messageSB.Append("商品:") .Append(cartProduct.ProductName) .Append(" ") .Append("为活动赠品,最多可领取 " + quantity + "件。") .Append("\r\n"); continue; } } } var product = productList.FirstOrDefault(p => p.ID == cartProduct.ProductID); if (product.Status != 2) { messageSB.Append("商品:" + product.Name).Append(" 已下架;").Append("\r\n"); } else if (product.InventoryNumber < 1) { messageSB.Append("商品:" + product.Name).Append(" 库存不足;").Append("\r\n"); } else if (product.InventoryNumber < cartProduct.Quantity) { messageSB.Append("商品:" + product.Name).Append(" 库存剩余").Append(product.InventoryNumber).Append("件;\r\n"); products.Add(this.ConvertToCartProduct(product, product.InventoryNumber)); } else { products.Add(this.ConvertToCartProduct(product, cartProduct.Quantity)); } } errorMessage = messageSB.ToString(); if (!string.IsNullOrWhiteSpace(messageSB.ToString())) //检查不通过 { return false; } //检查通过 return true; }
public ActionResult Item(int id) { ProductSearchResult product = new ProductService().QueryByID(id); if (product == null) { Response.StatusCode = 404; return this.Content(Utils.ReadFile("Error/404.htm")); } Response.Cache.SetOmitVaryStar(true); var result = DataTransfer.Transfer<ProductModel>(product, typeof(ProductSearchResult)); result.Introduce = Utils.AppendLazy(result.Introduce); result.Introduce = Utils.AppendLazy(result.Introduce, "input"); ViewBag.ID = id; //if (this.GetUserID() != 0) //{ // try // { // var userBrowseHistoryService = new UserBrowseHistoryService(); // var userBrowseHistory = new User_BrowseHistory { UserID = this.GetUserID(), ProductID = id }; // userBrowseHistoryService.Add(userBrowseHistory); // } // catch (Exception exception) // { // throw new Exception(exception.Message); // } //} SetSEO(result.Name); return this.View(result); }
/// <summary> /// 搜索建议 /// </summary> /// <param name="search"></param> /// <returns></returns> public JsonResult SearchSuggest(string search) { List<ProductSearchSuggest> list = new ProductService().SearchSuggest(search); if (list == null || list.Count == 0) return null; return this.Json(list, JsonRequestBehavior.AllowGet); }
private List<CartProduct> BuildCartProducts(int[] proIds, int[] quantity) { var products = new List<CartProduct>(); var whereStr = new StringBuilder(); var messageSB = new StringBuilder(); whereStr.Append("ID in ("); for (int i = 0; i < proIds.Length; i++) { if (i < proIds.Length - 1) { whereStr.Append(proIds[i]).Append(","); } else { whereStr.Append(proIds[i]); } } whereStr.Append(")"); var list = new ProductService().Query(ProductType.Rand, 100, whereStr.ToString()); if (list == null) { LogUtils.Log("根据商品ID从数据批量获取商品信息为NULL;商品列表:" + proIds, "BuildCartProducts", Category.Warn); return new List<CartProduct>(); } for (int i = 0; i < proIds.Length; i++) { var product = list.FirstOrDefault(p => p.ID == proIds[i]); if (product != null) { if (quantity[i] <= 0) { messageSB.Append("商品:" + product.Name).Append(" 购买数量不能为0").Append("\r\n"); } else if (product.Status!=2) { messageSB.Append("商品:" + product.Name).Append(" 已下架;").Append("\r\n"); } else if (product.InventoryNumber < 1) { messageSB.Append("商品:" + product.Name).Append(" 库存不足;").Append("\r\n"); } else if (product.InventoryNumber < quantity[i]) { messageSB.Append("商品:" + product.Name).Append(" 库存剩余").Append(product.InventoryNumber).Append("件;\r\n"); products.Add(this.ConvertToCartProduct(product, product.InventoryNumber)); } else { products.Add(this.ConvertToCartProduct(product, quantity[i])); } } } ViewBag.ExtraMessage = messageSB.ToString(); return products; }
public ActionResult Trinket(int count) { var list = new ProductService().Query( ProductType.Rand, count, "Status=2 and InventoryNumber>0 and IsDelete= 0 and ProductCategoryID <> 9"); return this.View("Trinket", list); }
private AjaxResponse Edit(int productId, int quantity, bool isAdd) { AjaxResponse ajaxResponse = null; if (productId < 1 || quantity < 1) { LogUtils.Log( string.Format("加入或者修改购物车时商品/数量 参数错误,错误参数为:productId:{0},quantity:{1}", productId, quantity), "Cart/Edit", Category.Error, this.UserSession.VisitorKey, this.GetUserID(), "Cart/Edit"); return new AjaxResponse(-1, "商品错误~~"); } var userId = this.UserSession.UserID; if (userId < 0) { LogUtils.Log( string.Format("加入或者修改购物车时用户编码错误,错误参数为:userId:{0}", userId), "Cart/Edit", Category.Error, this.UserSession.VisitorKey, this.GetUserID(), "Cart/Edit"); return new AjaxResponse(-2, "用户编码错误!"); } var billProduct = new ProductService().QueryByID(productId); if (billProduct == null || billProduct.Status!=2 || billProduct.InventoryNumber < 1) { this.RemoveCartProducts(billProduct.ID); LogUtils.Log( string.Format("加入或者修改购物车时发现 商品不存在、库存小于1或已下架,商品编码:{0}", productId), "Cart/Edit", Category.Info, this.UserSession.VisitorKey, this.GetUserID(), "Cart/Edit"); return new AjaxResponse(-2,"对不起,此商品库存不足或已下架,不能购买。"); } var cart = this.GetUserCart(); if (cart == null) //用户购物车不存在 { cart = new UserCartModel { UserId = this.UserSession.UserID, VisitorKey = this.UserSession.VisitorKey, ProductItems = new List<CartProduct>() }; } if (cart.ProductItems == null) { cart.ProductItems=new List<CartProduct>(); } var cartProduct = cart.ProductItems.Find(p => p.ProductID == productId); if (cartProduct == null) { ajaxResponse = this.AddCartProducts(quantity, billProduct, ref cart); } else //更新购物车中的商品 { int updateQuantity = 0; if (isAdd) { updateQuantity = quantity + cartProduct.Quantity; } else { updateQuantity = quantity; } ajaxResponse = this.SetUpdateQuantity(billProduct, ref updateQuantity); cartProduct.Quantity = updateQuantity; } cart.BuyList=new List<CartProduct>(); //由于MongoDB不能存储为Null的List对象 this.UpdateUserCart(cart); return ajaxResponse ?? new AjaxResponse(1, "执行成功"); }
public string GetProductBrandSuggestTip(NameValueCollection nv) { string _condition = string.Empty; string _keyword = Utils.UnEscape(nv["w"]); string _brand = Utils.ToString(nv["brand"]); string _price = Utils.ToString(nv["price"]); _brand = string.IsNullOrEmpty(_brand) ? "" : "ProductSearchText Like '" + _brand + "%'"; _price = GetProductPrice(_price); _condition += string.IsNullOrEmpty(_brand) ? " 1=1 " : _brand; _condition += string.IsNullOrEmpty(_price) ? "" : " and " + _price; List<ProductSearchSuggestTip> list = new ProductService().SearchSuggestTip(_keyword, _condition); if (list == null || list.Count == 0) return ""; StringBuilder brand = new StringBuilder(); StringBuilder category = new StringBuilder(); StringBuilder price = new StringBuilder(); StringBuilder parentbrand = new StringBuilder(); string[] pricelist = new string[8]; int brand_count = 0; int parent_brand_count = 0; _keyword = Utils.ToString(nv["w"]); _brand = Utils.ToString(nv["brand"]); _price = Utils.ToString(nv["price"]); string href = "/Home/Search?w=" + _keyword; string item = string.Empty; foreach (var p in list) { switch (p.Type) { case "ProductCategory": item = "<li><a title=\"" + p.Name + "\" href=\"" + (href + "&brand=" + p.Search + "&price=" + _price) + "\">" + p.Name + "(" + Utils.ToString(p.Num) + ")</a></li>"; category.Append(item); break; case "ProductBrand": item = "<li><a title=\"" + p.Name + "\" href=\"" + (href + "&brand=" + p.Search + "&price=" + _price) + "\">" + p.Name + "(" + Utils.ToString(p.Num) + ")</a></li>"; brand_count++; brand.Append(item); break; case "ParentBrand": item = "<li><a title=\"" + p.Name + "\" href=\"" + (href + "&brand=" + p.Search + "&price=" + _price) + "\">" + p.Name + "(" + Utils.ToString(p.Num) + ")</a></li>"; parent_brand_count++; parentbrand.Append(item); break; case "GoujiuPrice": switch (p.Name) { case "6000以上": pricelist[7] = "<li><a title=\"" + p.Name + "\" href=\"" + (href + "&brand=" + _brand + "&price=p7") + "\">" + p.Name + "(" + Utils.ToString(p.Num) + ")</a></li>"; break; case "2000-5999": pricelist[6] = "<li><a title=\"" + p.Name + "\" href=\"" + (href + "&brand=" + _brand + "&price=p6") + "\">" + p.Name + "(" + Utils.ToString(p.Num) + ")</a></li>"; break; case "1000-1999": pricelist[5] = "<li><a title=\"" + p.Name + "\" href=\"" + (href + "&brand=" + _brand + "&price=p5") + "\">" + p.Name + "(" + Utils.ToString(p.Num) + ")</a></li>"; break; case "600-999": pricelist[4] = "<li><a title=\"" + p.Name + "\" href=\"" + (href + "&brand=" + _brand + "&price=p4") + "\">" + p.Name + "(" + Utils.ToString(p.Num) + ")</a></li>"; break; case "200-599": pricelist[3] = "<li><a title=\"" + p.Name + "\" href=\"" + (href + "&brand=" + _brand + "&price=p3") + "\">" + p.Name + "(" + Utils.ToString(p.Num) + ")</a></li>"; break; case "100-199": pricelist[2] = "<li><a title=\"" + p.Name + "\" href=\"" + (href + "&brand=" + _brand + "&price=p2") + "\">" + p.Name + "(" + Utils.ToString(p.Num) + ")</a></li>"; break; case "0-99": pricelist[1] = "<li><a title=\"" + p.Name + "\" href=\"" + (href + "&brand=" + _brand + "&price=p1") + "\">" + p.Name + "(" + Utils.ToString(p.Num) + ")</a></li>"; break; case "其他": pricelist[0] = "<li><a title=\"" + p.Name + "\" href=\"" + (href + "&brand=" + _brand + "&price=p0") + "\">" + p.Name + "(" + Utils.ToString(p.Num) + ")</a></li>"; break; } break; } } for (int i = 0; i < pricelist.Length; i++) { price.Append(pricelist[i]); } StringBuilder sb = new StringBuilder(); sb.Append(GetAttrValues("大类", category.ToString(), 0, href)); sb.Append(GetAttrValues("品牌", parentbrand.ToString(), parent_brand_count, href + "&price=" + _price).Replace("propAttrs", "brandAttr").Replace("j_Prop", "j_Brand")); sb.Append(GetAttrValues("子品牌", brand.ToString(), brand_count, href + "&price=" + _price).Replace("propAttrs", "brandAttr").Replace("j_Prop", "j_Brand")); sb.Append(GetAttrValues("价格", price.ToString(), 0, href + "&brand=" + _brand)); return sb.ToString(); }
/// <summary> /// 查询选中的商品信息 /// </summary> /// <param name="request"> /// 请求 /// </param> /// <param name="checkedProductIds"> /// 选中的商品编码列表 /// </param> /// <returns> /// The <see cref="ActionResult"/>. /// </returns> public ActionResult QueryCartProduct([DataSourceRequest] DataSourceRequest request, string checkedProductIds) { if (string.IsNullOrWhiteSpace(checkedProductIds)) { return Json(null, JsonRequestBehavior.AllowGet); } int rowCount = 0; int pageCount; var productService = new ProductService(); var paging = new Paging("view_Product_Paging", null, "ID", string.Format("[Status] = 2 And [ID] in ({0})", checkedProductIds), request.Page, request.PageSize); var list = productService.Query(paging, out pageCount, out rowCount); if (list == null) { return Json(null, JsonRequestBehavior.AllowGet); } var modelList = new List<OrderProductModel>(); foreach (var item in list) { var model = new OrderProductModel { ProductID = item.ID, ProductName = item.Name, Path = item.Path, Quantity = 1 }; modelList.Add(model); } var result = new DataSourceResult() { Data = modelList, Total = rowCount }; return Json(result, JsonRequestBehavior.AllowGet); }
public string GetProductBrandSuggest(NameValueCollection nv) { string _keyword = Utils.UnEscape(nv["w"]); string _brand = Utils.ToString(nv["brand"]); List<ProductSearchSuggestTip> list = new ProductService().SearchSuggestTip(_keyword, _brand); if (list == null || list.Count == 0) return ""; StringBuilder sb = new StringBuilder(); string search = string.IsNullOrEmpty(_keyword) ? "" : "&w=" + Utils.Escape(_keyword); int count = 0; string item = string.Empty; foreach (var p in list) { item = "<a title=\"" + p.Name + "\" href=\"/Home/Search?brand=" + p.Search + search + "\">" + p.Name + "</a>"; if (p.Type == "ProductBrand") { count++; if (count > 6) break; sb.Append(item); } } return sb.ToString(); }
public string GetGroupListHtml(int count, string condition, NameValueCollection nv) { List<Advertise_Config> list = GetAdvertiseResult(count, condition, AdvertiseSource.Product); if (list == null || list.Count == 0) return ""; List<ProductSearchResult> products = new List<ProductSearchResult>(); foreach (Advertise_Config adv in list) { if (adv.IndexID > 0) { List<ProductSearchResult> product = new ProductService().Query(ProductType.Rand, count, "id =" + adv.IndexID.ToString()); if (product == null || product.Count == 0) continue; product[0].ThumbnailPath = string.IsNullOrEmpty(adv.ImagePath) ? Utils.GetProductImage(product[0].Path, "3") : adv.ImagePath; var cart = new OrderBillServices().QueryCartProduct(product[0].ID); if (cart != null) { product[0].GoujiuPrice = cart.PromotePrice; } products.Add(product[0]); } } string sort = Utils.ToString(nv["sort"], "0"); string desc = Utils.ToString(nv["desc"], "0"); var query = new List<ProductSearchResult>(); switch (sort) { case "0": //销量 if (desc == "1") { query = (from p in products orderby p.SoldOfReality + p.SoldOfVirtual descending select p).ToList<ProductSearchResult>(); } else { query = (from p in products orderby p.SoldOfReality + p.SoldOfVirtual select p).ToList<ProductSearchResult>(); } break; case "1": //价格 if (desc == "1") { query = (from p in products orderby p.GoujiuPrice descending select p).ToList<ProductSearchResult>(); } else { query = (from p in products orderby p.GoujiuPrice select p).ToList<ProductSearchResult>(); } break; case "2": //人气 if (desc == "1") { query = (from p in products orderby p.PageView descending select p).ToList<ProductSearchResult>(); } else { query = (from p in products orderby p.PageView select p).ToList<ProductSearchResult>(); } break; } int i = 1; StringBuilder sb = new StringBuilder(); foreach (ProductSearchResult product in query) { if (i % 3 == 0) { sb.Append(GetGroupItemHtml(product, true)); } else { sb.Append(GetGroupItemHtml(product, false)); } i++; } return sb.ToString(); }
public ActionResult TuanItem(int id) { Response.Cache.SetOmitVaryStar(true); ProductSearchResult result = new ProductService().QueryByID(id); if (result == null) { Response.StatusCode = 404; return this.Content(Utils.ReadFile("Error/404.htm")); } result.Introduce = Utils.AppendLazy(result.Introduce); result.Introduce = Utils.AppendLazy(result.Introduce, "input"); ViewBag.ID = id; var cart = new OrderBillServices().QueryCartProduct(result.ID); if (cart != null) { result.GoujiuPrice = cart.PromotePrice; } result.ThumbnailPath = Utils.GetProductImage(result.Path, "2"); return this.View(result); }
public ActionResult Index() { GetTopMenuID(); var product = new ProductService().QueryByID(3); return View(); }
public JsonResult QueryProductByProductID(string productID) { var productModel = new ProductModel(); if (!string.IsNullOrEmpty(productID)) { this.productService = new ProductService(); var product = this.productService.QueryByID(productID); productModel = DataTransfer.Transfer<ProductModel>(product, typeof(Product)); } return this.Json(productModel, JsonRequestBehavior.AllowGet); }
/// <summary> /// 判断商品是否存在相同的名称或条形码. /// </summary> /// <param name="id"> /// 商品编号. /// </param> /// <param name="name"> /// 商品名称. /// </param> /// <param name="barcode"> /// 商品条形码. /// </param> /// <returns> /// 有重复数据true,没有false. /// </returns> private bool VerifyBarcode(int id, string name, string barcode) { var count = new ProductService().VerifyProduct(id, name, barcode); return count > 0; }
public string GetTuanSilderItemHtml(string condition, int count, AdvertiseSource source) { List<Advertise_Config> list = GetAdvertiseResult(count, condition, source); if (list == null || list.Count == 0) return ""; string result = string.Empty; string id = string.Empty; List<ProductSearchResult> products = new List<ProductSearchResult>(); foreach (Advertise_Config adv in list) { if (adv.IndexID > 0) { switch (source) { case AdvertiseSource.LP: break; case AdvertiseSource.Product: List<ProductSearchResult> product = new ProductService().Query(ProductType.Rand, count, "id =" + adv.IndexID.ToString()); if (product == null || product.Count == 0) continue; product[0].ThumbnailPath = string.IsNullOrEmpty(adv.ImagePath) ? product[0].ThumbnailPath : adv.ImagePath; products.Add(product[0]); break; } } } switch (source) { case AdvertiseSource.LP: result = GetTuanSilderItemHtml(list); break; case AdvertiseSource.Product: result = GetTuanSilderItemHtml(products); break; } return result; }