You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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: '系统异常,请稍后重试' }
  }
}

落地注意事项

  1. 前端校验仅做体验优化,必须在DCRM后端接口层同步增加手机号重复拦截逻辑,避免前端被恶意绕过产生重复数据
  2. 并发场景下(同一手机号短时间内多次提交),建议后端接口加锁处理,避免查重和创建操作的时间差导致重复写入
  3. 手机号清洗规则可以根据业务实际调整,比如如果有国际号场景,需要增加区号的标准化处理

内容的提问来源于stack exchange,提问作者Arshad warsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 03:51:26