- 新增 cloud-functions/ 目录(6个云函数:auth/device/subscription/treatment/user/admin) - 云函数使用 wx-server-sdk + 云数据库(不再依赖 MySQL) - auth 云函数通过 cloud.getWXContext() 自动获取 openid,无需手动 wx.login - request.js 改为通过 wx.cloud.callFunction() 调用云函数 - 登录流程简化:点击授权 → 直接调 auth 云函数 → 获取用户信息 - 保留 HTTP 模式切换能力(USE_CLOUD 变量控制)
40 行
1.3 KiB
JavaScript
40 行
1.3 KiB
JavaScript
const cloud = require('wx-server-sdk')
|
|
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
|
|
const db = cloud.database()
|
|
|
|
exports.main = async (event, context) => {
|
|
const wxContext = cloud.getWXContext()
|
|
const openid = wxContext.OPENID
|
|
const { action } = event
|
|
|
|
if (action === 'profile') {
|
|
const users = await db.collection('users').where({ openid }).get()
|
|
if (users.data.length === 0) return { code: 1001, message: '用户不存在' }
|
|
const user = users.data[0]
|
|
const binds = await db.collection('bindings').where({ openid, status: 'active' }).count()
|
|
return {
|
|
code: 0,
|
|
data: {
|
|
user_id: user._id,
|
|
nickname: user.nickname || '用户' + openid.slice(-4),
|
|
avatar_url: user.avatar_url || '',
|
|
phone: user.phone || '',
|
|
gender: user.gender || 0,
|
|
device_count: binds.total,
|
|
created_at: user.created_at
|
|
}
|
|
}
|
|
}
|
|
|
|
if (action === 'update') {
|
|
const updates = {}
|
|
if (event.data.nickname) updates.nickname = event.data.nickname
|
|
if (event.data.avatar_url) updates.avatar_url = event.data.avatar_url
|
|
if (event.data.gender !== undefined) updates.gender = event.data.gender
|
|
await db.collection('users').where({ openid }).update({ data: updates })
|
|
return { code: 0, data: {} }
|
|
}
|
|
|
|
return { code: -1, message: '未知操作' }
|
|
}
|