网站开发语言总结有哪些,网络营销课程是什么,苏州园区,oa管理系统免费版经过一段时间的准备#xff0c;新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始#xff0c;在之前的文章中#xff0c;讲解了商城系统的整体功能设计#xff0c;页面布局设计#xff0c;环境搭建#xff0c;系统配置#xff0c;及首页【商品类型#xff0c;ba…经过一段时间的准备新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始在之前的文章中讲解了商城系统的整体功能设计页面布局设计环境搭建系统配置及首页【商品类型banner条友情链接降价促销新品爆款】商品列表页面商品详情等功能的开发今天继续讲解购物车功能开发仅供学习分享使用如有不足之处还请指正。 购物车功能说明 在首页或者商品列表页面如果用户对商品感兴趣可以点击快捷方式将商品加入购物车或者在商品详情页面选择对应的商品参数后将商品加入购物车。商品加入购物车的渠道是有多种而用户也可以对已经加入购物车的商品进行购买或者删除购物车。每一个用户都有各自的购物车相互之间独立所以购物车功能需要用户先进行登录才能查看。 购物车功能设计 根据购物车功能说明购物车主要显示已添加的商品列表并可以删除或者选择商品进行购买设计页面如下所示 购物车功能开发 购物车主要展示用户选择的商品信息。 1. 数据表创建 购物车表EB_Cart主要用于存储商品信息用户信息数量及个人喜好等内容如下所示 购物车表创建语句如下所示
CREATE TABLE [dbo].[EB_Cart]([Id] [bigint] IDENTITY(1,1) NOT NULL,[ProductId] [bigint] NULL,[CustomerId] [bigint] NULL,[Quantity] [int] NULL,[Remark] [varchar](200) NULL,[CreateTime] [datetime] NULL,[CreateUser] [varchar](50) NULL,[LastEditTime] [datetime] NULL,[LastEditUser] [varchar](50) NULL
) ON [PRIMARY] 2. 购物车实体创建 购物车实体和数据表结构保持一致方便进行映射。如下所示
using SqlSugar;namespace EasyBuyShop.Models
{/// summary/// 购物车/// /summary[SugarTable(EB_Cart)]public class Cart:EntityModel{public long ProductId { get; set; }public long CustomerId { get; set; }/// summary/// 数量/// /summarypublic int Quantity { get; set; }public string Remark { get; set; }}
} 3. 数据处理层DAL 购物车列表主要包括添加购物车删除查询等功能DAL层代码如下所示
using EasyBuyShop.Models;
using EasyBuyShop.Utils;namespace EasyBuyShop.DAL
{public class CartDal:BaseDal{/// summary/// 获取购物车列表/// /summary/// param nameuserId/param/// returns/returnspublic ListCart GetCartListByUserId(long userId){try{using (var db this.GetDb(BaseDal.ConnStr)){return db.QueryableCart().Where(r r.CustomerId userId).ToList();}}catch (Exception ex){LogHelper.Fatal(ex.Message);return new ListCart();}}public int DeleteById(long id){try{using (var db this.GetDb(BaseDal.ConnStr)){int cnt db.DeleteableCart(r r.Id id).ExecuteCommand();return cnt;}}catch (Exception ex){LogHelper.Fatal(ex.Message);return -1;}}public Cart GetCart(long id){try{using (var db this.GetDb(BaseDal.ConnStr)){return db.QueryableCart().First(r r.Id id);}}catch (Exception ex){LogHelper.Fatal(ex.Message);return null;}}}
} 4. 控制器获取 控制器方法主要包括添加购物车【1.首页或商品列表快捷添加购物车 2.商品详情页面添加购物车】查询购物车 删除购物车代码如下所示
using EasyBuyShop.DAL;
using EasyBuyShop.Models;
using Microsoft.AspNetCore.Mvc;namespace EasyBuyShop.Controllers
{/// summary/// 购物车控制器/// /summarypublic class CartController : Controller{/// summary/// 购物车列表页面/// /summary/// returns/returnspublic IActionResult Index(){var userId HttpContext.Session.GetInt32(userid);if (userId null){return Redirect(/Auth/login);}var cartDal new CartDal();var productDal new ProductDal();var cartList cartDal.GetCartListByUserId((long)userId);var products productDal.GetProductListByIds(cartList.Select(r r.ProductId).ToList());ViewData[CartList] cartList;ViewData[ProductList] products;var username HttpContext.Session.GetString(username);var realName HttpContext.Session.GetString(realname);ViewData[Username] username;ViewData[RealName] realName;return View();}/// summary/// 首页或商品列表快捷加入购物车/// /summary/// param nameproductId/param/// returns/returns[HttpPost]public IActionResult Add(int productId){Msg msg new Msg();var userId HttpContext.Session.GetInt32(userid);var userName HttpContext.Session.GetString(username);if (userId null){msg.code -1;msg.message 尚未登录;return Json(msg);}var productDal new ProductDal();var product productDal.GetProduct(productId);if (product ! null){var cartDal new CartDal();var cartnew Cart();cart.ProductId productId;cart.CustomerId userId.Value;cart.Quantity 1;cart.Remark string.Empty;cart.CreateUser userName;cart.CreateTimeDateTime.Now;cart.LastEditUser userName;cart.LastEditTime DateTime.Now;int id cartDal.InsertTCart(cart);if(id 0){msg.code 0;msg.message 成功;return Json(msg);}else{msg.code -1;msg.message 加入购物车失败;return Json(msg);}}else{msg.code -1;msg.message 商品不存在;return Json(msg);}}/// summary/// 商品详情页面加入购物车/// /summary/// returns/returns[HttpPost]public IActionResult AddWithForm(){Msg msg new Msg();var userId HttpContext.Session.GetInt32(userid);var userName HttpContext.Session.GetString(username);if (userId null){msg.code -1;msg.message 尚未登录;return Json(msg);}var productId long.Parse( Request.Form[productId]);var quantity int.Parse(Request.Form[quantity]);var color Request.Form[color];var size Request.Form[size];var remark $颜色{color},大小{size};var productDal new ProductDal();var product productDal.GetProduct(productId);if (product ! null){var cartDal new CartDal();var cart new Cart();cart.ProductId productId;cart.CustomerId userId.Value;cart.Quantity quantity;cart.Remark remark;cart.CreateUser userName;cart.CreateTime DateTime.Now;cart.LastEditUser userName;cart.LastEditTime DateTime.Now;int id cartDal.InsertTCart(cart);if (id 0){msg.code 0;msg.message 成功;}else{msg.code -1;msg.message 加入购物车失败;}}else{msg.code -1;msg.message 商品不存在;}return Redirect(/Cart/Index);}/// summary/// 移除购物车/// /summary/// param nameId/param/// returns/returnspublic ActionResult Delete(int Id){var cartDal new CartDal();if(cartDal.DeleteById(Id) 0){//成功}else{//删除失败}return View();}}
} 5. 视图层展示 在Views/Cart/Index.cshtml购物车视图中接收控制器传递的参数。如下所示
{var totalPrice 0.0M;
}
div classcontent-wrapdiv classcontent!-- shopping-cart-area start --div classcart-area ptb-100form action/Purchase/BuyWithCart methodpostdiv classcontainerdiv classrowdiv classcol-lg-12 col-md-12 col-sm-12 col-xs-12div classtable-content table-responsivetabletheadtrth classproduct-check选择/thth classproduct-price图片/thth classproduct-name产品名称/thth classproduct-price价格/thth classproduct-price优惠价格/thth classproduct-quantity数量/thth classproduct-subtotal总计/thth classproduct-name删除/th/tr/theadtbody{var cartList ViewData[CartList] as ListCart;var productList ViewData[ProductList] as ListProduct;if (cartList.Count 0){foreach (var cart in cartList){var product productList.FirstOrDefault(r r.Id cart.ProductId);totalPrice totalPrice (product.PreferentialPrice * cart.Quantity);trtd classproduct-checkinput typecheckbox value(cart.Id) namechkCart stylewidth:25px;height:25px; checkedchecked onchangejavascript:checkCartProduct(this); //tdtd classproduct-thumbnaila href/Product/Detail/(product.Id)img src(product.ImageUrl) alt width100 height100/a/tdtd classproduct-namea href/Product/Detail/(product.Id)product.Name/abr /span stylefont-size:12px; color:lightgray备注(string.IsNullOrEmpty(cart.Remark) ? 无 : cart.Remark)/span/tdtd classproduct-pricespan classamount(Math.Round(product.Price, 2))/span/tdtd classproduct-pricespan classamount(Math.Round(product.PreferentialPrice, 2))/span/tdtd classproduct-quantityinput value(cart.Quantity) typenumber/tdtd classproduct-subtotal(Math.Round(product.PreferentialPrice * cart.Quantity, 2))/tdtd classproduct-removea href/Cart/Delete/(cart.Id)i classfa fa-timesfont stylefont-size:14px;删除/font/i/a/td/tr}}else{trtd colspan7购物车暂无商品/td/tr}}/tbody/table/div/div/divdiv classrow tax-coupon-divdiv classcol-md-7 col-sm-12 col-xs-12/divdiv classcol-md-5 col-sm-12 col-xs-12div classcart-totalulli classcart-black总计spantotalPrice/span/li/uldiv classcart-total-btndiv classcart-total-btn1 f-left/divdiv classcart-total-btn2 f-rightinput typesubmit value购买 classgo-btn onclickjavascript:return checkSubmit(); stylebackground-color: rgb(255, 80, 0);border-width:0px;margin-top:5px; //div/div/div/div/div/div/form/div!-- shopping-cart-area end --/div!-- content end --
/div
!-- content-wrap end --
script src~/js/shop.js/script 购物车页面展示 运行程序点击登录在登录成功后在右上角个人名称点击下拉菜单选择购物车然后打开购物车页面如下所示 以上就是ASP.NET Core MVC开发实战之商城系统第五部分内容后续将继续介绍其他模块敬请期待。