49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
// 云函数 login — 登录 + 首次建用户,返回 hasDog 决定跳建档/首页
|
|
// 契约见 docs/03-云函数设计.md §1
|
|
const cloud = require('wx-server-sdk');
|
|
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });
|
|
const db = cloud.database();
|
|
|
|
exports.main = async (event, context) => {
|
|
const { OPENID } = cloud.getWXContext(); // 可信用户标识
|
|
const usersCol = db.collection('users');
|
|
const dogsCol = db.collection('dogs');
|
|
|
|
// 1. 查用户,不存在则建档
|
|
let userInfo;
|
|
const userRes = await usersCol.where({ _openid: OPENID }).limit(1).get();
|
|
if (userRes.data.length === 0) {
|
|
const now = Date.now();
|
|
const doc = {
|
|
_openid: OPENID,
|
|
nickname: '铲屎官',
|
|
avatar: '',
|
|
walkCount: 0,
|
|
joinedAt: now,
|
|
createdAt: now,
|
|
};
|
|
const addRes = await usersCol.add({ data: doc });
|
|
userInfo = { _id: addRes._id, ...doc };
|
|
} else {
|
|
userInfo = userRes.data[0];
|
|
}
|
|
|
|
// 2. 是否已有狗狗 → 决定前端跳建档(0b)还是首页(1)
|
|
const countRes = await dogsCol.where({ _openid: OPENID }).count();
|
|
const hasDog = countRes.total > 0;
|
|
|
|
return {
|
|
ok: true,
|
|
data: {
|
|
userInfo: {
|
|
openid: OPENID,
|
|
nickname: userInfo.nickname,
|
|
avatar: userInfo.avatar,
|
|
walkCount: userInfo.walkCount,
|
|
joinedAt: userInfo.joinedAt,
|
|
},
|
|
hasDog,
|
|
},
|
|
};
|
|
};
|