ddcfe3334e
部署到群晖 / deploy (push) Successful in 44s
- 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>
76 lines
1.9 KiB
JavaScript
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 }
|