架构与数据库 · 更新于 2026-10-27

系统架构与技术栈

深入了解 CatCRM 的前后端技术选型、接口转发机制、业务模块划分与编码规范。

前后端技术栈概览

CatCRM 采用前后端完全分离的架构设计,后端 Jar 包专注于提供高性能 RESTful API,不再内置前端静态页面。

后端技术栈 (backend/)

类别技术选型版本核心职责
开发语言Java25启用现代语法特性与垃圾回收性能优化
核心框架Spring Boot4.1应用装配、配置管理与 Web 容器底座
安全框架Spring Security7.1认证鉴权、Token 校验与细粒度 RBAC 权限控制
ORM 框架MyBatis-Plus3.5.16数据持久化、分页插件与动态数据权限拦截
数据库迁移Flyway内置启动自动建表、版本演进与 Checksum 校验
工具类库Hutool / Lombok最新稳定版集合/字符串防御性判空与构造器依赖注入

前端与官网技术栈 (frontend/ & site/)

工程目录核心技术栈说明
frontend/(CRM 业务系统)Vue 3.5.39 + Vite 8 + Pinia 3.0.4 + Vue Router 5.1.0 + Element Plus 2.14.3 + ECharts 5.5专注国内企业级交互体验,含国密 sm-crypto 与 Sortable.js 自定义表单拖拽
site/(产品官网与文档)Nuxt 3 + Nuxt UI v3 + Nuxt Content v3 + Tailwind CSS v4支持全站 SSG 静态预渲染,可直接托管至任意云厂商 CDN

接口前缀与反向代理机制

后端统一设置 context-path 为 /api,所有接口(包含文件预览 /api/upload/{id} 以及接口文档 /api/doc.html)均带有 /api 前缀;前端环境变量 VITE_API_URL 同样固定为 /api:

  • 开发环境:npm run dev 启动在 3000 端口,由 Vite Dev Server 将 /api 代理转发到本机 127.0.0.1:18080 的后端。
  • 生产环境:由 Nginx 统一监听 8080 端口托管前端静态页面,并将 /api 路径平滑转发至后端服务(详见 deploy/nginx.conf)。

CRM 核心业务模块划分

前端 frontend/src/views/crm/ 与后端 net.maku.crm 包采用一一对应的领域模块划分:

  1. 线索管理 (lead):市场线索采集、分配、转化跟踪。
  2. 客户管理 (customer):客户档案、省市区联动、客户池与公海自动回收领取。
  3. 联系人管理 (contact):客户关联的多决策人信息维护。
  4. 跟进记录 (record):全生命周期跟进流水与富文本拜访记录。
  5. 商机管理 (opportunity):销售阶段推进、预计成交金额与赢率分析。
  6. 产品管理 (product):产品分类、标准单价、上下架状态维护。
  7. 合同管理 (contract):合同签署人、产品明细、审批状态与应收汇总。
  8. 订单管理 (order):销售订单履约与交付明细管理。
  9. 回款管理 (payment):分期回款计划、实际回款核销与账期跟踪。
  10. 发票管理 (invoice):增值税发票开具申请与税务信息核验。
  11. 自定义表单 (form):基于元数据驱动的动态字段配置与布局排序。

架构与编码规范守则

CatCRM 严格遵循《阿里巴巴 Java 开发手册》,核心工程规范包括:

  • 构造器依赖注入:所有 Service/Controller 依赖声明为 private final,配合类级别 @AllArgsConstructor 注入,严禁 @Autowired 字段注入。
  • 金额与精度安全:涉及合同金额、订单折扣、回款与发票金额等计算,一律使用 BigDecimal,严禁使用 double 或 float。
  • POJO 包装类型与枚举化:Entity、VO、DTO、Query 成员变量统一采用包装类型(Long、Integer、BigDecimal),所有业务状态与类型杜绝魔法值,全部使用以 Enum 结尾的枚举类。