开发者学堂课程【全面讲解开源数据库中间件 MyCat 使用及原理(四):MyCat - 订单模块 - 需求分析及微服务环境搭建】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/758/detail/13317
MyCat - 订单模块 - 需求分析及微服务环境搭建
内容介绍:
一、前言
二、订单的表结构
三、搭建订单模块微服务
四、引入 application.yml 配置文件
五、创建引导类
六、测试微服务
一、前言
本节介绍功能开发中订单模块的开发
在订单模块中有两个需求:
1. 下单业务分析(本节只分析下单流程)
2. 根据条件分页查询订单(本节主要操作的表为订单表)
二、订单表的表结构
了解主要需求后来了解订单表结构:
当前所涉及到的表结构主要有三种表结构:
1、order 表:order 表是订单主表,主要存储订单的主要信息。例如订单的 ID、数量合计、金额合计、邮费、支付类型、订单创建和更新时间、付款时间、交易时间、物流名称、物流单号、用户名称、买家留言、是否评价、收货人的信息(手机号、地址)、当前订单来源、订单交易流水号、订单的支付和发货的状态等等。
2、tb_order_item 表:tb_order_item 表是订单明细表,当中的字段有 ID、当前商品的一级、二级、三级分类、spuID、skuID、订单 ID、商品名称、单价、数量、总金额、实付金额、图片地址、重量、运费、是否退款等等。(注意:一个订单下可以有多个明细)
3、tb_order.log 表:主要记录订单的日志。在订单的日常流转中需要一直修改订单的状态。
例如先提交的订单就是刚刚创建的订单,未支付的状态,用户支付成功后,需要将支付状态改为已支付。当商家已经发货,就需要将订单状态改为发货状态。
当用户收到货,就需要将订单状态改为已收货状态。当用户已经评价了该商品,就需要将订单状态改为已评价状态。该订单在流转的过程中会有很多的状态信息,这些信息需要后期进行数据更新。就需要一个日志表来记录用户产生的订单在流转过程中产生的日志便于后期的数据集中。
三、搭建订单模块微服务
1、 新建工程
在 V_parent 文档中新建一个 Module 并命名为 v_service_order。如图:
2、 导入依赖
将 .pom.xml 当中的配置文件依赖直接拷贝到工程当中。在外侧再加上<denpendencies></denpendencies>
依赖简介:第一项 common 依赖,第二项 model 依赖,第三项 feign api 依赖。如下:
<dependency>
<groupId>cn.itcast</ groupId>
<artifactId>v_common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.itcast</ groupId>
<artifactId>v_model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.itcast</ groupId>
<artifactId>v_feign_api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
接着是客户端 eureka-client 依赖:
< !-- Eureka 客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
(每一个微服务都需要连接 eureka-client 依赖)。
接着是 mybatis 依赖:
<!--springboot - Mybatis 起步依赖——>
<dependency>
<groupId>org-mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
接着是数据库驱动 mysql-connector-java 依赖:
<!—-MySQL 数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
分页插件 pagehelper 依赖:
<! —-mybatis 分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
进行 web 开发的 Sapring-boot-starter-web 依赖:
<!—-web 起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-data-redis 依赖:
<!-- redis 使用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
(注意:虽然在 V_service_order 模块开发时不会去用此依赖,但会涉及到其中的用户下单业务。)
fastJson 依赖
<!-- fastJson 依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
进行远程调用的 Feign 依赖。
<!-- Feign 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
四、引入 application.yml 配置文件
将配置信息导入此配置文件中。截取部分代码讲解如下
server :
port: 9002
spring:
application:
name: order
datasource:
driver-class-name: com.mysql.jdbc.Driver
ur1: jdbc:mysq1://localhost:3306/v_shop?useUnicodemtrue&char acterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 2143
main:
allow-bean-definition-overriding: true
#当遇到同样名字的时候,是否允许覆盖注册
eureka:
client:
fetch-registry:true
register-with-eureka:true
feign:
client:
config:
default: 配置全局的 feign 的调用超时时间―如果有指定的服务配置默认的配置不会生效
connectTimeout: 60000
#指定的是消费者连接服务提供者的连接超时时间是否能连接﹐单位是毫秒
readTimeout: 206o
#指定的是调用服务提供者的服务的超时时间()单位是毫秒
9002:当前微服务运行的端口号。
Spring: datasource 的数据源配置。
eureka:是否需要进行服务注册;是否需要进行服务发现以及 eureka 服务端的地址。
feign: 进行远程调用超时时间的配置。
五、创建引导类
创建 cn.itcast.order.OrderApplication 引导类。如图:
声明一个固定的引导类 SpringApplication.run(orderApplication.class,args)。如图:
public class OrderApplication {
public static void main (string [] args) {
springApplication. run (OrderApplication.class, args)
}
并在引导类上生成三个注解
@SpringBootApplication
@EnableEurekaClient
@MapperScan(basePackages="cn.itcast.order.mapper”)
(MapperScan 需要进行扫描,扫描对象是 cn.itcast.order.mapper)
在 order 目录下再建立 mapper 包、service 包和 controller 包。
六、测试微服务
将之前编写的 controller 可以直接测试,方法如下:
直接将编写的 controller 拷贝。如下:
package cn.itcast.order.controller;
import...
@RestController
@RequestMapping( "/demo" )
public class Democontroller {
@RequestMapping ("/show" )
public String show(){ return "OK"; }
}
并启动 OrderApplication 服务。访问的端口即为 9002。
启动之后,将原来的 9001/spu/10000000616300 地址更改为 9002/demo/show。
若显示为“OK”即搭建完毕。