shawenguan 1 gadu atpakaļ
vecāks
revīzija
3204bc72e0
1 mainītis faili ar 97 papildinājumiem un 17 dzēšanām
  1. 97 17
      Scripts/pingan/pinganIkea.js

+ 97 - 17
Scripts/pingan/pinganIkea.js

@@ -365,20 +365,25 @@ function getResponseErrorMsg(errCode, config, responseMsg) {
 
 function setActCouponStatus(activityCode, status) {
     let day = magicJS.formatDate(new Date(), 'yyyy-MM-dd');
-    let key = `${activityCode}_${day}`;
+    let key = `PingAnIKEA#${activityCode}_${day}`;
     magicJS.data.write(key, status);
+    if (status == 1 || status == 2) {// 已领取
+        key = `PingAnIKEA#${activityCode}_status}`;
+        magicJS.data.write(key, new Date().getTime());
+    }
 }
 
 function getActCouponStatus(activityCode) {
     let day = magicJS.formatDate(new Date(), 'yyyy-MM-dd');
-    let key = `${activityCode}_${day}`;
+    let key = `PingAnIKEA#${activityCode}_${day}`;
     let status = magicJS.data.read(key, -1);
-    return String(status);
+    return Number(status);
 }
 
-function isCouponGotToday(activityCode) {
+// 今日是否执行过获取优惠券任务
+function isCouponExecToday(activityCode) {
     let status = getActCouponStatus(activityCode);
-    if (status == 1 || status == 2) {
+    if (status == 1 || status == 2 || status == 3) {
         return true;
     } else if (status == -1) {
         return false;
@@ -387,6 +392,69 @@ function isCouponGotToday(activityCode) {
     }
 }
 
+// 当月是否领取过优惠券
+function hasCouponGotMonth(activityCode) {
+    let key = `PingAnIKEA#${activityCode}_status}`;
+    let strNum = magicJS.data.read(key, null);
+    if (strNum) {
+        let now = new Date();
+        let date = new Date(Number(strNum));
+        if (now.getFullYear() == date.getFullYear() && now.getMonth() == date.getMonth()) {
+            return true;
+        }
+        return false;
+    }
+    return false;
+}
+
+function hasCouponGotWeek(activityCode) {
+    let key = `PingAnIKEA#${activityCode}_status}`;
+    let strNum = magicJS.data.read(key, null);
+    if (strNum) {
+        let now = new Date();
+        let date = new Date(Number(strNum));
+        if (isSameWeek(now, date)) {
+            return true;
+        }
+        return false;
+    }
+    return false;
+}
+
+function hasCouponGotDay(activityCode) {
+    let key = `PingAnIKEA#${activityCode}_status}`;
+    let strNum = magicJS.data.read(key, null);
+    if (strNum) {
+        let now = new Date();
+        let date = new Date(Number(strNum));
+        if (now.getFullYear() == date.getFullYear() && now.getMonth() == date.getMonth() && now.getDate() == date.getDate()) {
+            return true;
+        }
+        return false;
+    }
+    return false;
+}
+
+
+function isSameWeek(date1, date2) {
+    // 获取每个日期的星期几
+    const day1 = date1.getDay(); // 返回值为 0(周日)到 6(周六)
+    const day2 = date2.getDay();
+
+    // 获取每个日期的时间戳
+    const time1 = date1.getTime();
+    const time2 = date2.getTime();
+
+    // 根据星期几和时间戳判断是否属于同一个星期
+    const weekDiff = Math.floor(Math.abs(time1 - time2) / (1000 * 60 * 60 * 24 * 7));
+
+    if (day1 <= day2) {
+        return weekDiff === 0;
+    } else {
+        return weekDiff === 1;
+    }
+}
+
 async function tryGrabCoupon() {
     gPageData = await checkGetPageData();
     let widgets = gPageData.widgets;
@@ -413,10 +481,14 @@ async function tryGrabCoupon() {
     for (let i = items925.length - 1; i >= 0; i--) {
         const item = items925[i];
         const config = item.config;
-        if (isCouponGotToday(config.activityCode)) {
+        if (isCouponExecToday(config.activityCode)) {
             magicJS.logger.info(`${sk925Names[i]}今天已经执行过了[${config.activityCode}]`);
             continue;
         }
+        if (hasCouponGotMonth(config.activityCode)) {
+            magicJS.logger.info(`${sk925Names[i]}本月已经领过了[${config.activityCode}]`);
+            continue;
+        }
         // magicJS.logger.info(`activityCode=${config.activityCode} activityValue=${config.activityValue}`);
         let ret = await queryCustomerActivityStatus(config.activityCode, config.activityValue);
         let tipsText = ``;
@@ -429,12 +501,12 @@ async function tryGrabCoupon() {
             }
             if (ret.responseCode == '000000') {
                 setActCouponStatus(config.activityCode, 1);
-            } else if (ret.responseCode == '950009') {//领奖机会已经用完
+            } else if (ret.responseCode == '950008' || ret.responseCode == '900745' || ret.responseCode == '950009') {//领奖机会已经用完
                 setActCouponStatus(config.activityCode, 2);
             } else if (ret.responseCode == '960002') {//今天奖励已经发完
-                setActCouponStatus(config.activityCode, 2);
+                setActCouponStatus(config.activityCode, 3);
             } else if (ret.responseCode == '900130') {//不符合领取规则
-                setActCouponStatus(config.activityCode, 2);
+                setActCouponStatus(config.activityCode, 3);
             }
             if (ret.responseCode == '000000') {
                 tipsText = `${sk925Names[i]}-领取成功`;
@@ -465,10 +537,14 @@ async function tryGrabCoupon() {
     for (let i = 0; i < items88.length; i++) {
         const item = items88[i];
         const config = item.config;
-        if (isCouponGotToday(config.activityCode)) {
+        if (isCouponExecToday(config.activityCode)) {
             magicJS.logger.info(`${sk88Names[i]}今天已经执行过了[${config.activityCode}]`);
             continue;
         }
+        if (hasCouponGotMonth(config.activityCode)) {
+            magicJS.logger.info(`${sk88Names[i]}本月已经领过了[${config.activityCode}]`);
+            continue;
+        }
         // magicJS.logger.info(`activityCode=${config.activityCode} activityValue=${config.activityValue}`);
         let ret = await queryCustomerActivityStatus(config.activityCode, config.activityValue);
         let tipsText = ``;
@@ -479,12 +555,12 @@ async function tryGrabCoupon() {
             }
             if (ret.responseCode == '000000') {
                 setActCouponStatus(config.activityCode, 1);
-            } else if (ret.responseCode == '950009') {//领奖机会已经用完
+            } else if (ret.responseCode == '950008' || ret.responseCode == '900745' || ret.responseCode == '950009') {//领奖机会已经用完
                 setActCouponStatus(config.activityCode, 2);
             } else if (ret.responseCode == '960002') {//今天奖励已经发完
-                setActCouponStatus(config.activityCode, 2);
+                setActCouponStatus(config.activityCode, 3);
             } else if (ret.responseCode == '900130') {//不符合领取规则
-                setActCouponStatus(config.activityCode, 2);
+                setActCouponStatus(config.activityCode, 3);
             }
             if (ret.responseCode == '000000') {
                 tipsText = `${sk88Names[i]}-领取成功`;
@@ -502,10 +578,14 @@ async function tryGrabCoupon() {
     for (let i = 0; i < items55.length; i++) {
         const item = items55[i];
         const config = item.config;
-        if (isCouponGotToday(config.activityCode)) {
+        if (isCouponExecToday(config.activityCode)) {
             magicJS.logger.info(`${sk55Names[i]}今天已经执行过了[${config.activityCode}]`);
             continue;
         }
+        if (hasCouponGotMonth(config.activityCode)) {
+            magicJS.logger.info(`${sk55Names[i]}本月已经领过了[${config.activityCode}]`);
+            continue;
+        }
         // magicJS.logger.info(`activityCode=${config.activityCode} activityValue=${config.activityValue}`);
         let ret = await queryCustomerActivityStatus(config.activityCode, config.activityValue);
         let tipsText = ``;
@@ -516,12 +596,12 @@ async function tryGrabCoupon() {
             }
             if (ret.responseCode == '000000') {
                 setActCouponStatus(config.activityCode, 1);
-            } else if (ret.responseCode == '950009') {//领奖机会已经用完
+            } else if (ret.responseCode == '950008' || ret.responseCode == '900745' || ret.responseCode == '950009') {//领奖机会已经用完
                 setActCouponStatus(config.activityCode, 2);
             } else if (ret.responseCode == '960002') {//今天奖励已经发完
-                setActCouponStatus(config.activityCode, 2);
+                setActCouponStatus(config.activityCode, 3);
             } else if (ret.responseCode == '900130') {//不符合领取规则
-                setActCouponStatus(config.activityCode, 2);
+                setActCouponStatus(config.activityCode, 3);
             }
             if (ret.responseCode == '000000') {
                 tipsText = `${sk55Names[i]}-领取成功`;