diff --git a/backend/src/controllers/authController.js b/backend/src/controllers/authController.js index 591ad41..2d9df9f 100644 --- a/backend/src/controllers/authController.js +++ b/backend/src/controllers/authController.js @@ -26,6 +26,11 @@ const wechatLogin = async (req, res) => { const { code, userInfo, invitationCode } = req.body; + console.log('=== WeChat Login Request ==='); + console.log('Code:', code); + console.log('InvitationCode:', invitationCode); + console.log('UserInfo:', userInfo); + // Extract device info from request const deviceInfo = { ipAddress: req.ip || req.connection.remoteAddress, @@ -41,6 +46,10 @@ const wechatLogin = async (req, res) => { deviceInfo ); + console.log('=== Login Result ==='); + console.log('User ID:', result.user.id); + console.log('User invitedBy:', result.user.invitedBy); + return sendSuccess(res, { user: { id: result.user.id, diff --git a/backend/src/services/authService.js b/backend/src/services/authService.js index b7b44af..70c274c 100644 --- a/backend/src/services/authService.js +++ b/backend/src/services/authService.js @@ -89,6 +89,10 @@ const wechatLogin = async (code, userInfo = {}, invitationCode = null, deviceInf console.error('Failed to get default avatar config:', e); } + console.log('=== Creating New User ==='); + console.log('OpenId:', openId); + console.log('InvitationCode received:', invitationCode); + // Create new user const userData = { wechatOpenId: openId, @@ -100,14 +104,18 @@ const wechatLogin = async (code, userInfo = {}, invitationCode = null, deviceInf // Handle invitation let inviterId = null; if (invitationCode) { + console.log('Looking for inviter with code:', invitationCode); const inviter = await User.findOne({ where: { invitationCode } }); + console.log('Inviter found:', inviter ? inviter.id : 'NOT FOUND'); if (inviter) { userData.invitedBy = inviter.id; inviterId = inviter.id; + console.log('Setting invitedBy to:', inviter.id); } } user = await User.create(userData); + console.log('New user created:', user.id, 'invitedBy:', user.invitedBy); // Record invitation relationship if (inviterId) { @@ -118,11 +126,33 @@ const wechatLogin = async (code, userInfo = {}, invitationCode = null, deviceInf registeredAt: new Date(), rewardStatus: 'pending', }); + console.log('Invitation record created'); } } else { // Update existing user info if provided if (userInfo.nickname) user.nickname = userInfo.nickname; if (userInfo.avatar) user.avatar = userInfo.avatar; + + // Handle invitation for existing user who hasn't been invited yet + if (invitationCode && !user.invitedBy) { + const inviter = await User.findOne({ where: { invitationCode } }); + if (inviter && inviter.id !== user.id) { + // Bind invitation relationship + user.invitedBy = inviter.id; + + // Record invitation relationship + await Invitation.create({ + inviterId: inviter.id, + inviteeId: user.id, + invitationCode, + registeredAt: new Date(), + rewardStatus: 'pending', + }); + + console.log(`User ${user.id} bound to inviter ${inviter.id} via code ${invitationCode}`); + } + } + await user.save(); }