23网络工程 尹智灏
基于 Spring Boot 3.5 + Thymeleaf + Spring Security + JPA + Flyway + MySQL 8.4 的电商实验项目。
核心功能:用户注册/登录(含省份城市画像)、商品浏览与购物车、下单/支付/取消(含库存扣减与乐观锁)、三级角色权限(CUSTOMER / SALES / ADMIN)。 Sales 支持商品与类目 CRUD、CSV 导出、操作日志查看;Admin 管理 Sales 账号、订单管理、批量数据导入导出(CSV/TOML/ZIP)、数据分析中心(RFM 画像、趋势预测、异常监控、排行榜)、推荐系统(浏览关联 + Item-Based CF)。
已实现阶段:
- Phase 1-5:用户认证授权、角色权限、商品类目管理、订单工作流、行为数据采集
- Phase 6:数据分析与推荐系统 — RFM 用户画像、销售趋势与预测、异常检测、排行榜、浏览关联推荐 + Item-Based 协同过滤、ECharts 可视化大屏
- Phase 7:完整数据导入/导出(13 种数据,含 6 张分析结果表),批量 ZIP 导出/导入,TOML 映射导入
src/main/java/org/self4215/
├── config/ # SecurityConfig、MethodSecurity、全局异常、时间配置
├── controller/ # MVC 控制器 + REST API(Product/Cart/Order/Profile + Export + Analytics + Recommendation)
├── entity/ # JPA 实体(User/Product/Order/CartItem/Category/OperationLog + 6 分析实体)
├── exception/ # AppException + AppErrorCode 枚举
├── repository/ # Spring Data JPA 仓库(含分页查询、聚合统计、分析结果表)
├── service/ # 业务逻辑(User/Order/Product/Cart/Log + Analytics + Recommendation + DataImport)
└── util/ # ClientIpResolver(支持 X-Forwarded-For 反向代理)
src/main/resources/
├── db/migration/ # Flyway 迁移脚本 (V1~V8)
├── import-templates/# CSV/TOML 导入模板(13 种数据)
├── templates/ # Thymeleaf 模板(顾客端、admin/、sales/、error/、fragments、products/detail)
└── application.properties
-
拉取镜像
在终端中运行以下命令:
docker pull ghcr.io/self4215/javawebdesignlesson_exp_ecommerce_02:latest- 创建配置文件
(1) 创建 .env 文件
为了安全起见,我们将敏感配置放入环境变量中。
在任意目录下创建一个名为 .env 的文件,并填入以下内容(或者参考源码内的 .env.example 文件):
# 务必在生产环境中修改以下密码
# Database Configuration
MYSQL_DATABASE=ecommerce_db
MYSQL_ROOT_PASSWORD=your_secure_password
# Application Database Connection
DB_HOST=mysql
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=your_secure_password(2) 第二步:创建 docker-compose.yml 文件
在同一目录下创建一个名为 docker-compose.yml 的文件,并填入以下内容:
version: '3.8'
services:
mysql:
image: mysql:8.4
container_name: ecommerce-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
volumes:
- mysql-data:/var/lib/mysql
networks:
- ecommerce-network
app:
image: ghcr.io/self4215/javawebdesignlesson_exp_ecommerce_02:latest
container_name: ecommerce-app
restart: always
ports:
- "8080:8080"
environment:
- DB_HOST=${DB_HOST}
- DB_PASSWORD=${DB_PASSWORD}
depends_on:
- mysql
networks:
- ecommerce-network
networks:
ecommerce-network:
volumes:
mysql-data:-
启动服务
在该目录下,运行以下命令:
docker-compose up -d-
访问项目
等待服务启动完成后,访问地址:
http://localhost:8080
本项目采用 MIT 许可证。