0.0.0
This commit is contained in:
48
cloudfunctions/login/index.js
Normal file
48
cloudfunctions/login/index.js
Normal file
@@ -0,0 +1,48 @@
|
||||
// 云函数 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,
|
||||
},
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user