前后端技术栈概览
CatCRM 采用前后端完全分离的架构设计,后端 Jar 包专注于提供高性能 RESTful API,不再内置前端静态页面。
后端技术栈 (backend/)
| 类别 | 技术选型 | 版本 | 核心职责 |
|---|---|---|---|
| 开发语言 | Java | 25 | 启用现代语法特性与垃圾回收性能优化 |
| 核心框架 | Spring Boot | 4.1 | 应用装配、配置管理与 Web 容器底座 |
| 安全框架 | Spring Security | 7.1 | 认证鉴权、Token 校验与细粒度 RBAC 权限控制 |
| ORM 框架 | MyBatis-Plus | 3.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 包采用一一对应的领域模块划分:
- 线索管理 (
lead):市场线索采集、分配、转化跟踪。 - 客户管理 (
customer):客户档案、省市区联动、客户池与公海自动回收领取。 - 联系人管理 (
contact):客户关联的多决策人信息维护。 - 跟进记录 (
record):全生命周期跟进流水与富文本拜访记录。 - 商机管理 (
opportunity):销售阶段推进、预计成交金额与赢率分析。 - 产品管理 (
product):产品分类、标准单价、上下架状态维护。 - 合同管理 (
contract):合同签署人、产品明细、审批状态与应收汇总。 - 订单管理 (
order):销售订单履约与交付明细管理。 - 回款管理 (
payment):分期回款计划、实际回款核销与账期跟踪。 - 发票管理 (
invoice):增值税发票开具申请与税务信息核验。 - 自定义表单 (
form):基于元数据驱动的动态字段配置与布局排序。
架构与编码规范守则
CatCRM 严格遵循《阿里巴巴 Java 开发手册》,核心工程规范包括:
- 构造器依赖注入:所有 Service/Controller 依赖声明为
private final,配合类级别@AllArgsConstructor注入,严禁@Autowired字段注入。 - 金额与精度安全:涉及合同金额、订单折扣、回款与发票金额等计算,一律使用
BigDecimal,严禁使用double或float。 - POJO 包装类型与枚举化:Entity、VO、DTO、Query 成员变量统一采用包装类型(
Long、Integer、BigDecimal),所有业务状态与类型杜绝魔法值,全部使用以Enum结尾的枚举类。