资讯动态

SpringBoot+XXL-Job 客户公海自动回收设计:双计时规则、锁定豁免、领取上限如何闭环

发布时间:2026/8/8 17:35:54 来源:尧图企业网站定制
SpringBootXXL-Job 客户公海自动回收设计双计时规则、锁定豁免、领取上限如何闭环演示地址http://ruoyioffice.com | 源码1·GitHubruoyi-office | 源码2·GitCoderuoyi-office | 源码3·Giteeruoyi-office | 微信17156169080备注「RuoYi Office」CRM 有公海菜单不等于能盘活客户。真正难的是按什么规则掉进公海、谁豁免、入池后权限怎么清、领回来计时怎么重新起算、会不会一人囤光池子。本文按 RuoYi Office 源码把自动回收闭环从配置讲到 XXL-Job再到领取上限。▲ 新风格全景深色双钟成交超时 / 跟进超时 OR 触发 → Job 入池清权 → 领取重建 OWNER → 上限门禁引言公海不是垃圾桶是「计时 清权 再分配」相对《CRM 客户管理》讲建档与跟进全景本文只钉四个问题问题系统答法何时该掉公海双计时 OR成交超时或跟进超时谁不能掉已锁定、已成交掉进去发生什么ownernull、联系人联动、删 OWNER 权限领出来要注意什么重置ownerTime、重建 OWNER、校验领取上限一、配置公海开关与双计时公海配置表核心字段字段含义enabled是否启用自动入池dealExpireDays未成交放入公海天数自ownerTimecontactExpireDays未跟进放入公海天数notifyEnabled/notifyDays是否提前提醒及天数▲ 系统配置里维护双超时与提醒未启用则 Job 直接返回 0计时基准是ownerTime成为负责人的时间不是客户创建时间——领取/分配后重新起算避免「刚领就被规则误伤」。二、候选查询双钟 OR 豁免CrmCustomerMapper.selectListByAutoPoolquery.gt(CrmCustomerDO::getOwnerUserId,0);// 仍有负责人query.eq(lockStatus,false).eq(dealStatus,false);// 未锁定 未成交query.and(q-{// 成交超时ownerTime now - dealExpireDaysq.lt(ownerTime,dealExpireTime)// 或 跟进超时ownerTime 超时 且 (末次跟进超时 或 为空).or(w-w.lt(ownerTime,contactExpireTime).and(p-p.lt(contactLastTime,contactExpireTime).or().isNull(contactLastTime)));});读法成交钟挂名很久仍未成交 → 回收跟进钟归属超时且很久没跟或从未跟→ 回收两钟OR满足任一即可入候选锁定 / 成交 → 整单豁免保护重点客户与已赢单三、Job定时入池失败不拖死整批XxlJob(customerAutoPutPoolJob)TenantJobpublicStringexecute(){intcountcustomerService.autoPutCustomerPool();returnString.format(掉入公海客户 %s 个,count);}autoPutCustomerPool配置未启用则 0否则逐个putCustomerPool单条异常只打日志继续处理其余——避免一个脏数据卡死全租户回收。putCustomerPool三件事1. updateOwnerUserId(id, null) // 客户无负责人 2. contact.ownerUserId null // 联系人联动与领取对称 3. deletePermission(CUSTOMER, OWNER) // 清数据权限别人才能从公海看见/领取注意删权限放在联系人更新之后否则可能因客户权限已空导致联系人操作失败。▲ 入池后的公海列表无负责人客户在此待领取/分配▲ 对照仍有负责人的客户在「我的客户」ownerTime 是公海计时起点四、领取 / 分配重建 OWNER 与上限receiveCustomer(ids, ownerUserId, isReceive)校验客户存在、目标用户存在校验当前无负责人、未锁定、成交状态允许validateCustomerExceedOwnerLimit——防止一人把公海囤光批量写ownerUserIdownerTime now批量创建CrmPermissionLevelEnum.OWNER操作日志区分「自行领取」与「管理员分配」updateCustomers.add(newCrmCustomerDO().setId(id).setOwnerUserId(ownerUserId).setOwnerTime(LocalDateTime.now()));createPermissions.add(...OWNER...);▲ 领取/拥有上限与公海回收配套回收释放资源上限防止再被垄断五、和客户总览文的边界文重心客户管理一体化建档、跟进、权限、公海「是什么」本文自动怎么掉、权限怎么清、领取怎么起算、上限怎么卡线索转客户、商机回款链不在此展开。六、推荐体验路径在线演示http://ruoyioffice.com/web/账号admin/admin123打开客户公海配置确认双超时与启用开关。看公海客户列表与我的客户对照。打开客户限制配置理解领取上限。运维在任务平台查看customerAutoPutPoolJob执行记录。源码仓库GitHub | GitCode | Gitee常见问题FAQ刚领取会不会马上又掉进公海领取会重置ownerTime。只要跟进/成交在超时天数内发生就不会立刻再满足候选条件。为什么要清 OWNER 权限而不只是改 ownerUserIdCRM 列表常靠数据权限过滤只改字段不清权限会出现「名上没人、权限仍在」或「别人领不到」的脏状态。锁定客户谁来决定业务上对重点客户点锁定自动 Job 直接lockStatusfalse才入选保护战略客户。没有 XXL-Job 能跑吗Job 注解挂在 XXL-Job也可用等价定时调度调同一autoPutCustomerPool()方法业务逻辑在 Service。结语公海自动回收的本质是双计时规则 豁免 清权入池 领取重建计时 上限防囤。配好看天数只是第一步权限与ownerTime对称处理池子才真能转起来。你们公海是手工扔还是已经按跟进天数自动掉有没有遇过「掉了公海但别人仍看不到」欢迎评论区交流。想要体验 RuoYi Office 的强大功能在线演示http://ruoyioffice.com/web/账号 admin / admin123源码仓库GitHub | GitCode | Gitee技术咨询添加微信17156169080备注「RuoYi Office」⭐如果觉得不错请给个 Star 支持一下

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价