liujie
2026-07-29 c560a88ab429cd164d8eb6fcec42a273b898e230
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import { request, uploadFile } from '../utils/request'
 
const REGISTRATION_STATE_KEY = 'mingdao_guide_registration_state'
 
export function getRegistrationState() {
  return uni.getStorageSync(REGISTRATION_STATE_KEY) || null
}
 
export function clearRegistrationState() {
  uni.removeStorageSync(REGISTRATION_STATE_KEY)
}
 
export function sendRegistrationCode(phone) {
  return request({
    url: '/guide/registration/sms-code',
    method: 'POST',
    authenticated: false,
    data: { phone }
  })
}
 
export function verifyRegistrationPhone(phone, code) {
  return request({
    url: '/guide/registration/verify-phone',
    method: 'POST',
    authenticated: false,
    data: { phone, code }
  }).then((result) => {
    const state = { phone, ...result }
    uni.setStorageSync(REGISTRATION_STATE_KEY, state)
    return state
  })
}
 
export function getRegistrationCities() {
  return request({
    url: '/guide/registration/cities',
    authenticated: false
  })
}
 
export function uploadRegistrationDocument(filePath, registrationToken) {
  return uploadFile({
    url: '/guide/registration/documents',
    filePath,
    header: { 'X-Registration-Token': registrationToken }
  }).then((result) => result.url)
}
 
export function submitGuideRegistration(form) {
  const state = getRegistrationState()
  if (!state || !state.registrationToken) {
    return Promise.reject(new Error('手机号验证已失效,请重新验证'))
  }
  const uploadTasks = [
    uploadRegistrationDocument(form.idFront, state.registrationToken),
    uploadRegistrationDocument(form.idBack, state.registrationToken),
    uploadRegistrationDocument(form.guideLicense, state.registrationToken),
    form.guideCert ? uploadRegistrationDocument(form.guideCert, state.registrationToken) : Promise.resolve('')
  ]
  return Promise.all(uploadTasks).then(([idCardFrontUrl, idCardBackUrl, guideCertificateUrl, qualificationCertificateUrl]) =>
    request({
      url: '/guide/registration/applications',
      method: 'POST',
      authenticated: false,
      data: {
        realName: form.name,
        gender: form.gender === '男' ? 1 : 2,
        ageRange: form.age,
        workYearRange: form.workYear,
        guideType: form.teamType === '讲解队导游' ? 'team' : 'personal',
        idCardNo: form.idNo,
        idCardFrontUrl,
        idCardBackUrl,
        guideCertificateUrl,
        qualificationCertificateUrl,
        certificateValidUntil: form.certificateValidUntil,
        bankCardNo: form.bankCardNo,
        bankCityId: form.bankCityId
      },
      headers: { 'X-Registration-Token': state.registrationToken }
    })
  ).then((result) => {
    clearRegistrationState()
    return result
  })
}