/** * 后端接口请求封装 * * 开发版(开发者工具)走本地 docker,体验版/正式版走线上 HTTPS。 */ const DEV_BASE_URL = 'http://localhost:3000' const PROD_BASE_URL = 'https://wxserver.ymxixi.space' function resolveBaseUrl() { try { const env = wx.getAccountInfoSync().miniProgram.envVersion return env === 'develop' ? DEV_BASE_URL : PROD_BASE_URL } catch (e) { return DEV_BASE_URL } } const BASE_URL = resolveBaseUrl() function request({ url, method = 'POST', data = {}, withOpenid = true }) { return new Promise((resolve, reject) => { const header = { 'Content-Type': 'application/json' } if (withOpenid) { const openid = wx.getStorageSync('openid') if (openid) header['x-openid'] = openid } wx.request({ url: BASE_URL + url, method, header, data, timeout: 10000, success: (res) => { if (res.statusCode >= 200 && res.statusCode < 300) resolve(res.data) else reject(new Error(`HTTP ${res.statusCode}`)) }, fail: (err) => reject(err) }) }) } // 登录:用 wx.login 拿 code 换 openid function login() { return new Promise((resolve, reject) => { wx.login({ success: async (loginRes) => { try { const res = await request({ url: '/api/login', data: { code: loginRes.code }, withOpenid: false }) if (!res.success) return reject(new Error(res.error || '登录失败')) resolve(res) } catch (err) { reject(err) } }, fail: reject }) }) } // 纪念日操作(兼容原云函数 action 协议) function anniversary(action, data) { return request({ url: '/api/anniversary', data: { action, data } }) } module.exports = { request, login, anniversary, BASE_URL }