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

avatar 2017年11月11日19:39:28 6 4971 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此
从今天起,开始使用 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 层,以及几个注解的使用

  • 微信
  • 交流学习,资料分享
  • weinxin
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0