# Digital-Goods-Trading-System **Repository Path**: SxiHash/Digital-Goods-Trading-System ## Basic Information - **Project Name**: Digital-Goods-Trading-System - **Description**: 基于SpringBoot+Vue+Mybatis+Redis的数字商品交易系统。分为管理员、审核员、用户(游客、认证用户)等多个角色参与。基于SpringBoot与Mybatis构建交易平台基础框架,使用Vue + Vant完成用户页面交互与前端业务逻辑,使用redis构建Controller层与Dao层的缓存中介。保证服务的正常有效运行。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-22 - **Last Updated**: 2026-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Digital-Goods-Trading-System ## 项目介绍 基于 SpringBoot + Vue + MybatisPlus + Redis 的数字商品交易系统。系统采用前后端分离架构,支持管理员、审核员、客服、用户等多角色参与,实现了数字商品(压缩包、图片、音频文件等)的发布、审核、交易全流程管理。 ## 技术栈 ### 后端 - **Spring Boot 3.x** - 基础框架 - **MyBatis Plus** - ORM 框架 - **MySQL 8.0** - 关系型数据库 - **Redis** - 缓存、消息存储、发布订阅 - **WebSocket** - 实时消息推送 - **Spring Security** - 安全框架 ### 前端 - **Vue 3** - 前端框架 - **Vant UI** - 移动端 UI 组件库 - **Element Plus** - 管理端 UI 组件库 - **Axios** - HTTP 请求库 - **Vue Router** - 路由管理 ### 其他 - **Nginx** - 反向代理、静态资源服务 - **Maven** - 项目构建管理 - **npm** - 前端包管理 ## 系统架构 ``` ┌─────────────────────────────────────────────────────────┐ │ Nginx │ │ (反向代理 + 静态资源) │ └─────────────────────────────────────────────────────────┘ │ ┌───────────────┼───────────────┐ ▼ ▼ ▼ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Vue 前端 │ │ Business │ │ File │ │ (用户端/管理端)│ │ Service │ │ Service │ │ Port: 5173 │ │ Port: 8080 │ │ Port: 8081 │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ ┌───────────────┼───────────────┘ ▼ ▼ ┌──────────────┐ ┌──────────────┐ │ MySQL │ │ Redis │ │ Port: 3306 │ │ Port: 6379 │ └──────────────┘ └──────────────┘ ``` ## 功能模块 ### 用户端功能 #### 游客 - 浏览商品列表 - 查看商品详情 - 注册/登录 #### 普通用户 - 个人信息管理(头像、昵称、密码等) - 浏览商品、搜索商品 - 收藏商品 - 订阅作者 - 购物车管理 - 订单管理(购买、支付、查看订单) - 私信功能(实时消息) - 系统通知接收 - 提交反馈/举报 #### 认证用户(实名认证后) - 普通用户所有功能 - 发布数字商品 - 商品管理(编辑、上下架) - 订单管理(查看买家订单) - 设置重复购买 ### 管理端功能 #### 管理员 - 用户管理(查看、禁用、启用) - 商品管理(审核、删除) - 订单管理 - 分类管理 - 反馈管理 - 积分管理 - 网盘管理(文件管理、OSS 配置) - 通知管理(发布通知、通知列表) #### 审核员 - 商品审核(通过/驳回) #### 客服 - 处理用户反馈 - 处理举报投诉 ## 核心功能实现 ### 1. 实时消息系统 - **WebSocket 连接**:用户登录后自动建立 WebSocket 连接 - **实时消息推送**:用户之间发送消息实时推送给接收方 - **系统通知**:管理员发布通知,通过 Redis Pub/Sub 推送给所有在线用户 - **消息存储**:使用 Redis 存储聊天消息和聊天室信息 ### 2. 商品缓存 - 使用 Redis 缓存热门商品数据 - 缓存穿透、击穿、雪崩防护 - 分布式锁保证缓存一致性 ### 3. 订单系统 - 支持购物车批量下单 - 订单状态流转(待支付 → 已完成/已取消) - 订单快照保存商品信息 ### 4. 文件服务 - 支持本地存储和 OSS 云存储 - 文件上传、下载、删除 - 图片压缩和格式转换 ## 项目结构 ``` Digital-Goods-Trading-System/ ├── digital-goods-platform/ # 后端项目 │ ├── business-service/ # 业务服务模块 │ │ ├── src/main/java/org/sxi/business/ │ │ │ ├── config/ # 配置类 │ │ │ ├── constant/ # 常量定义 │ │ │ ├── controller/ # 控制器 │ │ │ ├── dto/ # 数据传输对象 │ │ │ ├── entity/ # 实体类 │ │ │ ├── mapper/ # MyBatis Mapper │ │ │ ├── service/ # 服务层 │ │ │ └── websocket/ # WebSocket 处理器 │ │ └── src/main/resources/ │ │ ├── mapper/ # MyBatis XML │ │ ├── sql/ # SQL 脚本 │ │ └── application.yml # 配置文件 │ ├── file-service/ # 文件服务模块 │ └── common/ # 公共模块 ├── web-view-platform/ # 前端项目 │ ├── src/ │ │ ├── api/ # API 接口 │ │ ├── router/ # 路由配置 │ │ ├── utils/ # 工具类 │ │ │ ├── eventBus.js # 事件总线 │ │ │ ├── websocket.js # WebSocket 管理 │ │ │ ├── systemNotification.js # 系统通知管理 │ │ │ └── messageNotification.js # 消息通知管理 │ │ └── views/ # 页面组件 │ │ ├── mobile/ # 移动端页面 │ │ └── admin/ # 管理端页面 │ └── nginx.conf # Nginx 配置 └── README.md ``` ## 快速开始 ### 环境要求 - JDK 17+ - Node.js 16+ - MySQL 8.0+ - Redis 6.0+ - Maven 3.6+ - Nginx(可选) ### 后端启动 1. 创建数据库 ```sql CREATE DATABASE digital_goods_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 修改配置文件 ```yaml # digital-goods-platform/business-service/src/main/resources/application.yml spring: datasource: url: jdbc:mysql://localhost:3306/digital_goods_db username: root password: your_password data: redis: host: localhost port: 6379 ``` 3. 启动后端服务 ```bash cd digital-goods-platform mvn clean install cd business-service mvn spring-boot:run ``` ### 前端启动 1. 安装依赖 ```bash cd web-view-platform npm install ``` 2. 启动开发服务器 ```bash npm run dev ``` 3. 访问系统 - 用户端:http://localhost:5173 - 管理端:http://localhost:5173/back-login ### Nginx 部署(生产环境) 1. 构建前端 ```bash npm run build ``` 2. 配置 Nginx ```nginx server { listen 80; server_name localhost; # 前端静态资源 location / { root /path/to/web-view-platform/dist; try_files $uri $uri/ /index.html; } # 后端 API 代理 location /api/ { proxy_pass http://localhost:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } # WebSocket 代理 location /ws/ { proxy_pass http://localhost:8080/ws/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } ``` ## 数据库设计 ### 核心表结构 | 表名 | 描述 | |------|------| | sys_user | 用户表 | | bus_goods | 商品表 | | bus_goods_image | 商品图片表 | | bus_order | 订单表 | | bus_cart | 购物车表 | | bus_favorite | 收藏表 | | bus_subscribe | 订阅表 | | bus_feedback | 反馈表 | | bus_audit_record | 审核流水表 | | bus_points | 积分表 | 详细表结构请参考 [README.md](./digital-goods-platform/business-service/src/main/resources/sql/) ## API 文档 ### 用户端 API - `POST /api/sys-user/login` - 用户登录 - `POST /api/sys-user/register` - 用户注册 - `GET /api/bus-goods/list` - 商品列表 - `GET /api/bus-goods/{id}` - 商品详情 - `POST /api/bus-order/create` - 创建订单 - `GET /api/bus-order/list` - 订单列表 ### 管理端 API - `GET /api/sys-user/page` - 用户分页查询 - `PUT /api/sys-user/status/{id}` - 更新用户状态 - `GET /api/bus-goods/audit/list` - 待审核商品列表 - `POST /api/bus-goods/audit` - 审核商品 - `POST /api/bus-chat/send-system-notification` - 发送系统通知 ### WebSocket - `ws://localhost:8080/ws/chat?userId={userId}` - WebSocket 连接 ## 开发规范 ### 代码规范 - 后端遵循阿里巴巴 Java 开发手册 - 前端遵循 Vue 官方风格指南 - 使用 ESLint + Prettier 格式化代码 ### Git 提交规范 - `feat`: 新功能 - `fix`: 修复 bug - `docs`: 文档更新 - `style`: 代码格式调整 - `refactor`: 重构代码 - `test`: 测试相关 - `chore`: 构建/工具相关 ## 注意事项 1. **安全性** - 密码使用 BCrypt 加密存储 - 敏感接口需要登录认证 - SQL 注入防护(MyBatis Plus) 2. **性能优化** - 热门数据 Redis 缓存 - 图片懒加载 - 分页查询 3. **扩展性** - 模块化设计 - 支持多种文件存储方式 - 易于集成第三方支付 ## 未来规划 - [ ] 集成支付宝/微信支付 - [ ] 添加活动功能(限时折扣、满减活动) - [ ] 实现博客功能 - [ ] 添加验证码登录 - [ ] 支持群聊功能 - [ ] 移动端 App(React Native/Flutter) ## 许可证 MIT License ## 联系方式 如有问题或建议,请提交 Issue 或 Pull Request。