feat: harden phase one workflows
This commit is contained in:
@@ -3,6 +3,13 @@ function ensureToken() {
|
||||
if (app.globalData.token) {
|
||||
return Promise.resolve(app.globalData.token)
|
||||
}
|
||||
if (app.globalData.useDevLogin) {
|
||||
return devLogin(app)
|
||||
}
|
||||
return wxLogin(app)
|
||||
}
|
||||
|
||||
function devLogin(app) {
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.request({
|
||||
url: app.globalData.apiBaseUrl + '/api/auth/dev-miniapp-login',
|
||||
@@ -25,6 +32,37 @@ function ensureToken() {
|
||||
})
|
||||
}
|
||||
|
||||
function wxLogin(app) {
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.login({
|
||||
success(loginResult) {
|
||||
if (!loginResult.code) {
|
||||
reject(new Error('微信登录失败'))
|
||||
return
|
||||
}
|
||||
wx.request({
|
||||
url: app.globalData.apiBaseUrl + '/api/auth/miniapp-login',
|
||||
method: 'POST',
|
||||
data: {
|
||||
code: loginResult.code
|
||||
},
|
||||
success(res) {
|
||||
if (res.statusCode >= 200 && res.statusCode < 300 && res.data && res.data.code === 0) {
|
||||
app.globalData.token = res.data.data.token
|
||||
app.globalData.user = res.data.data
|
||||
resolve(app.globalData.token)
|
||||
return
|
||||
}
|
||||
reject(new Error((res.data && res.data.message) || '登录失败'))
|
||||
},
|
||||
fail: reject
|
||||
})
|
||||
},
|
||||
fail: reject
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function request(options) {
|
||||
const app = getApp()
|
||||
return new Promise((resolve, reject) => {
|
||||
@@ -50,6 +88,40 @@ function request(options) {
|
||||
})
|
||||
}
|
||||
|
||||
function uploadFile(filePath) {
|
||||
const app = getApp()
|
||||
return new Promise((resolve, reject) => {
|
||||
ensureToken().then((token) => {
|
||||
wx.uploadFile({
|
||||
url: app.globalData.apiBaseUrl + '/api/files/upload',
|
||||
filePath,
|
||||
name: 'file',
|
||||
header: {
|
||||
Authorization: token,
|
||||
satoken: token
|
||||
},
|
||||
success(res) {
|
||||
let body = res.data
|
||||
if (typeof body === 'string') {
|
||||
try {
|
||||
body = JSON.parse(body)
|
||||
} catch (error) {
|
||||
reject(new Error('上传失败'))
|
||||
return
|
||||
}
|
||||
}
|
||||
if (res.statusCode >= 200 && res.statusCode < 300 && body && body.code === 0) {
|
||||
resolve(body.data)
|
||||
return
|
||||
}
|
||||
reject(new Error((body && body.message) || '上传失败'))
|
||||
},
|
||||
fail: reject
|
||||
})
|
||||
}).catch(reject)
|
||||
})
|
||||
}
|
||||
|
||||
function yuan(cent) {
|
||||
return ((cent || 0) / 100).toFixed(2)
|
||||
}
|
||||
@@ -85,6 +157,7 @@ function setField(page, event) {
|
||||
|
||||
module.exports = {
|
||||
request,
|
||||
uploadFile,
|
||||
yuan,
|
||||
statusText,
|
||||
setField
|
||||
|
||||
Reference in New Issue
Block a user