/**
 * 履约者业务 API
 * @author steelwei
 */
import request from '@/utils/request'
import { BASE_URL, CLIENT_ID, PLATFORM_CODE } from '@/utils/config'

/**
 * 获取当前履约者个人档案
 */
export function getMyProfile() {
  return request({
    url: '/fulfiller/fulfiller/my',
    method: 'GET'
  })
}

/**
 * 提交入驻申请（招募表单）
 * @param {Object} data - 申请数据
 */
export function submitAudit(data) {
  return request({
    url: '/fulfiller/app/audit/submit',
    method: 'POST',
    needToken: false,
    data
  })
}

/**
 * 查询子级区域/站点列表（级联选择器用）
 * @param {number} parentId - 父级ID，0或不传查顶级
 */
export function getAreaChildren(parentId = 0) {
  return request({
    url: '/fulfiller/app/area/children',
    method: 'GET',
    needToken: false,
    data: { parentId }
  })
}

/**
 * 上传文件（图片等）
 * @param {string} filePath - 本地文件路径
 * @returns {Promise} - { url, fileName, ossId }
 */
export function uploadFile(filePath) {
  return new Promise((resolve, reject) => {
    uni.uploadFile({
      url: BASE_URL + '/fulfiller/app/upload',
      filePath: filePath,
      name: 'file',
      header: {
        'clientid': CLIENT_ID,
        'X-Platform-Code': PLATFORM_CODE
      },
      success: (res) => {
        try {
          const data = JSON.parse(res.data)
          if (data.code === 200) {
            resolve(data)
          } else {
            uni.showToast({ title: data.msg || '上传失败', icon: 'none' })
            reject(data)
          }
        } catch (e) {
          reject(e)
        }
      },
      fail: (err) => {
        uni.showToast({ title: '上传失败', icon: 'none' })
        reject(err)
      }
    })
  })
}

/**
 * 查询我的审核状态
 */
export function getMyAuditStatus() {
  return request({
    url: '/fulfiller/audit/my',
    method: 'GET'
  })
}

/**
 * 获取我的积分日志
 */
export function getMyPointsLog(params) {
  return request({
    url: '/fulfiller/log/points',
    method: 'GET',
    data: params
  })
}

/**
 * 获取我的余额日志
 */
export function getMyBalanceLog(params) {
  return request({
    url: '/fulfiller/log/balance',
    method: 'GET',
    data: params
  })
}

/**
 * 获取我的奖惩记录
 */
export function getMyRewardLog(params) {
  return request({
    url: '/fulfiller/log/reward',
    method: 'GET',
    data: params
  })
}

/**
 * 修改头像
 * @param {string} avatar - 头像URL
 * @author steelwei
 */
export function updateAvatar(avatar) {
  return request({
    url: '/fulfiller/fulfiller/my/avatar',
    method: 'PUT',
    data: { avatar }
  })
}

/**
 * 修改真实姓名
 * @param {string} name - 真实姓名
 * @author steelwei
 */
export function updateName(name) {
  return request({
    url: '/fulfiller/fulfiller/my/name',
    method: 'PUT',
    data: { name }
  })
}

/**
 * 修改工作状态
 * @param {string} status - 工作状态 (resting:休息, busy:接单中)
 * @author steelwei
 */
export function updateStatus(status) {
  return request({
    url: '/fulfiller/fulfiller/my/status',
    method: 'PUT',
    data: { status }
  })
}

/**
 * 修改工作城市
 * @param {string} cityCode - 城市编码
 * @param {string} cityName - 城市名称
 * @author steelwei
 */
export function updateCity(cityCode, cityName) {
  return request({
    url: '/fulfiller/fulfiller/my/city',
    method: 'PUT',
    data: { cityCode, cityName }
  })
}

/**
 * 获取认证信息
 * @author steelwei
 */
export function getAuthInfo() {
  return request({
    url: '/fulfiller/fulfiller/my/auth',
    method: 'GET'
  })
}

/**
 * 修改手机号
 * @param {string} phone - 新手机号
 * @param {string} code - 验证码
 * @author steelwei
 */
export function updatePhone(phone, code) {
  return request({
    url: '/fulfiller/fulfiller/my/phone',
    method: 'PUT',
    data: { phone, code }
  })
}

/**
 * 修改密码
 * @param {string} oldPassword - 旧密码
 * @param {string} newPassword - 新密码
 * @author steelwei
 */
export function updatePassword(oldPassword, newPassword) {
  return request({
    url: '/fulfiller/fulfiller/my/password',
    method: 'PUT',
    data: { oldPassword, newPassword }
  })
}

/**
 * 注销账号
 * @author steelwei
 */
export function deleteAccount() {
  return request({
    url: '/fulfiller/fulfiller/my/account',
    method: 'DELETE'
  })
}

/**
 * 更新认证信息
 * @param {Object} data - 认证数据
 * @author steelwei
 */
export function updateAuthInfo(data) {
  return request({
    url: '/fulfiller/fulfiller/my/auth',
    method: 'POST',
    data
  })
}
