zhouhui.jiang

初始化代码

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