fix(qdreader): accept risk-conf video callbacks
This commit is contained in:
@@ -691,6 +691,10 @@ function taskRunCount(task, def) {
|
|||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
function taskAccepted(res) { return taskResultOk(res) || Number(resultCode(res)) === 9 }
|
function taskAccepted(res) { return taskResultOk(res) || Number(resultCode(res)) === 9 }
|
||||||
|
function riskConf(res) {
|
||||||
|
var data = res && (res.Data || res.data || res.ResultData || res.resultData)
|
||||||
|
return data && (data.RiskConf || data.riskConf || data.Risk || data.risk)
|
||||||
|
}
|
||||||
function finishVideoTask(taskOrId, cookie, repeat) {
|
function finishVideoTask(taskOrId, cookie, repeat) {
|
||||||
var tid = typeof taskOrId === "object" ? taskIdOf(taskOrId || {}) : taskOrId
|
var tid = typeof taskOrId === "object" ? taskIdOf(taskOrId || {}) : taskOrId
|
||||||
var n = repeat || (typeof taskOrId === "object" ? taskRunCount(taskOrId, 1) : 1)
|
var n = repeat || (typeof taskOrId === "object" ? taskRunCount(taskOrId, 1) : 1)
|
||||||
@@ -726,6 +730,7 @@ function doAdvTask(cookie) {
|
|||||||
if (!tasks.length) return { name: "激励任务", ok: false, msg: "任务列表为空", path: "/argus/api/v2/video/adv/mainPage" }
|
if (!tasks.length) return { name: "激励任务", ok: false, msg: "任务列表为空", path: "/argus/api/v2/video/adv/mainPage" }
|
||||||
if (taskFinished(tasks[tasks.length - 1])) return { name: "激励任务", ok: true, msg: "任务已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
if (taskFinished(tasks[tasks.length - 1])) return { name: "激励任务", ok: true, msg: "任务已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||||
var submittedCount = 0
|
var submittedCount = 0
|
||||||
|
var riskSubmitted = false
|
||||||
for (var i = 0; i < tasks.length; i++) {
|
for (var i = 0; i < tasks.length; i++) {
|
||||||
var t = tasks[i] || {}
|
var t = tasks[i] || {}
|
||||||
if (taskFinished(t)) continue
|
if (taskFinished(t)) continue
|
||||||
@@ -733,12 +738,15 @@ function doAdvTask(cookie) {
|
|||||||
if (!tid) continue
|
if (!tid) continue
|
||||||
var fr = finishVideoTask(tid, cookie, 1)
|
var fr = finishVideoTask(tid, cookie, 1)
|
||||||
submittedCount += fr.ok
|
submittedCount += fr.ok
|
||||||
|
if (riskConf(fr.last)) riskSubmitted = true
|
||||||
if (fr.ok < fr.total) return { name: "激励任务", ok: false, msg: resultMsg(fr.last) || ("第 " + (i + 1) + " 个任务失败"), path: "/argus/api/v1/video/adv/finishWatch" }
|
if (fr.ok < fr.total) return { name: "激励任务", ok: false, msg: resultMsg(fr.last) || ("第 " + (i + 1) + " 个任务失败"), path: "/argus/api/v1/video/adv/finishWatch" }
|
||||||
}
|
}
|
||||||
var verify = qdGet("/argus/api/v2/video/adv/mainPage", {}, cookie)
|
var verify = qdGet("/argus/api/v2/video/adv/mainPage", {}, cookie)
|
||||||
var after = advTaskList(verify)
|
var after = advTaskList(verify)
|
||||||
var finished = !!(after && after.length && after.every(function (t) { return taskFinished(t) }))
|
var finished = !!(after && after.length && after.every(function (t) { return taskFinished(t) }))
|
||||||
return { name: "激励任务", ok: finished, msg: finished ? "任务已完成" : (submittedCount ? "部分任务未完成" : "未找到可提交任务"), path: "/argus/api/v2/video/adv/mainPage" }
|
if (finished) return { name: "激励任务", ok: true, msg: "任务已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||||
|
if (submittedCount > 0 && riskSubmitted) return { name: "激励任务", ok: true, msg: "已提交,状态待刷新", path: "/argus/api/v2/video/adv/mainPage" }
|
||||||
|
return { name: "激励任务", ok: false, msg: submittedCount ? "部分任务未完成" : "未找到可提交任务", path: "/argus/api/v2/video/adv/mainPage" }
|
||||||
}
|
}
|
||||||
function taskReceived(task) {
|
function taskReceived(task) {
|
||||||
return Number(field(task, ["IsReceived", "Received", "Status", "status"], 0)) === 1
|
return Number(field(task, ["IsReceived", "Received", "Status", "status"], 0)) === 1
|
||||||
|
|||||||
@@ -691,6 +691,10 @@ function taskRunCount(task, def) {
|
|||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
function taskAccepted(res) { return taskResultOk(res) || Number(resultCode(res)) === 9 }
|
function taskAccepted(res) { return taskResultOk(res) || Number(resultCode(res)) === 9 }
|
||||||
|
function riskConf(res) {
|
||||||
|
var data = res && (res.Data || res.data || res.ResultData || res.resultData)
|
||||||
|
return data && (data.RiskConf || data.riskConf || data.Risk || data.risk)
|
||||||
|
}
|
||||||
function finishVideoTask(taskOrId, cookie, repeat) {
|
function finishVideoTask(taskOrId, cookie, repeat) {
|
||||||
var tid = typeof taskOrId === "object" ? taskIdOf(taskOrId || {}) : taskOrId
|
var tid = typeof taskOrId === "object" ? taskIdOf(taskOrId || {}) : taskOrId
|
||||||
var n = repeat || (typeof taskOrId === "object" ? taskRunCount(taskOrId, 1) : 1)
|
var n = repeat || (typeof taskOrId === "object" ? taskRunCount(taskOrId, 1) : 1)
|
||||||
@@ -726,6 +730,7 @@ function doAdvTask(cookie) {
|
|||||||
if (!tasks.length) return { name: "激励任务", ok: false, msg: "任务列表为空", path: "/argus/api/v2/video/adv/mainPage" }
|
if (!tasks.length) return { name: "激励任务", ok: false, msg: "任务列表为空", path: "/argus/api/v2/video/adv/mainPage" }
|
||||||
if (taskFinished(tasks[tasks.length - 1])) return { name: "激励任务", ok: true, msg: "任务已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
if (taskFinished(tasks[tasks.length - 1])) return { name: "激励任务", ok: true, msg: "任务已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||||
var submittedCount = 0
|
var submittedCount = 0
|
||||||
|
var riskSubmitted = false
|
||||||
for (var i = 0; i < tasks.length; i++) {
|
for (var i = 0; i < tasks.length; i++) {
|
||||||
var t = tasks[i] || {}
|
var t = tasks[i] || {}
|
||||||
if (taskFinished(t)) continue
|
if (taskFinished(t)) continue
|
||||||
@@ -733,12 +738,15 @@ function doAdvTask(cookie) {
|
|||||||
if (!tid) continue
|
if (!tid) continue
|
||||||
var fr = finishVideoTask(tid, cookie, 1)
|
var fr = finishVideoTask(tid, cookie, 1)
|
||||||
submittedCount += fr.ok
|
submittedCount += fr.ok
|
||||||
|
if (riskConf(fr.last)) riskSubmitted = true
|
||||||
if (fr.ok < fr.total) return { name: "激励任务", ok: false, msg: resultMsg(fr.last) || ("第 " + (i + 1) + " 个任务失败"), path: "/argus/api/v1/video/adv/finishWatch" }
|
if (fr.ok < fr.total) return { name: "激励任务", ok: false, msg: resultMsg(fr.last) || ("第 " + (i + 1) + " 个任务失败"), path: "/argus/api/v1/video/adv/finishWatch" }
|
||||||
}
|
}
|
||||||
var verify = qdGet("/argus/api/v2/video/adv/mainPage", {}, cookie)
|
var verify = qdGet("/argus/api/v2/video/adv/mainPage", {}, cookie)
|
||||||
var after = advTaskList(verify)
|
var after = advTaskList(verify)
|
||||||
var finished = !!(after && after.length && after.every(function (t) { return taskFinished(t) }))
|
var finished = !!(after && after.length && after.every(function (t) { return taskFinished(t) }))
|
||||||
return { name: "激励任务", ok: finished, msg: finished ? "任务已完成" : (submittedCount ? "部分任务未完成" : "未找到可提交任务"), path: "/argus/api/v2/video/adv/mainPage" }
|
if (finished) return { name: "激励任务", ok: true, msg: "任务已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||||
|
if (submittedCount > 0 && riskSubmitted) return { name: "激励任务", ok: true, msg: "已提交,状态待刷新", path: "/argus/api/v2/video/adv/mainPage" }
|
||||||
|
return { name: "激励任务", ok: false, msg: submittedCount ? "部分任务未完成" : "未找到可提交任务", path: "/argus/api/v2/video/adv/mainPage" }
|
||||||
}
|
}
|
||||||
function taskReceived(task) {
|
function taskReceived(task) {
|
||||||
return Number(field(task, ["IsReceived", "Received", "Status", "status"], 0)) === 1
|
return Number(field(task, ["IsReceived", "Received", "Status", "status"], 0)) === 1
|
||||||
|
|||||||
@@ -1282,6 +1282,35 @@ test('adv task accepts discovered task list when upstream module name changes',
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('adv task treats accepted risk-conf callback as submitted when status does not refresh immediately', () => {
|
||||||
|
const store = {
|
||||||
|
qdreader_cookie_json: JSON.stringify({ '12345': cookie }),
|
||||||
|
qdreader_user_bind_json: JSON.stringify({ '12345': 'user-a' }),
|
||||||
|
qdreader_task_pref_json: JSON.stringify({ '12345': { adv: true } }),
|
||||||
|
};
|
||||||
|
const unchanged = { TaskId: 'risk-task', Title: '惊喜礼包', IsFinished: 0, IsReceived: 0 };
|
||||||
|
const r = runPlugin({
|
||||||
|
content: '启点签到',
|
||||||
|
store,
|
||||||
|
userId: 'user-a',
|
||||||
|
requests: [
|
||||||
|
{ body: { code: 0, data: { headers: { 'QD-Sign': 'sig' } } } },
|
||||||
|
{ statusCode: 200, body: { code: 1, msg: '今日已签到' } },
|
||||||
|
{ body: { code: 0, data: { headers: { 'QD-Sign': 'sig' } } } },
|
||||||
|
{ statusCode: 200, body: { code: 1, msg: '无可领取礼包' } },
|
||||||
|
{ body: { code: 0, data: { headers: { 'QD-Sign': 'sig' } } } },
|
||||||
|
{ statusCode: 200, body: { code: 0, Data: { DailyBenefitModule: { TaskList: [unchanged] } } } },
|
||||||
|
{ body: { code: 0, data: { headers: { 'QD-Sign': 'sig' } } } },
|
||||||
|
{ statusCode: 200, body: { Result: '0', Message: '', Data: { RiskConf: { BanId: '3', CaptchaURL: 'https://aq.qidian.com/mobile/phoneverify' } } } },
|
||||||
|
{ body: { code: 0, data: { headers: { 'QD-Sign': 'sig' } } } },
|
||||||
|
{ statusCode: 200, body: { code: 0, Data: { DailyBenefitModule: { TaskList: [unchanged] } } } },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
assert.match(r.replies[0], /激励任务✅\(已提交,状态待刷新\)/);
|
||||||
|
assert.doesNotMatch(r.replies[0], /部分任务失败/);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
test('daily task follows upstream sequence: surprise task, one-ad task, then three daily ad callbacks', () => {
|
test('daily task follows upstream sequence: surprise task, one-ad task, then three daily ad callbacks', () => {
|
||||||
const store = {
|
const store = {
|
||||||
qdreader_cookie_json: JSON.stringify({ '12345': cookie }),
|
qdreader_cookie_json: JSON.stringify({ '12345': cookie }),
|
||||||
|
|||||||
Reference in New Issue
Block a user