| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- const cloud = require('wx-server-sdk');
- cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });
- const db = cloud.database();
- // 用户注册(首次微信登录时调用)
- // 处理:创建用户记录 + 上下级关系绑定
- exports.main = async (event) => {
- const { referrerCode } = event;
- const { OPENID } = cloud.getWXContext();
- try {
- // 检查用户是否已存在
- const userRes = await db.collection('users').where({
- _openid: OPENID,
- }).get();
- if (userRes.data.length > 0) {
- return {
- code: 0,
- isNew: false,
- role: userRes.data[0].role || 'regular',
- message: '用户已存在',
- };
- }
- // 解析上级
- let invitedBy = null;
- if (referrerCode) {
- const refRes = await db.collection('users').where({
- referralCode,
- }).get();
- if (refRes.data.length > 0) {
- const refUser = refRes.data[0];
- // 不能自己邀请自己
- if (refUser._openid !== OPENID) {
- invitedBy = refUser._openid;
- // 更新上级的推广统计
- const stats = refUser.referralStats || {};
- await db.collection('users').doc(refUser._id).update({
- data: {
- 'referralStats.directCount': (stats.directCount || 0) + 1,
- },
- });
- }
- }
- }
- // 创建新用户
- const userData = {
- _openid: OPENID,
- role: 'regular',
- practitionerExpireAt: null,
- invitedBy,
- referralStats: {
- directCount: 0,
- indirectCount: 0,
- convertedCount: 0,
- },
- createdAt: db.serverDate(),
- updatedAt: db.serverDate(),
- };
- await db.collection('users').add({ data: userData });
- return {
- code: 0,
- isNew: true,
- role: 'regular',
- hasReferrer: !!invitedBy,
- };
- } catch (err) {
- return { code: 500, error: err.message };
- }
- };
|