第二十章 1024电商平台-订单微服务开发
第1集 1024电商平台-订单微服务功能需求介绍
简介:订单微服务功能需求介绍
- 核心接口-下单
- 订单微服务涉及的功能知识点
- 创建订单和防重提交
- 多个微服务之间通讯-分布式事务选择
- 商品库存锁定和回收
- 优惠券使用锁定和回收
- 支付宝支付对接
- 优惠券 商品订单验价
- 多通道支付和设计整合
第2集 1024电商平台-订单微服务数据库表讲解
简介:订单微服务数据库表讲解
- 订单表
CREATE TABLE `product_order` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`out_trade_no` varchar(64) DEFAULT NULL COMMENT '订单唯一标识',
`state` varchar(11) DEFAULT NULL COMMENT 'NEW 未支付订单,PAY已经支付订单,CANCEL超时取消订单',
`create_time` datetime DEFAULT NULL COMMENT '订单生成时间',
`total_amount` decimal(16,2) DEFAULT NULL COMMENT '订单总金额',
`pay_amount` decimal(16,2) DEFAULT NULL COMMENT '订单实际支付价格',
`pay_type` varchar(64) DEFAULT NULL COMMENT '支付类型,微信-银行-支付宝',
`nickname` varchar(64) DEFAULT NULL COMMENT '昵称',
`head_img` varchar(524) DEFAULT NULL COMMENT '头像',
`user_id` int(11) DEFAULT NULL COMMENT '用户id',
`del` int(5) DEFAULT '0' COMMENT '0表示未删除,1表示已经删除',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`order_type` varchar(32) DEFAULT NULL COMMENT '订单类型 DAILY普通单,PROMOTION促销订单',
`receiver_address` varchar(1024) DEFAULT NULL COMMENT '收货地址 json存储',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2439 DEFAULT CHARSET=utf8mb4;
- 订单项表
CREATE TABLE `product_order_item` (
`id` bigint(11) unsigned NOT NULL AUTO_INCREMENT,
`product_order_id` bigint(11) DEFAULT NULL COMMENT '订单号',
`out_trade_no` varchar(32) DEFAULT NULL,
`product_id` bigint(11) DEFAULT NULL COMMENT '产品id',
`product_name` varchar(128) DEFAULT NULL COMMENT '商品名称',
`product_img` varchar(524) DEFAULT NULL COMMENT '商品图片',
`buy_num` int(11) DEFAULT NULL COMMENT '购买数量',
`create_time` datetime DEFAULT NULL,
`total_amount` decimal(16,2) DEFAULT NULL COMMENT '购物项商品总价格',
`amount` decimal(16,0) DEFAULT NULL COMMENT '购物项商品单价',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=194 DEFAULT CHARSET=utf8mb4;
第3集 订单微服务 MybatisPlusGenerator代码自动生成工具
简介:Mybatis-plus-generator代码自动化生成微服务相关类
- 配置代码生成(标记TODO的记得修改)
public class MyBatisPlusGenerator {
public static void main(String[] args) {
//1. 全局配置
GlobalConfig config = new GlobalConfig();
// 作者
config.setAuthor("二当家小D")
// 生成路径,最好使用绝对路径,window路径是不一样的
//TODO TODO TODO TODO
.setOutputDir("/Users/xdclass/Desktop/demo/src/main/java")
// 文件覆盖
.setFileOverride(true)
// 主键策略
.setIdType(IdType.AUTO)
.setDateType(DateType.ONLY_DATE)
// 设置生成的service接口的名字的首字母是否为I,默认Service是以I开头的
.setServiceName("%sService")
//实体类结尾名称
.setEntityName("%sDO")
//生成基本的resultMap
.setBaseResultMap(true)
//不使用AR模式
.setActiveRecord(false)
//生成基本的SQL片段
.setBaseColumnList(true);
//2. 数据源配置
DataSourceConfig dsConfig = new DataSourceConfig();
// 设置数据库类型
dsConfig.setDbType(DbType.MYSQL)
.setDriverName("com.mysql.cj.jdbc.Driver")
//TODO TODO TODO TODO
.setUrl("jdbc:mysql://127.0.0.1:3306/xdclass_order?useSSL=false")
.setUsername("root")
.setPassword("xdclass.net");
//3. 策略配置globalConfiguration中
StrategyConfig stConfig = new StrategyConfig();
//全局大写命名
stConfig.setCapitalMode(true)
// 数据库表映射到实体的命名策略
.setNaming(NamingStrategy.underline_to_camel)
//使用lombok
.setEntityLombokModel(true)
//使用restcontroller注解
.setRestControllerStyle(true)
// 生成的表, 支持多表一起生成,以数组形式填写
//TODO TODO TODO TODO
.setInclude("product_order","product_order_item");
//4. 包名策略配置
PackageConfig pkConfig = new PackageConfig();
pkConfig.setParent("net.xdclass")
.setMapper("mapper")
.setService("service")
.setController("controller")
.setEntity("model")
.setXml("mapper");
//5. 整合配置
AutoGenerator ag = new AutoGenerator();
ag.setGlobalConfig(config)
.setDataSource(dsConfig)
.setStrategy(stConfig)
.setPackageInfo(pkConfig);
//6. 执行操作
ag.execute();
System.out.println("======= 小滴课堂 Done 相关代码生成完毕 ========");
}
}
- 导入生成好的代码
- model (为啥不放common项目,如果是确定每个服务都用到的依赖或者类才放到common项目)
- mapper 类接口拷贝
- resource/mapper文件夹 xml脚本拷贝
- controller
- service 不拷贝
第4集 订单微服务项目基本配置整合-拦截器-枚举类配置
简介:项目相关配置整合和拦截器配置
- SpringBoot项目启动类和配置文件配置
- 拦截器配置
- 枚举类配置
/**
* 客户端枚举类
*/
public enum ClientType {
/**
* 原生应用
*/
APP,
/**
* 电脑端
*/
PC,
/**
* 网页
*/
H5
}
public enum ProductOrderPayTypeEnum {
/**
* 微信支付
*/
WECHAT,
/**
* 支付支付
*/
ALIPAY,
/**
* 银行卡支付
*/
BANK;
}
public enum ProductOrderStateEnum {
/**
* 未支付订单
*/
NEW,
/**
* 已经支付订单
*/
PAY,
/**
* 超时取消订单
*/
CANCEL;
}
public enum ProductOrderTypeEnum {
/**
* 普通订单
*/
DAILY,
/**
* 促销订单
*/
PROMOTION;
}
第5集 订单微服务-创建订单接口介绍-request类
简介:订单微服务-创建订单接口介绍和request类型编写
- 下单逻辑
- 二步:创建订单-》调用支付(京东)
- 一步:创建订单并调用支付(手淘)
- 创建订单
- controller编写
第6集 订单微服务-创建订单service伪代码编写
简介:订单微服务-创建订单伪代码编写
- service编写伪代码
- 防重提交
- 用户微服务-确认收货地址
- 商品微服务-获取最新购物项和价格
- 订单验价
- 优惠券微服务-获取优惠券
- 验证价格
- 锁定优惠券
- 锁定商品库存
- 创建订单对象
- 创建子订单对象
- 发送延迟消息-用于自动关单
- 创建支付信息-对接三方支付