项目编号:BS-SC-033
前言:
随着互联网技术逐渐的深入到生活,网站形式的展示窗口,已经成为大众迫切的需要。论文中的SSM网上商城购物网站专门是基于B/S模式建立起来的,为用户专门研发的一个易操作界面舒适的网上商城交易网站。
SSM网上商城交易网站使用JSP技术制作网站动态页面,使用IDEA为系统开发工具,使用SSM框架作为系统的后台开发框架,使用BootStrap作为系统的前端开发框加,系统数据库则使用My SQL数据库进行数据存储,开发一个网上商城交易网站,主要研究的功能是分为前台与后台两大部分,前台要实现的是用户注册之后登陆可以浏览商品的功能,还有实现在线商品信息查询功能、购物车加入功能、订单查询功能、用户进入个人中心发布商品功能、在线留言功能和已经出售的订单的查询和管理等功能。后台主要是实现管理员对网站的用户信息管理、商品类别类别管理、网站新闻管理等信息管理的功能,实现一个基于买卖双方的网上商城交易网站。
SSM网上商城交易网站借助于Internet互联网应用技术,实现资源共享,借助网络平台形式的展示窗口,让客户更易接受此网上商城交易网站,并且打破以往购买商品的局限性,缩短用户找商品的时间,具有较好的交互性,从而实现信息化、规范化和系统化。
一,项目简介
该系统主要分为汽车配件商城,以汽车配件为主题的在线商城系统,系统分为前后端,前台功能主要包括用户的登录注册、查询商品、购物车管理、用户信息管理、收藏商品、评价、收货地址管理以及订单管理。后台主要包括商品分类管理、客户信息管理、商品管理、订单管理、评论管理、销售统计以及系统设置。 本系统所采用的技术是SSM框架,整体功能需实现完整,功能界面较为精美。完成了一个较为完整的商城销售系统。
二,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
后台开发技术:SSM
前台开发技术:layui+jquery+echarts
三,系统展示
前端系统用户操作功能
编辑
商品详情
编辑
购物车下单
编辑
个人中心
编辑
己购买商品
编辑
我的收藏
编辑
我的评价
编辑
收货地址管理
编辑
后台管理操作功能
编辑
配件分类
编辑
客户管理
编辑
商品管理
编辑
订单管理
编辑
评论管理
编辑
统计报表
编辑
四,核心代码展示
package com.itlb.controller; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.itlb.service.AccountService; import com.itlb.util.Page; import com.itlb.entity.Account; /** * 客户管理控制器 * @author Administrator * */ @RequestMapping("/admin/account") @Controller public class AccountController { @Autowired private AccountService accountService; /** * 客户列表页 * @param model * @return */ @RequestMapping(value="/list",method=RequestMethod.GET) public ModelAndView list(ModelAndView model){ model.setViewName("admin/account"); return model; } /** * 查询客户列表 * @param name * @param page * @return */ @RequestMapping(value="/list",method=RequestMethod.POST) @ResponseBody public Map<String, Object> list(@RequestParam(value="name",defaultValue="")String name, @RequestParam(value="sex",defaultValue="")Integer sex, @RequestParam(value="status",defaultValue="")Integer status, Page page ){ Map<String, Object> ret = new HashMap<String, Object>(); Map<String, Object> queryMap = new HashMap<String, Object>(); queryMap.put("name", name); if(sex != null){ queryMap.put("sex", sex); } if(status != null){ queryMap.put("status", status); } queryMap.put("offset", page.getOffset()); queryMap.put("pageSize", page.getRows()); ret.put("rows", accountService.findList(queryMap)); ret.put("total", accountService.getTotal(queryMap)); return ret; } /** * 添加客户 * @param account * @return */ @RequestMapping(value="/add",method=RequestMethod.POST) @ResponseBody public Map<String, Object> add(Account account){ Map<String, Object> ret = new HashMap<String, Object>(); if(account == null){ ret.put("type", "error"); ret.put("msg", "请填写正确的客户信息"); return ret; } if(StringUtils.isEmpty(account.getName())){ ret.put("type", "error"); ret.put("msg", "请填写客户名称"); return ret; } if(StringUtils.isEmpty(account.getPassword())){ ret.put("type", "error"); ret.put("msg", "请填写客户登录密码!"); return ret; } if(isExist(account.getName(), 0l)){ ret.put("type", "error"); ret.put("msg", "该用户名已存在!"); return ret; } account.setCreateTime(new Date()); if(accountService.add(account) <= 0){ ret.put("type", "error"); ret.put("msg", "添加失败,请联系管理员!"); return ret; } ret.put("type", "success"); ret.put("msg", "添加成功!"); return ret; } /** * 编辑客户 * @param account * @return */ @RequestMapping(value="/edit",method=RequestMethod.POST) @ResponseBody public Map<String, Object> edit(Account account){ Map<String, Object> ret = new HashMap<String, Object>(); if(account == null){ ret.put("type", "error"); ret.put("msg", "请填写正确的客户信息"); return ret; } if(StringUtils.isEmpty(account.getName())){ ret.put("type", "error"); ret.put("msg", "请填写客户名称"); return ret; } if(StringUtils.isEmpty(account.getPassword())){ ret.put("type", "error"); ret.put("msg", "请填写客户登录密码!"); return ret; } if(isExist(account.getName(), account.getId())){ ret.put("type", "error"); ret.put("msg", "该用户名已存在!"); return ret; } if(accountService.edit(account) <= 0){ ret.put("type", "error"); ret.put("msg", "添加失败,请联系管理员!"); return ret; } ret.put("type", "success"); ret.put("msg", "编辑成功!"); return ret; } /** * 删除客户 * @param id * @return */ @RequestMapping(value="/delete",method=RequestMethod.POST) @ResponseBody public Map<String, Object> delete(Long id){ Map<String, Object> ret = new HashMap<String, Object>(); if(id == null){ ret.put("type", "error"); ret.put("msg", "请选择要删除的客户"); return ret; } try { if(accountService.delete(id) <= 0){ ret.put("type", "error"); ret.put("msg", "删除失败,请联系管理员!"); return ret; } } catch (Exception e) { // TODO: handle exception ret.put("type", "error"); ret.put("msg", "该客户下存在订单信息,不允许删除!"); return ret; } ret.put("type", "success"); ret.put("msg", "删除成功!"); return ret; } /** * 检查用户名是否存在 * @param name * @param id * @return */ private boolean isExist(String name,Long id){ Account account = accountService.findByName(name); if(account == null)return false; if(account.getId().longValue() == id.longValue())return false; return true; } }
package com.itlb.controller; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.itlb.service.AccountService; import com.itlb.service.AddressService; import com.itlb.util.MenuUtil; import com.itlb.entity.Account; import com.itlb.entity.Address; import com.itlb.service.ProductCategoryService; import com.itlb.service.ProductService; /** * 前台收货地址控制器 * @author Administrator * */ @RequestMapping("/address") @Controller public class AddressController { @Autowired private AccountService accountService; @Autowired private ProductCategoryService productCategoryService; @Autowired private ProductService productService; @Autowired private AddressService addressService; /** * 收货地址列表页面 * @param model * @return */ @RequestMapping(value = "/list",method = RequestMethod.GET) public ModelAndView index(ModelAndView model,HttpServletRequest request){ model.addObject("productCategoryList", MenuUtil.getTreeCategory(productCategoryService.findList(new HashMap<String, Object>()))); model.addObject("allCategoryId","shop_hd_menu_all_category"); Account onlineAccount = (Account)request.getSession().getAttribute("account"); Map<String, Object> queryMap = new HashMap<String, Object>(); queryMap.put("userId", onlineAccount.getId()); model.addObject("addressList", addressService.findList(queryMap)); model.addObject("currentUser", "current_"); model.setViewName("home/address/list"); return model; } /** * 添加收货地址 * @param account * @return */ @RequestMapping(value = "/add",method = RequestMethod.POST) @ResponseBody public Map<String, String> add(Address address,HttpServletRequest request){ Map<String, String> ret = new HashMap<String, String>(); Account onlineAccount = (Account)request.getSession().getAttribute("account"); ret.put("type", "error"); if(address == null){ ret.put("msg", "请选择正确的收货信息"); return ret; } if(StringUtils.isEmpty(address.getName())){ ret.put("msg", "请填写收货人!"); return ret; } if(StringUtils.isEmpty(address.getAddress())){ ret.put("msg", "请填写收货地址!"); return ret; } if(StringUtils.isEmpty(address.getPhone())){ ret.put("msg", "请填写手机号!"); return ret; } address.setUserId(onlineAccount.getId()); address.setCreateTime(new Date()); if(addressService.add(address) <= 0){ ret.put("msg", "添加失败,请联系管理员!"); return ret; } ret.put("type", "success"); return ret; } @RequestMapping(value = "/edit",method = RequestMethod.POST) @ResponseBody public Map<String, String> edit(Address address,HttpServletRequest request){ Map<String, String> ret = new HashMap<String, String>(); Account onlineAccount = (Account)request.getSession().getAttribute("account"); ret.put("type", "error"); if(address == null){ ret.put("msg", "请选择正确的收货信息"); return ret; } Address existAddress = addressService.findById(address.getId()); if(existAddress == null){ ret.put("msg", "不存在该地址!"); return ret; } if(StringUtils.isEmpty(address.getName())){ ret.put("msg", "请填写收货人!"); return ret; } if(StringUtils.isEmpty(address.getAddress())){ ret.put("msg", "请填写收货地址!"); return ret; } if(StringUtils.isEmpty(address.getPhone())){ ret.put("msg", "请填写手机号!"); return ret; } address.setUserId(onlineAccount.getId()); if(addressService.edit(address) <= 0){ ret.put("msg", "编辑失败,请联系管理员!"); return ret; } ret.put("type", "success"); return ret; } /** * 删除收货地址 * @param favoriteId * @return */ @RequestMapping(value = "/delete",method = RequestMethod.POST) @ResponseBody public Map<String, String> delete(Long id){ Map<String, String> ret = new HashMap<String, String>(); ret.put("type", "error"); if(id == null){ ret.put("msg", "请选择要删除的地址"); return ret; } if(addressService.delete(id) <= 0){ ret.put("msg", "删除出错,请联系管理员!"); return ret; } ret.put("type", "success"); return ret; } }
package com.itlb.controller; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.itlb.service.AccountService; import com.itlb.service.AddressService; import com.itlb.util.MenuUtil; import com.itlb.entity.Account; import com.itlb.entity.Product; import com.itlb.entity.Cart; import com.itlb.service.ProductCategoryService; import com.itlb.service.ProductService; import com.itlb.service.CartService; /** * 前台购物车控制器 * @author Administrator * */ @RequestMapping("/cart") @Controller public class CartController { @Autowired private AccountService accountService; @Autowired private ProductCategoryService productCategoryService; @Autowired private ProductService productService; @Autowired private CartService cartService; @Autowired private AddressService addressService; /** * 购物车列表页面 * @param model * @return */ @RequestMapping(value = "/list",method = RequestMethod.GET) public ModelAndView list(ModelAndView model,HttpServletRequest request){ model.addObject("productCategoryList", MenuUtil.getTreeCategory(productCategoryService.findList(new HashMap<String, Object>()))); model.addObject("allCategoryId","shop_hd_menu_all_category"); Account onlineAccount = (Account)request.getSession().getAttribute("account"); Map<String, Object> queryMap = new HashMap<String, Object>(); queryMap.put("userId", onlineAccount.getId()); model.addObject("cartList", cartService.findList(queryMap)); model.addObject("currentCart", "current_"); model.setViewName("home/cart/list"); return model; } /** * 提交订单第二步 * @param model * @param request * @return */ @RequestMapping(value = "/list_2",method = RequestMethod.GET) public ModelAndView list2(ModelAndView model,HttpServletRequest request){ model.addObject("productCategoryList", MenuUtil.getTreeCategory(productCategoryService.findList(new HashMap<String, Object>()))); model.addObject("allCategoryId","shop_hd_menu_all_category"); Account onlineAccount = (Account)request.getSession().getAttribute("account"); Map<String, Object> queryMap = new HashMap<String, Object>(); queryMap.put("userId", onlineAccount.getId()); model.addObject("cartList", cartService.findList(queryMap)); model.addObject("currentCart", "current_"); model.addObject("addressList", addressService.findList(queryMap)); model.setViewName("home/cart/list_2"); return model; } /** * 添加购物车 * @param account * @return */ @RequestMapping(value = "/add",method = RequestMethod.POST) @ResponseBody public Map<String, String> add(Cart cart,HttpServletRequest request){ Map<String, String> ret = new HashMap<String, String>(); Account onlineAccount = (Account)request.getSession().getAttribute("account"); ret.put("type", "error"); if(cart == null){ ret.put("msg", "请选择正确的商品信息"); return ret; } if(cart.getProductId() == null){ ret.put("msg", "请选择要添加的商品!"); return ret; } if(cart.getNum() == 0){ ret.put("msg", "请填写商品数量"); return ret; } Product product = productService.findById(cart.getProductId()); if(product == null){ ret.put("msg", "商品不存在"); return ret; } //根据商品和用户去查询该商品是否已被添加到购物车 Map<String, Long> queryMap = new HashMap<String, Long>(); queryMap.put("userId", onlineAccount.getId()); queryMap.put("productId", product.getId()); Cart existCart = cartService.findByIds(queryMap); if(existCart != null){ //表示这个商品已经被添加到购物车,只需更新数量和金额即可 existCart.setNum(existCart.getNum() + cart.getNum()); existCart.setMoney(existCart.getNum() * existCart.getPrice()); if(cartService.edit(existCart) <= 0){ ret.put("msg", "商品已被添加到购物车,但更新数量出错!"); return ret; } ret.put("type", "success"); return ret; } cart.setImageUrl(product.getImageUrl()); cart.setMoney(product.getPrice() * cart.getNum()); cart.setName(product.getName()); cart.setPrice(product.getPrice()); cart.setUserId(onlineAccount.getId()); cart.setCreateTime(new Date()); if(cartService.add(cart) <= 0){ ret.put("msg", "添加失败,请联系管理员!"); return ret; } ret.put("type", "success"); return ret; } /** * 更新购物车商品数量 * @param cartId * @param num * @return */ @RequestMapping(value = "/update_num",method = RequestMethod.POST) @ResponseBody public Map<String, String> updateNum(Long cartId,Integer num){ Map<String, String> ret = new HashMap<String, String>(); ret.put("type", "error"); Cart cart = cartService.findById(cartId); if(cart == null){ ret.put("msg", "请选择正确的商品信息"); return ret; } if(num == null){ ret.put("msg", "请填写商品数量"); return ret; } Product product = productService.findById(cart.getProductId()); if(product == null){ ret.put("msg", "购物车信息有误!"); return ret; } if(cart.getNum() + num.intValue() > product.getStock()){ ret.put("msg", "商品数量不能超过库存量!"); return ret; } cart.setNum(cart.getNum() + num); cart.setMoney(cart.getNum() * cart.getPrice()); if(cartService.edit(cart) <= 0){ ret.put("msg", "商品已被添加到购物车,但更新数量出错!"); return ret; } ret.put("type", "success"); return ret; } /** * 删除购物车商品 * @param cartId * @return */ @RequestMapping(value = "/delete",method = RequestMethod.POST) @ResponseBody public Map<String, String> delete(Long cartId){ Map<String, String> ret = new HashMap<String, String>(); ret.put("type", "error"); if(cartId == null){ ret.put("msg", "请选择要删除的商品"); return ret; } if(cartService.delete(cartId) <= 0){ ret.put("msg", "删除出错,请联系管理员!"); return ret; } ret.put("type", "success"); return ret; } }
五,项目总结
在当前社会上,许多的各种类型的电子商务类网站纷纷建立,可以很大程度上的解决人们信息资源的闭塞以及地域上的限制[1]。网上交易成为了当代人们业余生活的一大热门,伴随着用户的购买能力的提高和新型互联网技术的应用。
目前大部分的高校已经建立自己的校园网,而部分院校也完成了校园网络工程的建设,校园网的建成为学校的学生、老师、后勤部门等学校各方面人士提供了非常大的便利,例如学习、工作和生活上的交流便利[2]。随着计算机网络技术、通信技术和数据库技术的迅速发展,基于网络技术的电子商务也发展的非常迅速。而实现大学生之间的网上交易的主要平台是校园论坛还有微博,校园论坛虽然用户非常多,但是提供的功能有限,用户不能详细的了解商品的有关信息,更不能快速的查询所需商品,无法让学生实际交易的需求得到最大的满足。