Important
本项目是由"重生之我在青训营敲代码"团队(队伍编号:115)开发
抖音商城是一个基于Spring Boot的电商平台后端系统,采用前后端分离架构。后端提供RESTful API接口,前端使用Vue3进行开发。本项目实现了完整的电商业务流程,包括用户管理、商品管理、购物车、订单处理等核心功能。
- 开发语言:Java 8
- 项目框架:Spring Boot 2.7.12
- 数据存储:MySQL 8.0 + Redis 6.0
- 项目管理:Maven 3.6+
- 数据库连接池:HikariCP
- ORM框架:MyBatis
- 安全框架:Spring Security + JWT
- 分布式缓存:Redisson
- 定时任务:Spring Task
- 用户表(users)
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE,
phone VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
status ENUM('active', 'inactive') DEFAULT 'active'
);
- 商品表(products)
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT,
price DECIMAL(10, 2) NOT NULL,
stock INT NOT NULL,
image_url varchar(2048) DEFAULT NULL COMMENT '商品展示图',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
status ENUM('active', 'inactive') DEFAULT 'active'
);
- 购物车表(carts)
CREATE TABLE carts (
cart_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX (user_id)
);
- 购物车商品表(cart_items)
CREATE TABLE cart_items (
cart_item_id INT AUTO_INCREMENT PRIMARY KEY,
cart_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL,
total_price DECIMAL(10, 2) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX (cart_id),
INDEX (product_id)
);
- 订单表(orders)
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
total_amount DECIMAL(10, 2) NOT NULL,
status ENUM('PAY_WAIT', 'HAVE_PAID', 'CANCELLED') DEFAULT 'PAY_WAIT',
pay_type VARCHAR(20),
pay_time TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
- 创建商品: POST
/api/product/create
- 修改商品: PUT
/api/product/update
- 删除商品: DELETE
/api/product/delete
- 查询商品: GET
/api/product/get
- 商品图片上传: POST
/api/product/pic/upload
创建商品:
POST /api/product/create
Content-Type: multipart/form-data
param: {
"name": "测试商品",
"description": "商品描述",
"price": "99.99",
"stock": "100"
}
productPic: [文件]
- 添加商品: POST
/api/cart/add
- 移除商品: DELETE
/api/cart/items/{cartItemId}
- 查询购物车: GET
/api/cart/user/{userId}
添加商品到购物车:
POST /api/cart/add
{
"userId": 1,
"productId": 1,
"quantity": 2
}
- 创建订单: POST
/api/order/create
- 查询历史订单: GET
/api/order/history
- 取消订单: POST
/api/order/cancel
创建订单:
POST /api/order/create
{
"userId": 1,
"cartId": 1,
"cartItemDtos": [{
"cartItemId": 1,
"productId": 1,
"quantity": 2,
"totalPrice": 199.98
}],
"payType": "ALIPAY"
}
- JDK 1.8+
- Maven 3.6+
- MySQL 8.0+
- Redis 6.0+
- IDE推荐:IntelliJ IDEA
- 创建数据库:
CREATE DATABASE douyin_mall DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 执行初始化SQL脚本:
- 表结构:
/public/docs/mysql/douyin-mall-V1.1.0.sql
- 测试数据:
/public/docs/mysql/250124_douyin_mall_data_injection.sql
修改application-dev.yml
:
spring:
redis:
host: localhost
port: 6379
password: your_password
database: 0
- 后端跨域配置(已在WebConfig中配置):
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:5173")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.allowCredentials(true);
}
}
- 前端API配置:
在前端项目的
.env
文件中配置后端接口地址:
VITE_API_BASE_URL=http://localhost:8080/api
- 克隆项目:
git clone https://github.com/ChanMeng666/douyin-mall.git
cd douyin-mall
- 修改配置:
编辑
src/main/resources/application-dev.yml
,配置数据库连接:
spring:
datasource:
username: your_username
password: your_password
url: jdbc:mysql://localhost:3306/douyin_mall?useUnicode=true&characterEncoding=utf8
- 启动项目:
mvn spring-boot:run
- 启动前端项目:
cd ../douyin-mall-frontend
npm install
npm run dev
直接使用IDE运行或使用Maven命令:
mvn spring-boot:run -Dspring.profiles.active=dev
- 打包:
mvn clean package -Dmaven.test.skip=true
- 运行:
java -jar -Dspring.profiles.active=prod target/douyin-mall-1.0-SNAPSHOT.jar
- 构建镜像:
docker build -t douyin-mall .
- 运行容器:
docker run -d -p 8080:8080 \
-e SPRING_PROFILES_ACTIVE=prod \
-e MYSQL_HOST=your_mysql_host \
-e REDIS_HOST=your_redis_host \
douyin-mall
- 代码规范参考:
public/docs/仿抖音商城项目代码风格规范书-water-free.md
- API接口文档:
public/docs/仿抖音商城项目开发文档-water-free.md
- 数据流规范:
public/docs/数据流规范示例图/数据流规范示意图.md
模块 | 功能 | 负责人 |
---|---|---|
写文档,数据库表设计,接入 AI 大模型 | water | |
认证中心 | 实现身份令牌的分发、续期和校验功能 | 苏泰宇 |
用户信息模块 | 注册、登录(验证码登录、密码登录)、删除用户信息等 | 苏泰宇 |
商品信息模块 | 创建、删除、修改、查询、展示等 | 5 |
购物车模块 | 创建、删除、添加、查询等 | chan |
订单模块 | 创建订单、取消订单、超时取消功能,将订单分为已完成、待支付等 | 邓申桐 |
结算与支付 | 结算、支付和取消支付功能 | 魏鑫 |
本项目采用Apache-2.0协议开源,详情请参阅LICENSE文件。