0235699曾露 1 день назад
Родитель
Сommit
5142ce0290
1 измененных файлов с 69 добавлено и 31 удалено
  1. 69 31
      index.js

+ 69 - 31
index.js

@@ -981,53 +981,91 @@ Page({
       // 如果存在异业合作伙伴ID,处理异业绑定和扫码次数
       if (partnerId) {
         try {
+          console.log('===========================================');
+          console.log('======= 处理异业扫码逻辑 =======');
+          console.log('用户ID:', currentUser.id);
+          console.log('异业ID:', partnerId);
+          console.log('门店ID:', storeId);
+          
           // 检查用户是否已经绑定了异业合作伙伴
           const userBoundPartner = currentUser.get('Partner');
           const userBoundPartnerId = userBoundPartner ? userBoundPartner.id : null;
           
+          console.log('用户已绑定的异业ID:', userBoundPartnerId || '无');
+          
+          // 规则1:如果用户已绑定其他异业,不处理当前异业的扫码
+          if (userBoundPartnerId && userBoundPartnerId !== partnerId) {
+            console.log('⚠️ 用户已绑定其他异业,不处理当前异业的扫码');
+            console.log('   已绑定异业:', userBoundPartnerId);
+            console.log('   当前扫码异业:', partnerId);
+            console.log('===========================================');
+            return;
+          }
+          
+          // 规则2:检查该用户在该门店是否已经扫过该异业的码
+          const ScanRecord = Parse.Object.extend('ScanRecord');
+          const scanQuery = new Parse.Query(ScanRecord);
+          scanQuery.equalTo('user', {
+            __type: 'Pointer',
+            className: '_User',
+            objectId: currentUser.id
+          });
+          scanQuery.equalTo('partnerId', partnerId);
+          scanQuery.equalTo('storeId', storeId);
+          
+          const existingScan = await scanQuery.first();
+          
+          if (existingScan) {
+            console.log('⚠️ 该用户在该门店已扫过该异业的码,不重复计数');
+            console.log('   首次扫码时间:', existingScan.get('scanTime'));
+            console.log('===========================================');
+            return;
+          }
+          
+          console.log('✅ 该用户在该门店首次扫该异业码');
+          
+          // 规则3:如果用户还没有绑定异业,绑定当前异业
           if (!userBoundPartnerId) {
-            // 用户还没有绑定异业合作伙伴,绑定当前的
-            console.log('✅ 用户首次扫异业码,绑定异业合作伙伴:', partnerId);
+            console.log('🔗 用户首次扫异业码,绑定异业合作伙伴:', partnerId);
             
-            // 设置 Partner 指针
             currentUser.set('Partner', {
               __type: 'Pointer',
               className: 'Partner',
               objectId: partnerId
             });
             await currentUser.save();
-            
-            // 为该异业合作伙伴增加扫码次数
-            const Partner = Parse.Object.extend('Partner');
-            const partnerQuery = new Parse.Query(Partner);
-            const partnerObj = await partnerQuery.get(partnerId);
+            console.log('✅ 异业绑定成功');
+          }
+          
+          // 规则4:为该异业在该门店增加扫码次数
+          const Partner = Parse.Object.extend('Partner');
+          const partnerQuery = new Parse.Query(Partner);
+          const partnerObj = await partnerQuery.get(partnerId);
 
-            if (partnerObj) {
-              partnerObj.increment('scanCount', 1);
-              await partnerObj.save();
-              console.log('✅ 已为异业合作伙伴累加一次扫码次数,partnerId:', partnerId);
-            }
-          } else if (userBoundPartnerId === partnerId) {
-            // 用户已绑定,且扫的是同一个异业合作伙伴的码
-            console.log('✅ 用户扫已绑定的异业码,增加扫码次数,partnerId:', partnerId);
+          if (partnerObj) {
+            // 获取或初始化门店扫码次数映射
+            let storeScans = partnerObj.get('storeScans') || {};
             
-            const Partner = Parse.Object.extend('Partner');
-            const partnerQuery = new Parse.Query(Partner);
-            const partnerObj = await partnerQuery.get(partnerId);
-
-            if (partnerObj) {
-              partnerObj.increment('scanCount', 1);
-              await partnerObj.save();
-              console.log('✅ 已为异业合作伙伴累加一次扫码次数,partnerId:', partnerId);
-            }
-          } else {
-            // 用户已绑定其他异业合作伙伴,不增加当前异业的扫码次数
-            console.log('⚠️ 用户已绑定其他异业合作伙伴:', userBoundPartnerId);
-            console.log('⚠️ 当前扫码的异业:', partnerId);
-            console.log('⚠️ 不增加当前异业的扫码次数');
+            // 为该门店的扫码次数 +1
+            storeScans[storeId] = (storeScans[storeId] || 0) + 1;
+            
+            partnerObj.set('storeScans', storeScans);
+            
+            // 同时更新总扫码次数
+            partnerObj.increment('scanCount', 1);
+            
+            await partnerObj.save();
+            
+            console.log('✅ 异业扫码次数已更新');
+            console.log('   门店ID:', storeId);
+            console.log('   该门店扫码次数:', storeScans[storeId]);
+            console.log('   总扫码次数:', partnerObj.get('scanCount'));
           }
+          
+          console.log('===========================================');
         } catch (e) {
-          console.warn('⚠️ 处理异业合作伙伴绑定失败:', e);
+          console.error('❌ 处理异业合作伙伴绑定失败:', e);
+          console.log('===========================================');
         }
       }
     } catch (error) {