如何使用JS实现DCRM中手机号不存在时创建线索记录
JS实现DCRM线索创建的手机号重复校验逻辑
核心实现流程
- 第一步:获取用户提交的线索表单数据,对手机号字段做格式标准化清洗,去除空格、分隔符等无关字符
- 第二步:调用DCRM系统的手机号查重接口,查询当前提交的手机号是否已经绑定过有效线索
- 第三步:根据查重结果走分支逻辑:
- 手机号无匹配记录:正常调用线索创建接口,写入新的线索数据
- 手机号已有匹配记录:直接终止创建流程,返回「该手机号已存在线索,请勿重复提交」的提示,不执行写入操作
可直接复用的代码示例
/** * 手机号格式标准化:去除空格、横杠,统一格式避免查重漏判 * @param {string} phone 原始输入手机号 * @returns {string} 标准化后的手机号 */ const standardizePhone = (phone) => { if (!phone) return '' return phone.replace(/\s|-/g, '').trim() } /** * 调用DCRM接口校验手机号是否已存在线索 * @param {string} phone 标准化后的手机号 * @returns {Promise<boolean>} 存在返回true,不存在返回false */ const checkLeadPhoneExisted = async (phone) => { // 替换为实际DCRM查重接口地址和请求逻辑 const res = await fetch(`/api/dcrm/lead/check-phone?phone=${encodeURIComponent(phone)}`, { method: 'GET', headers: { 'Content-Type': 'application/json' } }).then(resp => resp.json()) // 按实际接口返回字段调整判断逻辑,示例为code=0时返回是否存在的标记 return res.code === 0 ? res.data.existed : false } /** * 线索创建主逻辑 * @param {Object} leadFormData 线索表单提交数据 * @returns {Promise<Object>} 创建结果 */ const createDcrmLead = async (leadFormData) => { try { const standardPhone = standardizePhone(leadFormData.phone) // 基础格式校验 if (!/^1[3-9]\d{9}$/.test(standardPhone)) { return { success: false, msg: '请输入正确格式的手机号' } } // 手机号查重 const isExisted = await checkLeadPhoneExisted(standardPhone) if (isExisted) { // 手机号已存在,终止创建 return { success: false, msg: '该手机号已存在对应线索,请勿重复创建' } } // 无重复,执行线索创建 const createRes = await fetch('/api/dcrm/lead/create', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ ...leadFormData, phone: standardPhone }) }).then(resp => resp.json()) if (createRes.code === 0) { return { success: true, msg: '线索创建成功', data: createRes.data } } return { success: false, msg: createRes.msg || '线索创建失败,请稍后重试' } } catch (err) { console.error('线索创建流程异常:', err) return { success: false, msg: '系统异常,请稍后重试' } } }
落地注意事项
- 前端校验仅做体验优化,必须在DCRM后端接口层同步增加手机号重复拦截逻辑,避免前端被恶意绕过产生重复数据
- 并发场景下(同一手机号短时间内多次提交),建议后端接口加锁处理,避免查重和创建操作的时间差导致重复写入
- 手机号清洗规则可以根据业务实际调整,比如如果有国际号场景,需要增加区号的标准化处理
内容的提问来源于stack exchange,提问作者Arshad warsi
相关产品推荐
相关产品推荐

