zhouhui.jiang

初始化代码

# 编译输出
target/
dist/
build/
out/
# 依赖包
node_modules/
.m2/
# IDE文件
.idea/
.vscode/
*.iml
*.ipr
*.iws
.settings/
.project
.classpath
# 操作系统文件
.DS_Store
Thumbs.db
*.swp
*.swo
*~
# 日志文件
*.log
logs/
log/
# 临时文件
*.tmp
*.temp
.tmp/
.temp/
# 环境配置文件
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# 数据库文件
*.db
*.sqlite
*.sqlite3
# 备份文件
*.bak
*.backup
# 缓存文件
.cache/
.parcel-cache/
.eslintcache
# 覆盖率报告
coverage/
.nyc_output/
# 测试文件
test-results/
playwright-report/
# Docker文件
.dockerignore
# 其他
*.pid
*.seed
*.pid.lock
.npm
.yarn-integrity
# Apple经销商ERP系统对接项目
## 项目简介
Apple经销商ERP系统对接项目是一个专门为Apple经销商设计的ERP系统集成平台,实现与Apple系统的数据对接,提供订单管理、出库查询、发票管理、返利管理、异常处理等核心功能。
## 项目结构
```
apple-dealer-erp/
├── 📁 docs/ # 项目文档
│ ├── 📁 requirements/ # 需求文档
│ ├── 📁 design/ # 设计文档
│ ├── 📁 development/ # 开发文档
│ ├── 📁 deployment/ # 部署文档
│ └── 📁 maintenance/ # 维护文档
├── 📁 database/ # 数据库相关
│ ├── 📁 scripts/ # 数据库脚本
│ ├── 📁 backup/ # 备份目录
│ └── 📁 docs/ # 数据库文档
├── 📁 scripts/ # 脚本工具
├── 📁 docker/ # Docker配置
├── 📁 tests/ # 测试目录
├── 📁 logs/ # 日志目录
├── 📁 config/ # 配置文件
├── 📁 backend/ # 后端项目(待开发)
├── 📁 frontend/ # 前端项目(待开发)
└── 📄 docker-compose.yml # 整体容器编排
```
## 技术栈
### 后端技术栈
- **框架**: Spring Boot 2.7.x
- **数据库**: MySQL 8.0
- **缓存**: Redis 6.0
- **ORM**: MyBatis Plus 3.5.x
- **安全**: Spring Security + JWT
- **构建工具**: Maven 3.8.x
- **JDK版本**: OpenJDK 8
### 前端技术栈
- **框架**: Vue 3.3+
- **构建工具**: Vite 4.0+
- **UI组件**: Element Plus 2.3+
- **状态管理**: Pinia 2.1+
- **路由**: Vue Router 4.2+
- **HTTP客户端**: Axios 1.4+
- **图表**: ECharts 5.4+
- **语言**: TypeScript 5.0+
## 核心功能模块
### 业务功能
- **订单管理**: 订单录入、查询、修改、删除
- **出库查询**: 出库单查询、状态跟踪
- **发票管理**: 发票录入、查询、统计
- **返利管理**: 返利计算、查询、统计
- **异常处理**: 异常工单创建、处理、跟踪
- **产品管理**: 产品信息维护
- **经销商管理**: 经销商信息维护
### 系统管理
- **用户管理**: 用户CRUD、密码管理
- **角色管理**: 角色CRUD、权限分配
- **菜单管理**: 菜单树结构、权限控制
- **字典管理**: 数据字典维护
- **日志管理**: 操作日志、登录日志
## 开发计划
项目采用两周开发计划,详细内容请参考:
- [两周开发计划](docs/development/Apple经销商ERP系统对接项目-两周开发计划.md)
- [前端开发计划](docs/development/Apple经销商ERP前端开发计划.md)
## 快速开始
### 环境要求
- JDK 8+
- Node.js 16+
- MySQL 8.0+
- Redis 6.0+
- Maven 3.8+
### 开发环境搭建
1. 克隆项目
2. 配置数据库连接
3. 执行初始化脚本
4. 启动后端服务
5. 启动前端服务
详细步骤请参考 [部署指南](docs/deployment/部署指南.md)
## 文档说明
- **需求文档**: [Apple 经销商 ERP 系统对接项目](docs/requirements/Apple%20经销商%20ERP%20系统对接项目.md)
- **技术架构**: [技术架构设计](docs/design/技术架构设计.md)
- **数据库设计**: [数据库设计文档](docs/design/数据库设计文档.md)
- **开发计划**: [两周开发计划](docs/development/Apple经销商ERP系统对接项目-两周开发计划.md)
## 许可证
本项目采用 MIT 许可证,详情请参考 [LICENSE](LICENSE) 文件。
## 联系方式
如有问题,请联系开发团队。
version: '3.8'
services:
# MySQL数据库
mysql:
image: mysql:8.0
container_name: apple-erp-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: MySQL@123
MYSQL_DATABASE: apple_erp
MYSQL_USER: apple_erp
MYSQL_PASSWORD: apple_erp123
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./database/scripts:/docker-entrypoint-initdb.d
command: --default-authentication-plugin=mysql_native_password
networks:
- apple-erp-network
# Redis缓存
redis:
image: redis:6.0-alpine
container_name: apple-erp-redis
restart: always
ports:
- "6379:6379"
volumes:
- redis_data:/data
command: redis-server --appendonly yes
networks:
- apple-erp-network
# 后端服务
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: apple-erp-backend
restart: always
ports:
- "8080:8080"
environment:
SPRING_PROFILES_ACTIVE: docker
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/apple_erp?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: apple_erp
SPRING_DATASOURCE_PASSWORD: apple_erp123
SPRING_REDIS_HOST: redis
SPRING_REDIS_PORT: 6379
depends_on:
- mysql
- redis
volumes:
- ./logs/backend:/app/logs
- ./config/development:/app/config
networks:
- apple-erp-network
# 前端服务
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: apple-erp-frontend
restart: always
ports:
- "80:80"
depends_on:
- backend
volumes:
- ./logs/frontend:/var/log/nginx
networks:
- apple-erp-network
# Nginx反向代理
nginx:
image: nginx:alpine
container_name: apple-erp-nginx
restart: always
ports:
- "443:443"
volumes:
- ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./docker/nginx/ssl:/etc/nginx/ssl
- ./logs/nginx:/var/log/nginx
depends_on:
- frontend
- backend
networks:
- apple-erp-network
volumes:
mysql_data:
driver: local
redis_data:
driver: local
networks:
apple-erp-network:
driver: bridge
# API 测试指南
## 测试统一响应格式的API接口
### 1. 登录接口测试
**请求URL**: `POST http://localhost:8083/api/auth/login`
**请求体**:
```json
{
"username": "admin",
"password": "password"
}
```
**预期响应** (统一响应格式):
```json
{
"code": 200,
"message": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzUxMiJ9...",
"refreshToken": "eyJhbGciOiJIUzUxMiJ9...",
"username": "admin"
}
}
```
### 2. 刷新令牌接口测试
**请求URL**: `POST http://localhost:8083/api/auth/refresh`
**请求体**:
```json
{
"refreshToken": "从登录响应中获取的refreshToken"
}
```
**预期响应**:
```json
{
"code": 200,
"message": "令牌刷新成功",
"data": {
"token": "eyJhbGciOiJIUzUxMiJ9...",
"refreshToken": "eyJhbGciOiJIUzUxMiJ9...",
"username": "admin"
}
}
```
### 3. 获取用户信息接口测试
**请求URL**: `GET http://localhost:8083/api/auth/userinfo`
**请求头**:
```
Authorization: Bearer {从登录响应中获取的token}
```
**预期响应**:
```json
{
"code": 200,
"message": "获取用户信息成功",
"data": {
"username": "admin",
"authorities": [
{
"authority": "ROLE_ADMIN"
}
]
}
}
```
### 4. 登出接口测试
**请求URL**: `POST http://localhost:8083/api/auth/logout`
**预期响应**:
```json
{
"code": 200,
"message": "登出成功",
"data": null
}
```
## 改进点
1. **类型安全**: 使用强类型对象替代Map,提供编译时类型检查
2. **参数验证**: 使用@Valid注解和Bean Validation进行参数验证
3. **统一响应**: 使用ApiRes统一响应格式,包含code、message、data字段
4. **简化命名**: 使用简化的类名(Req/Res后缀),代码更简洁
5. **文档完善**: 使用Swagger注解提供完整的API文档
6. **代码可读性**: 代码更加清晰,易于维护
7. **错误处理**: 统一的错误响应格式,便于前端处理
## 验证清单
- [ ] 登录接口返回统一响应格式(ApiRes<LoginRes>
- [ ] 参数验证正常工作(空用户名/密码会返回验证错误)
- [ ] 刷新令牌接口正常工作,返回统一响应格式
- [ ] 用户信息接口正常工作,返回统一响应格式
- [ ] 登出接口正常工作,返回统一响应格式
- [ ] 错误响应格式统一(包含code、message、data字段)
- [ ] Swagger文档正确显示新的统一响应格式
- [ ] 所有类名已成功简化为Req/Res后缀