// 云函数 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, }, }; };