美文网首页开发设计电商
如何做一个电商系统(七)

如何做一个电商系统(七)

作者: 唯死撑尔 | 来源:发表于2019-08-01 18:52 被阅读173次

    1.订单系统

    (1)完成订单系统。

    (2)实现订单提交功能。

    1.1.系统架构

    说明:将订单服务抽取出来,创建单独的订单系统。

    好处:提供代码的复用性,增强系统的拓展能力。

    image.png image.png

    1.2.订单系统表结构

    image.png

    表结构说明:
    (1)订单表跟用户表示多对一的关系。

    (2)订单表跟收件人表示一对一的关系。

    (3)订单表跟订单商品表示一对多的关系。

    (4)订单商品表跟商品表示一对一的关系。

    1.3.实现思路

    (1)搭建订单系统

    (2)在订单系统中发布保存订单接口

    (3)在门户系统中调用该接口

    2.保存订单功能实现

    2.1.第一部分:搭建订单系统

    步骤说明:(1)创建一个Maven项目。

    (2)导入相关依赖

    (3)实现框架整合

    2.1.1.第一步:创建项目

    --说明:使用Maven Module创建,war模型

    image.png

    2.1.2.第二步:导入pom依赖

    --修改pom.xml文件,添加如下依赖

    <project xmlns="http://maven.apache.org/POM/4.0.0"
    
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    
        http://maven.apache.org/xsd/maven-4.0.0.xsd">     
    
      <modelVersion>4.0.0</modelVersion>
    
      <parent>
    
        <groupId>cn.gzsxt.ego</groupId>
    
        <artifactId>ego-project</artifactId>
    
        <version>1.0</version>
    
      </parent>
    
      <artifactId>ego-order</artifactId>
    
      <packaging>war</packaging>
    
        <dependencies>
    
           <!-- 添加ego-base公共系统依赖 -->
    
           <dependency>
    
               <groupId>cn.gzsxt.ego</groupId>
    
               <artifactId>ego-base</artifactId>
    
               <version>1.0</version>
    
           </dependency>
    
           <!-- spring核心包 -->
    
           <dependency>
    
               <groupId>org.springframework</groupId>
    
               <artifactId>spring-context</artifactId>
    
           </dependency>
    
           <!-- 导入spring-jdbc包+事物 -->
    
           <dependency>
    
               <groupId>org.springframework</groupId>
    
               <artifactId>spring-jdbc</artifactId>
    
           </dependency>
    
           <!-- 导入切面依赖包 -->
    
           <dependency>
    
               <groupId>org.springframework</groupId>
    
               <artifactId>spring-aspects</artifactId>
    
           </dependency>
    
           <!-- 导入springmvc依赖包 -->
    
           <dependency>
    
               <groupId>org.springframework</groupId>
    
               <artifactId>spring-webmvc</artifactId>
    
           </dependency>
    
           <!-- mybatis-plus依赖包 -->
    
           <dependency>
    
               <groupId>com.baomidou</groupId>
    
                <artifactId>mybatis-plus</artifactId>
    
           </dependency>
    
           <!-- 导入jdbc驱动+连接池 -->
    
           <!-- MySql -->
    
           <dependency>
    
               <groupId>mysql</groupId>
    
               <artifactId>mysql-connector-java</artifactId>
    
           </dependency>
    
           <!-- 连接池 -->
    
           <dependency>
    
               <groupId>com.alibaba</groupId>
    
               <artifactId>druid</artifactId>
    
           </dependency>
    
           <dependency>
    
               <groupId>com.fasterxml.jackson.core</groupId>
    
               <artifactId>jackson-databind</artifactId>
    
           </dependency>
    
      </dependencies>
    
      <build>
    
           <plugins>
    
               <!-- 配置Tomcat插件 -->
    
               <plugin>
    
                  <groupId>org.apache.tomcat.maven</groupId>
    
                  <artifactId>tomcat7-maven-plugin</artifactId>
    
                  <configuration>
    
                      <port>8085</port>
    
                      <path>/</path>
    
                      <uriEncoding>utf-8</uriEncoding>
    
                  </configuration>
    
               </plugin>
    
           </plugins>
    
      </build>
    
    </project>
    

    2.1.3.第三步:创建web.xml文件

    --说明:从ego-rest工程中拷贝,修改url-partten属性即可。

    <?xml version="1.0" encoding="UTF-8"?>     
    
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"      xmlns:xml="http://www.w3.org/XML/1998/namespace"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd ">
    
        <!-- 配置编码过滤器,防止post乱码 -->
    
        <filter>
    
           <filter-name>characterEncodingFilter</filter-name>
    
           <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    
           <init-param>
    
               <param-name>encoding</param-name>
    
               <param-value>utf-8</param-value>
    
           </init-param>
    
        </filter>
    
        <filter-mapping>
    
           <filter-name>characterEncodingFilter</filter-name>
    
           <url-pattern>/*</url-pattern>
    
        </filter-mapping>
    
        <!-- 配置springmvc核心控制器 -->
    
        <servlet>
    
           <servlet-name>dispatcherServlet</servlet-name>
    
           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    
           <init-param>
    
               <param-name>contextConfigLocation</param-name>
    
               <param-value>classpath:spring-*.xml</param-value>
    
           </init-param>
    
           <load-on-startup>1</load-on-startup>
    
        </servlet>
    
        <servlet-mapping>
    
           <servlet-name>dispatcherServlet</servlet-name>
    
           <!-- 所有order项目中的接口路径,都以/order开头,方便维护接口 -->
    
           <url-pattern>/order/*</url-pattern>
    
        </servlet-mapping>
    
    </web-app>
    

    2.1.4.第四步:Spring整合SpringMVC

    --创建spring-mvc.xml文件

    <?xml version="1.0" encoding="UTF-8"?>     
    
    <beans xmlns="http://www.springframework.org/schema/beans"
    
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
        xmlns:context="http://www.springframework.org/schema/context"
    
        xmlns:mvc="http://www.springframework.org/schema/mvc"
    
        xsi:schemaLocation="http://www.springframework.org/schema/beans      http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    
           http://www.springframework.org/schema/context      http://www.springframework.org/schema/context/spring-context-4.3.xsd
    
           http://www.springframework.org/schema/mvc      http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">
    
        <!-- 1、开启注解扫描 -->
    
        <context:component-scan base-package="cn.gzsxt.order"/>
    
        <!-- 2、开启springmvc注解驱动 -->
    
        <mvc:annotation-driven/>
    
    </beans>
    

    2.1.5.第五步:MybatisPlus整合Spring

    (1)创建resourse.properties文件

    #配置数据源     
    
    db.driver=com.mysql.jdbc.Driver
    
    db.url=jdbc:mysql://localhost:3306/ego
    
    db.username=root
    
    db.password=gzsxt
    

    (2)创建spring-data.xml文件

    <?xml version="1.0" encoding="UTF-8"?>     
    
    <beans xmlns="http://www.springframework.org/schema/beans"
    
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
        xmlns:context="http://www.springframework.org/schema/context"
    
        xmlns:tx="http://www.springframework.org/schema/tx"
    
        xsi:schemaLocation="http://www.springframework.org/schema/beans      http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    
           http://www.springframework.org/schema/context      http://www.springframework.org/schema/context/spring-context-4.3.xsd
    
           http://www.springframework.org/schema/tx      http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
    
        <context:property-placeholder file-encoding="utf-8"      location="classpath:resource.properties"/>
    
        <!-- 1、创建数据源 -->
    
        <bean name="dataSource"      class="com.alibaba.druid.pool.DruidDataSource">
    
           <property name="driverClassName" value="${db.driver}"/>
    
           <property name="url" value="${db.url}"/>
    
           <property name="username" value="${db.username}"/>
    
           <property name="password" value="${db.password}"/>
    
           <property name="maxActive" value="20"/>
    
           <property name="minIdle" value="5"/>
    
        </bean>
    
        <!-- 2、mybatis-plus整合Spring
    
           任何的数据库的框架,要使用spring的事物代理,必须使用spring提供的数据源,必须整合spring才可以使用
    
        -->
    
        <bean name="sqlSessionFactoryBean"      class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
    
           <!-- 加载数据源 -->
    
           <property name="dataSource" ref="dataSource"/>
    
           <!-- 指定pojo目录 -->
    
           <property name="typeAliasesPackage"      value="cn.gzsxt.base.pojo"/>
    
           <!-- 配置mybatis-plus插件 -->
    
           <property name="plugins">
    
               <list>
    
                   <!-- 配置分页插件 -->
    
                  <bean      class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/>
    
                  <!-- 配置拦截器属性 -->
    
                  <bean      class="com.baomidou.mybatisplus.plugins.PerformanceInterceptor">
    
                      <!-- 配置sql响应时间,开发阶段方便做调优 -->
    
                      <property name="maxTime" value="1000"/>
    
                      <property name="format" value="true"/>
    
                  </bean>
    
               </list>
    
           </property>
    
           <!-- 配置mybatis-plus全局策略 -->
    
           <property name="globalConfig"      ref="globalConfiguration"></property>
    
        </bean>
    
        <!-- 3、配置mybatis的动态代理 -->
    
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    
           <property name="sqlSessionFactoryBeanName"      value="sqlSessionFactoryBean"/>
    
           <property name="basePackage"      value="cn.gzsxt.base.mapper"></property>
    
        </bean>
    
        <!-- 配置mybatis-plus全局属性 -->
    
        <!-- 定义 MybatisPlus 的全局策略配置-->
    
        <bean id ="globalConfiguration"      class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
    
            <!-- 在 2.3 版本以后,dbColumnUnderline 默认值是 true,即pojo属性开启驼峰标识 -->
    
            <property name="dbColumnUnderline" value="true"></property>
    
            <!-- 全局的主键策略 -->
    
            <!--
    
                AUTO->`0`("数据库ID自增")
    
                 INPUT->`1`(用户输入ID")
    
                ID_WORKER->`2`("全局唯一ID")
    
                UUID->`3`("全局唯一ID")
    
            -->
    
            <property name="idType" value="0"></property>
    
            <!-- 全局的表前缀策略配置 -->
    
            <property name="tablePrefix" value="tb_"></property>
    
        </bean>
    
        <!-- 4、配置事物管理器 -->
    
         <bean name="transactionManager"      class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    
               <property name="dataSource" ref="dataSource"></property>
    
         </bean>
    
        <!-- 5、开启注解声明式事物 -->
    
        <tx:annotation-driven/>
    
    </beans>
    

    2.2.第二部分:发布保存订单接口

    2.2.1.第一步:创建pojo、mapper

    (1)创建Order、OrderItem、OrderShipping这三个类

    --创建Order类

    package cn.gzsxt.base.pojo;     
    
    import java.util.Date;
    
    import com.baomidou.mybatisplus.annotations.TableField;
    
    import com.baomidou.mybatisplus.annotations.TableId;
    
    import com.baomidou.mybatisplus.annotations.TableName;
    
    /**
    
    * <p>
    
    *
    
    * </p>
    
    *
    
    * @author yq.luan
    
    * @since 2019-02-23
    
    */
    
    @TableName("tb_order")
    
    public class Order{
    
        /**
    
         * 订单id
    
         */
    
        @TableId(value="order_id",type=INPUT)
    
        private String orderId;
    
        /**
    
         * 实付金额。精确到2位小数;单位:元。如:200.07,表示:200元7分
    
         */
    
        private String payment;
    
        /**
    
         * 支付类型,1、在线支付,2、货到付款
    
         */
    
        @TableField("payment_type")
    
        private Integer paymentType;
    
        /**
    
         * 邮费。精确到2位小数;单位:元。如:200.07,表示:200元7分
    
         */
    
        @TableField("post_fee")
    
        private String postFee;
    
        /**
    
         * 状态:1、未付款,2、已付款,3、未发货,4、已发货,5、交易成功,6、交易关闭
    
         */
    
        private Integer status;
    
        /**
    
         * 订单创建时间
    
         */
    
        @TableField("create_time")
    
        private Date createTime;
    
        /**
    
         * 订单更新时间
    
         */
    
        @TableField("update_time")
    
        private Date updateTime;
    
        /**
    
         * 付款时间
    
         */
    
        @TableField("payment_time")
    
        private Date paymentTime;
    
        /**
    
         * 发货时间
    
         */
    
        @TableField("consign_time")
    
        private Date consignTime;
    
        /**
    
         * 交易完成时间
    
         */
    
        @TableField("end_time")
    
        private Date endTime;
    
        /**
    
         * 交易关闭时间
    
         */
    
        @TableField("close_time")
    
        private Date closeTime;
    
        /**
    
         * 物流名称
    
         */
    
        @TableField("shipping_name")
    
        private String shippingName;
    
        /**
    
         * 物流单号
    
         */
    
        @TableField("shipping_code")
    
        private String shippingCode;
    
        /**
    
         * 用户id
    
         */
    
        @TableField("user_id")
    
        private Long userId;
    
        /**
    
         * 买家留言
    
         */
    
        @TableField("buyer_message")
    
        private String buyerMessage;
    
        /**
    
         * 买家昵称
    
         */
    
        @TableField("buyer_nick")
    
        private String buyerNick;
    
        /**
    
         * 买家是否已经评价
    
         */
    
        @TableField("buyer_rate")
    
        private Integer buyerRate;
    
        //补全get、set方法
    
    }
    

    --创建OrderItem类

    package cn.gzsxt.base.pojo;     
    
    import com.baomidou.mybatisplus.annotations.TableField;
    
    import com.baomidou.mybatisplus.annotations.TableId;
    
    import com.baomidou.mybatisplus.annotations.TableName;
    
    import com.baomidou.mybatisplus.enums.IdType;
    
    /**
    
    * <p>
    
    *
    
    * </p>
    
    *
    
    * @author yq.luan
    
    * @since 2019-02-23
    
    */
    
    @TableName("tb_order_item")
    
    public class OrderItem{
    
        @TableId(value="id",type=IdType.INPUT)
    
        private String id;
    
        /**
    
         * 商品id
    
         */
    
        @TableField("item_id")
    
        private String itemId;
    
        /**
    
         * 订单id
    
         */
    
        @TableField("order_id")
    
        private String orderId;
    
        /**
    
         * 商品购买数量
    
         */
    
        private Integer num;
    
        /**
    
         * 商品标题
    
         */
    
        private String title;
    
        /**
    
         * 商品单价
    
         */
    
        private Long price;
    
        /**
    
         * 商品总金额
    
         */
    
        @TableField("total_fee")
    
        private Long totalFee;
    
        /**
    
         * 商品图片地址
    
         */
    
        @TableField("pic_path")
    
    private String picPath;
    
    //补全get、set方法
    
    }
    

    --创建OrderShipping类

    package cn.gzsxt.base.pojo;     
    
    import java.util.Date;
    
    import com.baomidou.mybatisplus.annotations.TableField;
    
    import com.baomidou.mybatisplus.annotations.TableId;
    
    import com.baomidou.mybatisplus.annotations.TableName;
    
    import com.baomidou.mybatisplus.enums.IdType;
    
    /**
    
    * <p>
    
    *
    
    * </p>
    
    *
    
    * @author yq.luan
    
    * @since 2019-02-23
    
    */
    
    @TableName("tb_order_shipping")
    
    public class OrderShipping{
    
        /**
    
         * 订单ID
    
         */
    
        @TableId(value="order_id",type=IdType.INPUT)
    
        private String orderId;
    
        /**
    
         * 收货人全名
    
         */
    
        @TableField("receiver_name")
    
        private String receiverName;
    
        /**
    
         * 固定电话
    
         */
    
        @TableField("receiver_phone")
    
        private String receiverPhone;
    
        /**
    
         * 移动电话
    
         */
    
        @TableField("receiver_mobile")
    
        private String receiverMobile;
    
        /**
    
         * 省份
    
         */
    
        @TableField("receiver_state")
    
        private String receiverState;
    
        /**
    
         * 城市
    
         */
    
        @TableField("receiver_city")
    
        private String receiverCity;
    
        /**
    
         * 区/县
    
         */
    
        @TableField("receiver_district")
    
        private String receiverDistrict;
    
        /**
    
         * 收货地址,如:xx路xx号
    
         */
    
        @TableField("receiver_address")
    
        private String receiverAddress;
    
        /**
    
         * 邮政编码,如:310001
    
         */
    
        @TableField("receiver_zip")
    
        private String receiverZip;
    
        private Date created;
    
        private Date updated;
    
        //补全get、set方法
    
    }
    

    (2)创建OrderMapper、OrderItemMapper、OrderShippingMapper

    --创建OrderMapper

    package cn.gzsxt.base.mapper;     
    
    import cn.gzsxt.base.pojo.Order;
    
    import com.baomidou.mybatisplus.mapper.BaseMapper;
    
    /**
    
    * <p>
    
    *  Mapper 接口
    
    * </p>
    
    *
    
    * @author yq.luan
    
    * @since 2019-02-23
    
    */
    
    public interface OrderMapper extends BaseMapper<Order> {
    
    }
    
    --创建OrderItemMapper接口
    
    package cn.gzsxt.base.mapper;     
    
    import cn.gzsxt.base.pojo.OrderItem;
    
    import com.baomidou.mybatisplus.mapper.BaseMapper;
    
    /**
    
    * <p>
    
    *  Mapper 接口
    
    * </p>
    
    *
    
    * @author yq.luan
    
    * @since 2019-02-23
    
    */
    
    public interface OrderItemMapper extends BaseMapper<OrderItem> {
    
    }
    
    --创建OrderShippingMapper接口
    
    package cn.gzsxt.base.mapper;     
    
    import cn.gzsxt.base.pojo.OrderShipping;
    
    import com.baomidou.mybatisplus.mapper.BaseMapper;
    
    /**
    
    * <p>
    
    *  Mapper 接口
    
    * </p>
    
    * @author yq.luan
    
    * @since 2019-02-23
    
    */
    
    public interface OrderShippingMapper extends      BaseMapper<OrderShipping> {
    
    }
    

    2.2.2.第二步:创建OrderDetail类

    说明:我们是通过OrderDetail类来接收订单页面提交的参数。

    订单页面提交的参数如下:

    image.png

    分析:
    (1)订单商品需要使用List<OrderItem>集合来接收。

    (2)收件人信息需要使用对象.属性的方式来接收。

    问题1:SpringMVC如何绑定List集合类型的参数?

    答:需要将List集合定义到一个javabean对象中。

    问题2:SpringMVC如何绑定对象.属性类型的参数?

    答:将对象定义成javabean的一个属性。

    结论:
    (1)我们定义一个OrderDetail类,继承Order这个类。

    目的:接收跟订单有关的参数。

    (2)将List<OrderItem> orderItems定义成其中一个属性。

    (3)将OrderShipping orderShipping定义另外一个属性。

    --OrderDetail类结构如下:

    package cn.gzsxt.base.vo;     
    
    import java.util.List;
    
    import cn.gzsxt.base.pojo.Order;
    
    import cn.gzsxt.base.pojo.OrderItem;
    
    import cn.gzsxt.base.pojo.OrderShipping;
    
    /**
    
    * 自定义订单详情类
    
    * @author ccnulyq
    
    *
    
    */
    
    public class OrderDetail extends Order{
    
        private List<OrderItem> orderItems;
    
        private OrderShipping orderShipping;
    
        public OrderDetail() {
    
           super();
    
           // TODO Auto-generated constructor stub
    
        }
    
        public List<OrderItem> getOrderItems() {
    
           return orderItems;
    
        }
    
        public void setOrderItems(List<OrderItem> orderItems) {
    
           this.orderItems = orderItems;
    
        }
    
        public OrderShipping getOrderShipping() {
    
           return orderShipping;
    
        }
    
        public void setOrderShipping(OrderShipping orderShipping) {
    
           this.orderShipping = orderShipping;
    
        }
    
    }
    

    2.2.3.第三步:创建OrderService接口及其实现类

    package cn.gzsxt.order.service.impl;     
    
    import java.util.Date;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    
    import org.springframework.stereotype.Service;
    
    import cn.gzsxt.base.mapper.OrderItemMapper;
    
    import cn.gzsxt.base.mapper.OrderMapper;
    
    import cn.gzsxt.base.mapper.OrderShippingMapper;
    
    import cn.gzsxt.base.pojo.OrderItem;
    
    import cn.gzsxt.base.pojo.OrderShipping;
    
    import cn.gzsxt.base.utils.IDUtils;
    
    import cn.gzsxt.base.vo.OrderDetail;
    
    import cn.gzsxt.order.service.OrderService;
    
    @Service
    
    public class OrderServiceImpl implements OrderService{
    
        @Autowired
    
        private OrderMapper orderMapper;
    
        @Autowired
    
        private OrderItemMapper itemMapper;
    
        @Autowired
    
        private OrderShippingMapper shippingMapper;
    
        @Override
    
        public String save(OrderDetail order) {
    
           try {
    
               //1、保存订单数据
    
               long orderId = IDUtils.genItemId();
    
               order.setOrderId(orderId+"");
    
               order.setStatus(1);
    
               order.setCreateTime(new Date());
    
               order.setUpdateTime(order.getCreateTime());
    
               orderMapper.insert(order);
    
               //2、保存订单项
    
               List<OrderItem> items = order.getOrderItems();
    
               for (OrderItem t : items) {
    
                  t.setId(IDUtils.genItemId()+"");
    
                  t.setOrderId(orderId+"");
    
                  itemMapper.insert(t);
    
               }
    
               //3、保存收件人信息
    
               OrderShipping orderShipping = order.getOrderShipping();
    
               orderShipping.setOrderId(orderId+"");
    
               shippingMapper.insert(orderShipping);
    
               return orderId+"";
    
           } catch (Exception e) {
    
               e.printStackTrace();
    
               return null;
    
           }
    
        }
    
    }
    

    2.2.4.第四步:创建OrderController类

    package cn.gzsxt.order.controller;     
    
    import org.springframework.beans.factory.annotation.Autowired;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import org.springframework.web.bind.annotation.RestController;
    
    import cn.gzsxt.base.vo.OrderDetail;
    
    import cn.gzsxt.order.service.OrderService;
    
    @RestController
    
    public class OrderController {
    
        @Autowired
    
        private OrderService orderService;
    
        @RequestMapping(value = "/create")
    
        public String save(String order){
    
           OrderDetail jsonToPojo = JsonUtils.jsonToPojo(order,      OrderDetail.class);
    
           String orderId = orderService.save(jsonToPojo);
    
    return orderId;
    
        }
    
    }
    

    2.3.第三部分:在门户系统中调用保存订单接口

    2.3.1.第一步:修改OrderService接口及其实现类

    --新增保存订单方法

    @Override     
    
        public String save(OrderDetail order) {
    
           Map<String, String> params = new HashMap<>();
    
           params.put("order", JsonUtils.objectToJson(order));
    
           String doPost =      HttpClientUtils.doGet("http://localhost:8085/order/create", params);
    
           return doPost;
    
        }
    

    2.3.2.第二步:修改OrderController类

    --新增保存订单方法

    @RequestMapping(value="/create", method=RequestMethod.POST)
    
        public String save(OrderDetail order,ModelMap map){
    
           String orderid = orderService.save(order);
    
           if(null!=orderid && !"".equals(orderid)){
    
               map.addAttribute("orderId", orderid);
    
               map.addAttribute("payment", order.getPayment());
    
               //默认送到时间,在3天后
    
               Calendar c=Calendar.getInstance();
    
               SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd/E");
    
               c.add(Calendar.DATE, 3);
    
               System.out.println(df.format(c.getTime()));
    
               map.addAttribute("date", df.format(c.getTime()));
    
               return "success";
    
           }else{
    
               //订单创建失败
    
               map.addAttribute("message", orderid);
    
               return "error/exception";
    
           }
    
        }
    

    2.3.3.第三步:测试

    (1)重新编译ego-project工程。

    (2)在浏览器访问门户首页,并提交订单。

    image.png

    --保存订单成功!!!

    相关文章

      网友评论

        本文标题:如何做一个电商系统(七)

        本文链接:https://www.haomeiwen.com/subject/ftgcdctx.html