“简易版”抖音商城
本项目涉及到的技术框架为:SpringBoot、SpringAI、SpringCloudGateway、SpringCloud、SpringCloudAlibaba、MySQL、MyBatisPlus、Redis、Nacos、OpenFeign、Seata、RabbitMQ、Elasticsearch、Sentinel。
可以参考docker-compose文件的配置来快速搭建第三方技术框架
本项目的接口文档定义可以参考接口文档.md
easy-douyin-ecommerce-project
├── ecommerce-ai-service # AI微服务
├── ecommerce-auth-util # 权限认证工具
├── ecommerce-cart-service # 购物车微服务
├── ecommerce-checkout-service # 结算微服务
├── ecommerce-common # 微服务共用模块(如异常拦截、公共配置等)
├── ecommerce-feign-api # 微服务远程调用接口定义
├── ecommerce-gateway # 网关
├── ecommerce-order-service # 订单微服务
├── ecommerce-payment-service # 支付微服务
├── ecommerce-product-service # 商品微服务
├── ecommerce-user-service # 用户微服务
├── pom.xml # 整体项目Maven配置
├── project-description # 项目说明文件夹
└── README.md
本项目的RabbitMQ支付消息队列模型为:
定时取消订单和定时取消支付都是使用的RabbitMQ延迟队列机制,即为:交换机->队列->死信交换机->死信队列的结构
本项目的elasticsearch索引结构的定义为:
PUT /products
{
"mappings": {
"properties": {
"id": { "type": "keyword" },
"name": { "type": "text", "analyzer": "ik_max_word" },
"description": { "type": "text", "analyzer": "ik_max_word" },
"price": { "type": "float" },
"sold": { "type": "integer" },
"stock": { "type": "integer" },
"merchantName": { "type": "keyword" },
"categories": { "type": "keyword" },
"status": { "type": "integer" },
"createTime": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ss"
},
"updateTime": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ss"
}
}
}
}可以通过修改父项目的pom.xml文件的配置来定义所有第三方框架的相关信息,配置的格式示例:
<properties>
<env>dev1</env>
<database.host>vlsmb-kotori.local</database.host>
<database.port>3306</database.port>
<database.user>root</database.user>
<database.pwd>root</database.pwd>
<sentinel.dashboard>vlsmb-kotori.local:8090</sentinel.dashboard>
<nacos.dashboard>vlsmb-kotori.local:8848</nacos.dashboard>
<redis.cluster-addr>vlsmb-kotori.local:7001,vlsmb-kotori.local:7002,vlsmb-kotori.local:7003,vlsmb-kotori.local:7004,vlsmb-kotori.local:7005,vlsmb-kotori.local:7006</redis.cluster-addr>
<rabbitmq.host>vlsmb-kotori.local</rabbitmq.host>
<rabbitmq.port>5672</rabbitmq.port>
<rabbitmq.user>guest</rabbitmq.user>
<rabbitmq.pwd>guest</rabbitmq.pwd>
<elasticsearch.host>vlsmb-kotori.local</elasticsearch.host>
<elasticsearch.port>9200</elasticsearch.port>
</properties>所有的微服务都会继承父项目中的框架配置信息,不需要额外改动微服务的配置文件。
项目所使用的第三方框架可以使用docker-compose搭建。docker-compose文件里有一个环境变量HOST_IP,在运行docker compose前需要对这个环境变量进行赋值,或者直接换成当前主机IP:export $HOST_IP=your_ip。
sentinel构建的是它的发行版jar包,对应的DockerFile为:
FROM openjdk:11-jre-slim
WORKDIR /app
COPY sentinel-dashboard-1.8.6.jar sentinel-dashboard.jar
EXPOSE 8090
ENTRYPOINT ["java", "-Dserver.port=8090", "-Dcsp.sentinel.dashboard.server=localhost:8090", "-Dproject.name=sentinel-dashboard", "-jar", "sentinel-dashboard.jar"]准备好以上信息就可以进行打包了:
docker compose up -d可能存在redis集群未正常搭建的情况,这时候先运行
docker exec -it redis-node-1 redis-cli -p 6379 cluster nodes查看集群信息,如果只有一个节点,或者六个节点里有fail、not connected情况,需要手动重新创建集群
docker exec -it redis-node-1 redis-cli --cluster create \
${HOST_IP}:7001 \
${HOST_IP}:7002 \
${HOST_IP}:7003 \
${HOST_IP}:7004 \
${HOST_IP}:7005 \
${HOST_IP}:7006 \
--cluster-replicas 1 --cluster-yes启动之后需要将本项目使用的nacos配置信息添加到nacos的DEFAULT_GROUP中,以及将数据库表导入到容器内的mysql中。
认证中心
- 分发身份令牌
- 续期身份令牌
- 校验身份令牌
用户服务
- 创建用户
- 登录
- 用户登出
- 删除用户
- 更新用户
- 获取用户身份信息
商品服务
- 创建商品
- 修改商品信息
- 删除商品
- 查询商品信息(单个商品、批量商品)
购物车服务
- 创建购物车
- 清空购物车
- 获取购物车信息
订单服务
- 创建订单
- 修改订单信息
- 订单定时取消
结算
- 订单结算
支付
- 取消支付
- 定时取消支付
- 支付
AI大模型
- 订单查询
- 模拟自动下单
