|
|
@@ -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) {
|