Spring Boot点餐系统实战(1)--准备

从今天起,开始使用 SpringBoot 开发一个微信点餐系统,一方面是学习 SpringBoot 知识,另一方面是将目前流行的技术进行结合。 主要内容请查看慕课网 Spring Boot 微信点餐系统 现在开始吧!  

一、新建数据库

1、新建 数据库 sell 2、然后新建数据表,如下     我们可以直接执行下面的 sql 语句
  1. SET NAMES utf8;
  2. SET FOREIGN_KEY_CHECKS = 0;
  3. -- ----------------------------
  4. --  Table structure for `order_detail`
  5. -- ----------------------------
  6. DROP TABLE IF EXISTS `order_detail`;
  7. CREATE TABLE `order_detail` (
  8.   `detail_id` varchar(32) COLLATE utf8mb4_bin NOT NULL,
  9.   `order_id` varchar(32) COLLATE utf8mb4_bin NOT NULL,
  10.   `product_id` varchar(32) COLLATE utf8mb4_bin NOT NULL,
  11.   `product_name` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '商品名称',
  12.   `product_price` decimal(8,2) NOT NULL COMMENT '当前价格,单位分',
  13.   `product_quantity` int(11) NOT NULL COMMENT '数量',
  14.   `product_icon` varchar(512) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '小图',
  15.   `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  16.   `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  17.   PRIMARY KEY (`detail_id`),
  18.   KEY `idx_order_id` (`order_id`)
  19. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
  20. -- ----------------------------
  21. --  Table structure for `order_master`
  22. -- ----------------------------
  23. DROP TABLE IF EXISTS `order_master`;
  24. CREATE TABLE `order_master` (
  25.   `order_id` varchar(32) COLLATE utf8mb4_bin NOT NULL,
  26.   `buyer_name` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '买家名字',
  27.   `buyer_phone` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '买家电话',
  28.   `buyer_address` varchar(128) COLLATE utf8mb4_bin NOT NULL COMMENT '买家地址',
  29.   `buyer_openid` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '买家微信openid',
  30.   `order_amount` decimal(8,2) NOT NULL COMMENT '订单总金额',
  31.   `order_status` tinyint(3) NOT NULL DEFAULT '0' COMMENT '订单状态, 默认为新下单',
  32.   `pay_status` tinyint(3) NOT NULL DEFAULT '0' COMMENT '支付状态, 默认未支付',
  33.   `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  34.   `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  35.   PRIMARY KEY (`order_id`),
  36.   KEY `idx_buyer_openid` (`buyer_openid`)
  37. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
  38. -- ----------------------------
  39. --  Table structure for `product_category`
  40. -- ----------------------------
  41. DROP TABLE IF EXISTS `product_category`;
  42. CREATE TABLE `product_category` (
  43.   `category_id` int(11) NOT NULL AUTO_INCREMENT,
  44.   `category_name` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '类目名字',
  45.   `category_type` int(11) NOT NULL COMMENT '类目编号',
  46.   `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  47.   `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  48.   PRIMARY KEY (`category_id`),
  49.   UNIQUE KEY `unique_category_type` (`category_type`) USING BTREE
  50. ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
  51. -- ----------------------------
  52. --  Table structure for `product_info`
  53. -- ----------------------------
  54. DROP TABLE IF EXISTS `product_info`;
  55. CREATE TABLE `product_info` (
  56.   `product_id` varchar(32) COLLATE utf8mb4_bin NOT NULL,
  57.   `product_name` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '商品名称',
  58.   `product_price` decimal(8,2) NOT NULL COMMENT '单价',
  59.   `product_stock` int(11) NOT NULL COMMENT '库存',
  60.   `product_description` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '描述',
  61.   `product_icon` varchar(512) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '小图',
  62.   `product_status` tinyint(3) DEFAULT '0' COMMENT '商品状态,0正常1下架',
  63.   `category_type` int(11) NOT NULL COMMENT '类目编号',
  64.   `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  65.   `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  66.   PRIMARY KEY (`product_id`)
  67. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
  68. SET FOREIGN_KEY_CHECKS = 1;
 

二、新建 SpringBoot 项目

博主这里使用的是 IntelliJ IDEA,之前的一篇文章 Spring Boot入门(1)-第一个Spring Boot应用 介绍过,这里就不写如何创建 SpringBoot 项目了。 注意,我们这里同样是使用 Maven 管理依赖。 创建好项目后,在 pom.xml 添加几个常用的依赖。
  1. <dependency>
  2.     <groupId>mysql</groupId>
  3.     <artifactId>mysql-connector-java</artifactId>
  4. </dependency>
  5. <dependency>
  6.     <groupId>org.springframework.boot</groupId>
  7.     <artifactId>spring-boot-starter-data-jpa</artifactId>
  8. </dependency>
  9. <dependency>
  10.     <groupId>org.projectlombok</groupId>
  11.     <artifactId>lombok</artifactId>
  12. </dependency>
  然后修改 src/main/resource/application.properties ,将该文件改为 yml 后缀,即 application.yml 并添加如下代码
  1. spring:
  2.   datasource:
  3.     driver-class-name: com.mysql.jdbc.Driver
  4.     username: root
  5.     password: 123456
  6.     url: jdbc:mysql://localhost:3306/sell?characterEncodeing=utf-8&useSSL=false
  7.   jpa:
  8.     show-sql: true
 

三、API

商品列表

GET /sell/buyer/product/list
参数
返回
{
    "code": 0,
    "msg": "成功",
    "data": [
        {
            "name": "热榜",
            "type": 1,
            "foods": [
                {
                    "id": "123456",
                    "name": "皮蛋粥",
                    "price": 1.2,
                    "description": "好吃的皮蛋粥",
                    "icon": "http://xxx.com",
                }
            ]
        },
        {
            "name": "好吃的",
            "type": 2,
            "foods": [
                {
                    "id": "123457",
                    "name": "慕斯蛋糕",
                    "price": 10.9,
                    "description": "美味爽口",
                    "icon": "http://xxx.com",
                }
            ]
        }
    ]
}

创建订单

POST /sell/buyer/order/create
参数
name: "张三"
phone: "18868822111"
address: "慕课网总部"
openid: "ew3euwhd7sjw9diwkq" //用户的微信openid
items: [{
    productId: "1423113435324",
    productQuantity: 2 //购买数量
}]

返回
{
  "code": 0,
  "msg": "成功",
  "data": {
      "orderId": "147283992738221" 
  }
}

订单列表

GET /sell/buyer/order/list
参数
openid: 18eu2jwk2kse3r42e2e
page: 0 //从第0页开始
size: 10
返回
{
  "code": 0,
  "msg": "成功",
  "data": [
    {
      "orderId": "161873371171128075",
      "buyerName": "张三",
      "buyerPhone": "18868877111",
      "buyerAddress": "慕课网总部",
      "buyerOpenid": "18eu2jwk2kse3r42e2e",
      "orderAmount": 0,
      "orderStatus": 0,
      "payStatus": 0,
      "createTime": 1490171219,
      "updateTime": 1490171219,
      "orderDetailList": null
    },
    {
      "orderId": "161873371171128076",
      "buyerName": "张三",
      "buyerPhone": "18868877111",
      "buyerAddress": "慕课网总部",
      "buyerOpenid": "18eu2jwk2kse3r42e2e",
      "orderAmount": 0,
      "orderStatus": 0,
      "payStatus": 0,
      "createTime": 1490171219,
      "updateTime": 1490171219,
      "orderDetailList": null
    }]
}

查询订单详情

GET /sell/buyer/order/detail
参数
openid: 18eu2jwk2kse3r42e2e
orderId: 161899085773669363
返回
{
    "code": 0,
    "msg": "成功",
    "data": {
          "orderId": "161899085773669363",
          "buyerName": "李四",
          "buyerPhone": "18868877111",
          "buyerAddress": "慕课网总部",
          "buyerOpenid": "18eu2jwk2kse3r42e2e",
          "orderAmount": 18,
          "orderStatus": 0,
          "payStatus": 0,
          "createTime": 1490177352,
          "updateTime": 1490177352,
          "orderDetailList": [
            {
                "detailId": "161899085974995851",
                "orderId": "161899085773669363",
                "productId": "157875196362360019",
                "productName": "招牌奶茶",
                "productPrice": 9,
                "productQuantity": 2,
                "productIcon": "http://xxx.com",
                "productImage": "http://xxx.com"
            }
        ]
    }
}

取消订单

POST /sell/buyer/order/cancel
参数
openid: 18eu2jwk2kse3r42e2e
orderId: 161899085773669363
返回
{
    "code": 0,
    "msg": "成功",
    "data": null
}

获取openid

重定向到 /sell/wechat/authorize
参数
returnUrl: http://xxx.com/abc  //【必填】
返回
http://xxx.com/abc?openid=oZxSYw5ldcxv6H0EU67GgSXOUrVg
  目前先介绍到这里,下一篇介绍 product_category 表的 Dao 和Service 层,以及几个注解的使用  

发表评论

目前评论:1