Files
wxserver/utils/api.js
T
yuming ddcfe3334e
部署到群晖 / deploy (push) Successful in 44s
v2.1.0 流程改造 + 农历准确性修复 + 双向同步 + 闰月支持
- Phase 1: 添加纪念日合并人物创建流程(方案 B)
- Phase 2: 农历提醒按 lunarMonth/Day 计算每年公历
- Phase 3: 人员数据同步到后端(新增 /api/person)
- Phase 4: 新设备启动从云端恢复数据
- Phase 5: 工具函数收敛 utils/format.js
- Phase 6: 同步失败入队 + 启动重试
- Phase 7: 闰月生日完整支持(含 isLeapMonth + UI 警示)
- 修复 lunarInfo 数据表错位(替换为权威源 jjonline/calendar.js)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-02 05:51:17 +08:00

76 lines
1.9 KiB
JavaScript

/**
* 后端接口请求封装
*
* 开发版(开发者工具)走本地 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 } })
}
// 人员操作
function person(action, data) {
return request({ url: '/api/person', data: { action, data } })
}
module.exports = { request, login, anniversary, person, BASE_URL }