day80_淘淘商城项目_13_订单系统搭建 + 展示订单确认页面 + 用户身份认证 + 实现提交订单功能_匠心笔记

文章目录 1、订单系统搭建 1.1、功能分析 1.2、工程搭建 2、展示订单确认页面 2.1、导入静态页面 2.2、功能分析 2.3、Dao层、Service层(无) 2.4、发布服务 2.5、引用服务 2.6、Controller 2.7、访问测试 3、用户身份认证 3.1、功能分析 3.2、拦截器实现 3.3、配置拦截器 3.4、访问测试 3.5、实现拦截器后存在的问题 4、实现提交订单功能 4.1、数据库表分析 4.2、前端如何传递三张表的数据 4.3、功能分析 4.4、Dao层 4.5、Service层 4.6、发布服务 4.7、引用服务 4.8、Controller 4.9、访问测试 5、参考文章 课程计划 1、订单系统搭建 2、订单确认页面展示 3、用户认证 4、创建订单 5、创建订单成功后显示订单号 回到顶部 1、订单系统搭建 1.1、功能分析 1、在购物车页面点击【去结算】按钮跳转到订单确认页面。   a) 展示商品列表   b) 配送地址列表   c) 选择支付方式 2、展示订单确认页面之前,应该确认用户身份。   a) 使用拦截器实现。   b) Cookie中取token。   c) 取不到token跳转到登录页面。   d) 取到token,根据token查询用户信息。   e) 如果没有用户信息,登录过期跳转到登录页面。   f) 取到用户信息,放行。 3、提交订单   a) 生成订单。   b) 展示订单提交成功页面。 1.2、工程搭建 1.2.1、创建订单服务层工程   taotao-order     |--taotao-order-interface     |--taotao-order-service taotao-order pom.xml 4.0.0 com.taotao taotao-parent 0.0.1-SNAPSHOT taotao-order pom taotao-order-interface taotao-order-service com.taotao taotao-common 0.0.1-SNAPSHOT org.apache.tomcat.maven tomcat7-maven-plugin 8091 / taotao-order-interface pom.xml 4.0.0 com.taotao taotao-order 0.0.1-SNAPSHOT taotao-order-interface com.taotao taotao-manager-pojo 0.0.1-SNAPSHOT taotao-order-service pom.xml 4.0.0 com.taotao taotao-order 0.0.1-SNAPSHOT taotao-order-service war com.taotao taotao-manager-dao 0.0.1-SNAPSHOT com.taotao taotao-order-interface 0.0.1-SNAPSHOT org.springframework spring-context org.springframework spring-beans org.springframework spring-webmvc org.springframework spring-jdbc org.springframework spring-aspects org.springframework spring-jms org.springframework spring-context-support com.alibaba dubbo spring org.springframework netty org.jboss.netty org.apache.zookeeper zookeeper com.github.sgroschupf zkclient org.apache.maven.plugins maven-surefire-plugin true 可以参考taotao-manager整合。 web.xml taotao-order-service index.jsp contextConfigLocation classpath:spring/applicationContext*.xml org.springframework.web.context.ContextLoaderListener 1.2.2、创建订单表现层工程 表现层工程处理订单的确认页面和订单提交后产生的订单号。 taotao-order-web打包方式war。 pom.xml 4.0.0 com.taotao taotao-parent 0.0.1-SNAPSHOT taotao-order-web war com.taotao taotao-common 0.0.1-SNAPSHOT com.taotao taotao-order-interface 0.0.1-SNAPSHOT org.springframework spring-context org.springframework spring-beans org.springframework spring-webmvc org.springframework spring-jdbc org.springframework spring-aspects org.springframework spring-jms org.springframework spring-context-support jstl jstl javax.servlet servlet-api provided javax.servlet jsp-api provided com.alibaba dubbo spring org.springframework netty org.jboss.netty org.apache.zookeeper zookeeper com.github.sgroschupf zkclient junit junit test org.apache.tomcat.maven tomcat7-maven-plugin 8092 / 可以参考taotao-portal-web整合。 回到顶部 2、展示订单确认页面 2.1、导入静态页面 修改taotao-order-web工程中的src/main/resources/spring/下的springmvc.xml文件,添加配置资源映射标签: 2.2、功能分析 在购物车表现层工程中的,有我们订单确认页面的URL: /taotao-cart-web/src/main/webapp/WEB-INF/jsp/cart.jsp 由于订单确认页面展示在taotao-order-web系统,所以修改跳转地址为:http://localhost:8092/order/order-cart.html 在购物车页面点击“去结算”按钮跳转到订单确认页面。 我们打开订单确认页面order-cart.jsp,看看需要准备什么数据。我们发现只需要准备购物车列表List,就可以了,但是还需要将${cart.images[0]}改为${cart.image} order-cart.jsp的第191行还需要修改: 不然会报错! 请求分析: 请求的url:/order/order-cart 参数:没有参数。 返回值:逻辑视图String(order-cart.jsp),展示订单确认页面。 业务逻辑:   1、首先用户先登录,从cookie中获取token,根据token调用SSO服务获取登录的用户信息。   2、从cookie中获取购物车的商品的列表数据。   3、从redis中获取该用户的购物车的商品列表数据。   4、将这两者的数据进行合并,展示商品数据。并清除cookie中的数据。   5、展示配送地址列表,需要根据用户id从数据库中查询收货地址列表,这里暂时使用静态数据。   6、展示支付方式,也需要从数据库中查询支付的方式列表,这里暂时使用静态数据。 2.3、Dao层、Service层(无)   需要根据用户id查询收货地址列表。   需要查询支付方式。   但是由于这两个都使用的静态数据,所以服务层不需要编写。   静态数据,做静态页面处理。   业务逻辑:     直接调用其他的服务层的服务即可。(需要添加对应的依赖,并引用服务。) 2.4、发布服务   由于表现层需要调服务层的SSO服务和购物车服务,所以需要在taotao-sso-service和taotao-cart-service工程中发布服务。 2.5、引用服务 在taotao-order-web工程中的springmvc.xml文件中引用服务: 2.6、Controller 参考功能分析的业务逻辑。 请求的url:/order/order-cart 参数:无 @Autowired private UserLoginService userLoginService; @Autowired private CartService cartService; @Value("COOKIE_TOKEN_KEY") private String COOKIE_TOKEN_KEY; @Value("COOKIE_CART_KEY") private String COOKIE_CART_KEY; @RequestMapping("/order/order-cart") public String showOrderCart(HttpServletRequest request, HttpServletResponse response) { // 1、从cookie中获取token String token = CookieUtils.getCookieValue(request, COOKIE_TOKEN_KEY); // 2、根据token调用SSO服务获取登录的用户信息,查看用户是否已经过期 TbUser tbUser = null; if (StringUtils.isNotBlank(token)) { TaotaoResult result = userLoginService.getUserByToken(token); if (result.getStatus() == 200) { tbUser = (TbUser) result.getData(); } } // 3、用户必须登录才展示订单页面 // 4、展示用户的配送地址列表,根据用户id从数据库中查询收货地址列表,这里暂时使用静态数据 // 5、展示支付方式列表,从数据库中查询支付的方式列表,这里暂时使用静态数据 // 6、从cookie中获取购物车的商品列表 List cartList2 = getCartListFromCookie(request); // 7、调用购物车服务从redis数据库中获取购物车的商品列表 List cartList1 = cartService.queryCartListByUserId(tbUser == null ? -1 : tbUser.getId()); // 8、合并数据到redis中 for (TbItem tbItem2 : ca
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信