返回作品

RuoYi-Crm 客户关系管理系统

创建于 2026 年 1 月 5 日

标签
  • Java
  • Spring Boot
  • MyBatis-Plus
  • MySQL
  • Vue 2
  • Element UI
  • ECharts
  • uni-app
  • Flutter

项目介绍

这是一套为短视频/直播行业”客资运营”场景定制的客户关系管理系统,基于若依(RuoYi-Vue)深度改造而来。业务链路很典型:运营团队从视频号投流、抖音截流、小红书投流等渠道获取客资,剪辑人员负责录入并指派,销售人员接收后跟进转化,转化失败的客资进入公海由其他销售认领,最终以成交、回款、落地等指标对销售与剪辑分别考核。系统把这条链路完整固化下来:客资从”录入”到”成交/退款”的每一个状态都落在 t_customer_info 表上,并配有指派记录、跟进记录、公海记录和消息通知。

客户对象的设计非常贴合业务:除了联系方式与客资图片,还记录了渠道(企业/微信、视频号自然、抖音自然、视频号投流、抖音截流、小红书投流2 等)、地区、剪辑、销售、指派/接收时间、是否成交、流程是否走完、是否有效及无效类型、是否出行/落地时间、预计回款与实际回款金额、是否退款、公海状态与原因、销售反馈图片与备注。可以说一张表就承载了客资从生到死的全部业务语义。

项目架构

项目按四端组织:20260105-RuoYi-Crm-Boot 为后端,20260105-RuoYi-Crm-Vue 为 Web 管理后台,20260105-RuoYi-Crm-App 为 uni-app 移动端,ruoyi_crm_flutter 为独立的 Flutter App。

后端沿用若依的多模块结构(ruoyi-admin / ruoyi-system / ruoyi-framework / ruoyi-common / ruoyi-quartz / ruoyi-generator),技术栈为 Java 8、Spring Boot 2.5.15、MyBatis-Plus 3.5.5、MySQL、Apache POI 4.1.2(Excel 导入导出)。CRM 业务集中在 com.ruoyi.crm 包内:ruoyi-admin 下新增 6 个 Controller(客户、我的客户、跟进记录、公海、仪表盘、报表),ruoyi-system 下新增对应的 domain、mapper、service,其中 CrmAutoAssignService 负责自动指派,CrmNotifyService / FcmPushService / GetuiPushService / AppPushDispatchService 负责消息推送。数据库方面以 ry_20250522.sql 为主库脚本,另配 auto_assign.sql(轮询队列与指派记录表)、crm_channel_dict.sql(渠道字典)、wecom_upgrade.sql(企业微信用户绑定)、customer_follow_time_upgrade.sql(落地/退款时间字段)等增量升级脚本。

Web 管理后台基于 Vue 2.6 + Element UI 2.15 + ECharts 5.4 + Axios,views/crm 下共 8 个页面:客户管理、我的客户、跟进记录、公海,以及销售报表/销售日报、剪辑报表/剪辑日报。uni-app 端在若依官方 RuoYi-App v1.2.0 基础上增加了 pages/crm(客户列表、我的客户、客户详情)页面;Flutter 端则用 dio + provider 实现了登录、仪表盘、客户列表、我的客户、客户详情、新增客户与推送接口对接,并配置了 Android release 签名打包。

核心功能

  • 客资全流程管理:客户管理页支持按渠道、地区、剪辑、销售多条件筛选,Excel 模板导入与数据导出,编辑弹窗内含”客户信息 / 指派历史”两个页签,可查看该客资的完整指派轨迹与跟进记录;渠道、无效类型等通过若依字典动态配置。
  • 自动轮询指派:剪辑点击指派即触发 autoAssign——先按渠道解析到”抖音 / 视频号”两个分组,再从 t_salesman_queue 轮询队列中按天、按渠道组取下一个销售((startIndex + currentIndex) % size 取模),每次指派后游标前进;队列用乐观锁(version 字段)防并发,支持批量自动指派,另有超时转派(assign_type=2)与公海认领(assign_type=3)两种指派类型。
  • 销售跟进与公海机制:销售在”我的客户”中接收指派客资,跟进记录支持电话/微信/面谈/其他四种方式与跟进中/有意向/无意向/已成交四种状态,并记录下次跟进时间;不跟或跟不动的客资可放回公海(记录原因),公海页支持按条件筛选并一键认领。
  • 经营看板与多维报表:仪表盘提供整体统计、客资趋势、维护趋势、渠道统计、待跟进客户、销售排行(日/周/今日)、接收排行、部门销售统计与跟进提醒;报表模块分销售视角与剪辑视角,覆盖成交、落地、退款、实际回款等指标,支持日报与 Excel 导出,用于团队考核。
  • 三端协同与消息推送:管理后台负责全量管理与配置,uni-app 与 Flutter 端面向一线销售;指派成功、客户进入公海等关键节点通过 FCM、个推(Getui)推送或企业微信消息(sys_user.wx_user_id 绑定)实时触达相关人员。

功能截图

暂无运行截图。

快速上手

数据库部分先执行 sql/ry_20250522.sql 初始化若依基础表,再按需执行 auto_assign.sqlcrm_channel_dict.sqlwecom_upgrade.sql 等升级脚本(渠道字典会随主库脚本同步初始化)。后端进入 20260105-RuoYi-Crm-Boot,修改 ruoyi-admin 的数据库与 Redis 配置后启动 RuoYiApplication,默认账号 admin / admin123,CRM 接口统一挂在 /crm/* 前缀下。

Web 管理后台进入 20260105-RuoYi-Crm-Vue 执行 npm installnpm run dev,登录后即可使用客户管理、公海、报表等模块;20260105-RuoYi-Crm-App 为 uni-app 工程,可用 HBuilderX 运行到浏览器/小程序/真机;ruoyi_crm_flutter 为 Flutter 工程,android/key.properties.example 提供了正式签名模板,按 README 生成 keystore 后即可打出 release APK。

总结

这个项目最大的价值在于把短视频行业”客资”这种高度非标的业务,用标准 CRM 的流程彻底固化了下来。自动指派解决了客资分配公平性难题——按天、按渠道分组轮询加取模分配,保证每个销售的接粉量均衡,乐观锁保证了并发下的数据一致;公海机制解决了”销售跟不动但客资不浪费”的问题;销售/剪辑双视角报表则把成交、回款、落地与录入量、有效性挂钩,形成了可执行的考核闭环。三端覆盖(后台 + uni-app + Flutter)也让管理层、剪辑、销售各用其端。

后续可扩展的方向包括:接入企业微信会话存档与侧边栏跟进、增加更多渠道分组的自动指派规则、基于历史成交数据做成交意向预测,以及把回款流水独立成财务模块。