shawenguan 1 год назад
Родитель
Сommit
b4c373d5e8
2 измененных файлов с 70 добавлено и 5 удалено
  1. 7 0
      BoxJsSub/wubian.json
  2. 63 5
      Scripts/wubian/wubianHelper.js

+ 7 - 0
BoxJsSub/wubian.json

@@ -82,6 +82,13 @@
                     "type": "textarea",
                     "autoGrow": true,
                     "desc": "我拥有的产品数量自定义"
+                },
+                {
+                    "id": "WubianDataMaskingEnabled",
+                    "name": "开启/关闭数据脱敏处理",
+                    "val": true,
+                    "type": "boolean",
+                    "desc": "默认开启"
                 }
             ]
         },

+ 63 - 5
Scripts/wubian/wubianHelper.js

@@ -28,6 +28,9 @@ const WuBianConstKey = {
     MyArtCountModifyMode: 'WubianMyArtCountModifyMode',
     ArtIdNameMapData: 'WubianArtIdNameMapData',
 
+    DataMaskingEnabled: 'WubianDataMaskingEnabled',
+    VerListMaskkingDataMap: 'WubianVerListMaskkingDataMap',
+
     AllUserSimpleInfo: 'WubianAllUserSimpleInfo',
     ScoreRankDaily: 'WubianScoreRankDaily',
 
@@ -333,6 +336,10 @@ function appendCookieStr(newCookieStr) {
     magicJS.data.write(WuBianConstKey.Cookie, cookieStr);
 }
 
+/**
+ * 登录后获取用户信息,然后持久化保存在本地
+ * @returns 
+ */
 function handleMobileLogin() {
     let rspData = getResponsePlainData();
     if (!rspData) {
@@ -368,11 +375,12 @@ function handleMobileLogin() {
     }
     */
     magicJS.data.write(WuBianConstKey.UserInfo, rspData.data);
-    rspData.data.nickname = '测试专用001';
-    rspData.data.address = '0x0000000000000000000000000000000000000001';
-    rspData.data.avatar = '/uploads/20240930/c8a5a0d2aa889057e2d79334b70ffd9d.png';
-    gRetBody = rspData;
-
+    if (isDataMaskingEnabled()) {
+        rspData.data.nickname = '测试专用001';
+        rspData.data.address = '0x0000000000000000000000000000000000000001';
+        rspData.data.avatar = '/uploads/20240930/c8a5a0d2aa889057e2d79334b70ffd9d.png';
+        gRetBody = rspData;
+    }
     let token = rspData.data.token;
     let expireDate = new Date(rspData.data.tokenExpireTime * 1000);
     magicJS.data.write(WuBianConstKey.Token, token);
@@ -438,9 +446,53 @@ function handleVerList() {
             rspData.data.total = count;
             gRetBody = rspData;
         }
+        if (isDataMaskingEnabled()) {
+            let page = reqData.page;
+            let verListMap = magicJS.data.read(WuBianConstKey.VerListMaskkingDataMap, {});
+            if (page == 1) {
+                verListMap = {};
+            }
+            let verList = rspData.data.list;
+            for (let i = 0; i < verList.length; i++) {
+                let verInfo = verList[i];
+                let maskStr = desensitizeNumber(verInfo.ver);
+                if (!verListMap[maskStr]) {
+                    verListMap[maskStr] = [];
+                }
+                verListMap[maskStr].push(verInfo.ver);
+                verInfo.ver = maskStr;
+            }
+            magicJS.data.write(WuBianConstKey.VerListMaskkingDataMap, verListMap);
+            gRetBody = rspData;
+        }
     }
 }
 
+function desensitizeNumber(number, maskChar = '*') {
+    // 将数字转换为字符串
+    let str = number.toString();
+    // 如果数字为一位,则不需要脱敏,直接返回
+    if (str.length <= 1) return str;
+    // 保留最后一位,其他位用脱敏字符替换
+    return maskChar.repeat(str.length - 1) + str[str.length - 1];
+}
+
+function getVerNumByMaskStr(maskStr) {
+    let verListMap = magicJS.data.read(WuBianConstKey.VerListMaskkingDataMap, {});
+    let arr = verListMap[maskStr];
+    if (arr && arr.length > 0) {
+        return getRandomElement(arr);
+    }
+    return maskStr;
+}
+
+function getRandomElement(arr) {
+    // 生成一个随机索引
+    const randomIndex = Math.floor(Math.random() * arr.length);
+    // 返回随机索引处的元素
+    return arr[randomIndex];
+}
+
 function getArtNameByHashId(hashId) {
     let artIdNameMapData = magicJS.data.read(WuBianConstKey.ArtIdNameMapData, {});
     return artIdNameMapData[hashId];
@@ -797,6 +849,12 @@ function isMyArtCountModifyMode() {
     return isEnabled;
 }
 
+function isDataMaskingEnabled() {
+    let isEnabled = magicJS.data.read(WuBianConstKey.DataMaskingEnabled, true);
+    return isEnabled;
+}
+
+
 function handleCvtGoodsList() {
     let rspData = getResponsePlainData();
     if (!rspData) {