MyCat - 订单模块 - 需求分析及微服务环境搭建 | 学习笔记

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 快速学习 MyCat - 订单模块 - 需求分析及微服务环境搭建

开发者学堂课程【全面讲解开源数据库中间件 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。如图:

image.png

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 引导类。如图:

image.png

声明一个固定的引导类 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”即搭建完毕。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
SQL 数据库 微服务
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
|
4月前
|
Java Maven 数据库
一文教会你如何进行Rest微服务构建 案例工程模块。教会你如何创建父子工程
这篇文章介绍了如何在微服务架构中创建父子工程模块,并通过RESTful服务的方式构建微服务通用案例,包括服务提供者和消费者的基本实现,以及数据库的创建和测试服务的步骤。
一文教会你如何进行Rest微服务构建 案例工程模块。教会你如何创建父子工程
|
7月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
307 0
|
5月前
|
负载均衡 微服务
微服务06----Eureka注册中心,微服务的两大服务,订单服务和用户服务,订单服务需要远程调用我们的用,户服务,消费者,如果环境改变,硬编码问题就会随之产生,为了应对高并发,我们可能会部署成一个集
微服务06----Eureka注册中心,微服务的两大服务,订单服务和用户服务,订单服务需要远程调用我们的用,户服务,消费者,如果环境改变,硬编码问题就会随之产生,为了应对高并发,我们可能会部署成一个集
|
5月前
|
Java 微服务 Spring
微服务04---服务远程调用,根据订单id查询订单功能,根据id查询订单的同时,把订单所属的用户信息一起返回,Spring提供了一个工具RestTemplate,Bean写在对象前面,以后可以在任何地
微服务04---服务远程调用,根据订单id查询订单功能,根据id查询订单的同时,把订单所属的用户信息一起返回,Spring提供了一个工具RestTemplate,Bean写在对象前面,以后可以在任何地
|
7月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
193 1
|
7月前
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
164 1
|
7月前
|
Java Maven 微服务
微服务项目-将普通文件夹设为模块与添加services窗口
微服务项目-将普通文件夹设为模块与添加services窗口
42 0
|
7月前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
920 0
|
7月前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
1035 0