|
|
@@ -58,7 +58,7 @@ const gCommonHeaders = {
|
|
|
async function Main() {
|
|
|
if (!magicJS.isRequest) {
|
|
|
updateRequestHeaders();
|
|
|
- await tryComposite();
|
|
|
+ await tryAllComposite();
|
|
|
}
|
|
|
magicJS.notification.msg('');
|
|
|
magicJS.done();
|
|
|
@@ -96,65 +96,159 @@ function updateRequestHeaders() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-async function tryComposite() {
|
|
|
- let activityId = magicJS.data.read(HbcpreConstKey.compositeActivityId, null);
|
|
|
- if(!activityId){
|
|
|
- let activityName = magicJS.data.read(HbcpreConstKey.compositeActivityName, null);
|
|
|
- if(!activityName){
|
|
|
- activityId = getActivityIdByName(activityName);
|
|
|
- }
|
|
|
+function getActivitDataCache(eventsType, eventsId){
|
|
|
+ // 1=合成 3=兑换
|
|
|
+ let data = null;
|
|
|
+ let storeKey = null;
|
|
|
+ if(eventsType == 1){
|
|
|
+ storeKey = HbcpreConstKey.compositeActivityData;
|
|
|
+ }else if(eventsType == 3){
|
|
|
+ storeKey = HbcpreConstKey.exchangeActivityData;
|
|
|
}
|
|
|
- if(!activityId){
|
|
|
- magicJS.logger.info(`缺少合成活动ID`);
|
|
|
- magicJS.notification.appendNotifyInfo(`❌合成活动缺少相关参数!`);
|
|
|
- return;
|
|
|
+ if(!storeKey){
|
|
|
+ data = {};
|
|
|
+ }else{
|
|
|
+ data = magicJS.data.read(storeKey, {});
|
|
|
}
|
|
|
- let activityData = getActivitDataCache(activityId);
|
|
|
- if(!isCompositeOnlyUseCache()){
|
|
|
- activityData = await getCompositeList(activityId);
|
|
|
- saveActivitDataCache(activityId, activityData);
|
|
|
- }
|
|
|
- if(activityData){
|
|
|
- // magicJS.logger.error(JSON.stringify(activityData));
|
|
|
- // 固定材料
|
|
|
- let needList = activityData.needList;
|
|
|
- // 个人拥有材料列表
|
|
|
- let ownList = activityData.ownList;
|
|
|
- // ownList = checkHandleMyOwnList(activityData.ownList, needList);
|
|
|
- let isEnough = true;
|
|
|
- for (let i = 0; i < ownList.length; i++) {
|
|
|
- let iData = ownList[i];
|
|
|
- let ownWorksCnt = getOwnSeriesWorksCount(iData.seriesList);
|
|
|
- if(iData.num > ownWorksCnt){
|
|
|
- isEnough = false;
|
|
|
- let needSeries = needList[i];
|
|
|
- magicJS.notification.appendNotifyInfo(`❌缺少材料[${getNeedSeriesWorksNames(needSeries.seriesList)}](${ownWorksCnt}/${iData.num})!`);
|
|
|
- continue;
|
|
|
- }
|
|
|
+ if(eventsId){
|
|
|
+ return data[eventsId];
|
|
|
+ }
|
|
|
+ return data;
|
|
|
+}
|
|
|
+
|
|
|
+function saveActivitDataCache(eventsType, actData){
|
|
|
+ let data = null;
|
|
|
+ let storeKey = null;
|
|
|
+ if(eventsType == 1){
|
|
|
+ storeKey = HbcpreConstKey.compositeActivityData;
|
|
|
+ magicJS.data.write(HbcpreConstKey.compositeActivityId, actData.eventsId);
|
|
|
+ magicJS.data.write(HbcpreConstKey.compositeActivityName, data.eventsName);
|
|
|
+ }else if(eventsType == 3){
|
|
|
+ storeKey = HbcpreConstKey.exchangeActivityData;
|
|
|
+ magicJS.data.write(HbcpreConstKey.exchangeActivityId, actData.eventsId);
|
|
|
+ magicJS.data.write(HbcpreConstKey.exchangeActivityName, data.eventsName);
|
|
|
+ }
|
|
|
+ if(!storeKey){
|
|
|
+ data = {};
|
|
|
+ }else{
|
|
|
+ data = magicJS.data.read(storeKey, {});
|
|
|
+ }
|
|
|
+ data[actData.eventsId] = actData;
|
|
|
+ magicJS.data.write(storeKey, data);
|
|
|
+}
|
|
|
+
|
|
|
+function getWillCompositeTaskIds() {
|
|
|
+ let valArr = magicJS.data.read(GandartConstKey.compositeActivityId);
|
|
|
+ if (valArr && valArr.length > 0) {
|
|
|
+ let segments = valArr.split('|');
|
|
|
+ valArr = [];
|
|
|
+ for (let vstr of segments) {
|
|
|
+ valArr.push(Number(vstr.trim()));
|
|
|
}
|
|
|
- if(!isEnough){
|
|
|
- return;
|
|
|
+ } else {
|
|
|
+ valArr = [];
|
|
|
+ }
|
|
|
+ return valArr;
|
|
|
+}
|
|
|
+
|
|
|
+function getWillCompositeTaskSearchKeys() {
|
|
|
+ let keyArr = magicJS.data.read(GandartConstKey.compositeActivityName)
|
|
|
+ if (keyArr && keyArr.length > 0) {
|
|
|
+ let segments = keyArr.split('|');
|
|
|
+ keyArr = [];
|
|
|
+ for (let vstr of segments) {
|
|
|
+ keyArr.push(vstr.trim());
|
|
|
}
|
|
|
- let materials = pickMaterials(needList, ownList);
|
|
|
- if(!materials){
|
|
|
- magicJS.notification.appendNotifyInfo(`❌材料不足`);
|
|
|
- return;
|
|
|
+ } else {
|
|
|
+ keyArr = [];
|
|
|
+ }
|
|
|
+ return keyArr;
|
|
|
+}
|
|
|
+
|
|
|
+function getActivityIdByName(activityName){
|
|
|
+ let dataDict = getActivitDataCache(1);
|
|
|
+ if(!dataDict){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ for(let kId in dataDict){
|
|
|
+ const actData = dataDict[kId];
|
|
|
+ if(actData.eventsName.indexOf(activityName)){
|
|
|
+ return activityData.eventsId;
|
|
|
}
|
|
|
- let result = await startComposite(activityId, materials);
|
|
|
- if(!result){
|
|
|
- magicJS.notification.appendNotifyInfo(`🎉合成<${activityData.eventsName}>合成失败!`);
|
|
|
- return;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+}
|
|
|
+
|
|
|
+async function tryAllComposite() {
|
|
|
+ let idsList = getWillCompositeTaskIds();
|
|
|
+ if(idsList.length == 0){
|
|
|
+ let namesList = getWillCompositeTaskSearchKeys();
|
|
|
+ for(let name of namesList){
|
|
|
+ let actId = getActivityIdByName(name);
|
|
|
+ if(actId){
|
|
|
+ idsList.push(actId);
|
|
|
+ }
|
|
|
}
|
|
|
- if(result.code == 200){
|
|
|
- magicJS.notification.appendNotifyInfo(`🎉合成<${activityData.eventsName}>合成成功!`);
|
|
|
- // 刷新合成数据
|
|
|
- activityData = await getCompositeList(activityId);
|
|
|
- saveActivitDataCache(activityId, activityData);
|
|
|
- } else {
|
|
|
- magicJS.notification.appendNotifyInfo(`🎉合成<${activityData.eventsName}>${result.message}`);
|
|
|
+ }
|
|
|
+ if(idsList.length == 0){
|
|
|
+ magicJS.logger.info(`缺少兑换活动ID`);
|
|
|
+ magicJS.notification.appendNotifyInfo(`❌兑换活动缺少相关参数!`);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ for(let activityId of idsList){
|
|
|
+ await tryOneComposite(activityId);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function tryOneComposite(activityId){
|
|
|
+ let activityData = getActivitDataCache(1, activityId);
|
|
|
+ if(!isCompositeOnlyUseCache()){
|
|
|
+ activityData = await getCompositeList(activityId);
|
|
|
+ saveActivitDataCache(1, activityData);
|
|
|
+ }
|
|
|
+ if(!activityData){
|
|
|
+ magicJS.logger.info(`缺少合成活动数据`);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // magicJS.logger.error(JSON.stringify(activityData));
|
|
|
+ // 固定材料
|
|
|
+ let needList = activityData.needList;
|
|
|
+ // 个人拥有材料列表
|
|
|
+ let ownList = activityData.ownList;
|
|
|
+ // ownList = checkHandleMyOwnList(activityData.ownList, needList);
|
|
|
+ let isEnough = true;
|
|
|
+ for (let i = 0; i < ownList.length; i++) {
|
|
|
+ let iData = ownList[i];
|
|
|
+ let ownWorksCnt = getOwnSeriesWorksCount(iData.seriesList);
|
|
|
+ if(iData.num > ownWorksCnt){
|
|
|
+ isEnough = false;
|
|
|
+ let needSeries = needList[i];
|
|
|
+ magicJS.notification.appendNotifyInfo(`❌缺少材料[${getNeedSeriesWorksNames(needSeries.seriesList)}](${ownWorksCnt}/${iData.num})!`);
|
|
|
+ continue;
|
|
|
}
|
|
|
- return result;
|
|
|
}
|
|
|
+ if(!isEnough){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let materials = pickMaterials(needList, ownList);
|
|
|
+ if(!materials){
|
|
|
+ magicJS.notification.appendNotifyInfo(`❌材料不足`);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let result = await startComposite(activityId, materials);
|
|
|
+ if(!result){
|
|
|
+ magicJS.notification.appendNotifyInfo(`🎉合成<${activityData.eventsName}>合成失败!`);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(result.code == 200){
|
|
|
+ magicJS.notification.appendNotifyInfo(`🎉合成<${activityData.eventsName}>合成成功!`);
|
|
|
+ // 刷新合成数据
|
|
|
+ activityData = await getCompositeList(activityId);
|
|
|
+ saveActivitDataCache(1, activityData);
|
|
|
+ } else {
|
|
|
+ magicJS.notification.appendNotifyInfo(`🎉合成<${activityData.eventsName}>${result.message}`);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
function readMySeriesOwnCntFakeData() {
|
|
|
@@ -310,14 +404,6 @@ function getNeedSeriesWorksNames(seriesList){
|
|
|
return name;
|
|
|
}
|
|
|
|
|
|
-function getActivitDataCache(id){
|
|
|
- return magicJS.data.read(HbcpreConstKey.compositeActivityData, null);
|
|
|
-}
|
|
|
-
|
|
|
-function saveActivitDataCache(id, data){
|
|
|
- return magicJS.data.write(HbcpreConstKey.compositeActivityData, data);
|
|
|
-}
|
|
|
-
|
|
|
async function getCompositeList(id){
|
|
|
let reqData = {eventsId: id};
|
|
|
let result = await hbRequest({API: '/mall/works/compositeList', METHOD: 'get'}, reqData);
|