Java|Java 实战项目锤炼之网上商城系统的实现流程

一、项目简述(+需求文档+PPT) 功能: 主页显示热销商品;所有商品展示,可进行商品搜索;点 击商品进入商品详情页,显示库存,具有立即购买和加入 购物车功能,可增减购买商品数量亦可手动输入(同时验证 库存),热销商品展示。立即购买进入确认订单页面,可选 择已经添加的地址,亦可新增地址。(同时验证库存),可 选择购买哪些商品,可删除不需要的商品。点击结算进入 确认订单页面,确认后提交订单,订单重复提交给予响 应,库存不足或商品下架给予响应。后台管理:(修改密码 等),商品管理(商品批量添加、上下架、库存维护等), 订单管理。
二、项目运行 【Java|Java 实战项目锤炼之网上商城系统的实现流程】环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe ( IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP + C3P0+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等。
Java|Java 实战项目锤炼之网上商城系统的实现流程
文章图片

Java|Java 实战项目锤炼之网上商城系统的实现流程
文章图片

Java|Java 实战项目锤炼之网上商城系统的实现流程
文章图片

Java|Java 实战项目锤炼之网上商城系统的实现流程
文章图片

后台管理-主页操作代码:

/** * 后台管理-主页 */@Controllerpublic class AdminHomeController extends BaseController {@Resource(name = "adminService")private AdminService adminService; @Resource(name = "productOrderService")private ProductOrderService productOrderService; @Resource(name = "productService")private ProductService productService; @Resource(name = "userService")private UserService userService; /*** 转到后台管理-主页* @param session session对象* @param map 前台传入的Map* @return 响应数据* @throws ParseException 转换异常*/@RequestMapping(value = "https://www.it610.com/article/admin", method = RequestMethod.GET)public String goToPage(HttpSession session, Map map) throws ParseException {logger.info("获取管理员信息"); Object adminId = checkAdmin(session); if (adminId == null) {return "redirect:/admin/login"; }Admin admin = adminService.get(null, Integer.parseInt(adminId.toString())); map.put("admin", admin); logger.info("获取统计信息"); //产品总数Integer productTotal = productService.getTotal(null, new Byte[]{0, 2}); //用户总数Integer userTotal = userService.getTotal(null); //订单总数Integer orderTotal = productOrderService.getTotal(null, new Byte[]{3}); logger.info("获取图表信息"); map.put("jsonObject", getChartData(null,null,7)); map.put("productTotal", productTotal); map.put("userTotal", userTotal); map.put("orderTotal", orderTotal); logger.info("转到后台管理-主页"); return "admin/homePage"; } /*** 转到后台管理-主页(ajax方式)* @param session session对象* @param map 前台传入的Map* @return 响应数据* @throws ParseException 转换异常*/@RequestMapping(value = "https://www.it610.com/article/admin/home", method = RequestMethod.GET)public String goToPageByAjax(HttpSession session, Map map) throws ParseException {logger.info("获取管理员信息"); Object adminId = checkAdmin(session); if (adminId == null) {return "admin/include/loginMessage"; }Admin admin = adminService.get(null, Integer.parseInt(adminId.toString())); map.put("admin", admin); logger.info("获取统计信息"); Integer productTotal = productService.getTotal(null, new Byte[]{0, 2}); Integer userTotal = userService.getTotal(null); Integer orderTotal = productOrderService.getTotal(null, new Byte[]{3}); logger.info("获取图表信息"); map.put("jsonObject", getChartData(null, null,7)); logger.info("获取图表信息"); map.put("jsonObject", getChartData(null,null,7)); map.put("productTotal", productTotal); map.put("userTotal", userTotal); map.put("orderTotal", orderTotal); logger.info("转到后台管理-主页-ajax方式"); return "admin/homeManagePage"; } /*** 按日期查询图表数据(ajax方式)* @param beginDate 开始日期* @param endDate 结束日期* @return 响应数据* @throws ParseException 转换异常*/@ResponseBody@RequestMapping(value = "https://www.it610.com/article/admin/home/charts", method = RequestMethod.GET, produces = "application/json; charset=utf-8")public String getChartDataByDate(@RequestParam(required = false) String beginDate, @RequestParam(required = false) String endDate) throws ParseException {if (beginDate != null && endDate != null) {//转换日期格式SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); return getChartData(simpleDateFormat.parse(beginDate), simpleDateFormat.parse(endDate),7).toJSONString(); } else {return getChartData(null, null,7).toJSONString(); }} /*** 按日期获取图表数据* @param beginDate 开始日期* @param endDate 结束日期* @param days 天数* @return 图表数据的JSON对象* @throws ParseException 转换异常*/private JSONObject getChartData(Date beginDate,Date endDate,int days) throws ParseException {JSONObject jsonObject = new JSONObject(); SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd", Locale.UK); SimpleDateFormat time2 = new SimpleDateFormat("MM/dd", Locale.UK); SimpleDateFormat timeSpecial = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.UK); //如果没有指定开始和结束日期if (beginDate == null || endDate == null) {//指定一周前的日期为开始日期Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, 1-days); beginDate = time.parse(time.format(cal.getTime())); //指定当前日期为结束日期cal = Calendar.getInstance(); endDate = cal.getTime(); } else {beginDate = time.parse(time.format(beginDate)); endDate = timeSpecial.parse(time.format(endDate) + " 23:59:59"); }logger.info("根据订单状态分类"); //未付款订单数统计数组int[] orderUnpaidArray = new int[7]; //未发货订单数统计叔祖int[] orderNotShippedArray = new int[7]; //未确认订单数统计数组int[] orderUnconfirmedArray = new int[7]; //交易成功订单数统计数组int[] orderSuccessArray = new int[7]; //总交易订单数统计数组int[] orderTotalArray = new int[7]; logger.info("从数据库中获取统计的订单集合数据"); List orderGroupList = productOrderService.getTotalByDate(beginDate, endDate); //初始化日期数组JSONArray dateStr = new JSONArray(days); //按指定的天数进行循环for (int i = 0; i < days; i++) {//格式化日期串(MM/dd)并放入日期数组中Calendar cal = Calendar.getInstance(); cal.setTime(beginDate); cal.add(Calendar.DATE, i); String formatDate = time2.format(cal.getTime()); dateStr.add(formatDate); //该天的订单总数int orderCount = 0; //循环订单集合数据的结果集for(int j = 0; j < orderGroupList.size(); j++){OrderGroup orderGroup = orderGroupList.get(j); //如果该订单日期与当前日期一致if(orderGroup.getProductOrder_pay_date().equals(formatDate)){//从结果集中移除数据orderGroupList.remove(j); //根据订单状态将统计结果存入对应的订单状态数组中switch (orderGroup.getProductOrder_status()) {case 0://未付款订单orderUnpaidArray[i] = orderGroup.getProductOrder_count(); break; case 1://未发货订单orderNotShippedArray[i] = orderGroup.getProductOrder_count(); break; case 2://未确认订单orderUnconfirmedArray[i] = orderGroup.getProductOrder_count(); break; case 3://交易成功订单orderSuccessArray[i] = orderGroup.getProductOrder_count(); break; }//累加当前日期的订单总数orderCount += orderGroup.getProductOrder_count(); }}//将统计的订单总数存入总交易订单数统计数组orderTotalArray[i] = orderCount; }logger.info("返回结果集map"); jsonObject.put("orderTotalArray", orderTotalArray); jsonObject.put("orderUnpaidArray", orderUnpaidArray); jsonObject.put("orderNotShippedArray", orderNotShippedArray); jsonObject.put("orderUnconfirmedArray", orderUnconfirmedArray); jsonObject.put("orderSuccessArray", orderSuccessArray); jsonObject.put("dateStr",dateStr); return jsonObject; }}

前台主页代码:
/** * 主页 */@Controllerpublic class ForeHomeController extends BaseController {@Resource(name = "userService")private UserService userService; @Resource(name="categoryService")private CategoryService categoryService; @Resource(name="productService")private ProductService productService; @Resource(name="productImageService")private ProductImageService productImageService; //转到前台天猫-主页@RequestMapping(value = "https://www.it610.com/", method = RequestMethod.GET)public String goToPage(HttpSession session, Map map) {logger.info("检查用户是否登录"); Object userId = checkUser(session); if (userId != null) {logger.info("获取用户信息"); User user = userService.get(Integer.parseInt(userId.toString())); map.put("user", user); }logger.info("获取产品分类列表"); List categoryList = categoryService.getList(null,null); logger.info("获取每个分类下的产品列表"); for(Category category : categoryList){List productList = productService.getList(new Product().setProduct_category(category),new Byte[]{0, 2},new OrderUtil("product_sale_count", true), new PageUtil(0, 8)); if (productList != null) {for (Product product : productList) {Integer product_id = product.getProduct_id(); product.setSingleProductImageList(productImageService.getList(product_id, (byte) 0, new PageUtil(0, 1))); }}category.setProductList(productList); }map.put("categoryList",categoryList); logger.info("获取促销产品列表"); List specialProductList = productService.getList(null, new Byte[]{2}, null, new PageUtil(0, 6)); map.put("specialProductList", specialProductList); logger.info("转到前台主页"); return "fore/homePage"; } //转到前台天猫-错误页@RequestMapping(value = "https://www.it610.com/article/error", method = RequestMethod.GET)public String goToErrorPage() {return "fore/errorPage"; } //获取主页分类下产品信息-ajax@ResponseBody@RequestMapping(value = "https://www.it610.com/article/product/nav/{category_id}", method = RequestMethod.GET, produces = "application/json; charset=utf-8")public String getProductByNav(@PathVariable("category_id") Integer category_id) {JSONObject object = new JSONObject(); if (category_id == null) {object.put("success", false); return object.toJSONString(); }logger.info("获取分类ID为{}的产品标题数据", category_id); List productList = productService.getTitle(new Product().setProduct_category(new Category().setCategory_id(category_id)),new PageUtil(0, 40)); List complexProductList = new ArrayList<>(8); List products = new ArrayList<>(5); for (int i = 0; i < productList.size(); i++) {//如果临时集合中产品数达到5个,加入到产品二维集合中,并重新实例化临时集合if (i % 5 == 0) {complexProductList.add(products); products = new ArrayList<>(5); }products.add(productList.get(i)); }complexProductList.add(products); Category category = new Category().setCategory_id(category_id).setComplexProductList(complexProductList); object.put("success", true); object.put("category", category); return object.toJSONString(); }}

以上就是Java 实战项目锤炼之网上商城系统的实现流程的详细内容,更多关于Java 网上商城系统的资料请关注脚本之家其它相关文章!

    推荐阅读