refactor: 重构微信小程序从云开发迁移至后端API
将云数据库操作改为调用后端API接口 提取登录失败处理逻辑到单独方法 添加环境配置和API请求工具类 移除云开发相关配置
This commit is contained in:
+131
@@ -0,0 +1,131 @@
|
||||
// 后端 API 请求工具库
|
||||
const { BASE_URL, API } = require('./config')
|
||||
|
||||
/**
|
||||
* 封装 wx.request 为 Promise
|
||||
* @param {object} options - wx.request 参数
|
||||
* @returns {Promise<object>} 返回 result.data
|
||||
*/
|
||||
function request(options) {
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.request({
|
||||
...options,
|
||||
success: (res) => {
|
||||
const result = res.data
|
||||
if (result && result.code === 0) {
|
||||
resolve(result.data)
|
||||
} else {
|
||||
reject(new Error(result ? result.message : '请求失败'))
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('请求失败', options.url, err)
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化记录中的 createTime 字段
|
||||
* @param {object} record - 含 createTime 的记录
|
||||
* @returns {object} 格式化后的记录
|
||||
*/
|
||||
function formatRecord(record) {
|
||||
if (!record || !record.createTime) return record
|
||||
return {
|
||||
...record,
|
||||
createTime: new Date(record.createTime).toLocaleString('zh-CN')
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将后端 API 返回的预约记录映射为前端模板字段
|
||||
* 后端: id, visitDate, visitTime → 前端: _id, date, time
|
||||
*/
|
||||
function mapApiRecord(record) {
|
||||
if (!record) return null
|
||||
return {
|
||||
...record,
|
||||
_id: record.id,
|
||||
date: record.visitDate,
|
||||
time: record.visitTime
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 预约相关 API
|
||||
*/
|
||||
const appointmentDB = {
|
||||
/**
|
||||
* 创建预约
|
||||
* @param {object} data - 预约表单数据(需包含 openid)
|
||||
* @returns {Promise<string>} 新记录 id
|
||||
*/
|
||||
async create(data) {
|
||||
const result = await request({
|
||||
url: BASE_URL + API.APPOINTMENT_CREATE,
|
||||
method: 'POST',
|
||||
header: { 'content-type': 'application/json' },
|
||||
data: {
|
||||
name: data.name,
|
||||
phone: data.phone,
|
||||
company: data.company,
|
||||
reason: data.reason,
|
||||
visitDate: data.date,
|
||||
visitTime: data.time,
|
||||
hostName: data.hostName,
|
||||
area: data.area,
|
||||
openid: data.openid
|
||||
}
|
||||
})
|
||||
return result.id
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取当前用户的预约列表(按创建时间倒序)
|
||||
* @param {string} openid
|
||||
* @returns {Promise<Array>}
|
||||
*/
|
||||
async getList(openid) {
|
||||
const list = await request({
|
||||
url: BASE_URL + API.APPOINTMENT_LIST,
|
||||
method: 'GET',
|
||||
data: { openid }
|
||||
})
|
||||
return (list || []).map(item => mapApiRecord(item))
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取当前用户最新一条预约
|
||||
* @param {string} openid
|
||||
* @returns {Promise<object|null>}
|
||||
*/
|
||||
async getLatest(openid) {
|
||||
const data = await request({
|
||||
url: BASE_URL + API.APPOINTMENT_LATEST,
|
||||
method: 'GET',
|
||||
data: { openid }
|
||||
})
|
||||
return mapApiRecord(data) || null
|
||||
},
|
||||
|
||||
/**
|
||||
* 取消预约
|
||||
* @param {string} id - 预约记录 id
|
||||
* @param {string} openid - 当前用户 openid
|
||||
* @returns {Promise<boolean>} 是否成功
|
||||
*/
|
||||
async cancel(id, openid) {
|
||||
const result = await request({
|
||||
url: BASE_URL + API.APPOINTMENT_CANCEL + '?id=' + encodeURIComponent(id) + '&openid=' + encodeURIComponent(openid),
|
||||
method: 'PUT'
|
||||
})
|
||||
return result === true
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
formatRecord,
|
||||
appointmentDB
|
||||
}
|
||||
Reference in New Issue
Block a user