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 getRegistrationTeams() {
|
return request({
|
url: '/guide/registration/teams',
|
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.guideType,
|
teamId: form.teamId,
|
idCardNo: form.idNo,
|
idCardFrontUrl,
|
idCardBackUrl,
|
guideCertificateUrl,
|
qualificationCertificateUrl
|
},
|
headers: { 'X-Registration-Token': state.registrationToken }
|
})
|
).then((result) => {
|
clearRegistrationState()
|
return result
|
})
|
}
|