55 lines
1.5 KiB
JavaScript
55 lines
1.5 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 userRes = await db.collection('users').where({ _openid: openid }).get()
|
|
|
|
let user
|
|
if (userRes.data.length > 0) {
|
|
// 已存在,更新登录时间(如果传了头像昵称也一并更新)
|
|
user = userRes.data[0]
|
|
const updateData = {
|
|
lastLoginTime: db.serverDate()
|
|
}
|
|
if (event.avatarUrl) updateData.avatarUrl = event.avatarUrl
|
|
if (event.nickName) updateData.nickName = event.nickName
|
|
await db.collection('users').doc(user._id).update({ data: updateData })
|
|
// 合并最新数据返回
|
|
if (event.avatarUrl) user.avatarUrl = event.avatarUrl
|
|
if (event.nickName) user.nickName = event.nickName
|
|
} else {
|
|
// 新用户,创建记录
|
|
const addRes = await db.collection('users').add({
|
|
data: {
|
|
_openid: openid,
|
|
avatarUrl: event.avatarUrl || '',
|
|
nickName: event.nickName || '',
|
|
createTime: db.serverDate(),
|
|
lastLoginTime: db.serverDate()
|
|
}
|
|
})
|
|
user = {
|
|
_id: addRes._id,
|
|
_openid: openid,
|
|
avatarUrl: event.avatarUrl || '',
|
|
nickName: event.nickName || ''
|
|
}
|
|
}
|
|
|
|
return {
|
|
openid: openid,
|
|
appid: wxContext.APPID,
|
|
unionid: wxContext.UNIONID,
|
|
userInfo: user
|
|
}
|
|
}
|