Apple经销商ERP系统对接项目-两周开发计划.md
20.4 KB
Apple经销商ERP系统对接项目 - 两周开发计划
项目概述
从零开始构建Apple经销商ERP系统对接项目,实现订单管理、出库查询、发票管理、返利看板等核心功能。项目采用简化架构设计,专注于核心业务功能开发。
技术栈
- 后端:Spring Boot 2.7.x + MyBatis Plus 3.5.x + Redis 6.0 + MySQL 8.0
- 前端:Vue 3 + TypeScript + Element Plus + Vite + Pinia + Vue Router 4
- 权限控制:Spring Security + JWT + RBAC权限模型
- 通知功能:邮件通知(JavaMail)、短信通知(阿里云短信服务)
- 文件处理:Apache POI(Excel导入导出)、文件上传下载
- 部署:Docker + Docker Compose
- 开发工具:Cursor AI
- JDK版本:OpenJDK 8
第一周开发计划
Day 1(周一):项目初始化与基础架构搭建
目标:从零开始创建项目,搭建基础架构和数据库
上午(4小时)
- 创建Spring Boot项目(使用Spring Initializr)
- 配置项目依赖(MyBatis Plus、Redis、MySQL、Security等)
- 创建Vue 3前端项目(使用Vite + TypeScript)
- 配置前端依赖(Element Plus、Pinia、Vue Router、Axios等)
- 配置开发环境(OpenJDK 8、Maven 3.6+、MySQL 8.0、Redis 6.0)
下午(4小时)
- 创建数据库apple_erp,执行数据库设计文档中的建表脚本
- 执行初始化数据脚本,导入基础数据
- 配置Spring Boot基础配置(数据库连接、Redis配置)
- 创建基础项目结构(Controller、Service、Mapper、Entity)
- 验证数据库连接和基础数据
交付物:
- Spring Boot项目创建完成
- Vue 3前端项目创建完成
- 数据库初始化完成(19张表 + 完整测试数据)
- 基础项目架构搭建完成
Day 2(周二):基础架构组件与权限体系开发
目标:搭建基础架构组件,开发权限控制体系
上午(4小时)
-
创建基础架构组件
- 统一响应结果类(Result)
- 统一异常处理(GlobalExceptionHandler)
- 分页查询工具类(PageHelper)
- 基础Controller、Service、Mapper接口
-
开发JWT认证机制
- JWT工具类(Token生成、验证、解析)
- 用户认证拦截器(AuthenticationInterceptor)
- 登录状态管理
- Token刷新机制
下午(4小时)
-
开发用户管理模块
- 创建SysUser实体类(用户基础信息、状态管理)
- 实现用户CRUD操作(新增、编辑、删除、查询)
- 用户状态管理(正常、停用、锁定)
- 密码加密存储(BCrypt)
-
开发角色管理模块
- 创建SysRole实体类(角色信息、权限范围)
- 实现角色CRUD操作
- 角色权限分配(菜单权限、按钮权限)
- 角色状态管理(启用、禁用)
交付物:
- 基础架构组件完成
- JWT认证机制完成
- 用户管理模块完成
- 角色管理模块完成
Day 3(周三):权限控制与菜单管理开发
目标:完善权限控制体系,开发菜单管理功能
上午(4小时)
-
开发菜单管理模块
- 创建SysMenu实体类(菜单树形结构)
- 实现菜单CRUD操作(支持树形结构)
- 菜单类型管理(目录、菜单、按钮)
- 菜单权限控制(路由权限、按钮权限)
-
开发字典管理模块
- 创建SysDictType、SysDictItem实体类
- 实现字典类型和字典项CRUD操作
- 字典缓存管理(Redis缓存)
- 字典数据验证和校验
下午(4小时)
-
完善权限控制体系
- 用户角色关联管理
- 角色菜单权限分配
- 权限验证注解(@PreAuthorize)
- 接口权限控制(基于角色的访问控制RBAC)
-
开发登录功能
- 用户登录接口
- 登录验证逻辑
- 验证码功能
- 登录日志记录
交付物:
- 菜单管理模块完成
- 字典管理模块完成
- 权限控制体系完成
- 登录功能完成
Day 4(周四):日志管理与前端基础架构
目标:开发日志管理模块,搭建前端基础架构
上午(4小时)
-
开发日志管理模块
- 创建SysLog实体类(操作日志、登录日志)
- 实现日志记录功能(AOP切面)
- 日志查询和分页功能
- 日志导出功能(Excel格式)
-
搭建前端基础架构
- 配置Vue 3 + TypeScript + Element Plus
- 配置路由(Vue Router 4)
- 配置状态管理(Pinia)
- 配置HTTP请求(Axios)
下午(4小时)
-
开发前端登录页面
- 用户登录界面(参考若依风格)
- 登录状态管理
- 路由守卫配置
- 验证码功能
-
开发前端主页面布局
- 侧边栏导航(权限控制显示)
- 顶部导航栏
- 面包屑导航
- 页面内容区域
交付物:
- 日志管理模块完成
- 前端基础架构完成
- 前端登录页面完成
- 前端主页面布局完成
Day 5(周五):系统管理前端页面开发
目标:完成系统管理模块的前端页面开发
上午(4小时)
-
开发用户管理前端页面
- 用户列表页面(分页、搜索、状态筛选)
- 用户新增/编辑页面(表单验证、角色分配)
- 用户详情页面(基本信息、角色权限、操作日志)
- 用户状态管理(启用、禁用、重置密码)
-
开发角色管理前端页面
- 角色列表页面(分页、搜索、状态筛选)
- 角色新增/编辑页面(角色信息、权限分配)
- 角色权限分配页面(菜单权限、按钮权限树形选择)
- 角色用户管理(查看角色下的用户)
下午(4小时)
-
开发菜单管理前端页面
- 菜单树形列表(支持拖拽排序)
- 菜单新增/编辑页面(菜单信息、权限配置)
- 菜单类型管理(目录、菜单、按钮)
- 菜单权限配置(路由权限、按钮权限)
-
开发字典管理前端页面
- 字典类型管理页面(CRUD操作)
- 字典项管理页面(按类型分组显示)
- 字典项新增/编辑页面(字典值、排序、状态)
- 字典数据预览(支持缓存刷新)
交付物:
- 用户管理前端页面完成
- 角色管理前端页面完成
- 菜单管理前端页面完成
- 字典管理前端页面完成
第二周开发计划
Day 6(周一):核心业务模块开发
目标:开发订单管理、出库查询、发票管理等核心业务模块
上午(4小时)
-
开发订单管理模块
- 创建OrderMain、OrderItem实体类
- 实现订单CRUD操作
- 订单查询和分页功能
- 订单状态管理(出库状态、开票状态、返利计算状态)
-
开发出库查询模块
- 创建DeliveryMain、DeliveryItem实体类
- 实现出库CRUD操作
- 出库与订单关联查询
- 出库状态管理
下午(4小时)
-
开发发票管理模块
- 创建InvoiceMain、InvoiceItem实体类
- 实现发票CRUD操作
- 发票金额计算逻辑(含税、不含税、税额)
- 发票与订单关联
-
开发返利管理模块
- 创建RebateDetail实体类
- 实现返利CRUD操作
- 返利金额计算逻辑(基于产品官方指导价)
- 返利台账生成(新增、扣减操作)
交付物:
- 订单管理模块完成
- 出库查询模块完成
- 发票管理模块完成
- 返利管理模块完成
Day 7(周二):业务逻辑与数据验证开发
目标:完善业务逻辑,开发数据验证功能
上午(4小时)
-
完善订单管理业务逻辑
- 订单查询条件处理(经销商、日期、状态等)
- 订单导出功能(Excel格式)
- 订单与商品明细关联查询
- 订单状态更新逻辑
-
完善出库查询业务逻辑
- 出库数据关联查询(订单、经销商、产品)
- 出库与订单数据一致性校验
- 出库状态管理
下午(4小时)
-
完善发票管理业务逻辑
- 发票与出库单关联
- 发票状态管理
- 发票金额计算完善
-
开发数据验证基础逻辑
- 时序逻辑校验(开票时间不得早于出库时间、出库时间不得晚于订单创建时间)
- 关联规则校验(出库数量不得大于订单物料数量、开票金额与订单/出库金额逻辑一致)
- 交叉比对验证(与苹果端返利数据比对、数据一致性校验)
- 数据完整性校验(必填字段、数据格式、业务规则)
交付物:
- 订单管理业务逻辑完成
- 出库查询业务逻辑完成
- 发票管理业务逻辑完成
- 数据验证基础逻辑完成
Day 8(周三):异常处理与经销商产品管理
目标:开发异常工单处理,完善经销商和产品管理
上午(4小时)
-
开发异常工单模块
- 创建ExceptionWorkorder、ExceptionWorkorderLog实体类
- 实现异常工单CRUD操作
- 异常类型分类(逻辑验证、源头验证、交叉验证)
- 工单状态管理(待处理、处理中、已解决、已关闭)
-
完善数据验证逻辑
- 交叉比对验证(订单vs出库vs发票金额一致性)
- 返利数据校验(返利金额计算准确性)
- 验证结果处理(验证状态更新)
- 源头验证异常检测
下午(4小时)
-
异常工单处理流程
- 严重程度分级(高、中、低)
- 工单分配逻辑(按严重程度自动分配)
- 处理日志记录(状态变更、处理意见)
- 通知机制(高优先级工单自动提醒、超时自动升级预警)
- 邮件/短信通知功能
-
开发经销商和产品管理模块
- 创建DealerInfo、ProductInfo实体类
- 实现CRUD操作
- 资质审核流程
- 批量导入功能(Excel导入、模板下载、数据校验、错误报告)
- 数据导出功能(支持"导出当前页"和"导出全部"两种模式、数据脱敏处理)
交付物:
- 异常工单模块完成
- 数据验证逻辑完成
- 异常处理流程完成
- 经销商和产品管理模块完成
Day 9(周四):前端业务页面开发
目标:完成核心业务功能的前端页面开发
上午(4小时)
-
开发订单管理前端页面
- 订单列表页面(分页、搜索、状态筛选)
- 订单详情页面(订单信息 + 商品明细)
- 订单查询和筛选功能
- 订单导出功能
-
开发出库查询前端页面
- 出库查询表单(经销商、出库日期、状态)
- 出库列表展示(关联订单信息)
- 出库详情页面(出库信息 + 商品明细)
下午(4小时)
-
开发发票管理前端页面
- 发票查询表单(经销商、开票日期、状态)
- 发票列表展示(关联订单、出库信息)
- 发票详情页面(发票信息 + 商品明细 + 税额计算)
-
开发返利看板前端页面
- 数据可视化图表(ECharts 5)
- 返利趋势展示(按时间、经销商、产品维度)
- 返利明细列表(分页、筛选、导出)
- 返利统计卡片(总返利、待返利、已返利)
交付物:
- 订单管理前端页面完成
- 出库查询前端页面完成
- 发票管理前端页面完成
- 返利看板前端页面完成
Day 10(周五):首页开发与系统测试
目标:完成首页设计和系统测试
上午(4小时)
-
开发首页设计
- 数据统计卡片(订单总数、返利总额、异常工单数、经销商数量)
- 关键指标展示(今日新增订单、待处理工单、返利趋势)
- 快捷操作入口(新增订单、查看异常、返利统计)
- 系统状态监控(数据同步状态、系统健康度)
-
数据可视化开发
- 返利趋势图表(ECharts 5 - 折线图、柱状图)
- 订单统计图表(饼图、趋势图)
- 异常预警图表(实时异常数量、处理效率)
下午(4小时)
-
权限控制前端实现
- 路由权限控制(基于用户角色)
- 按钮权限控制(动态显示/隐藏)
- 菜单权限控制(动态生成菜单)
- 接口权限验证(请求拦截器)
-
系统测试与优化
- 功能测试(业务流程测试、异常情况测试)
- 性能优化(数据库查询优化、前端页面优化)
- 安全测试(权限控制测试、数据安全测试)
- 兼容性测试(浏览器兼容性、响应式适配)
交付物:
- 首页设计完成
- 数据可视化完成
- 权限控制前端实现完成
- 系统测试报告完成
关键里程碑
第一周里程碑
- Day 2结束:基础架构和权限体系完成
- Day 4结束:系统管理模块和前端基础架构完成
- Day 5结束:系统管理前端页面完成
第二周里程碑
- Day 6结束:核心业务模块完成
- Day 8结束:异常处理和经销商产品管理完成
- Day 10结束:前端页面和系统测试完成
开发环境要求
1. 基础环境
- JDK: OpenJDK 8
- Maven: 3.6+
- MySQL: 8.0
- Redis: 6.0
- Node.js: 16.0+
- Git: 2.0+
2. 开发工具
- IDE: Cursor AI / IntelliJ IDEA
- 数据库工具: Navicat / DBeaver
- API测试: Postman
- 版本控制: Git + GitLab/GitHub
3. Spring Boot项目配置
# application.yml
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/apple_erp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: MySQL@123
redis:
host: localhost
port: 6379
password:
database: 0
security:
user:
name: admin
password: admin123
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: delFlag
logic-delete-value: 1
logic-not-delete-value: 0
# JWT配置
jwt:
secret: apple-erp-secret-key-2024
expiration: 86400 # 24小时
header: Authorization
prefix: Bearer
# 日志配置
logging:
level:
com.apple.erp: debug
org.springframework.security: debug
# 邮件配置
mail:
host: smtp.qq.com
port: 587
username: your-email@qq.com
password: your-email-password
properties:
mail:
smtp:
auth: true
starttls:
enable: true
# 短信配置
sms:
access-key-id: your-access-key-id
access-key-secret: your-access-key-secret
sign-name: Apple经销商ERP
template-code: SMS_123456789
4. 数据库初始化
# 1. 创建数据库
mysql -u root -p
# 输入密码: MySQL@123
# 2. 执行建表脚本
mysql -u root -p apple_erp < 建表脚本.sql
# 3. 执行初始化数据脚本
mysql -u root -p apple_erp < 初始化数据脚本.sql
项目结构设计
1. 后端项目结构
apple-erp-backend/
├── src/main/java/com/apple/erp/
│ ├── controller/ # 控制器层
│ ├── service/ # 服务层
│ │ └── impl/ # 服务实现
│ ├── mapper/ # 数据访问层
│ ├── entity/ # 实体类
│ ├── dto/ # 数据传输对象
│ ├── vo/ # 视图对象
│ ├── config/ # 配置类
│ │ ├── security/ # 安全配置
│ │ └── redis/ # Redis配置
│ ├── security/ # 权限控制
│ │ ├── jwt/ # JWT工具类
│ │ ├── filter/ # 认证过滤器
│ │ └── handler/ # 认证处理器
│ ├── common/ # 公共组件
│ │ ├── result/ # 统一响应结果
│ │ ├── exception/ # 异常处理
│ │ ├── annotation/# 自定义注解
│ │ └── utils/ # 工具类
│ └── AppleErpApplication.java
├── src/main/resources/
│ ├── mapper/ # MyBatis映射文件
│ ├── application.yml # 配置文件
│ └── static/ # 静态资源
└── pom.xml # Maven配置
2. 前端项目结构
apple-erp-frontend/
├── src/
│ ├── api/ # API接口
│ ├── components/ # 公共组件
│ ├── views/ # 页面组件
│ │ ├── system/ # 系统管理页面
│ │ ├── business/ # 业务管理页面
│ │ └── dashboard/ # 首页和看板
│ ├── router/ # 路由配置
│ │ └── guards/ # 路由守卫
│ ├── store/ # Pinia状态管理
│ │ ├── user/ # 用户状态
│ │ └── permission/# 权限状态
│ ├── utils/ # 工具函数
│ │ ├── auth/ # 认证工具
│ │ └── permission/# 权限工具
│ ├── types/ # TypeScript类型定义
│ └── main.ts # 入口文件
├── public/ # 静态资源
├── package.json # 依赖配置
└── vite.config.ts # Vite配置
测试计划
1. 单元测试
- 覆盖率要求: > 80%
- 测试框架: JUnit 5 + Mockito
- 测试内容: Service层、Controller层、工具类
2. 集成测试
- 测试框架: Spring Boot Test
- 测试内容: 数据库操作、API接口、权限控制
3. 前端测试
- 测试框架: Vitest + Vue Test Utils
- 测试内容: 组件功能、页面交互、路由跳转
4. 性能测试
- 测试工具: JMeter
- 测试内容: 接口响应时间、并发用户数、数据库性能
部署方案
1. Docker部署
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: apple-erp-mysql
environment:
MYSQL_ROOT_PASSWORD: MySQL@123
MYSQL_DATABASE: apple_erp
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./init-scripts:/docker-entrypoint-initdb.d
redis:
image: redis:6.0-alpine
container_name: apple-erp-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
app:
build: .
container_name: apple-erp-app
ports:
- "8080:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/apple_erp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: MySQL@123
SPRING_REDIS_HOST: redis
SPRING_REDIS_PORT: 6379
depends_on:
- mysql
- redis
volumes:
mysql_data:
redis_data:
2. 部署步骤
# 1. 构建镜像
docker-compose build
# 2. 启动服务
docker-compose up -d
# 3. 检查服务状态
docker-compose ps
# 4. 查看日志
docker-compose logs -f app
3. 数据备份
# 数据库备份
docker exec apple-erp-mysql mysqldump -u root -pMySQL@123 apple_erp > backup.sql
# 数据恢复
docker exec -i apple-erp-mysql mysql -u root -pMySQL@123 apple_erp < backup.sql
项目总结
成功因素
- 从零开始构建: 完全自主开发,架构清晰,易于维护
- 现代化技术栈: Vue 3 + TypeScript + Element Plus + Spring Boot
- AI辅助开发: Cursor AI提供代码优化建议和快速开发
- 完整文档: 技术架构设计、数据库设计、初始化脚本
- 合理规划: 详细的两周开发计划,明确里程碑
- 测试数据: 完整的初始化数据脚本,便于测试验证
预期成果
- 开发周期: 2周完成核心功能开发
- 代码质量: 从零开始构建,架构清晰,质量可控
- 可维护性: 标准化代码结构,易于维护和扩展
- 扩展性: 模块化设计,便于功能扩展
- 数据完整性: 19张表 + 完整测试数据
- 功能完整性: 订单→出库→发票→返利全流程
- 权限控制: 完整的RBAC权限体系,支持用户、角色、菜单、按钮级权限控制
- 系统管理: 完整的系统管理功能,包括用户管理、角色管理、菜单管理、字典管理、日志管理
后续优化
- 性能优化: 数据库查询优化、缓存策略、分页优化
- 功能完善: 根据用户反馈完善功能,增加移动端支持
- 安全加固: 加强安全防护措施,数据加密
- 监控告警: 系统监控、性能监控、异常告警
- 接口对接: 与Apple ERP系统接口对接
- 数据分析: 增加更多数据分析和报表功能
本开发计划基于Spring Boot + Vue 3技术栈,从零开始构建Apple经销商ERP系统,确保开发出高质量、易维护的企业级管理系统。