Files
wxserver/utils/api.js
T
yuming 3965e542fc
部署到群晖 / deploy (push) Failing after 6m22s
接入自建后端 + Gitea CI/CD
- 新增 server/:Node + Express + SQLite + node-cron 实现登录、纪念日 CRUD 和定时订阅消息推送
- 新增 .gitea/workflows/deploy.yml:推送即触发群晖 Docker 部署,监听 15002
- utils/api.js:自动按 envVersion 切换本地/线上 BASE_URL
- app.js 与 add-anniversary.js 移除 wx.cloud 调用,改走自建后端
- cloudfunctions/ 暂保留以便回滚
- 一并提交此前未入库的首页 / 设置页 / 日历 / 万年历等改造

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-01 15:44:09 +08:00

71 lines
1.8 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 } })
}
module.exports = { request, login, anniversary, BASE_URL }