持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
每日英语:
The good things will always be here waiting for you.
翻译:美好的事物永远会在这里等着你。 ——《老爸老妈浪漫史》
下单实现
表结构分析
商品下单,分为2张表存储,分别为订单表和订单明细表。表结构如下:
订单表:
CREATE TABLE `order_info` (
`id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '订单id',
`total_num` int(11) DEFAULT NULL COMMENT '数量合计',
`moneys` int(11) DEFAULT NULL COMMENT '金额合计',
`pay_type` varchar(1) COLLATE utf8_bin DEFAULT NULL COMMENT '支付类型,1、在线支付、0 货到付款',
`create_time` datetime DEFAULT NULL COMMENT '订单创建时间',
`update_time` datetime DEFAULT NULL COMMENT '订单更新时间',
`pay_time` datetime DEFAULT NULL COMMENT '付款时间',
`consign_time` datetime DEFAULT NULL COMMENT '发货时间',
`end_time` datetime DEFAULT NULL COMMENT '交易完成时间',
`username` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '用户名称',
`recipients` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '收货人',
`recipients_mobile` varchar(12) COLLATE utf8_bin DEFAULT NULL COMMENT '收货人手机',
`recipients_address` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '收货人地址',
`weixin_transaction_id` varchar(30) COLLATE utf8_bin DEFAULT NULL COMMENT '交易流水号',
`order_status` int(1) DEFAULT NULL COMMENT '订单状态,0:未完成,1:已完成,2:已退货',
`pay_status` int(1) DEFAULT NULL COMMENT '支付状态,0:未支付,1:已支付,2:支付失败',
`is_delete` int(1) DEFAULT NULL COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `create_time` (`create_time`),
KEY `status` (`order_status`),
KEY `payment_type` (`pay_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
订单明细表:
CREATE TABLE `order_sku` (
`id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT 'ID',
`sku_id` varchar(60) COLLATE utf8_bin DEFAULT NULL COMMENT 'SKU_ID',
`order_id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '订单ID',
`name` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '商品名称',
`price` int(20) DEFAULT NULL COMMENT '单价',
`num` int(10) DEFAULT NULL COMMENT '数量',
`money` int(20) DEFAULT NULL COMMENT '总金额',
`image` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '图片地址',
PRIMARY KEY (`id`),
KEY `item_id` (`sku_id`),
KEY `order_id` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
工程搭建
1)api工程
创建mall-order-api,并创建com.xz.mall.order.model.Order和com.xz.mall.order.model.OrderSku
Order:
@Data
@AllArgsConstructor
@NoArgsConstructor
//MyBatisPlus表映射注解
@TableName(value = "order_info")
public class Order implements Serializable {
@TableId(type = IdType.ASSIGN_ID)
private String id;
private String payType;
private Date createTime;
private Date updateTime;
private Date payTime;
private Date consignTime;
private Date endTime;
private String username;
private String recipients;
private String recipientsMobile;
private String recipientsAddress;
private String weixinTransactionId;
private Integer totalNum;
private Integer moneys;
private Integer orderStatus;
private Integer payStatus;
private Integer isDelete;
//购物车ID集合
@TableField(exist = false)
private List<String> cartIds;
}
OrderSku:
@Data
@AllArgsConstructor
@NoArgsConstructor
//MyBatisPlus表映射注解
@TableName(value = "order_sku")
public class OrderSku {
@TableId(type = IdType.ASSIGN_ID)
private String id;
private String image;
private String skuId;
private String orderId;
private String name;
private Integer price;
private Integer num;
private Integer money;
}
2)Service工程
创建mall-order-service工程,坐标如下:
<groupId>com.xz.mall</groupId>
<version>0.0.1-SNAPSHOT</version>
<artifactId>mall-order-service</artifactId>
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mall-service</artifactId>
<groupId>com.xz.mall</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mall-order-service</artifactId>
<dependencies>
<dependency>
<groupId>com.xz.mall</groupId>
<artifactId>mall-order-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--goodsapi-->
<dependency>
<groupId>com.xz.mall</groupId>
<artifactId>goods-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.xz.mall</groupId>
<artifactId>mall-cart-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
bootstrap.yml:
server:
port: 8089
spring:
application:
name: mall-order
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.xxx.xxx:3306/shop_order?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 123456
cloud:
nacos:
config:
file-extension: yaml
server-addr: 192.168.xxx.xxx:8848
discovery:
#Nacos的注册地址
server-addr: 192.168.xxx.xxx:8848
main:
allow-bean-definition-overriding: true
feign:
client:
config:
default:
connectTimeout: 10000
readTimeout: 600000
# ====================MybatisPlus====================
mybatis-plus:
mapper-locations: mapper/*.xml
type-aliases-package: com.xz.mall.*.model
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#日志配置
logging:
pattern:
console: "%msg%n"
启动类创建com.xz.mall.MallOrderApplication
@SpringBootApplication
@MapperScan(basePackages = "com.xz.mall.order.mapper")
@EnableFeignClients(basePackages = {"com.xz.mall.goods.feign","com.xz.mall.cart.feign"})
public class MallOrderApplication {
public static void main(String[] args) {
SpringApplication.run(MallOrderApplication.class,args);
}
}
总结
本篇主要介绍了一下下单功能实现时必要的表结构分析,还有具体的单体服务搭建。下一篇主要介绍一下库存递减功能实现,还有具体的下单操作功能实现。