小程序CRM开发实战:助力企业打造客户管理新利器
小程序CRM开发实战:助力企业打造客户管理新利器 核心结论 最终交付的是一套 以微信小程序为前端触点、以后端API和管理后台为支撑的客户关系管理系统 。销售与客服人员通过小程序完成客户跟进、商机录入、合同签署、数据看板等日常操作;管理人员在Web后台配置权限、定义流程、查看分析报表。系统支持多租户、多角色,能够承载从线索到回款的全生命周期管理。 利用AI驱动
核心结论
最终交付的是一套以微信小程序为前端触点、以后端API和管理后台为支撑的客户关系管理系统。销售与客服人员通过小程序完成客户跟进、商机录入、合同签署、数据看板等日常操作;管理人员在Web后台配置权限、定义流程、查看分析报表。系统支持多租户、多角色,能够承载从线索到回款的全生命周期管理。
利用AI驱动的代码生成工具,这套系统的后端服务和管理后台可以在数天内完成基础搭建,开发者只需聚焦小程序端的交互与业务定制,整体交付周期从传统2周以上压缩至3~5天。该方案适合中小型销售团队、项目型服务公司以及需要快速上线CRM的SaaS创业项目。
一、这个系统最终可以做成什么样
小程序CRM的最终产品形态包含三个端:
- 销售端小程序:面向一线销售,提供客户列表、跟进记录、商机看板、日程提醒、合同签署、业绩查询等功能。核心交互全部发生在微信内,无需下载,打开即用。
- 管理后台(Web):面向管理员与运营,提供组织架构管理、角色权限配置、客户字段自定义、销售流程编排、数据报表、操作日志等功能。采用Vue3 + Element Plus构建,支持PC端浏览器访问。
- 后端API服务:基于Spring Boot的RESTful API,统一为小程序和管理后台提供数据与业务逻辑。集成JWT鉴权、RBAC权限模型、消息推送、文件存储等基础能力。
用户价值清晰:销售不再依赖Excel或纸质记录,客户跟进过程可追溯、可量化;管理者能实时查看团队业绩、客户转化漏斗,决策有数据支撑。适用场景包括:B2B销售团队管理、保险/房产经纪人客户跟进、教育培训机构学员管理、项目型服务公司的客户交付跟踪等。
二、核心功能模块拆解
1. 客户管理模块
- 客户列表:支持按负责人、标签、创建时间、跟进状态筛选,列表展示关键字段(名称、联系人、电话、最近跟进时间)。
- 客户详情:展示客户基本信息、自定义字段、关联联系人、商机、合同、跟进记录、操作日志。
- 客户导入/导出:支持Excel批量导入,自动去重校验;导出时保留筛选条件。
- 客户公海:超过设定天数未跟进的客户自动掉入公海,其他销售可认领。
2. 联系人管理
- 每个客户可关联多个联系人,记录姓名、职位、电话、微信、决策角色。
- 支持与客户解耦,便于同一联系人在不同客户间的关联。
3. 销售机会(商机)管理
- 商机阶段:预设“初步接触-需求确认-方案报价-谈判-赢单/输单”等阶段,支持自定义。
- 商机详情:记录预计成交金额、预计成交日期、产品明细、竞争对手、跟进计划。
- 阶段推进:通过拖拽或按钮推进阶段,自动记录阶段变更日志。
4. 跟进记录与日程
- 销售可在小程序内快速记录电话、拜访、微信沟通等跟进动作,支持语音输入转文字。
- 下次跟进时间自动生成日程提醒,通过微信服务通知推送。
- 跟进记录时间线展示,管理者可查看下属的全部跟进。
5. 合同与回款管理
- 合同创建:关联客户和商机,填写合同金额、起止日期、附件上传。
- 回款计划:支持分期回款,记录每期金额和到期日。
- 回款认领:财务或销售确认到账后标记回款状态,自动更新商机赢单率。
6. 数据分析看板
- 销售漏斗:展示各阶段商机数量与金额,计算转化率。
- 业绩排行:按销售额、回款额、新增客户数排名。
- 客户分析:按行业、区域、来源渠道统计分布。
7. 系统管理(管理后台)
- 组织与用户:维护部门、员工账号,支持离职交接。
- 角色与权限:基于RBAC,预设“销售”“销售经理”“管理员”等角色,可自定义数据权限(查看本人、本部门、全部)。
- 字段自定义:客户、商机等模块支持添加自定义字段,满足不同行业需求。
- 审批流程:简单的合同审批、折扣审批可配置多级审批链。
三、数据库设计思路
核心数据表及关系如下:
| 表名 | 作用 | 关键字段 |
|---|---|---|
| customers | 客户主表 | id, name, owner_id, status, created_at |
| contacts | 联系人 | id, customer_id, name, phone, role |
| opportunities | 商机 | id, customer_id, stage, amount, close_date |
| follow_ups | 跟进记录 | id, customer_id, opportunity_id, content, next_time |
| contracts | 合同 | id, customer_id, opportunity_id, amount, status |
| payments | 回款记录 | id, contract_id, amount, pay_date |
| users | 系统用户 | id, name, openid, department_id, role_id |
| departments | 部门 | id, name, parent_id |
| roles | 角色 | id, name, permissions (JSON) |
| custom_fields | 自定义字段 | id, module, field_name, field_type, options |
设计要点:
- owner_id 贯穿客户、商机等表,实现数据归属。
- 软删除:所有业务表增加
deleted_at字段,防止误删。 - 公海机制:通过定时任务检查
customers表中最近跟进时间超过阈值的记录,将owner_id置空并标记为公海。 - 自定义字段:采用EAV模型或JSON列存储,避免频繁修改表结构。对于查询频繁的自定义字段,可定期同步到扩展表或使用Elasticsearch辅助检索。
- 索引策略:在
owner_id、status、created_at、stage等高频过滤字段上建立联合索引。
四、API设计方案
后端API遵循RESTful规范,使用JWT进行身份认证。小程序端通过 wx.login 获取code换取token,后续请求在Header中携带 Authorization: Bearer <token>。
核心接口示例:
# 认证
POST /api/auth/login-by-wechat # 微信登录,返回token
# 客户
GET /api/customers # 客户列表(分页、筛选)
GET /api/customers/{id} # 客户详情
POST /api/customers # 创建客户
PUT /api/customers/{id} # 更新客户
DELETE /api/customers/{id} # 删除客户(软删除)
POST /api/customers/batch-import # 批量导入
# 商机
GET /api/opportunities # 商机列表
POST /api/opportunities # 创建商机
PUT /api/opportunities/{id}/stage # 推进阶段
# 跟进记录
GET /api/customers/{id}/follow-ups
POST /api/follow-ups
# 合同
POST /api/contracts
GET /api/contracts/{id}
# 回款
POST /api/payments
# 数据看板
GET /api/reports/sales-funnel # 销售漏斗
GET /api/reports/performance # 业绩排行
接口设计原则:
- 所有列表接口统一返回格式:
{ code: 0, data: { items: [], total: 100 }, message: "ok" } - 权限控制通过中间件实现,根据用户角色和
owner_id过滤数据范围。 - 对小程序端,返回字段做精简,避免传输冗余数据;管理后台可返回完整字段。
- 文件上传使用临时凭证直传OSS,API只记录文件URL。
五、系统架构设计
整体架构分层如下:
小程序(View)
↓ HTTPS
API网关(Nginx / Spring Cloud Gateway)
↓
业务服务层(Spring Boot)
├── 认证服务
├── 客户服务
├── 商机服务
├── 合同服务
└── 报表服务
↓
数据层
├── MySQL(主业务库)
├── Redis(缓存、Session、消息队列)
└── Elasticsearch(客户搜索、日志分析)
↓
基础设施
├── 阿里云OSS(文件存储)
├── 微信服务端API(模板消息、小程序码)
└── Docker + K8s(容器化部署)
各层职责:
- 小程序端:仅处理UI交互与数据展示,业务逻辑全部在API层。
- API网关:统一鉴权、限流、日志记录,可横向扩展。
- 业务服务:初期可单体部署,按模块拆分为微服务,通过Feign或消息队列通信。
- MySQL:存储核心业务数据,读写分离应对高并发。
- Redis:缓存热点数据(如用户权限、自定义字段配置)、实现分布式锁(防止公海重复认领)、存储微信access_token。
- Elasticsearch:客户全文检索、跟进记录搜索、操作日志分析。
扩展能力:当某个模块压力增大时,可单独将该服务拆出独立部署;通过消息队列(如RocketMQ)异步处理合同生成PDF、批量导入等耗时任务。
六、开发路线规划
第一阶段:MVP(3~5天)
目标:快速交付可用的基础CRM,验证业务流程。
利用AI代码生成工具,用自然语言描述“客户管理、商机管理、跟进记录、微信小程序登录”等需求,自动生成Spring Boot后端API和Vue3管理后台。生成的代码为标准项目结构,包含Controller、Service、Mapper、实体类,以及管理后台的列表页、表单页。开发者在此基础上进行小程序端的UI开发和少量定制。
交付内容:
- 微信小程序:客户列表、客户详情、新增客户、跟进记录。
- 管理后台:客户管理、用户管理、角色权限。
- 后端API:上述模块的增删改查接口,JWT鉴权。
第二阶段:商业版(2~3周)
- 增加商机管理、合同管理、回款管理。
- 小程序端增加商机看板、日程提醒、业绩查询。
- 管理后台增加数据看板、自定义字段、审批流配置。
- 集成微信模板消息推送。
- 数据库读写分离,引入Redis缓存。
第三阶段:企业版(1~2个月)
- 多租户架构,支持SaaS化运营。
- 公海规则、客户自动分配、离职继承。
- 高级数据分析:客户画像、流失预警、AI跟进建议。
- 开放API,支持与第三方ERP、财务系统对接。
- 插件市场接入:若已有成熟的审批流、外勤签到等插件,可直接安装集成,避免重复开发。
七、关键技术难点
1. 微信小程序登录与用户体系打通
小程序使用 wx.login 获取临时code,后端通过微信接口换取 openid 和 session_key。需建立 openid 与系统用户ID的映射,首次登录时引导绑定手机号(通过微信手机号快速验证组件)。用户信息变更时需同步更新。
2. 数据权限控制
不同角色查看的数据范围不同(本人、本部门、全部)。实现方案:在MyBatis拦截器或Service层统一注入SQL条件,根据当前用户的 owner_id 和 department_id 动态拼接 WHERE 子句,避免在每个接口重复编码。
3. 客户去重与合并
批量导入或手动创建时,需根据公司名称、电话等规则判断重复客户。可通过Elasticsearch的模糊匹配或MySQL的全文索引实现。确认重复后,支持客户合并,将商机、联系人、跟进记录迁移至主客户。
4. 公海与自动回收
定时任务扫描客户表,将超过N天未跟进且未成交的客户回收至公海。需考虑分布式环境下的任务唯一性(使用Redis分布式锁),以及回收后的通知机制。
5. 小程序性能优化
客户列表可能达到数万条,小程序端需采用分页加载、虚拟列表等技术;图片使用懒加载和CDN加速;频繁切换的Tab页使用缓存数据。
八、FAQ
Q1:小程序CRM与传统的Web CRM有什么区别?
小程序CRM更轻量,无需安装,适合移动办公场景。销售人员可以随时记录跟进、查看客户信息,且能利用微信的通知能力触达用户。但复杂的数据分析、批量操作仍需依赖Web管理后台。
Q2:如何保证客户数据安全?
通过RBAC权限模型控制功能权限,数据权限限制查看范围;所有API请求强制HTTPS;敏感字段(如手机号)可脱敏展示;数据库定时备份,操作日志全量记录。
Q3:开发这样一套系统需要多少人?
传统开发模式下,后端+前端+小程序至少需要3人协作2周以上。现在借助AI代码生成工具,单人即可在3天内完成基础后端和管理后台,再花1~2天对接小程序,整体交付速度大幅提升。对于有经验的开发者,一人即可覆盖全栈。
Q4:能否支持私有化部署?
可以。后端服务打包为Docker镜像,客户可部署在自己的服务器上。管理后台和小程序代码也可独立构建部署。数据库初始化脚本和配置指南随交付包提供。
九、总结
小程序CRM的开发已不再是高门槛工程。通过合理的技术选型——Spring Boot提供稳健的后端服务,Vue3构建灵活的管理后台,微信小程序触达移动端用户——再结合AI代码生成工具对通用模块的快速产出,中小团队完全有能力在极短时间内交付一套可用的客户管理系统。
建议从MVP起步,先覆盖核心的客户管理和跟进记录功能,快速上线验证业务价值,再逐步迭代商机、合同、数据分析等高级模块。对于希望提供SaaS服务的团队,可在商业版阶段引入多租户和插件市场,实现功能模块的按需组装,降低每个客户的定制成本。
最终,这套系统不仅是技术实现,更是企业销售流程的数字化沉淀。每一次跟进、每一个商机的流转,都将成为驱动业务增长的数据资产。