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

项目总结

成功因素

  1. 从零开始构建: 完全自主开发,架构清晰,易于维护
  2. 现代化技术栈: Vue 3 + TypeScript + Element Plus + Spring Boot
  3. AI辅助开发: Cursor AI提供代码优化建议和快速开发
  4. 完整文档: 技术架构设计、数据库设计、初始化脚本
  5. 合理规划: 详细的两周开发计划,明确里程碑
  6. 测试数据: 完整的初始化数据脚本,便于测试验证

预期成果

  • 开发周期: 2周完成核心功能开发
  • 代码质量: 从零开始构建,架构清晰,质量可控
  • 可维护性: 标准化代码结构,易于维护和扩展
  • 扩展性: 模块化设计,便于功能扩展
  • 数据完整性: 19张表 + 完整测试数据
  • 功能完整性: 订单→出库→发票→返利全流程
  • 权限控制: 完整的RBAC权限体系,支持用户、角色、菜单、按钮级权限控制
  • 系统管理: 完整的系统管理功能,包括用户管理、角色管理、菜单管理、字典管理、日志管理

后续优化

  1. 性能优化: 数据库查询优化、缓存策略、分页优化
  2. 功能完善: 根据用户反馈完善功能,增加移动端支持
  3. 安全加固: 加强安全防护措施,数据加密
  4. 监控告警: 系统监控、性能监控、异常告警
  5. 接口对接: 与Apple ERP系统接口对接
  6. 数据分析: 增加更多数据分析和报表功能

本开发计划基于Spring Boot + Vue 3技术栈,从零开始构建Apple经销商ERP系统,确保开发出高质量、易维护的企业级管理系统。