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