You need to sign in or sign up before continuing.
userProfile.js 1.69 KB
/*
 * @Date: 2026-05-20 11:40:00
 * @LastEditors: hookehuyr hookehuyr@gmail.com
 * @LastEditTime: 2026-05-20 11:40:00
 * @FilePath: /lls_program/src/utils/userProfile.js
 * @Description: 用户资料相关工具函数
 */

/**
 * @description 构建更新个人资料请求参数
 * @param {Object} formData - 页面表单数据
 * @param {Object} extraParams - 额外补充参数
 * @returns {Object} 仅包含接口需要的字段
 */
export const buildUpdateUserProfilePayload = (formData, extraParams = {}) => {
  const payload = {
    nickname: (formData?.nickname || '').trim(),
    avatar_url: formData?.avatar_url || '',
    birth_date: formData?.birth_date || '',
    wheelchair_needed: Boolean(formData?.wheelchair_needed),
    gender: formData?.gender,
  }

  const optionalKeys = ['reg_source', 'reg_stage_id']
  optionalKeys.forEach(key => {
    const value = extraParams[key]
    if (value !== '' && value !== undefined && value !== null) {
      // reg_stage_id 需要保持数值类型,其他来源字段按原样透传即可。
      payload[key] = key === 'reg_stage_id' ? Number(value) : value
    }
  })

  return payload
}

/**
 * @description 判断用户是否已完善扫码打卡所需的个人资料
 * @param {Object} user - 用户资料
 * @returns {boolean} 是否已完善
 */
export const isUserProfileComplete = (user = {}) => {
  // 扫码打卡只关心能否继续后续流程所需的关键资料是否齐全,
  // 不把 session、年龄限制等页面外规则混进这里。
  return Boolean(
    user?.nickname &&
    user?.birth_date &&
    user?.gender !== null &&
    user?.gender !== undefined &&
    user?.wheelchair_needed !== null &&
    user?.wheelchair_needed !== undefined
  )
}