diff --git a/ChinaUnicom.js b/ChinaUnicom.js new file mode 100644 index 0000000..0eed5cc --- /dev/null +++ b/ChinaUnicom.js @@ -0,0 +1,5087 @@ +// @Date: 2025-09-19 +// @LastEditTime: 2025-09-22 + +/* +中国联通 + +包含以下功能: + +首页签到, 立减金打卡,联通祝福,权益超市浇花+抽奖 + + +首页签到默认运行, 需要关闭的设置变量 chinaUnicomSign='false' +联通祝福默认运行, 需要关闭的设置变量 chinaUnicomLtzf='false' + +定时每天两三次 +需要在联通APP中选择退出登录-切换账号登录, 捉下面这个包 +https://m.client.10010.com/mobileService/onLine.htm +把请求体(body)里面的token_online参数填到变量 chinaUnicomCookie 里, 多账号换行或&或@隔开: +export chinaUnicomCookie="a3e4c1ff25da2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + +From:yaohuo28507 +cron: 0 0,7,20 * * * +const $ = new Env("中国联通"); +*/ +const fs = require('fs'); +const appName = createLogger("中国联通"), + got = require("got"), + path = require("path"), + { + exec: execCommand + } = require("child_process"), + cryptoJS = require("crypto-js"), + { + CookieJar: cookieJar + } = require("tough-cookie"), + chinaUnicom = "chinaUnicom", + delimiters = ["\n", "&", "@"], + cookieVars = [chinaUnicom + "Cookie"], + signDisabled = process.env[chinaUnicom + "Sign"] === "false", + ltzfDisabled = process.env[chinaUnicom + "Ltzf"] === "false", + requestTimeout = 50000, + retryCount = 3; +const version = 2.08, + projectName = "chinaUnicom", + validCodeUrl = "https://leafxcy.coding.net/api/user/leafxcy/project/validcode/shared-depot/validCode/git/blob/master/code.json", + projectCodeUrl = "https://leafxcy.coding.net/api/user/leafxcy/project/validcode/shared-depot/validCode/git/blob/master/" + projectName + ".json", + retryDelay = 5, + appVersion = "iphone_c@11.0503", + userAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 16_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 unicom{version:" + appVersion + "}", + appId = "86b8be06f56ba55e9fa7dff134c6b16c62ca7f319da4a958dd0afa0bf9f36f1daa9922869a8d2313b6f2f9f3b57f2901f0021c4575e4b6949ae18b7f6761d465c12321788dcd980aa1a641789d1188bb", + deviceCode="866265039370040", + productId = "10000002", + secretKey = "7k1HcDL8RKvc", + defaultPassword = "woreadst^&*12345", + secondProductId = "10000006", + secondSecretKey = "yQsp9gUqv7qX", + someConstant = "QzUzOUM2QTQ2MTc4", + ivString = "16-Bytes--String", + errorCode = "225", + errorNumber = "225", + partyName = "party", + apiKey = "6-WfVldfFrt3zhjHhe6kzwI-XfG5aMCzRTLI_4K7_a0", + clientId = "73b138fd-250c-4126-94e2-48cbcc8b9cbe", + anotherClientId = "7cb46449-3b11-4414-bb49-cbd15525fb88", + maxRetries = "9", + minRetries = "1", + serviceLife = "wocareMBHServiceLife1", + anotherApiKey = "beea1c7edf7c4989b2d3621c4255132f", + anotherEncryptionKey = "f4cd4ffeb5554586acf65ba7110534f5", + numbers = "0123456789", + letters = "qwertyuiopasdfghjklzxcvbnm", + uuid = process.env[chinaUnicom + "Uuid"] || appName.randomUuid(), + someArray = [9, 10, 11, 12, 13], + delayMs = 1000, + timeoutMs = 5000, + client_Id = "1001000003", + ProductId2 = "100002", + emptyString = ""; +let ltyp_lottery = [], + appMonth_28_share = [], + act_517_share = [], + moonbox_activeId = null, + woread_draw_id = [6640, 6641]; +const expiration_time = 7, + appMonth_28_MaxTimes = 5, + maxDrawTimes = 5, + _0x3484cf = { + ttlxj: "TTLXJ20210330", + card_618: "NZJK618CJHD" + }; +const _0x166d60 = { + name: "星座配对", + id: 2 +}; +const _0x5a4a00 = { + name: "大转盘", + id: 3 +}; +const _0x1b5ea0 = { + name: "盲盒抽奖", + id: 4 +}; +const _0x4376d8 = [_0x166d60, _0x5a4a00, _0x1b5ea0], + _0x1c214d = { + ZFGJBXXCY1: "空气", + GJBNZJK19: "[6]", + GJBNZJK20: "[1]", + GJBNZJK21: "[8]", + GJBNZJK22: "[狂]", + GJBNZJK23: "[欢]" + }; +const _0x10ec87 = { + "抽奖": "01", + "首次进入": "02", + "卡片合成": "03", + "瓜分奖励": "04" +}; +function UencryptWithCryptoJS(algorithm, mode, padding, plaintext, key, iv) { + return cryptoJS[algorithm].encrypt( + cryptoJS.enc.Utf8.parse(plaintext), + cryptoJS.enc.Utf8.parse(key), + { + mode: cryptoJS.mode[mode], + padding: cryptoJS.pad[padding], + iv: cryptoJS.enc.Utf8.parse(iv) + } + ).ciphertext.toString(cryptoJS.enc.Hex); +} + +function decrypt(cipherMethod, mode, padding, ciphertextHex, key, iv) { + return cryptoJS[cipherMethod].decrypt({ + ciphertext: cryptoJS.enc.Hex.parse(ciphertextHex) + }, cryptoJS.enc.Utf8.parse(key), { + mode: cryptoJS.mode[mode], + padding: cryptoJS.pad[padding], + iv: cryptoJS.enc.Utf8.parse(iv) + }).toString(cryptoJS.enc.Utf8); +} + +let processCount = 0; +let processState = 0; + +/** + * Initializes process monitoring and sets up termination handling. + */ +function initializeProcessMonitoring() { + processState = 1; + process.on("SIGTERM", () => { + processState = 2; + process.exit(0); + }); + + const scriptName = path.basename(process.argv[1]); + const excludedCommands = ["bash", "timeout", "grep"]; + let commandList = ["ps afx"]; + commandList.push(`grep ${scriptName}`); + commandList = commandList.concat(excludedCommands.map(cmd => `grep -v "${cmd} "`)); + commandList.push("wc -l"); + + const commandString = commandList.join("|"); + + const checkProcessCount = () => { + execCommand(commandString, (error, stdout, stderr) => { + if (error || stderr) { + return; + } + processCount = parseInt(stdout.trim(), 10); + }); + + if (processState === 1) { + setTimeout(checkProcessCount, 2000); + } + }; + + checkProcessCount(); +} + +/** + * Class for managing user services with HTTP request handling and logging. + */ +class UserService { + constructor() { + this.index = appName.userIdx++; + this.name = ""; + this.valid = false; + + const retryOptions = { + limit: 0 + }; + const defaultHeaders = { + Connection: "keep-alive" + }; + const httpClientOptions = { + retry: retryOptions, + timeout: requestTimeout, + followRedirect: false, + ignoreInvalidCookies: true, + headers: defaultHeaders + }; + + this.got = got.extend(httpClientOptions); + + if (processState === 0) { + initializeProcessMonitoring(); + } + } + + /** + * Logs messages with an optional prefix based on user index and name. + * @param {string} message - The log message. + * @param {object} options - Additional logging options. + */ + log(message, options = {}) { + let logPrefix = ""; + const userCountLength = appName.userCount.toString().length; + + if (this.index) { + logPrefix += `账号[${appName.padStr(this.index, userCountLength)}]`; + } + if (this.name) { + logPrefix += `[${this.name}]`; + } + + appName.log(logPrefix + message, options); + } + + /** + * Sets a cookie in the cookie jar. + * @param {string} name - The name of the cookie. + * @param {string} value - The value of the cookie. + * @param {string} domain - The domain for the cookie. + * @param {string} url - The URL for the cookie. + * @param {object} options - Additional options. + */ + set_cookie(name, value, domain, url, options = {}) { + this.cookieJar.setCookieSync(`${name}=${value}; Domain=${domain};`, url); + } + + /** + * Makes an HTTP request with retry logic. + * @param {object} requestOptions - The options for the HTTP request. + * @returns {Promise} - The result of the HTTP request. + */ + async request(requestOptions) { + const networkErrors = ["ECONNRESET", "EADDRINUSE", "ENOTFOUND", "EAI_AGAIN"]; + const timeoutErrors = ["TimeoutError"]; + const protocolErrors = ["EPROTO"]; + const validCodes = []; + + let response = null; + let attemptCount = 0; + const requestName = requestOptions.fn || requestOptions.url; + + let validCode = appName.get(requestOptions, "valid_code", validCodes); + requestOptions.method = requestOptions.method?.toUpperCase() || "GET"; + + while (attemptCount < retryCount) { + try { + attemptCount++; + let errorCode = ""; + let errorName = ""; + let error = null; + const timeout = requestOptions.timeout || this.got.defaults.options.timeout.request || requestTimeout; + let timeoutOccurred = false; + + // Calculate delay times + const delayFactor1 = Math.max(this.index - 2, 0); + const delayFactor2 = Math.min(Math.max(this.index - 2, 1), 4); + const delayFactor3 = Math.min(Math.max(this.index - 4, 1), 5); + const delay1 = delayFactor1 * delayFactor2 * delayFactor3 * delayFactor3 * 600; + const delay2 = delayFactor1 * delayFactor2 * delayFactor3 * delayFactor3 * 4000; + const totalDelay = delay1 + Math.floor(Math.random() * delay2); + + const retryDelay1 = this.index * (this.index - 1) * 3000; + const retryDelay2 = (this.index - 1) * (this.index - 1) * 5000; + const retryTotalDelay = retryDelay1 + Math.floor(Math.random() * retryDelay2); + + const userDelayFactor1 = Math.max(appName.userCount - 2, 0); + const userDelayFactor2 = Math.max(appName.userCount - 3, 0); + const userDelay1 = userDelayFactor1 * 400; + const userDelay2 = userDelayFactor2 * 1000; + const userTotalDelay = userDelay1 + Math.floor(Math.random() * userDelay2); + + const finalDelay = totalDelay + retryTotalDelay + userTotalDelay; + + await appName.wait(0); + await new Promise((resolve) => { + setTimeout(() => { + timeoutOccurred = true; + resolve(); + }, timeout); + this.got(requestOptions).then( + (res) => { + response = res; + }, + (err) => { + error = err; + response = err.response; + errorCode = error?.code || ""; + errorName = error?.name || ""; + } + ).finally(() => resolve()); + }); + + if (timeoutOccurred) { + this.log(`[${requestName}] 请求超时(${timeout / 1000}秒),重试第${attemptCount}次`); + } else if (protocolErrors.includes(errorCode)) { + this.log(`[${requestName}] 请求错误[${errorCode}][${errorName}]`); + if (error?.message) { + console.log(error.message); + } + break; + } else if (timeoutErrors.includes(errorName)) { + this.log(`[${requestName}] 请求错误[${errorCode}][${errorName}],重试第${attemptCount}次`); + } else if (networkErrors.includes(errorCode)) { + this.log(`[${requestName}] 请求错误[${errorCode}][${errorName}],重试第${attemptCount}次`); + } else { + const statusCode = response?.statusCode || ""; + const statusCategory = Math.floor(statusCode / 100); + + if (statusCode) { + if (statusCategory > 3 && !validCode.includes(statusCode)) { + this.log(`请求[${requestName}] 返回[${statusCode}]`); + } + if (statusCategory <= 4) { + break; + } + } else { + this.log(`请求[${requestName}] 错误[${errorCode}][${errorName}]`); + } + } + } catch (err) { + if (err.name === "TimeoutError") { + this.log(`[${requestName}] 请求超时,重试第${attemptCount}次`); + } else { + this.log(`[${requestName}] 请求错误(${err.message}),重试第${attemptCount}次`); + } + } + } + + if (response == null) { + return Promise.resolve({ + statusCode: errorCode || -1, + headers: null, + result: null + }); + } + + let { statusCode, headers, body } = response; + if (body) { + try { + body = JSON.parse(body); + } catch { } + } + + const result = { + statusCode, + headers, + result: body + }; + + return Promise.resolve(result); + } +} + +let UserServiceClass = UserService; +try { + let LocalBasicService = require("./LocalBasic"); + UserServiceClass = LocalBasicService; +} catch { } +let userServiceInstance = new UserServiceClass(appName); +class CustomUserService extends UserServiceClass { + constructor(tokenString) { + super(appName); + this.cookieJar = new cookieJar(); + const defaultHeaders = { + "User-Agent": userAgent + }; + this.got = this.got.extend({ + cookieJar: this.cookieJar, + headers: defaultHeaders + }); + let deftokenParts = tokenString.split("#"); + this.token_online = deftokenParts[0]; + this.unicomTokenId = appName.randomString(32); + this.tokenId_cookie = "chinaunicom-" + appName.randomString(32, numbers + letters).toUpperCase(); + this.rptId = ""; + this.city = []; + this.t_flmf_task = 0; + this.t_woread_draw = 0; + this.need_read_rabbit = false; + this.moonbox_task_record = {}; + this.moonbox_notified = []; + this.set_cookie("TOKENID_COOKIE", this.tokenId_cookie); + this.set_cookie("UNICOM_TOKENID", this.unicomTokenId); + this.set_cookie("sdkuuid", this.unicomTokenId); + } + set_cookie(cookieName, cookieValue, options = {}) { + let domain = options?.domain || "10010.com", + currentUrl = options?.currentUrl || "https://epay.10010.com"; + super.set_cookie(cookieName, cookieValue, domain, currentUrl, options); + } + + get_bizchannelinfo() { + const bizChannelInfo = { + bizChannelCode: errorNumber, + disriBiz: partyName, + unionSessionId: "", + stType: "", + stDesmobile: "", + source: "", + rptId: this.rptId, + ticket: "", + tongdunTokenId: this.tokenId_cookie, + xindunTokenId: this.sdkuuid + }; + let bizChannelInfoString = JSON.stringify(bizChannelInfo); + return bizChannelInfoString; + } + + get_epay_authinfo() { + const authInfo = { + mobile: "", + sessionId: this.sessionId, + tokenId: this.tokenId, + userId: "" + }; + return JSON.stringify(authInfo); + } + + get_flmf_data(actCode = "welfareCenter") { + const flmfData = { + sid: this.flmf_sid, + actcode: actCode + }; + return flmfData; + } + + encode_woread(data, password = defaultPassword) { + let encryptedData = UencryptWithCryptoJS("AES", "CBC", "Pkcs7", JSON.stringify(data), password, ivString); + return Buffer.from(encryptedData, "utf-8").toString("base64"); + } + encode_woread1(data, password = defaultPassword) { + let encryptedData = UencryptWithCryptoJS("AES", "CBC", "Pkcs7", data, password, ivString); + return Buffer.from(encryptedData, "utf-8").toString("base64"); + } + + get_woread_param() { + return { + timestamp: appName.time("yyyyMMddhhmmss"), + token: this.woread_token, + userid: this.woread_userid, + userId: this.woread_userid, + userIndex: this.woread_userIndex, + userAccount: this.mobile, + verifyCode: this.woread_verifycode + }; + } + get_woread_m_param() { + return { + timestamp: appName.time("yyyyMMddhhmmss"), + signtimestamp: Date.now(), + source: maxRetries, + token: this.woread_token + }; + } + get_ltyp_sign_header(secretKey) { + const currentTime = Date.now(); + const randomSequence = Math.floor(89999 * Math.random()) + 100000; + const productId = ProductId2; + const version = emptyString; + const signature = cryptoJS.MD5(secretKey + currentTime + randomSequence + productId + version).toString(); + + const header = { + key: secretKey, + resTime: currentTime, + reqSeq: randomSequence, + channel: productId, + version: version, + sign: signature + }; + + return header; + } + async onLine(options = {}) { + let loginSuccess = false; + const filePath = path.join(__dirname, 'chinaUnicom_cache.json'); + + try { + // 请求服务器 + let requestOptions = { + fn: "onLine", + method: "post", + url: "https://m.client.10010.com/mobileService/onLine.htm", + form: { + token_online: this.token_online, + reqtime: appName.time("yyyy-MM-dd hh:mm:ss"), + appId: appId, + version: appVersion, + step: "bindlist", + isFirstInstall: 0, + deviceModel: "iPhone", + deviceCode: deviceCode + } + }; + + let response = await this.request(requestOptions); + let { result: responseData, statusCode: responseStatus } = response; + let responseCode = appName.get(responseData, "code", responseStatus); + + if (responseCode == 0) { + loginSuccess = true; + this.valid = true; + this.mobile = responseData?.["desmobile"]; + this.name = responseData?.["desmobile"]; + this.ecs_token = responseData?.["ecs_token"]; + this.city = responseData?.["list"]; + this.log("登录成功"); + + } else { + this.valid = false; + this.log("登录失败[" + responseCode + "]"); + } + } catch (error) { + console.log(error); + this.log("发生异常:" + error.message); + } finally { + return loginSuccess; + } + } + + async getMarketTicket(options = {}) { + try { + // 获取权益超市的ticket + const targetUrl = "https://contact.bol.wo.cn/"; + const { ticket, type, loc } = await this.openPlatLineNew(targetUrl); + + if (ticket) { + this.market_ticket = ticket; + this.market_ticket_type = type; + // this.log("获取权益超市ticket成功"); + return { ticket, type }; + } else { + this.log("获取权益超市ticket失败"); + return null; + } + } catch (error) { + console.log(error); + this.log("获取权益超市ticket异常:" + error.message); + return null; + } + } + + + async marketUnicomLogin(options = {}) { + let loginSuccess = false; + const filePath = path.join(__dirname, 'chinaUnicom_cache.json'); + + try { + + + // 先获取ticket + const ticketInfo = await this.getMarketTicket(); + if (!ticketInfo || !ticketInfo.ticket) { + this.log("权益超市登录失败:无法获取ticket"); + return false; + } + + const { ticket, type } = ticketInfo; + const yGdtco4rParam = options.yGdtco4r || appName.randomString(800, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-"); + + // 保存yGdtco4r参数供后续任务执行使用 + this.market_task_yGdtco4r = yGdtco4rParam; + + // 构建请求体 + const requestBody = { + ticket: ticket + }; + const requestOptions = { + fn: "marketUnicomLogin", + method: "post", + url: `https://backward.bol.wo.cn/prod-api/auth/marketUnicomLogin?yGdtco4r=${yGdtco4rParam}`, + headers: { + "Host": "backward.bol.wo.cn", + "Connection": "keep-alive", + "Pragma": "no-cache", + "Cache-Control": "no-cache", + "sec-ch-ua-platform": '"Android"', + "User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}", + "sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"', + "Content-type": "application/x-www-form-urlencoded", + "sec-ch-ua-mobile": "?1", + "Accept": "*/*", + "Origin": "https://contact.bol.wo.cn", + "X-Requested-With": "com.sinovatech.unicom.ui", + "Sec-Fetch-Site": "same-site", + "Sec-Fetch-Mode": "cors", + "Sec-Fetch-Dest": "empty", + "Referer": "https://contact.bol.wo.cn/", + "Accept-Encoding": "gzip, deflate, br, zstd", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" + }, + form: requestBody + }; + + let response = await this.request(requestOptions); + let { result: responseData, statusCode: responseStatus } = response; + let responseCode = appName.get(responseData, "code", responseStatus); + + if (responseCode == 200) { + loginSuccess = true; + const data = responseData?.data; + this.market_token = data?.token; + this.market_refresh_token = data?.refreshToken; + this.market_user_id = data?.userId; + this.market_mobile = data?.mobile; + + // this.log("权益超市登录成功,用户ID: " + data?.userId); + this.log("权益超市登录成功"); + + } else { + let errorMessage = responseData?.msg || "未知错误"; + this.log("权益超市登录失败[" + responseCode + "]: " + errorMessage); + } + + } catch (error) { + console.log(error); + this.log("权益超市登录发生异常:" + error.message); + } finally { + return loginSuccess; + } + } + + async marketGetAllActivityTasks(options = {}) { + try { + if (!this.market_token) { + this.log("权益超市未登录,跳过任务"); + return null; + } + + // 使用固定的已验证yGdtco4r参数 - 从QIIFE7RpzIttP Cookie中提取的有效值 + const yGdtco4rParam = "0vvi1iqEqWlxNVw0UpScxDPE31.IXh4OYs07.5n2OLIQHTDaFdWyPtKpnbhG0B7Hp2etvkbTAtEmA5oWNT85S62sdiSZgdNk8DMeCc6PssSJP968RuDLNtzYMErmby5pRgb7z6i.8QzDVgpsHEVnMbNbeUDz.kOy8YzVUuT4IDX_nZcTztPiUxVTfIie6RtXMtcfxbmCQWRKegNtdYh4w9Qz7Gvgo7DqlPbasjMIyIJjAW.nxkcNhsc3oQoZ5q4e.vDlY2hlc8eqpGElxfFHfNftWh2TcRM_dwNUmh2KMfqMo4NYOJWPAhIq4SJp0bYttV1Nl230bPYgZQ5Lh9NevyoDzaanm98Jp3_l0bRYe8YaFt1sx0lMlzob7uGd3O3Q0Zi0fq2sPH7hXChyRKyr_qf2scE8A5mxQlKOKxMT5UnYUQPFXPt4k5Mr7xpUfvTG0eqcGHEB.gdYvlGbGHmjqX4U11_j49Z9Rrd5CJ47MQmrU6Gu4qL2tBTsm3BnxF7mzAbRUFTOf4VjM"; + + // 保存yGdtco4r参数供后续任务执行使用 + this.market_yGdtco4r = yGdtco4rParam; + + const requestOptions = { + fn: "marketGetAllActivityTasks", + method: "get", + url: `https://backward.bol.wo.cn/prod-api/promotion/activityTask/getAllActivityTasks?yGdtco4r=${yGdtco4rParam}`, + headers: { + "Host": "backward.bol.wo.cn", + "Connection": "keep-alive", + "Pragma": "no-cache", + "Cache-Control": "no-cache", + "sec-ch-ua-platform": '"Android"', + "Authorization": `Bearer ${this.market_token}`, + "User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}", + "Accept": "application/json, text/plain, */*", + "sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"', + "sec-ch-ua-mobile": "?1", + "Origin": "https://contact.bol.wo.cn", + "X-Requested-With": "com.sinovatech.unicom.ui", + "Sec-Fetch-Site": "same-site", + "Sec-Fetch-Mode": "cors", + "Sec-Fetch-Dest": "empty", + "Referer": "https://contact.bol.wo.cn/", + "Accept-Encoding": "gzip, deflate, br, zstd", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" + } + }; + + let response = await this.request(requestOptions); + let { result: responseData, statusCode: responseStatus } = response; + let responseCode = appName.get(responseData, "code", responseStatus); + + if (responseCode == 200) { + const data = responseData?.data; + this.log("获取权益超市任务列表成功"); + return data; + } else { + let errorMessage = responseData?.msg || "未知错误"; + this.log("获取权益超市任务列表失败[" + responseCode + "]: " + errorMessage); + return null; + } + + } catch (error) { + console.log(error); + this.log("获取权益超市任务列表异常:" + error.message); + return null; + } + } + + + + async marketGetRaffleCount(options = {}) { + try { + if (!this.market_token) { + return 0; + } + + // 使用从QIIFE7RpzIttP Cookie中提取的有效yGdtco4r参数 + // 注意:这个值不能生成,只能从浏览器Cookie中提取 + const yGdtco4rParam = "0QDEN3AEqWlrU036_dbyBvP8.68dggpJ9Em3UEzaRWLwzFshel7nj1kEQxCiI.B_fIDMRTiEwAgmaG93mDGPLvSObw_.EMz5QG4wZp7CfpHt4y4WwUioW5NoIaRtTpiyNJN6ncFGlF607_haxxASNFfzwkxRl9XZq9UfHhGY.UCzebcoAawBTyh62PdjF.ka.HIygQuhbb16HitF0IfX_cdZc2wVsIUfLSnSYulZaLnoSo.7..nRFnMyydrDjQE4tfOT08heVczyyR6Bpn.ZazNvmNZD1EgfxCRTcQDUdHFb_XDfPbqvX2N0dtYdKgSV_1s5u8RlyUwXr1HlqKEpKb83uWfIPLaOpm3xFnKupjRqj1UoDz.vB0iRRkkYtAd8nPoY654drckOD7GEQQs79zJyMTZV_ExNU72MAqvZRdRUZZz8oho.t6WzyX5R2pOSrPRgO84hba3Ez52DbM_08n8qRm3bW1TaviGW1VEwQVH74R_Eo0pxoZDfHTbAGC3vAAzz7R8sqLVphu972XyCB72Ba1XGElelViYqGnG3p_SZ_LzzpQMJdGSa"; + + const requestOptions = { + fn: "marketGetRaffleCount", + method: "post", + url: `https://backward.bol.wo.cn/prod-api/promotion/home/raffleActivity/getUserRaffleCount?yGdtco4r=${yGdtco4rParam}`, + headers: { + "Host": "backward.bol.wo.cn", + "Connection": "keep-alive", + "Content-Length": "0", + "Pragma": "no-cache", + "Cache-Control": "no-cache", + "sec-ch-ua-platform": '"Android"', + "Authorization": `Bearer ${this.market_token}`, + "User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}", + "Accept": "application/json, text/plain, */*", + "sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"', + "sec-ch-ua-mobile": "?1", + "Origin": "https://contact.bol.wo.cn", + "X-Requested-With": "com.sinovatech.unicom.ui", + "Sec-Fetch-Site": "same-site", + "Sec-Fetch-Mode": "cors", + "Sec-Fetch-Dest": "empty", + "Referer": "https://contact.bol.wo.cn/", + "Accept-Encoding": "gzip, deflate, br, zstd", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" + } + }; + + let response = await this.request(requestOptions); + let { result: responseData, statusCode: responseStatus } = response; + let responseCode = appName.get(responseData, "code", responseStatus); + + if (responseCode == 200) { + const raffleCount = responseData?.data || 0; + this.log(`权益超市可抽奖次数: ${raffleCount}`, { notify: true }); + return raffleCount; + } else { + let errorMessage = responseData?.msg || "未知错误"; + this.log("获取权益超市抽奖次数失败[" + responseCode + "]: " + errorMessage); + return 0; + } + + } catch (error) { + this.log(`获取权益超市抽奖次数异常: ${error.message}`); + return 0; + } + } + + async marketTask() { + try { + if (!this.market_token) { + this.log("权益超市未登录,跳过任务"); + return; + } + + // 执行浇花任务 + await this.marketWateringTask(); + + // 执行抽奖 + await this.marketRaffleTask(); + + } catch (error) { + console.log(error); + this.log("权益超市任务执行异常:" + error.message); + } + } + + async marketGetWateringRecords(options = {}) { + try { + if (!this.market_token) { + return null; + } + + // 使用从QIIFE7RpzIttP Cookie中提取的有效yGdtco4r参数 - 查询浇花记录专用 + const yGdtco4rParam = "0kJCZralqWoOyRFK5MqCRO_TUwsNq0Ppki8vaPIf5e62R0LorZOJN77zrWgTodj2QrQ3fdTC7EurWtWW79tUyudhWDdBVfTL6Dhcyz.t1D0jdvEuLZl30dKq0C.ucANSVPXjvcTTJr6G"; + + const requestOptions = { + fn: "marketGetWateringRecords", + method: "get", + url: `https://backward.bol.wo.cn/prod-api/promotion/activityTaskRecord/getRangeRecordList?yGdtco4r=${yGdtco4rParam}`, + headers: { + "Host": "backward.bol.wo.cn", + "Connection": "keep-alive", + "sec-ch-ua-platform": '"Windows"', + "Authorization": `Bearer ${this.market_token}`, + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0", + "sec-ch-ua": '"Chromium";v="140", "Not=A?Brand";v="24", "Microsoft Edge";v="140"', + "Content-type": "application/json", + "sec-ch-ua-mobile": "?0", + "Accept": "*/*", + "Sec-Fetch-Site": "same-origin", + "Sec-Fetch-Mode": "cors", + "Sec-Fetch-Dest": "empty", + "Referer": "https://backward.bol.wo.cn/market", + "Accept-Encoding": "gzip, deflate, br, zstd", + "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6" + } + }; + + let response = await this.request(requestOptions); + let { result: responseData, statusCode: responseStatus } = response; + let responseCode = appName.get(responseData, "code", responseStatus); + + if (responseCode == 200) { + const data = responseData?.data; + if (data && Array.isArray(data)) { + return data; + } + } else { + let errorMessage = responseData?.msg || "未知错误"; + this.log("获取浇花记录失败[" + responseCode + "]: " + errorMessage); + } + + return null; + } catch (error) { + this.log(`获取浇花记录异常: ${error.message}`); + return null; + } + } + + async marketGetWateringStatus(options = {}) { + try { + if (!this.market_token) { + return null; + } + + // 使用从QIIFE7RpzIttP Cookie中提取的有效yGdtco4r参数 - 查询浇花状态专用 + const yGdtco4rParam = "0hHgWnaEqWi0546ZdRfTeDqJdMBnv_KnzWG6CMU_1bgJe_DjIYJ6DF2QyCn39IVIop_Tl2MtZLEma_cOOBnd3rwlPuPDGi1VtWWYtqBx07xlMOjYRpb2aAZiH1jlx_PLjqQGzoPj1AUFWj9PwC1ELJq3oEw7mi.Vql7wNyVD4unkqvNgLlHPAB4jQSgOYaStVs9LtDqXn3Uw.6UKM2k1gpbGxW.lj8Oz0sNFL2dqf7HoG_5qG2_3427RzOlc8BTQC41UZTOVZWFgIzUN_5ieBSJuEPSrITbbJjOBKfau06OimtckkiRVxQAdTBLmSGvN0Iqp5sZcyRhPnAxWP7rDP1uWG5WMdzfW44SEwjr55XfNLUS.c7rSClxax2RBT3wP.xuYSxawy1OgFrQgIGLIJQx6.7LScnfvwchuTaf.aPkn53J2iXVfb6WPxm1BjYeFvjy1v8HuPMixeh3GGJPj_7rPLIbTUcsPYLwpLcdIbYU5bMjlqaxzfdbuUQnqAEUrh5Fqq2WUkHPwHTrnehvEbvBsn.YZksQODgRjV5Oa9lcbo5dD6fbPbO2E"; + + const requestOptions = { + fn: "marketGetWateringStatus", + method: "get", + url: `https://backward.bol.wo.cn/prod-api/promotion/activityTask/getMultiCycleProcess?activityId=13&yGdtco4r=${yGdtco4rParam}`, + headers: { + "Host": "backward.bol.wo.cn", + "Connection": "keep-alive", + "Pragma": "no-cache", + "Cache-Control": "no-cache", + "sec-ch-ua-platform": '"Android"', + "Authorization": `Bearer ${this.market_token}`, + "User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}", + "Accept": "application/json, text/plain, */*", + "sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"', + "sec-ch-ua-mobile": "?1", + "Origin": "https://contact.bol.wo.cn", + "X-Requested-With": "com.sinovatech.unicom.ui", + "Sec-Fetch-Site": "same-site", + "Sec-Fetch-Mode": "cors", + "Sec-Fetch-Dest": "empty", + "Referer": "https://contact.bol.wo.cn/", + "Accept-Encoding": "gzip, deflate, br, zstd", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" + } + }; + + let response = await this.request(requestOptions); + let { result: responseData, statusCode: responseStatus } = response; + let responseCode = appName.get(responseData, "code", responseStatus); + + if (responseCode == 200) { + const data = responseData?.data; + if (data) { + const triggeredTime = data.triggeredTime || 0; + const triggerTime = data.triggerTime || 0; + this.log(`浇花状态检查: ${triggeredTime}/${triggerTime}`, { notify: true }); + return data; + } + } else { + let errorMessage = responseData?.msg || "未知错误"; + this.log("获取浇花状态失败[" + responseCode + "]: " + errorMessage); + } + + return null; + } catch (error) { + this.log(`获取浇花状态异常: ${error.message}`); + return null; + } + } + + async marketWatering(options = {}) { + try { + if (!this.market_token) { + return false; + } + + const requestOptions = { + fn: "marketWatering", + method: "post", + url: "https://backward.bol.wo.cn/prod-api/promotion/activityTaskShare/checkWatering", + noLoading: true, + headers: { + "Host": "backward.bol.wo.cn", + "Connection": "keep-alive", + "Content-Length": "2", + "Pragma": "no-cache", + "Cache-Control": "no-cache", + "sec-ch-ua-platform": '"Android"', + "Authorization": `Bearer ${this.market_token}`, + "User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}", + "sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"', + "Content-type": "application/json", + "sec-ch-ua-mobile": "?1", + "Accept": "*/*", + "Origin": "https://contact.bol.wo.cn", + "X-Requested-With": "com.sinovatech.unicom.ui", + "Sec-Fetch-Site": "same-site", + "Sec-Fetch-Mode": "cors", + "Sec-Fetch-Dest": "empty", + "Referer": "https://contact.bol.wo.cn/", + "Accept-Encoding": "gzip, deflate, br, zstd", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" + }, + json: {} + }; + + let response = await this.request(requestOptions); + let { result: responseData, statusCode: responseStatus } = response; + let responseCode = appName.get(responseData, "code", responseStatus); + + if (responseCode == 200) { + const message = responseData?.msg || "浇水成功"; + this.log(`权益超市浇花: ${message}`); + return true; + } else { + let errorMessage = responseData?.msg || "未知错误"; + this.log("权益超市浇花失败[" + responseCode + "]: " + errorMessage); + return false; + } + + } catch (error) { + this.log(`权益超市浇花异常: ${error.message}`); + return false; + } + } + + async marketWateringTask() { + try { + if (!this.market_token) { + return; + } + + // 获取浇花记录列表判断今日是否已浇花 + const wateringRecords = await this.marketGetWateringRecords(); + + if (!wateringRecords) { + this.log("获取浇花记录失败,跳过浇花"); + return; + } + + // 获取今天的日期字符串 (YYYY-MM-DD) + const today = new Date(); + const todayStr = new Date(Date.now() + 8 * 3600 * 1000).toISOString().split('T')[0]; + + // 查找今天的浇花记录 + const todayRecord = wateringRecords.find(record => { + if (record.createTime) { + const recordDate = record.createTime.split(' ')[0]; // 取日期部分 + return recordDate === todayStr; + } + return false; + }); + + if (!todayRecord) { + // 今日未浇花,执行浇花 + this.log("今日尚未浇花,开始执行浇花", { notify: true }); + const success = await this.marketWatering(); + + if (success) { + this.log("权益超市浇花完成", { notify: true }); + } else { + this.log("权益超市浇花失败"); + } + } else { + // 今日已浇花,获取正确的浇花状态信息 + const wateringStatus = await this.marketGetWateringStatus(); + + if (wateringStatus) { + const triggeredTime = wateringStatus.triggeredTime || 0; + const triggerTime = wateringStatus.triggerTime || 0; + this.log(`今日浇花已完成,已浇花 ${triggeredTime}/${triggerTime} 次,浇花时间: ${todayRecord.createTime}`, { notify: true }); + } else { + this.log(`今日浇花已完成,浇花时间: ${todayRecord.createTime}`, { notify: true }); + } + } + + } catch (error) { + this.log(`权益超市浇花任务异常: ${error.message}`); + } + } + + async marketRaffle(options = {}) { + try { + if (!this.market_token) { + return false; + } + + // 使用从QIIFE7RpzIttP Cookie中提取的有效yGdtco4r参数 - 执行抽奖专用 + const yGdtco4rParam = "0QgDw1GEqWlrU036_dbyBvP8.68dggpJ9Em3UEzaRWLwzFshel7nj1kEQxCiI.B_fIDMRTiEwAgmaoqRDUcMB02lgYQPCAFCba8gFHC.tOt7HgTxZYK9RE.F97mWLrjhVnYlqoN8J3po8lAf4nuZgZxrqLz7G5RwjhP7cN6MJqMz919_MDvcHYn6NwWXQSzGz5SeQ6gXKTjWH7e169QJLUmSffMJtRvnmSI_KAoFD1KO900oYqqNE6DT3Ldqrybha.30hJjF5xcVVGKG5PjvpDN6mh_OkWCUntXfjKcpHOiq.ihFEmTnbaizklLV9QFuwD7d_64uWO.ccQ_YBp9GGcRNUyedvs7aY349tZSdJUJMs5AxGNoRN9kBfA0fs5zcrT9nHG8j7qYcaEgq4ZCXkOHtGohgHad2DFiRfkhDH0vf0XA0iAczitXuNfNIrzql7wpGW3qduE7AwzbWxKpDrohiS_aikqbAInv00OAPevfIw8v23ugpy8URgEdXFWaBUA_ZYw6MCplOhwvSiHK0Js1hcBQSehpn2xwE3a6yaDjY3NxVZ.m5A4sG"; + + const requestOptions = { + fn: "marketRaffle", + method: "post", + url: `https://backward.bol.wo.cn/prod-api/promotion/home/raffleActivity/userRaffle?yGdtco4r=${yGdtco4rParam}`, + headers: { + "Host": "backward.bol.wo.cn", + "Connection": "keep-alive", + "Content-Length": "0", + "Pragma": "no-cache", + "Cache-Control": "no-cache", + "sec-ch-ua-platform": '"Android"', + "Authorization": `Bearer ${this.market_token}`, + "User-Agent": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A5000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36; unicom{version:android@11.0000,desmobile:0};devicetype{deviceBrand:OnePlus,deviceModel:ONEPLUS A5000}", + "Accept": "application/json, text/plain, */*", + "sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Android WebView";v="138"', + "sec-ch-ua-mobile": "?1", + "Origin": "https://contact.bol.wo.cn", + "X-Requested-With": "com.sinovatech.unicom.ui", + "Sec-Fetch-Site": "same-site", + "Sec-Fetch-Mode": "cors", + "Sec-Fetch-Dest": "empty", + "Referer": "https://contact.bol.wo.cn/", + "Accept-Encoding": "gzip, deflate, br, zstd", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" + } + }; + + let response = await this.request(requestOptions); + let { result: responseData, statusCode: responseStatus } = response; + let responseCode = appName.get(responseData, "code", responseStatus); + + if (responseCode == 200) { + const data = responseData?.data; + if (data) { + const isWinning = data.isWinning; + const prizesName = data.prizesName || "未中奖"; + const message = data.message; + + if (isWinning) { + this.log(`权益超市抽奖成功: ${prizesName}`, { notify: true }); + } else { + this.log(`权益超市抽奖结果: ${prizesName}`, { notify: true }); + } + + if (message) { + this.log(`抽奖提示: ${message}`); + } + + return true; + } + return false; + } else { + let errorMessage = responseData?.msg || "未知错误"; + this.log("权益超市抽奖失败[" + responseCode + "]: " + errorMessage); + return false; + } + + } catch (error) { + this.log(`权益超市抽奖异常: ${error.message}`); + return false; + } + } + + async marketRaffleTask() { + try { + if (!this.market_token) { + return; + } + + // 查询可抽奖次数 + const raffleCount = await this.marketGetRaffleCount(); + + if (raffleCount > 0) { + this.log(`开始执行权益超市抽奖,可抽奖次数: ${raffleCount}`, { notify: true }); + + // 执行抽奖 + for (let i = 0; i < raffleCount; i++) { + this.log(`执行第 ${i + 1} 次抽奖`); + const success = await this.marketRaffle(); + + if (!success) { + this.log(`第 ${i + 1} 次抽奖失败,停止抽奖`); + break; + } + + // 等待一段时间避免请求过快 + await appName.wait(3000); + } + + this.log("权益超市抽奖完成", { notify: true }); + } else { + this.log("权益超市暂无可抽奖次数", { notify: true }); + } + + } catch (error) { + this.log(`权益超市抽奖异常: ${error.message}`); + } + } + + async openPlatLineNew(url, options = {}) { + const defaultResult = { + ticket: "", + type: "", + loc: "" + }; + + let result = defaultResult; + + try { + const queryParams = { + to_url: url + }; + const requestOptions = { + fn: "openPlatLineNew", + method: "get", + url: "https://m.client.10010.com/mobileService/openPlatform/openPlatLineNew.htm", + searchParams: queryParams + }; + + const { headers, statusCode } = await this.request(requestOptions); + + if (headers?.["location"]) { + const locationUrl = new URL(headers.location); + const type = locationUrl.searchParams.get("type") || "02"; + const ticket = locationUrl.searchParams.get("ticket"); + + if (!ticket) { + this.log("获取ticket失败"); + } + + result = { + loc: headers.location, + ticket: ticket, + type: type + }; + } else { + this.log(`获取ticket失败[${statusCode}]`); + } + } catch (error) { + console.log(error); + } finally { + return result; + } + } + async gettaskip(options = {}) { + const orderId = appName.randomString(32).toUpperCase(); + + try { + const requestBody = { + mobile: this.mobile, + orderId: orderId + }; + + const requestOptions = { + fn: "gettaskip", + method: "post", + url: "https://m.client.10010.com/taskcallback/topstories/gettaskip", + form: requestBody + }; + + await this.request(requestOptions); + } catch (error) { + console.log(error); + } finally { + return orderId; + } + } + async draw_28_queryChance(options = {}) { + try { + const requestConfig = { + fn: "draw_28_queryChance", + method: "post", + url: "https://m.client.10010.com/AppMonthly/appMonth/queryChance" + }; + + // 发起请求并获取响应 + let { + result: responseResult, + statusCode: responseStatusCode + } = await this.request(requestConfig), + status = appName.get(responseResult, "status", responseStatusCode); + + // 检查响应状态码是否为 "0000" + if (status == "0000") { + // // 解析剩余的抽奖次数 + // let remainingTimes = parseInt(responseResult?.["data"]?.["allRemainTimes"] || 0), + // drawTimes = Math.min(maxDrawTimes, remainingTimes); + + // this.log("28日五折日可以抽奖" + remainingTimes + "次, 去抽" + drawTimes + "次"); + + // let firstAttempt = false; + // while (drawTimes-- > 0) { + // if (firstAttempt) { + // // 等待8秒再进行下一次抽奖 + // await appName.wait(8000); + // } + // firstAttempt = true; + await this.draw_28_lottery(); + // } + } else { + // 处理查询失败的情况 + let errorMessage = responseResult?.["message"] || responseResult?.["msg"] || ""; + this.log("28日五折日查询抽奖次数失败[" + status + "]: " + errorMessage); + } + } catch (error) { + console.log(error); + } + } + async draw_28_lottery(options = {}) { + try { + const requestOptions = { + fn: "draw_28_lottery", + method: "post", + url: "https://m.client.10010.com/AppMonthly/appMonth/lottery" + }; + + const { result, statusCode } = await this.request(requestOptions); + const status = appName.get(result, "status", statusCode); + + if (status === "0000") { + const responseData = result?.["data"]; + const resultCode = appName.get(responseData, "code", -1); + + if (responseData?.["uuid"]) { + await appName.wait(2000); + await this.draw_28_winningRecord(responseData.uuid); + } else { + const errorMessage = responseData?.["message"] || responseData?.["msg"] || ""; + this.log(`28日五折日抽奖失败[${resultCode}]: ${errorMessage}`); + } + } else { + const errorMessage = result?.["message"] || result?.["msg"] || ""; + this.log(`28日五折日抽奖失败[${status}]: ${errorMessage}`); + } + } catch (error) { + console.log(error); + } + } + async draw_28_winningRecord(requestId, options = {}) { + try { + const requestPayload = { + requestId: requestId + }; + + const requestOptions = { + fn: "draw_28_winningRecord", + method: "post", + url: "https://m.client.10010.com/AppMonthly/appMonth/winningRecord", + form: requestPayload + }; + + const { result, statusCode } = await this.request(requestOptions); + const status = appName.get(result, "status", statusCode); + + if (status === "0000") { + const responseData = result?.["data"]; + const resultCode = appName.get(responseData, "code", -1); + + if (resultCode === "0000") { + const logOptions = { + notify: true + }; + this.log("28日五折日抽奖: " + responseData?.["prizeName"]?.["replace"](/\t/g, ""), logOptions); + } else { + const errorMessage = responseData?.["message"] || responseData?.["msg"] || ""; + this.log(`查询28日五折日抽奖结果失败[${resultCode}]: ${errorMessage}`); + } + } else { + const errorMessage = result?.["message"] || result?.["msg"] || ""; + this.log(`查询28日五折日抽奖结果失败[${status}]: ${errorMessage}`); + } + } catch (error) { + console.log(error); + } + } + + async ttlxj_authorize(ticket, type, refererUrl, options = {}) { + try { + const requestConfig = { + fn: "ttlxj_authorize", + method: "post", + url: "https://epay.10010.com/woauth2/v2/authorize", + headers: { + Origin: "https://epay.10010.com", + Referer: refererUrl + }, + json: { + response_type: "rptid", + client_id: clientId, + redirect_uri: "https://epay.10010.com/ci-mps-st-web/", + login_hint: { + credential_type: "st_ticket", + credential: ticket, + st_type: type, + force_logout: true, + source: "app_sjyyt" + }, + device_info: { + token_id: "chinaunicom-pro-" + Date.now() + "-" + appName.randomString(13), + trace_id: appName.randomString(32) + } + } + }; + + const { result } = await this.request(requestConfig); + const statusCode = appName.get(result, "status", -1); + + if (statusCode === 200) { + await this.ttlxj_authCheck(); + } else { + const errorMessage = result?.["message"] || result?.["msg"] || ""; + this.log(`天天领现金获取SESSION失败[${statusCode}]: ${errorMessage}`); + } + } catch (error) { + console.log(error); + } + } + + async ttlxj_authCheck(options = {}) { + try { + const requestConfig = { + fn: "ttlxj_authCheck", + method: "post", + url: "https://epay.10010.com/ps-pafs-auth-front/v1/auth/check", + headers: { + bizchannelinfo: this.get_bizchannelinfo() + } + }; + + const { result } = await this.request(requestConfig); + const responseCode = appName.get(result, "code", -1); + + if (responseCode === "0000") { + const { mobile, sessionId, tokenId, userId } = result?.["data"]?.["authInfo"]; + const authInfo = { + sessionId, + tokenId, + userId + }; + Object.assign(this, authInfo); + + await this.ttlxj_userDrawInfo(); + await this.ttlxj_queryAvailable(); + } else { + if (responseCode === "2101000100") { + const loginUrl = result?.["data"]?.["woauth_login_url"]; + await this.ttlxj_login(loginUrl); + } else { + const errorMessage = result?.["msgInside"] || result?.["msg"] || ""; + this.log(`天天领现金获取tokenId失败[${responseCode}]: ${errorMessage}`); + } + } + } catch (error) { + console.log(error); + } + } + + async ttlxj_login(loginUrl, options = {}) { + try { + // 拼接完整的登录 URL + const fullUrl = `${loginUrl}https://epay.10010.com/ci-mcss-party-web/clockIn/?bizFrom=${errorCode}&bizChannelCode=${errorNumber}`; + + const requestConfig = { + fn: "ttlxj_login", + method: "get", + url: fullUrl + }; + + const { headers, statusCode } = await this.request(requestConfig); + + if (headers?.["location"]) { + const locationUrl = new URL(headers.location); + this.rptId = locationUrl.searchParams.get("rptid"); + if (this.rptId) { + await this.ttlxj_authCheck(); + } else { + this.log("天天领现金获取rptid失败"); + } + } else { + this.log(`天天领现金获取rptid失败[${statusCode}]`); + } + } catch (error) { + console.log(error); + } + } + + async ttlxj_userDrawInfo(options = {}) { + try { + const requestConfig = { + fn: "ttlxj_userDrawInfo", + method: "post", + url: "https://epay.10010.com/ci-mcss-party-front/v1/ttlxj/userDrawInfo", + headers: { + bizchannelinfo: this.get_bizchannelinfo(), + authinfo: this.get_epay_authinfo() + } + }; + + const { result } = await this.request(requestConfig); + const responseCode = appName.get(result, "code", -1); + + if (responseCode === "0000") { + const dayOfWeek = result?.["data"]?.["dayOfWeek"]; + const drawKey = `day${dayOfWeek}`; + const hasNotClockedIn = result?.["data"]?.[drawKey] === "1"; + + const logOptions = { + notify: true + }; + + this.log(`天天领现金今天${hasNotClockedIn ? "未" : "已"}打卡`, logOptions); + + if (hasNotClockedIn) { + const today = new Date().getDay(); + const drawType = (today % 7 === 0) ? "C" : "B"; + await this.ttlxj_unifyDrawNew(drawType); + } + } else { + const errorMessage = result?.["msg"] || ""; + this.log(`天天领现金查询失败[${responseCode}]: ${errorMessage}`); + } + } catch (error) { + console.log(error); + } + } + + async ttlxj_unifyDrawNew(drawType, options = {}) { + try { + const requestData = { + drawType: drawType, + bizFrom: errorCode, + activityId: "TTLXJ20210330" + }; + + const requestConfig = { + fn: "ttlxj_unifyDrawNew", + method: "post", + url: "https://epay.10010.com/ci-mcss-party-front/v1/ttlxj/unifyDrawNew", + headers: { + bizchannelinfo: this.get_bizchannelinfo(), + authinfo: this.get_epay_authinfo() + }, + form: requestData + }; + + const { result } = await this.request(requestConfig); + const responseCode = appName.get(result, "code", -1); + + if (responseCode === "0000" && result?.["data"]?.["returnCode"] === 0) { + const awardMessage = result?.["data"]?.["awardTipContent"]?.replace(/xx/, result?.["data"]?.["amount"]); + const logOptions = { + notify: true + }; + this.log("天天领现金打卡: " + awardMessage, logOptions); + } else { + const errorMessage = result?.["data"]?.["returnMsg"] || result?.["msg"] || ""; + this.log(`天天领现金打卡失败[${result?.["data"]?.["returnCode"] || responseCode}]: ${errorMessage}`); + } + } catch (error) { + console.log(error); + } + } + + async ttlxj_h(_0x47d16c = {}) { + try { + const _0x2f3dc6 = { + bizFrom: errorCode, + activityId: _0x3484cf.ttlxj, + uid: apiKey + }; + let _0x469865 = { + fn: "ttlxj_h", + method: "post", + url: "https://epay.10010.com/ci-mcss-party-front/v1/ttlxj/help", + headers: { + bizchannelinfo: this.get_bizchannelinfo(), + authinfo: this.get_epay_authinfo() + }, + form: _0x2f3dc6 + }; + await this.request(_0x469865); + } catch (_0x173381) { + console.log(_0x173381); + } + } + async ttlxj_queryAvailable(_0x23c9d2 = {}) { + try { + let _0x2f3ee4 = { + fn: "ttlxj_queryAvailable", + method: "post", + url: "https://epay.10010.com/ci-mcss-party-front/v1/ttlxj/queryAvailable", + headers: { + bizchannelinfo: this.get_bizchannelinfo(), + authinfo: this.get_epay_authinfo() + } + }, + { + result: _0x351127 + } = await this.request(_0x2f3ee4), + _0x22c4f9 = appName.get(_0x351127, "code", -1); + if (_0x22c4f9 == "0000" && _0x351127?.["data"]?.["returnCode"] == 0) { + let _0x11a97b = _0x351127?.["data"]?.["availableAmount"] || 0; + const _0x3dffbb = { + notify: true + }; + this.log("可用立减金: " + (_0x11a97b / 100).toFixed(2) + "元", _0x3dffbb); + let _0x3a9ca0 = [], + _0x4a77d6 = Date.now(); + for (let _0x22c5c5 of _0x351127?.["data"]?.["prizeList"]?.["filter"](_0xac5521 => _0xac5521.status == "A")) { + let _0xdf42c9 = _0x22c5c5.endTime, + _0x148118 = new Date(_0xdf42c9.slice(0, 4) + "-" + _0xdf42c9.slice(4, 6) + "-" + _0xdf42c9.slice(6, 8) + " 00:00:00"), + _0xc3cc5f = _0x148118.getTime(); + if (_0xc3cc5f - _0x4a77d6 < expiration_time * 24 * 60 * 60 * 1000) { + let _0x24bd89 = appName.time("yyyy-MM-dd", _0xc3cc5f); + const _0x4d3dd0 = { + timestamp: _0xc3cc5f, + date: _0x24bd89, + amount: _0x22c5c5.amount + }; + _0x3a9ca0.push(_0x4d3dd0); + } + } + if (_0x3a9ca0.length) { + const _0x4097fc = { + timestamp: 0 + }; + let _0xb33342 = _0x4097fc, + _0x296b80 = _0x3a9ca0.reduce(function (_0x11f322, _0x3cd209) { + (_0xb33342.timestamp == 0 || _0x3cd209.timestamp < _0xb33342.timestamp) && (_0xb33342 = _0x3cd209); + return _0x11f322 + parseFloat(_0x3cd209.amount); + }, 0); + const _0x5d32b7 = { + notify: true + }; + this.log(expiration_time + "天内过期立减金: " + _0x296b80.toFixed(2) + "元", _0x5d32b7); + const _0x2dff48 = { + notify: true + }; + this.log("最早过期立减金: " + _0xb33342.amount + "元 -- " + _0xb33342.date + "过期", _0x2dff48); + } else { + const _0x437216 = { + notify: true + }; + this.log(expiration_time + "天内没有过期的立减金", _0x437216); + } + } else { + let _0x1a23ec = _0x351127?.["data"]?.["returnMsg"] || _0x351127?.["msg"] || ""; + this.log("天天领现金打卡失败[" + (_0x351127?.["data"]?.["returnCode"] || _0x22c4f9) + "]: " + _0x1a23ec); + } + } catch (_0x2d80a8) { + console.log(_0x2d80a8); + } + } + async epay_28_authCheck(_0x1d0fd8 = {}) { + try { + let _0x35ae82 = { + fn: "epay_28_authCheck", + method: "post", + url: "https://epay.10010.com/ps-pafs-auth-front/v1/auth/check", + headers: { + bizchannelinfo: this.get_bizchannelinfo() + } + }, + { + result: _0x1d449e + } = await this.request(_0x35ae82), + _0x4e8f00 = appName.get(_0x1d449e, "code", -1); + if (_0x4e8f00 == "0000") { + let { + mobile: _0x4668a5, + sessionId: _0xb2b5be, + tokenId: _0x7c73d9, + userId: _0x42df1c + } = _0x1d449e?.["data"]?.["authInfo"]; + const _0x4d9ca1 = { + sessionId: _0xb2b5be, + tokenId: _0x7c73d9, + userId: _0x42df1c + }; + Object.assign(this, _0x4d9ca1); + await this.epay_28_queryUserPage(); + } else { + if (_0x4e8f00 == "2101000100") { + let _0x5892fa = _0x1d449e?.["data"]?.["woauth_login_url"]; + await this.epay_28_login(_0x5892fa); + } else { + let _0x1fb8e2 = _0x1d449e?.["msgInside"] || _0x1d449e?.["msg"] || ""; + this.log("联通支付日获取tokenId失败[" + _0x4e8f00 + "]: " + _0x1fb8e2); + } + } + } catch (_0x268652) { + console.log(_0x268652); + } + } + async epay_28_login(_0x139155, _0x3721a9 = {}) { + try { + let _0x236f54 = appName.time("yyyyMM") + "28ZFR"; + _0x139155 += "https://epay.10010.com/ci-mcss-party-web/rainbow/?templateName=" + _0x236f54 + "&bizFrom=225&bizChannelCode=225&channelType=WDQB"; + const _0x5d5710 = { + fn: "epay_28_login", + method: "get", + url: _0x139155 + }; + let { + headers: _0x10b4ba, + statusCode: _0x1c60e3 + } = await this.request(_0x5d5710); + if (_0x10b4ba?.["location"]) { + let _0xbf5a4c = new URL(_0x10b4ba.location); + this.rptId = _0xbf5a4c.searchParams.get("rptid"); + this.rptId ? await this.epay_28_authCheck() : this.log("联通支付日获取rptid失败"); + } else { + this.log("联通支付日获取rptid失败[" + _0x1c60e3 + "]"); + } + } catch (_0x24e61c) { + console.log(_0x24e61c); + } + } + async epay_28_queryUserPage(_0x593a59 = {}) { + try { + let _0x52a117 = appName.time("yyyyMM") + "28ZFR"; + const _0xa4a05 = { + templateName: _0x52a117 + }; + let _0x2b8287 = { + fn: "epay_28_queryUserPage", + method: "post", + url: "https://epay.10010.com/ci-mcss-party-front/v1/rainbow/queryUserPage", + headers: { + bizchannelinfo: this.get_bizchannelinfo(), + authinfo: this.get_epay_authinfo() + }, + form: _0xa4a05 + }, + { + result: _0x316895 + } = await this.request(_0x2b8287), + _0x2a5e2b = appName.get(_0x316895, "code", -1); + if (_0x2a5e2b == "0000" && _0x316895?.["data"]?.["returnCode"] == 0) { + for (let _0x29cca7 of _0x316895?.["data"]?.["prizeList"]?.["rainbowMouldInfos"] || []) { + _0x29cca7?.["rainbowUnitInfos"]?.[0]?.["unitActivityId"] && (await this.epay_28_unifyDraw(_0x29cca7.rainbowUnitInfos[0])); + if (_0x29cca7?.["day01DrawParam"]) { + await this.epay_28_queryMiddleUnit(_0x52a117, _0x29cca7.mouldName); + break; + } + } + } else { + let _0x253476 = _0x316895?.["message"] || _0x316895?.["msg"] || ""; + this.log("联通支付日进入主页失败[" + _0x2a5e2b + "]: " + _0x253476); + } + } catch (_0x4d57b5) { + console.log(_0x4d57b5); + } + } + async epay_28_queryMiddleUnit(_0x5c5db5, _0x392918, _0x5f3e9d = {}) { + try { + const _0x52c66e = { + activityId: _0x5c5db5, + mouldName: _0x392918 + }; + let _0x272e95 = { + fn: "epay_28_queryMiddleUnit", + method: "post", + url: "https://epay.10010.com/ci-mcss-party-front/v1/rainbow/queryMiddleUnit", + headers: { + bizchannelinfo: this.get_bizchannelinfo(), + authinfo: this.get_epay_authinfo() + }, + form: _0x52c66e + }, + { + result: _0x3851a6 + } = await this.request(_0x272e95), + _0x4b44ce = appName.get(_0x3851a6, "code", -1); + if (_0x4b44ce == "0000") { + let _0xcad9a9 = appName.time("dd"); + _0x3851a6?.["data"]?.[_0xcad9a9] == "1" ? this.log("联通支付日今日(" + _0xcad9a9 + "号)已打卡") : await this.epay_28_unifyDrawNew(_0x5c5db5, _0x392918); + } else { + let _0x42d4bb = _0x3851a6?.["message"] || _0x3851a6?.["msg"] || ""; + this.log("联通支付日查询打卡失败[" + _0x4b44ce + "]: " + _0x42d4bb); + } + } catch (_0x56f54c) { + console.log(_0x56f54c); + } + } + async epay_28_unifyDrawNew(_0x32455a, _0x3b23ed, _0x4b4480 = {}) { + try { + const _0x1af316 = { + bizFrom: errorCode, + activityId: _0x32455a, + mouldName: _0x3b23ed + }; + let _0x1e4109 = { + fn: "epay_28_unifyDrawNew", + method: "post", + url: "https://epay.10010.com/ci-mcss-party-front/v1/rainbow/unifyDrawNew", + headers: { + bizchannelinfo: this.get_bizchannelinfo(), + authinfo: this.get_epay_authinfo() + }, + form: _0x1af316 + }, + { + result: _0x39b4c5 + } = await this.request(_0x1e4109), + _0x372dd5 = appName.get(_0x39b4c5, "code", -1); + if (_0x372dd5 == "0000" && _0x39b4c5?.["data"]?.["returnCode"] == 0) { + let _0xc69fe5 = _0x39b4c5?.["data"]?.["awardTipContent"]?.["replace"](/xx/, _0x39b4c5?.["data"]?.["amount"]); + const _0x5e238f = { + notify: true + }; + this.log("联通支付日打卡:" + _0xc69fe5, _0x5e238f); + } else { + let _0x5dd5bd = _0x39b4c5?.["data"]?.["returnMsg"] || _0x39b4c5?.["msg"] || ""; + this.log("联通支付日打卡失败[" + (_0x39b4c5?.["data"]?.["returnCode"] || _0x372dd5) + "]: " + _0x5dd5bd); + } + } catch (_0xe6df9) { + console.log(_0xe6df9); + } + } + async epay_28_unifyDraw(_0x38a578, _0x5c8b17 = {}) { + try { + const _0x3bf056 = { + activityId: _0x38a578.unitActivityId, + isBigActivity: _0x38a578.isBigActivity, + bigActivityId: _0x38a578.bigActivityId, + bizFrom: errorCode + }; + let _0x59ed9a = { + fn: "epay_28_unifyDraw", + method: "post", + url: "https://epay.10010.com/ci-mcss-party-front/v1/rainbow/unifyDraw", + headers: { + bizchannelinfo: this.get_bizchannelinfo(), + authinfo: this.get_epay_authinfo() + }, + form: _0x3bf056 + }, + { + result: _0x34ea6b + } = await this.request(_0x59ed9a), + _0x384c09 = appName.get(_0x34ea6b, "code", -1); + if (_0x384c09 == "0000" && _0x34ea6b?.["data"]?.["returnCode"] == 0) { + const _0x3b6f17 = { + notify: true + }; + this.log("联通支付日抽奖: " + (_0x34ea6b?.["data"]?.["prizeName"] || ""), _0x3b6f17); + } else { + let _0x22895a = _0x34ea6b?.["data"]?.["returnMsg"] || _0x34ea6b?.["msg"] || ""; + this.log("联通支付日抽奖失败[" + (_0x34ea6b?.["data"]?.["returnCode"] || _0x384c09) + "]: " + _0x22895a); + } + } catch (_0x4e021a) { + console.log(_0x4e021a); + } + } + async appMonth_28_bind(_0x2ae53c, _0x28e539 = {}) { + try { + const _0x5e8346 = { + shareCode: _0x2ae53c, + cl: "WeChat" + }; + const _0x5807b0 = { + fn: "appMonth_28_bind", + method: "post", + url: "https://activity.10010.com/AppMonthly/appMonth/bind", + form: _0x5e8346, + valid_code: [401] + }; + let { + result: _0x147b99 + } = await this.request(_0x5807b0); + } catch (_0x24f7a3) { + console.log(_0x24f7a3); + } + } + async appMonth_28_queryChance(params = {}) { + try { + const requestConfig = { + fn: "appMonth_28_queryChance", + method: "post", + url: "https://activity.10010.com/AppMonthly/appMonth/queryChance" + }; + + let { + result: response + } = await this.request(requestConfig), + status = appName.get(response, "status", -1); + + if (status == "0000") { + let { + allRemainTimes: remainingTimes, + isUnicom: isUnicomUser + } = response?.["data"]; + + if (isUnicomUser) { + let drawTimes = Math.min(appMonth_28_MaxTimes, remainingTimes); + this.log("联通支付日可以开宝箱" + remainingTimes + "次, 去抽" + drawTimes + "次"); + + while (drawTimes-- > 0) { + await this.appMonth_28_lottery(); + } + } + } else { + let errorMsg = response?.["msg"] || ""; + this.log("联通支付日查询开宝箱次数失败[" + status + "]: " + errorMsg); + } + } catch (error) { + console.log(error); + } + } + + async appMonth_28_lottery(_0x32fff2 = {}) { + try { + const _0x13d3ae = { + fn: "appMonth_28_lottery", + method: "post", + url: "https://activity.10010.com/AppMonthly/appMonth/lottery" + }; + let { + result: _0x360c8d + } = await this.request(_0x13d3ae), + _0x1faa78 = appName.get(_0x360c8d, "status", -1); + if (_0x1faa78 == "0000") { + let { + code: _0x4506d5, + uuid: _0x217783 + } = _0x360c8d?.["data"]; + _0x217783 ? await this.appMonth_28_winningRecord(_0x217783) : this.log("联通支付日开宝箱失败[" + _0x4506d5 + "]"); + } else { + let _0x1c765a = _0x360c8d?.["msg"] || ""; + this.log("联通支付日开宝箱失败[" + _0x1faa78 + "]: " + _0x1c765a); + } + } catch (_0x1e578f) { + console.log(_0x1e578f); + } + } + async appMonth_28_winningRecord(_0x49f5fb, _0x539daf = {}) { + try { + const _0x4e44da = { + requestId: _0x49f5fb + }; + const _0x18e28d = { + fn: "appMonth_28_winningRecord", + method: "post", + url: "https://activity.10010.com/AppMonthly/appMonth/winningRecord", + form: _0x4e44da + }; + let { + result: _0x3de180 + } = await this.request(_0x18e28d), + _0x51662d = appName.get(_0x3de180, "status", -1); + if (_0x51662d == "0000") { + let { + code: _0x20040f, + prizeName: _0x428599 + } = _0x3de180?.["data"]; + if (_0x20040f == "0000") { + const _0x194d8b = { + notify: true + }; + this.log("联通支付日开宝箱: " + _0x428599, _0x194d8b); + } else { + let _0x4a0327 = _0x3de180?.["data"]?.["message"] || ""; + this.log("联通支付日开宝箱[" + _0x20040f + "]: " + _0x4a0327); + } + } else { + let _0x507948 = _0x3de180?.["msg"] || ""; + this.log("联通支付日查询中奖奖品错误[" + _0x51662d + "]: " + _0x507948); + } + } catch (_0x12630e) { + console.log(_0x12630e); + } + } +async sign_getContinuous(imei_val, _0x4a5ad2 = {}) { + try { + // 定义请求配置 + const _0x4c871f = { + fn: "sign_getContinuous", + method: "get", // GET请求 + url: "https://activity.10010.com/sixPalaceGridTurntableLottery/signin/getContinuous", + params: { // 请求参数 + taskId: "", + channel: "wode", + imei: imei_val // 设备ID + } + }; + // 发送请求并获取结果 + let { result: _0x375bbc } = await this.request(_0x4c871f), + _0x390277 = appName.get(_0x375bbc, "code", -1); + + // 处理响应 + if (_0x390277 == "0000") { // 成功 + let _0x2ddb99 = _0x375bbc?.["data"]?.["todayIsSignIn"] || 'n'; // 今日签到状态 + this.log("签到区今天" + (_0x2ddb99 == "n" ? "未" : "已") + "签到", { notify: true }); + if (_0x2ddb99 == "n") { // 未签到则执行签到 + await appName.wait(1000); // 等待1秒 + await this.sign_daySign(); // 执行每日签到 + } + } else { // 失败 + this.log("签到区查询签到状态失败[" + _0x390277 + "]: " + (_0x375bbc?.["desc"] || "")); + } + } catch (_0x1e4db0) { + console.log(_0x1e4db0); + } +} + +async sign_daySign(_0x43121e = {}) { + try { + // 定义请求配置 + const _0x34424b = { + fn: "sign_daySign", + method: "post", // POST请求 + url: "https://activity.10010.com/sixPalaceGridTurntableLottery/signin/daySign", + form: {} // 空表单数据 + }; + // 发送请求并获取结果 + let { result: _0x45b961 } = await this.request(_0x34424b), + _0x3dd664 = appName.get(_0x45b961, "code", -1); + + // 处理响应 + if (_0x3dd664 == "0000") { // 签到成功 + let { statusDesc: _0x3544fb, redSignMessage: _0x5016bf } = _0x45b961?.["data"]; + let logMessage = "签到区签到成功: "; + if (_0x3544fb) logMessage += `[${_0x3544fb}]`; + if (_0x5016bf) logMessage += `${_0x5016bf}`; + this.log(logMessage, { notify: true }); + } else if (_0x3dd664 == "0002" && _0x45b961?.["desc"] && _0x45b961["desc"].includes('已经签到')) { // 今日已签到 + this.log("签到区签到成功: 今日已完成签到!", { notify: true }); + } else { // 失败 + this.log("签到区签到失败[" + _0x3dd664 + "]: " + (_0x45b961?.["desc"] || "")); + } + } catch (_0x31a630) { + console.log(_0x31a630); + } +} + +async sign_queryBubbleTask(_0x2777e8 = {}) { + try { + // 定义请求配置 + const _0x49d44f = { + fn: "sign_queryBubbleTask", + method: "post", // POST请求 + url: "https://act.10010.com/SigninApp/bubbleTask/queryBubbleTask" + }; + // 发送请求并获取结果 + let { result: _0xff3076 } = await this.request(_0x49d44f), + _0x1e9efb = appName.get(_0xff3076, "status", -1); + + // 处理响应 + if (_0x1e9efb == "0000") { // 成功 + // 筛选并执行可执行任务 + for (let _0xe8b4f5 of _0xff3076?.["data"]?.["paramsList"]?.["filter"](_0xb17880 => _0xb17880.taskState == 1)) { + let _0x411132 = await this.gettaskip(); // 获取任务所需标识 + await this.sign_doTask(_0xe8b4f5, _0x411132); // 执行任务 + } + } else { // 失败 + this.log("签到区查询气泡任务失败[" + _0x1e9efb + "]: " + (_0xff3076?.["msg"] || "")); + } + } catch (_0x24c5dc) { + console.log(_0x24c5dc); + } +} + +async sign_doTask(_0x4cf867, _0x22748d, _0x5bbfdb = {}) { + try { + // 定义请求表单数据 + const _0x4a9479 = { + id: _0x4cf867.id, + orderId: _0x22748d, + imei: "BB97982E-3F03-46D3-B904-819D626DF478", // 设备ID (硬编码示例) + prizeType: _0x4cf867.rewardType, + positionFlag: 0 + }; + // 定义请求配置 + const _0x31aade = { + fn: "sign_doTask", + method: "post", // POST请求 + url: "https://act.10010.com/SigninApp/task/doTask", + form: _0x4a9479 // 表单数据 + }; + // 发送请求并获取结果 + let { result: _0x329766 } = await this.request(_0x31aade), + _0x1d5e4d = appName.get(_0x329766, "status", -1); + + // 处理响应 + if (_0x1d5e4d == "0000") { // 成功 + this.log("完成任务[" + _0x4cf867.actName + "]获得: " + _0x329766?.["data"]?.["prizeCount"] + _0x329766?.["data"]?.["prizeName"]); + } else { // 失败 + this.log("完成任务[" + _0x4cf867.actName + "]失败[" + _0x1d5e4d + "]: " + (_0x329766?.["msg"] || "")); + } + } catch (_0x4ad671) { + console.log(_0x4ad671); + } +} + async game_login(_0x5f500f, _0x639e7 = {}) { + try { + const _0x2730f4 = { + identityType: "esToken", + code: this.ecs_token, + ticket: _0x5f500f, + uuid: uuid + }; + const _0x204877 = { + fn: "game_login", + method: "post", + url: "https://game.wostore.cn/api/app//user/v2/login", + headers: {}, + json: _0x2730f4 + }; + _0x204877.headers.channelid = "GAMELTAPP_90005"; + let { + result: _0x206034 + } = await this.request(_0x204877), + _0xe387fd = appName.get(_0x206034, "code", -1); + if (_0xe387fd == 200) { + this.game_token = _0x206034?.["data"]?.["access_token"]; + this.got = this.got.extend({ + headers: { + Authorization: this.game_token + } + }); + await this.game_getMemberInfo(); + await this.game_signRecord(); + await this.game_lottery(); + await this.game_playSave(); + await this.game_taskList(); + await this.game_getMemberInfo(); + const _0x563fcb = { + notify: true + }; + this.log("联通畅游币: " + this.point, _0x563fcb); + } else { + let _0x1d6aa5 = _0x206034?.["msg"] || ""; + this.log("联通畅游登录失败[" + _0xe387fd + "]: " + _0x1d6aa5); + } + } catch (_0x22daa6) { + console.log(_0x22daa6); + } + } + async game_getMemberInfo(_0x1119ca = {}) { + try { + const _0x2d61ed = { + fn: "game_getMemberInfo", + method: "get", + url: "https://game.wostore.cn/api/app/user/v2/getMemberInfo" + }; + let { + result: _0x25b820 + } = await this.request(_0x2d61ed), + _0x4c45ab = appName.get(_0x25b820, "code", -1); + if (_0x4c45ab == 200) { + this.point = _0x25b820?.["data"]?.["userIntegral"]; + } else { + let _0x31251d = _0x25b820?.["msg"] || ""; + this.log("联通畅游查询积分失败[" + _0x4c45ab + "]: " + _0x31251d); + } + } catch (_0x3a8d0c) { + console.log(_0x3a8d0c); + } + } + async game_signRecord(_0x47d803 = {}) { + try { + const _0xed6a1c = { + fn: "game_signRecord", + method: "get", + url: "https://game.wostore.cn/api/app/user/v2/signRecord" + }; + let { + result: _0x3d9d1c + } = await this.request(_0xed6a1c), + _0x56bc7f = appName.get(_0x3d9d1c, "code", -1); + if (_0x56bc7f == 200) { + for (let _0x48dbac of _0x3d9d1c?.["data"]) { + if (_0x48dbac.now == 0) { + continue; + } + this.log("联通畅游今天" + (_0x48dbac.signStatus == 2 ? "未" : "已") + "签到"); + if (_0x48dbac.signStatus == 2) { + await this.game_signIn(); + } + } + } else { + let _0x4c5073 = _0x3d9d1c?.["msg"] || ""; + this.log("联通畅游查询签到失败[" + _0x56bc7f + "]: " + _0x4c5073); + } + } catch (_0x8f9b0b) { + console.log(_0x8f9b0b); + } + } + async game_signIn(_0x170c89 = {}) { + try { + const _0x3d53ee = { + fn: "game_signIn", + method: "get", + url: "https://game.wostore.cn/api/app/user/v2/signIn" + }; + let { + result: _0x1f4677 + } = await this.request(_0x3d53ee), + _0x478093 = appName.get(_0x1f4677, "code", -1); + if (_0x478093 == 200) { + this.log("联通畅游签到成功"); + } else { + let _0x2b40f2 = _0x1f4677?.["msg"] || ""; + this.log("联通畅游签到失败[" + _0x478093 + "]: " + _0x2b40f2); + } + } catch (_0xfac145) { + console.log(_0xfac145); + } + } + async game_checkSlider(_0x5ca38c = {}) { + let _0x3c3f88 = false; + try { + const _0x536f3f = { + xPos: 234 + }; + const _0x54913c = { + fn: "game_checkSlider", + method: "post", + url: "https://game.wostore.cn/api/app/common/slider/checkSlider", + searchParams: _0x536f3f + }; + let { + result: _0x31be4b + } = await this.request(_0x54913c), + _0x29af87 = appName.get(_0x31be4b, "code", -1); + if (_0x29af87 == 200) { + this.log("联通畅游滑块验证成功"); + } else { + let _0x661bc2 = _0x31be4b?.["msg"] || ""; + this.log("联通畅游滑块验证失败[" + _0x29af87 + "]: " + _0x661bc2); + } + } catch (_0x441ee4) { + console.log(_0x441ee4); + } finally { + return _0x3c3f88; + } + } + async game_lottery(_0x12d231 = {}) { + try { + let _0x597145 = { + fn: "game_lottery", + method: "get", + url: "https://game.wostore.cn/api/app/user/v2/benefit/lottery", + searchParams: { + id: appName.get(_0x12d231, "id", 1) + } + }, + { + result: _0x375b1d + } = await this.request(_0x597145), + _0x44ca98 = appName.get(_0x375b1d, "code", -1); + if (_0x44ca98 == 200) { + const _0x46c4cd = { + notify: true + }; + this.log("联通畅游抽奖: " + _0x375b1d?.["data"]?.["productName"], _0x46c4cd); + } else { + let _0x172e69 = _0x375b1d?.["msg"] || ""; + this.log("联通畅游抽奖失败[" + _0x44ca98 + "]: " + _0x172e69); + } + } catch (_0x5cc5c9) { + console.log(_0x5cc5c9); + } + } + async game_taskList(_0x38dc2c = {}) { + try { + const _0x6b3e09 = { + fn: "game_taskList", + method: "get", + url: "https://game.wostore.cn/api/app/user/v2/task/list" + }; + let { + result: _0x24a55d + } = await this.request(_0x6b3e09), + _0x641976 = appName.get(_0x24a55d, "code", -1); + if (_0x641976 == 200) { + for (let _0x2b6e2e of _0x24a55d?.["data"]) { + switch (_0x2b6e2e.receiveStatus) { + case 0: + break; + case 1: + await this.game_taskReceive(_0x2b6e2e); + break; + case 2: + break; + default: + appName.log("任务[" + _0x2b6e2e.taskName + "]未知状态[" + _0x2b6e2e.receiveStatus + "]"); + break; + } + } + } else { + let _0x3e9a0f = _0x24a55d?.["msg"] || ""; + this.log("联通畅游查询任务失败[" + _0x641976 + "]: " + _0x3e9a0f); + } + } catch (_0x169b29) { + console.log(_0x169b29); + } + } + async game_taskReceive(_0xe2b155, _0x5671ea = {}) { + try { + const _0x591582 = { + productId: _0xe2b155.productId, + taskId: _0xe2b155.id + }; + const _0x1eca66 = { + fn: "game_taskReceive", + method: "get", + url: "https://game.wostore.cn/api/app/user/v2/task/receive", + searchParams: _0x591582 + }; + let { + result: _0x2f8fb3 + } = await this.request(_0x1eca66), + _0x288264 = appName.get(_0x2f8fb3, "code", -1); + if (_0x288264 == 200) { + this.log("领取任务[" + _0xe2b155.taskName + "]奖励成功"); + } else { + let _0x261128 = _0x2f8fb3?.["msg"] || ""; + this.log("领取任务[" + _0xe2b155.taskName + "]奖励失败[" + _0x288264 + "]: " + _0x261128); + } + } catch (_0x33f03b) { + console.log(_0x33f03b); + } + } + async game_playSave(_0x2b6d36 = {}) { + try { + let _0x1b839f = { + fn: "game_playSave", + method: "post", + url: "https://game.wostore.cn/api/app/user/v2/play/save", + json: { + cpGameId: "15000199" + appName.randomString(2, "0123456789") + } + }, + { + result: _0x435b34 + } = await this.request(_0x1b839f), + _0x405dad = appName.get(_0x435b34, "code", -1); + if (!(_0x405dad == 200)) { + let _0x407e03 = _0x435b34?.["msg"] || ""; + this.log("联通畅游玩游戏失败[" + _0x405dad + "]: " + _0x407e03); + } + } catch (_0x10eb8a) { + console.log(_0x10eb8a); + } + } + async flmf_login(_0x3a709c, _0x3e346c = {}) { + try { + const _0x4d2274 = { + fn: "flmf_login", + method: "get", + url: _0x3a709c + }; + let { + headers: _0x44fb4d, + statusCode: _0x2923d9 + } = await this.request(_0x4d2274); + if (_0x44fb4d?.["location"]) { + let _0x366f8a = new URL(_0x44fb4d.location); + this.flmf_sid = _0x366f8a.searchParams.get("sid"); + this.flmf_sid ? (await this.flmf_signInInit(), await this.flmf_taskList(), await this.flmf_scanTask()) : this.log("福利魔方获取sid失败"); + } else { + this.log("福利魔方获取sid失败[" + _0x2923d9 + "]"); + } + } catch (_0x27766a) { + console.log(_0x27766a); + } + } + async flmf_signInInit(_0x5dabbc = {}) { + try { + let _0x2014b6 = { + fn: "flmf_signInInit", + method: "post", + url: "https://weixin.linktech.hk/lv-apiaccess/welfareCenter/signInInit", + form: this.get_flmf_data() + }, + { + result: _0x41327b + } = await this.request(_0x2014b6), + _0x2732b9 = appName.get(_0x41327b, "resultCode", -1); + if (_0x2732b9 == "0000") { + this.log("福利魔方今天" + (_0x41327b?.["data"]?.["isSigned"] ? "已" : "未") + "签到, 已连续签到" + _0x41327b?.["data"]?.["consecutiveDays"] + "天"); + if (!_0x41327b?.["data"]?.["isSigned"]) { + await this.flmf_signIn(); + } + } else { + let _0x1a8187 = _0x41327b?.["resultMsg"] || ""; + this.log("福利魔方查询签到失败[" + _0x2732b9 + "]: " + _0x1a8187); + } + } catch (_0x517caa) { + console.log(_0x517caa); + } + } + async flmf_signIn(_0x51ae1e = {}) { + try { + let _0x3128b3 = { + fn: "flmf_signIn", + method: "post", + url: "https://weixin.linktech.hk/lv-apiaccess/welfareCenter/signIn", + form: this.get_flmf_data() + }, + { + result: _0x4485f1 + } = await this.request(_0x3128b3), + _0x1564ca = appName.get(_0x4485f1, "resultCode", -1); + if (_0x1564ca == "0000") { + this.log("福利魔方签到成功"); + } else { + let _0xfa6532 = _0x4485f1?.["resultMsg"] || ""; + this.log("福利魔方签到失败[" + _0x1564ca + "]: " + _0xfa6532); + } + } catch (_0x22c453) { + console.log(_0x22c453); + } + } + async flmf_taskList(_0x47a943 = {}) { + try { + let _0x3b119a = { + fn: "flmf_taskList", + method: "post", + url: "https://weixin.linktech.hk/lv-apiaccess/welfareCenter/taskList", + form: this.get_flmf_data() + }, + { + result: _0x1be38d + } = await this.request(_0x3b119a), + _0x56b419 = appName.get(_0x1be38d, "resultCode", -1); + if (_0x56b419 == "0000") { + for (let _0x21c855 of _0x1be38d?.["data"]?.["taskInfoList"]) { + for (let _0x3ddbd8 of _0x21c855.taskInfoList.filter(_0x539de9 => !_0x539de9.done)) { + for (let _0xcf0709 = _0x3ddbd8.hascount; _0xcf0709 < _0x3ddbd8.count; _0xcf0709++) { + await this.flmf_gogLance(_0x3ddbd8.id); + } + } + } + } else { + let _0x3affb1 = _0x1be38d?.["resultMsg"] || ""; + this.log("福利魔方查询任务失败[" + _0x56b419 + "]: " + _0x3affb1); + } + } catch (_0x172024) { + console.log(_0x172024); + } + } + async flmf_scanTask() { + for (let _0xa11d9d of someArray) { + await this.flmf_gogLance(_0xa11d9d); + } + } + async flmf_gogLance(_0x3534eb, _0x4a0142 = {}) { + try { + let _0x1d2f2 = { + fn: "flmf_gogLance", + method: "post", + url: "https://weixin.linktech.hk/lv-apiaccess/welfareCenter/gogLance", + form: { + taskId: _0x3534eb, + ...this.get_flmf_data() + } + }, + { + result: _0x422380 + } = await this.request(_0x1d2f2); + await appName.wait_gap_interval(this.t_flmf_task, delayMs); + let _0x213f2c = appName.get(_0x422380, "resultCode", -1); + this.t_flmf_task = Date.now(); + if (_0x213f2c == "0000") { + this.log("完成任务[" + _0x3534eb + "]成功"); + } else { + let _0x2aacea = _0x422380?.["resultMsg"] || ""; + this.log("完成任务[" + _0x3534eb + "]失败[" + _0x213f2c + "]: " + _0x2aacea); + } + } catch (_0x229114) { + console.log(_0x229114); + } + } + async woread_api(_0x34880c) { + let _0x1db761 = await this.request(appName.copy(_0x34880c)), + _0x3e48ad = _0x1db761?.["result"]?.["message"] || ""; + _0x3e48ad?.["includes"]("登录已过期") && (await this.woread_auth()) && (await this.woread_login()) && (_0x1db761 = await this.request(appName.copy(_0x34880c))); + return _0x1db761; + } + switch_woread_token(accessToken) { + const headers = { + accesstoken: accessToken + }; + const options = { + headers: headers + }; + this.got = this.got.extend(options); + } + async woread_auth(options = {}) { + let authSuccess = false; + const filePath = path.join(__dirname, 'chinaUnicom_cache.json'); + + try { + // 获取当前时间戳 + let timestamp = appName.time("yyyyMMddhhmmss"); + const timestampData = { timestamp: timestamp }; + let encodedSign = this.encode_woread(timestampData); + let currentTime = Date.now().toString(); + let md5Hash = cryptoJS.MD5(productId + secretKey + currentTime).toString(); + const signData = { sign: encodedSign }; + const requestOptions = { + fn: "woread_auth", + method: "post", + url: `https://10010.woread.com.cn/ng_woread_service/rest/app/auth/${productId}/${currentTime}/${md5Hash}`, + json: signData + }; + + // 发送请求并处理响应 + let { result: responseData } = await this.request(requestOptions); + let responseCode = appName.get(responseData, "code", -1); + + if (responseCode == "0000") { + authSuccess = true; + this.woread_accesstoken = responseData?.["data"]?.["accesstoken"]; + this.switch_woread_token(this.woread_accesstoken); + + // 将服务器返回的数据缓存到文件 + let fileData = {}; + if (fs.existsSync(filePath)) { + const existingData = fs.readFileSync(filePath, 'utf8'); + fileData = existingData ? JSON.parse(existingData) : {}; + } + if (!fileData["woread_auth"]) { + fileData["woread_auth"] = {}; + } + fileData["woread_auth"][this.mobile] = responseData?.["data"]; + fs.writeFileSync(filePath, JSON.stringify(fileData, null, 2), 'utf8'); + } else { + let errorMessage = responseData?.["message"] || ""; + this.log("阅读专区获取accesstoken失败[" + responseCode + "]: " + errorMessage); + } + } catch (error) { + console.log(error); + this.log("发生异常:" + error.message); + } finally { + return authSuccess; + } + } + async woread_login(options = {}) { + let loginSuccess = false; + const filePath = path.join(__dirname, 'chinaUnicom_cache.json'); + + try { + // 如果无缓存数据,请求服务器 + let loginData = { + // phone: this.mobile, + phone: this.encode_woread1(this.mobile), + timestamp: appName.time("yyyyMMddhhmmss") + }; + let encodedSign = this.encode_woread(loginData); + //console.log(encodedSign) + const signData = { + sign: encodedSign + }; + const requestOptions = { + fn: "woread_login", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/account/login", + json: signData + }; + + let { result: responseData } = await this.request(requestOptions); + let responseCode = appName.get(responseData, "code", -1); + + if (responseCode === "0000") { + loginSuccess = true; + let { userid, userindex, token, verifycode } = responseData?.["data"]; + this.woread_token = token; + this.woread_verifycode = verifycode; + const userData = { + woread_userid: userid, + woread_userindex: userindex, + woread_token: token, + woread_verifycode: verifycode + }; + Object.assign(this, userData); + + // 将服务器返回的数据缓存到文件 + let fileData = {}; + if (fs.existsSync(filePath)) { + const existingData = fs.readFileSync(filePath, 'utf8'); + fileData = existingData ? JSON.parse(existingData) : {}; + } + if (!fileData["woread_login"]) { + fileData["woread_login"] = {}; + } + fileData["woread_login"][this.mobile] = responseData?.["data"]; + fs.writeFileSync(filePath, JSON.stringify(fileData, null, 2), 'utf8'); + } else { + let errorMessage = responseData?.["message"] || ""; + this.log("阅读专区获取token失败[" + responseCode + "]: " + errorMessage); + } + } catch (error) { + console.log(error); + this.log("发生异常:" + error.message); + } finally { + return loginSuccess; + } + } + + async woread_m_auth(options = {}) { + let authSuccess = false; + try { + let currentTime = Date.now().toString(), + md5Hash = cryptoJS.MD5(secondProductId + secondSecretKey + currentTime).toString(); + const requestOptions = { + fn: "woread_auth", + method: "get", + url: "https:///m.woread.com.cn/api/union/app/auth/" + secondProductId + "/" + currentTime + "/" + md5Hash + }; + let { + result: responseData + } = await this.request(requestOptions), + responseCode = appName.get(responseData, "code", -1); + if (responseCode == "0000") { + authSuccess = true; + this.woread_m_accesstoken = responseData?.["data"]?.["accesstoken"]; + this.switch_woread_token(this.woread_m_accesstoken); + } else { + let errorMessage = responseData?.["message"] || ""; + this.log("阅读专区获取accesstoken失败[" + responseCode + "]: " + errorMessage); + } + } catch (error) { + console.log(error); + } finally { + return authSuccess; + } + } + async woread_m_login(options = {}) { + let loginSuccess = false; + try { + let userData = { + userid: this.woread_userid, + token: this.woread_token, + timestamp: Date.now() + }, + encodedUserData = { + userData: Buffer.from(JSON.stringify(userData), "utf-8").toString("base64"), + ...this.get_woread_m_param() + }; + delete encodedUserData.token; + let encodedSign = this.encode_woread(encodedUserData, someConstant); + const signData = { + sign: encodedSign + }; + const requestOptions = { + fn: "woread_login", + method: "post", + url: "https://m.woread.com.cn/api/union/user/thirdPartyFreeLogin", + json: signData + }; + let { + result: responseData + } = await this.request(requestOptions), + responseCode = appName.get(responseData, "code", -1); + if (responseCode == "0000") { + loginSuccess = true; + } else { + let errorMessage = responseData?.["message"] || ""; + this.log("阅读专区获取token失败[" + responseCode + "]: " + errorMessage); + } + } catch (error) { + console.log(error); + } finally { + return loginSuccess; + } + } + async woread_getSeeVideoAddNumber(_0x12ab92, _0x486335 = {}) { + try { + let _0x3140d3 = { + activityIndex: _0x12ab92, + ...this.get_woread_param() + }, + _0x8e1656 = this.encode_woread(_0x3140d3); + const _0xce314c = { + sign: _0x8e1656 + }; + const _0x3b19e5 = { + fn: "woread_getSeeVideoAddNumber", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/activity/getSeeVideoAddNumber", + json: _0xce314c + }; + let { + result: _0x5028e4 + } = await this.woread_api(_0x3b19e5), + _0x3c20dc = appName.get(_0x5028e4, "code", -1); + if (_0x3c20dc == "0000") { + _0x5028e4?.["data"] == -1 && (await this.woread_addUserSeeVideo(_0x12ab92)); + } else { + let _0x366c05 = _0x5028e4?.["message"] || ""; + this.log("阅读活动[" + _0x12ab92 + "]查询抽奖视频失败[" + _0x3c20dc + "]: " + _0x366c05); + } + } catch (_0x3cd6e0) { + console.log(_0x3cd6e0); + } + } + async woread_addUserSeeVideo(_0x27e075, _0x5be693 = {}) { + try { + let _0x1b56c7 = _0x5be693.num || 5, + _0x211340 = { + activityIndex: _0x27e075, + num: _0x1b56c7, + ...this.get_woread_param() + }, + _0x530fc3 = this.encode_woread(_0x211340); + const _0x29270d = { + sign: _0x530fc3 + }; + const _0x39d9cb = { + fn: "woread_addUserSeeVideo", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/activity/addUserSeeVideo", + json: _0x29270d + }; + let { + result: _0x4521b8 + } = await this.woread_api(_0x39d9cb), + _0x2480f3 = appName.get(_0x4521b8, "code", -1); + if (_0x2480f3 == "0000") { + this.log("阅读活动[" + _0x27e075 + "]看视频增加抽奖次数成功"); + } else { + let _0x4a4ae0 = _0x4521b8?.["message"] || ""; + this.log("阅读活动[" + _0x27e075 + "]看视频增加抽奖次数失败[" + _0x2480f3 + "]: " + _0x4a4ae0); + } + } catch (_0x4b1856) { + console.log(_0x4b1856); + } + } + async woread_getActivityNumber(_0x5ba90a, _0x3cdf38 = {}) { + try { + let _0xb90653 = { + activeIndex: _0x5ba90a, + ...this.get_woread_param() + }, + _0x437404 = this.encode_woread(_0xb90653); + const _0x4b9c36 = { + sign: _0x437404 + }; + const _0x3446a2 = { + fn: "woread_getActivityNumber", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/activity/getActivityNumber", + json: _0x4b9c36 + }; + let { + result: _0x4f72f1 + } = await this.woread_api(_0x3446a2), + _0x1a6ca5 = appName.get(_0x4f72f1, "code", -1); + if (_0x1a6ca5 == "0000") { + let _0x8a22f5 = _0x4f72f1?.["data"] || 0; + this.log("阅读活动[" + _0x5ba90a + "]可以抽奖" + _0x8a22f5 + "次"); + while (_0x8a22f5-- > 0) { + await appName.wait(5000); + await this.woread_doDraw(_0x5ba90a); + } + } else { + let _0x3842fa = _0x4f72f1?.["message"] || ""; + this.log("阅读活动[" + _0x5ba90a + "]查询抽奖次数失败[" + _0x1a6ca5 + "]: " + _0x3842fa); + } + } catch (_0x5a0a0a) { + console.log(_0x5a0a0a); + } + } + async woread_addDrawTimes(_0x2ff3ba, _0x15efe7 = {}) { + try { + let _0x311995 = { + activetyindex: _0x2ff3ba, + ...this.get_woread_param() + }, + _0x248190 = this.encode_woread(_0x311995); + const _0x486c6d = { + sign: _0x248190 + }; + const _0x31e48c = { + fn: "woread_addDrawTimes", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/basics/addDrawTimes", + json: _0x486c6d + }; + await appName.wait_gap_interval(this.t_woread_draw, timeoutMs); + let { + result: _0x9db755 + } = await this.woread_api(_0x31e48c); + this.t_woread_draw = Date.now(); + let _0x358f34 = appName.get(_0x9db755, "code", -1); + if (_0x358f34 == "0000") { + this.log("阅读活动[" + _0x2ff3ba + "]打卡增加抽奖次数成功"); + } else { + if (_0x358f34 != "9999") { + let _0x494cdf = _0x9db755?.["message"] || ""; + this.log("阅读活动[" + _0x2ff3ba + "]打卡增加抽奖次数失败[" + _0x358f34 + "]: " + _0x494cdf); + } + } + } catch (_0x3bd142) { + console.log(_0x3bd142); + } + } + async woread_doDraw(_0x397f0b, _0x3c1c53 = {}) { + try { + let _0x2027d0 = { + activeindex: _0x397f0b, + ...this.get_woread_param() + }, + _0x36bfe3 = this.encode_woread(_0x2027d0); + const _0xba593a = { + sign: _0x36bfe3 + }; + const _0x3af86a = { + fn: "woread_doDraw", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/basics/doDraw", + json: _0xba593a + }; + await appName.wait_gap_interval(this.t_woread_draw, timeoutMs); + let { + result: _0x33f591 + } = await this.woread_api(_0x3af86a); + this.t_woread_draw = Date.now(); + let _0x81a5cb = appName.get(_0x33f591, "code", -1); + if (_0x81a5cb == "0000") { + const _0x2e804e = { + notify: true + }; + this.log("阅读活动[" + _0x397f0b + "]抽奖: " + (_0x33f591?.["data"]?.["prizedesc"] || "空气"), _0x2e804e); + } else { + let _0x4d9a5c = _0x33f591?.["message"] || ""; + this.log("阅读活动[" + _0x397f0b + "]抽奖失败[" + _0x81a5cb + "]: " + _0x4d9a5c); + } + } catch (_0x4cbb04) { + console.log(_0x4cbb04); + } + } + async woread_queryTicketAccount(_0x23aff5 = {}) { + try { + let _0x4a62c4 = this.get_woread_param(), + _0x1a7869 = this.encode_woread(_0x4a62c4); + const _0x13787c = { + sign: _0x1a7869 + }; + const _0x1cbb0c = { + fn: "woread_queryTicketAccount", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/phone/vouchers/queryTicketAccount", + json: _0x13787c + }; + let { + result: _0x3fd342 + } = await this.woread_api(_0x1cbb0c), + _0x6ce29d = appName.get(_0x3fd342, "code", -1); + if (_0x6ce29d == "0000") { + let _0x2284a4 = (_0x3fd342?.["data"]?.["usableNum"] / 100).toFixed(2); + const _0x45bce9 = { + notify: true + }; + this.log("阅读区话费红包余额: " + _0x2284a4, _0x45bce9); + } else { + let _0xd876d5 = _0x3fd342?.["message"] || ""; + this.log("查询阅读区话费红包余额失败[" + _0x6ce29d + "]: " + _0xd876d5); + } + } catch (_0x46f510) { + console.log(_0x46f510); + } + } + async woread_m_queryTicketAccount(_0x5f56cc = {}) { + try { + let _0x1f1089 = this.get_woread_m_param(), + _0x599be3 = this.encode_woread(_0x1f1089, someConstant); + const _0x5e2907 = { + sign: _0x599be3 + }; + const _0x27cd3f = { + fn: "woread_m_queryTicketAccount", + method: "post", + url: "https://m.woread.com.cn/api/union/phone/vouchers/queryTicketAccount", + json: _0x5e2907 + }; + let { + result: _0x5c632b + } = await this.woread_api(_0x27cd3f), + _0x5ec93b = appName.get(_0x5c632b, "code", -1); + if (_0x5ec93b == "0000") { + let _0x29f71b = (_0x5c632b?.["data"]?.["usableNum"] / 100).toFixed(2); + const _0x45667c = { + notify: true + }; + this.log("阅读区话费红包余额: " + _0x29f71b, _0x45667c); + } else { + let _0x51a7d0 = _0x5c632b?.["message"] || ""; + this.log("查询阅读区话费红包余额失败[" + _0x5ec93b + "]: " + _0x51a7d0); + } + } catch (_0x1fbab2) { + console.log(_0x1fbab2); + } + } + async woread_addReadTime(_0x1f2346 = {}) { + try { + let { + readTime = 2, + cntindex = "409672", + cntIndex = "409672", + cnttype = "1", + cntType = 1, + cardid = "11891", + catid = "118411", + pageIndex = "10683", + chapterseno = 1, + channelid = "", + chapterid = "-1", + readtype = 1, + isend = "0" + } = _0x1f2346, + _0x3f4dd2 = { + readTime: readTime, + cntindex: cntindex, + cntIndex: cntIndex, + cnttype: cnttype, + cntType: cntType, + catid: catid, + cardid: cardid, + pageIndex: pageIndex, + chapterseno: chapterseno, + channelid: channelid, + chapterid: chapterid, + readtype: readtype, + isend: isend, + ...this.get_woread_param() + }, + _0x223104 = this.encode_woread(_0x3f4dd2); + const _0x4e8958 = { + sign: _0x223104 + }; + const _0x5e4f85 = { + fn: "woread_addReadTime", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/history/addReadTime", + json: _0x4e8958 + }; + let { + result: _0x1f9eec + } = await this.request(_0x5e4f85), + _0x4851e5 = appName.get(_0x1f9eec, "code", -1); + if (_0x4851e5 == "0000") { + this.log("刷新读小说时间: " + _0x1f9eec?.["data"]?.["readtime"] / 60 / 1000 + "分钟"); + _0x1f9eec?.["data"]?.["readtime"] >= 3600000 && (this.read_stop = true); + } else { + let _0x797aad = _0x1f9eec?.["message"] || ""; + this.log("刷新读小说时间失败[" + _0x4851e5 + "]: " + _0x797aad); + } + } catch (_0x5e3330) { + console.log(_0x5e3330); + } + } + async woread_m_addReadTime(_0x513b98 = {}) { + try { + let { + readTime = 2, + cntindex = "409672", + cntIndex = "409672", + cnttype = "1", + cntType = 1, + cardid = "11891", + catid = "118411", + pageIndex = "10683", + chapterseno = 1, + channelid = "", + chapterid = "-1", + readtype = 1, + isend = "0" + } = _0x513b98, + _0x335ecd = { + readTime: readTime, + cntindex: cntindex, + cntIndex: cntIndex, + cnttype: cnttype, + cntType: cntType, + catid: catid, + cardid: cardid, + pageIndex: pageIndex, + chapterseno: chapterseno, + channelid: channelid, + chapterid: chapterid, + readtype: readtype, + isend: isend, + ...this.get_woread_m_param() + }, + _0x1eb6f5 = this.encode_woread(_0x335ecd, someConstant); + const _0x3f838f = { + sign: _0x1eb6f5 + }; + const _0x1eab5b = { + fn: "woread_m_addReadTime", + method: "post", + url: "https:///m.woread.com.cn/api/union/history/addReadTime", + json: _0x3f838f + }; + let { + result: _0xc66009 + } = await this.request(_0x1eab5b), + _0x22bdf8 = appName.get(_0xc66009, "code", -1); + if (_0x22bdf8 == "0000") { + this.log("刷新读小说时间: " + _0xc66009?.["data"]?.["readtime"] / 60 / 1000 + "分钟"); + _0xc66009?.["data"]?.["readtime"] >= 3600000 && (this.read_stop = true); + } else { + let _0x179f91 = _0xc66009?.["message"] || ""; + this.log("刷新读小说时间失败[" + _0x22bdf8 + "]: " + _0x179f91); + } + } catch (_0x9c51e0) { + console.log(_0x9c51e0); + } + } + async rabblit_queryActivityData(_0x166566 = {}) { + try { + let _0x2faf53 = { + activeIndex: 26, + ...this.get_woread_param() + }, + _0x2725ec = this.encode_woread(_0x2faf53); + const _0x35f6cf = { + sign: _0x2725ec + }; + const _0x296324 = { + fn: "rabblit_queryActivityData", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/rabbitActivity/queryActivityData", + json: _0x35f6cf + }; + let { + result: _0x22129d + } = await this.woread_api(_0x296324), + _0x2490e0 = appName.get(_0x22129d, "code", -1); + if (_0x2490e0 == "0000") { + let { + totalcharpternums: _0x22d281, + totalreadnums: _0x3ba6a6, + status: _0x2b7eba, + activitystatus: _0x34b882 + } = _0x22129d?.["data"]; + if (_0x34b882 == 1) { + this.need_read_rabbit = false; + const _0x4e6bbb = { + notify: true + }; + this.log("龟兔赛跑今天已完成", _0x4e6bbb); + return; + } + this.need_read_rabbit = true; + this.log("龟兔赛跑进度: " + _0x3ba6a6 + "/" + _0x22d281 + "分钟"); + if (_0x2b7eba == 1) { + await this.rabblit_wakeRabbit(); + } + if (_0x3ba6a6 >= _0x22d281) { + await this.rabblit_finishActivity(); + } + } else { + let _0x3bbb94 = _0x22129d?.["message"] || ""; + _0x3bbb94?.["includes"]("未参加") && !_0x166566.join_retry && (await this.rabblit_joinRuning()) ? (_0x166566.join_retry = true, await this.rabblit_queryActivityData(_0x166566)) : this.log("龟兔赛跑查询状态失败[" + _0x2490e0 + "]: " + _0x3bbb94); + } + } catch (_0x5a5d83) { + console.log(_0x5a5d83); + } + } + async rabblit_joinRuning(_0x22f9b4 = {}) { + let _0x2a36d7 = false; + try { + let _0x5cd0b6 = { + activeIndex: 26, + ...this.get_woread_param() + }, + _0x25fe34 = this.encode_woread(_0x5cd0b6); + const _0x6d40e3 = { + sign: _0x25fe34 + }; + const _0x18b2b1 = { + fn: "rabblit_joinRuning", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/rabbitActivity/joinRuning", + json: _0x6d40e3 + }; + let { + result: _0x19cc43 + } = await this.woread_api(_0x18b2b1), + _0x1dfb20 = appName.get(_0x19cc43, "code", -1); + if (_0x1dfb20 == "0000") { + _0x2a36d7 = true; + this.log("龟兔赛跑报名成功"); + } else { + let _0x5d645 = _0x19cc43?.["message"] || ""; + this.log("龟兔赛跑报名失败[" + _0x1dfb20 + "]: " + _0x5d645); + } + } catch (_0x2c4557) { + console.log(_0x2c4557); + } finally { + return _0x2a36d7; + } + } + async rabblit_wakeRabbit(_0x36c542 = {}) { + try { + let _0x1237f5 = { + activeIndex: 26, + sactivitIndex: 7246, + ...this.get_woread_param() + }, + _0xaf381f = this.encode_woread(_0x1237f5); + const _0x162f7e = { + sign: _0xaf381f + }; + const _0x33fcf5 = { + fn: "rabblit_wakeRabbit", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/rabbitActivity/wakeRabbit", + json: _0x162f7e + }; + await appName.wait_gap_interval(this.t_woread_draw, timeoutMs); + let { + result: _0x5f4ee4 + } = await this.woread_api(_0x33fcf5); + this.t_woread_draw = Date.now(); + let _0x531c58 = appName.get(_0x5f4ee4, "code", -1); + if (_0x531c58 == "0000") { + const _0x19370a = { + notify: true + }; + this.log("龟兔赛跑唤醒兔子抽奖: " + (_0x5f4ee4?.["data"]?.["prizedesc"] || "空气"), _0x19370a); + } else { + let _0x59d84e = _0x5f4ee4?.["message"] || ""; + this.log("龟兔赛跑唤醒兔子失败[" + _0x531c58 + "]: " + _0x59d84e); + } + } catch (_0x4b75db) { + console.log(_0x4b75db); + } + } + async rabblit_finishActivity(_0x451bd0 = {}) { + try { + let _0x9cdff4 = { + activeIndex: 26, + ...this.get_woread_param() + }, + _0x517547 = this.encode_woread(_0x9cdff4); + const _0x5c2de6 = { + sign: _0x517547 + }; + const _0x4a355a = { + fn: "rabblit_finishActivity", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/rabbitActivity/finishActivity", + json: _0x5c2de6 + }; + await appName.wait_gap_interval(this.t_woread_draw, timeoutMs); + let { + result: _0x254943 + } = await this.woread_api(_0x4a355a); + this.t_woread_draw = Date.now(); + let _0x6bb8e = appName.get(_0x254943, "code", -1); + if (_0x6bb8e == "0000") { + this.need_read_rabbit = false; + const _0x2f0d17 = { + notify: true + }; + this.log("龟兔赛跑终点抽奖: " + (_0x254943?.["data"]?.["prizedesc"] || "空气"), _0x2f0d17); + } else { + let _0x3e4556 = _0x254943?.["message"] || ""; + this.log("龟兔赛跑终点抽奖失败[" + _0x6bb8e + "]: " + _0x3e4556); + } + } catch (_0x4f0c17) { + console.log(_0x4f0c17); + } + } + async moonbox_queryActiveInfo(options = {}) { + try { + let woreadParams = this.get_woread_param(), + encodedSign = this.encode_woread(woreadParams); + const signData = { + sign: encodedSign + }; + const requestOptions = { + fn: "moonbox_queryActiveInfo", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/queryActiveInfo", + json: signData + }; + let { + result: responseData + } = await this.woread_api(requestOptions), + responseCode = appName.get(responseData, "code", -1); + if (responseCode == "0000") { + let { + activeId: activeId, + activeName: activeName + } = responseData?.["data"]; + moonbox_activeId = activeId; + } else { + let errorMessage = responseData?.["message"] || ""; + this.log("阅光宝盒查询活动失败[" + responseCode + "]: " + errorMessage); + } + } catch (error) { + console.log(error); + } + } + async moonbox_queryCurTaskStatus(options = {}) { + try { + let requestParams = { + activeIndex: moonbox_activeId, + //console.log("activeIndex = "+activeIndex), + ...this.get_woread_param() + }, + + encodedSign = this.encode_woread(requestParams); + // console.log(requestParams) + //console.log("requestParams = "+requestParams) + // console.log("encodedSign = "+encodedSign) + const signData = { + sign: encodedSign + }; + const requestOptions = { + fn: "moonbox_queryCurTaskStatus", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/queryCurTaskStatus", + json: signData + }; + let { + result: responseData + } = await this.woread_api(requestOptions), + responseCode = appName.get(responseData, "code", -1); + if (responseCode == "0000") { + for (let task of responseData?.["data"] || []) { + let { + taskName: taskName, + currentValue: currentValue, + taskValue: taskValue + } = task?.["taskDetail"]; + switch (task.taskStatus) { + case 0: + { + this.moonbox_task_record[taskName] = true; + this.log("阅光宝盒[" + taskName + "]进度: " + parseInt(currentValue) + "/" + taskValue + "分钟"); + break; + } + case 2: + { + await this.moonbox_completeActiveTask(task); + } + case 1: + { + this.moonbox_task_record[taskName] = false; + if (!this.moonbox_notified.includes(taskName)) { + this.moonbox_notified.push(taskName); + const notification = { + notify: true + }; + this.log("阅光宝盒任务[" + taskName + "]已完成", notification); + } + break; + } + } + } + } else { + let errorMessage = responseData?.["message"] || ""; + if (errorMessage?.["includes"]("未领取") && !options.activate_retry) { + await this.moonbox_queryActiveTaskList(); + options.activate_retry = true; + await this.moonbox_queryCurTaskStatus(options); + } else { + this.log("阅光宝盒查询任务状态失败[" + responseCode + "]: " + errorMessage); + } + } + } catch (error) { + console.log(error); + } + } + async moonbox_completeActiveTask(_0x4af677, _0x3aeda0 = {}) { + try { + let _0x4c63e8 = { + taskId: _0x4af677.id, + ...this.get_woread_param() + }, + _0xa3034 = this.encode_woread(_0x4c63e8); + const _0x378954 = { + sign: _0xa3034 + }; + const _0x4513b4 = { + fn: "moonbox_completeActiveTask", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/completeActiveTask", + json: _0x378954 + }; + let { + result: _0x40efdd + } = await this.woread_api(_0x4513b4), + _0x37bf24 = appName.get(_0x40efdd, "code", -1); + if (_0x37bf24 == "0000") { + const _0x432c2b = { + notify: true + }; + this.log("阅光宝盒[" + _0x40efdd?.["data"]?.["taskDetail"]?.["taskName"] + "]领取奖励成功: " + _0x40efdd?.["data"]?.["exchangeResult"]?.["materialGroupInfo"]?.["groupName"], _0x432c2b); + } else { + let _0x355fe8 = _0x40efdd?.["message"] || ""; + this.log("阅光宝盒[" + _0x4af677?.["taskDetail"]?.["taskName"] + "]领取奖励失败[" + _0x37bf24 + "]: " + _0x355fe8); + } + } catch (_0x5d1580) { + console.log(_0x5d1580); + } + } + async moonbox_queryActiveTaskList(_0x5b4f5d = {}) { + try { + let _0x29dc0b = { + activeIndex: moonbox_activeId, + ...this.get_woread_param() + }, + _0x416ead = this.encode_woread(_0x29dc0b); + const _0x3d0c02 = { + sign: _0x416ead + }; + const _0x5e2bbb = { + fn: "moonbox_queryActiveTaskList", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/queryActiveTaskList", + json: _0x3d0c02 + }; + let { + result: _0x391626 + } = await this.woread_api(_0x5e2bbb), + _0x42ede6 = appName.get(_0x391626, "code", -1); + if (_0x42ede6 == "0000") { + let _0x1cff30 = _0x391626?.["data"]?.["sort"](function (_0x1792cf, _0xe10a9b) { + let _0x3ecb2c = parseInt(_0xe10a9b.taskDetail.taskValue), + _0x243b54 = parseInt(_0x1792cf.taskDetail.taskValue); + return _0x3ecb2c - _0x243b54; + }), + _0xe49ce3 = _0x1cff30.filter(_0x5ed25d => _0x5ed25d.maxNum - _0x5ed25d.receiveNum > 0 && _0x5ed25d.taskDetail.materialGroup.groupName.includes("红包")); + _0xe49ce3?.["length"] ? await this.moonbox_receiveActiveTask(_0xe49ce3) : this.log("没有可领取的阅光宝盒红包任务了"); + } else { + let _0x37141c = _0x391626?.["message"] || ""; + this.log("阅光宝盒查询可领取任务失败[" + _0x42ede6 + "]: " + _0x37141c); + } + } catch (_0x3346d3) { + console.log(_0x3346d3); + } + } + async moonbox_receiveActiveTask(_0x17d7d6, _0x642063 = {}) { + try { + if (!_0x17d7d6.length) { + return; + } + let _0x471744 = _0x17d7d6.shift(), + _0x3180c7 = _0x471744?.["taskDetail"]?.["taskName"] || "", + _0x35c4b9 = { + activeId: moonbox_activeId, + taskId: _0x471744.secondTaskId, + ...this.get_woread_param() + }, + _0x9d13eb = this.encode_woread(_0x35c4b9); + console.log("encodedSign = "+_0x9d13eb) + const _0x1abd0a = { + sign: _0x9d13eb + }; + const _0x3e1696 = { + fn: "moonbox_queryActiveTaskList", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/receiveActiveTask", + json: _0x1abd0a + }; + let { + result: _0x4cc772 + } = await this.woread_api(_0x3e1696), + _0x45290e = appName.get(_0x4cc772, "code", -1); + if (_0x45290e == "0000") { + this.moonbox_task_record[_0x3180c7] = true; + this.log("领取阅光宝盒任务[" + _0x3180c7 + "]成功"); + } else { + let _0x4cc9d9 = _0x4cc772?.["message"] || ""; + this.log("领取阅光宝盒任务[" + _0x3180c7 + "]失败[" + _0x45290e + "]: " + _0x4cc9d9); + (_0x4cc9d9?.["includes"]("今天无法完成") || _0x4cc9d9?.["includes"]("领光了")) && _0x17d7d6.length > 0 && (await appName.wait(500), await this.moonbox_receiveActiveTask(_0x17d7d6, _0x642063)); + } + } catch (_0x2fbd0d) { + console.log(_0x2fbd0d); + } + } + async moonbox_queryReadStatus(_0x27c1b2 = {}) { + try { + let _0x4dd0d9 = { + activeIndex: moonbox_activeId, + ...this.get_woread_param() + }, + _0x3f59e7 = this.encode_woread(_0x4dd0d9); + const _0x2456fd = { + sign: _0x3f59e7 + }; + const _0x4596d4 = { + fn: "moonbox_queryReadStatus", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/queryReadStatus", + json: _0x2456fd + }; + let { + result: _0x3fc97e + } = await this.woread_api(_0x4596d4), + _0x479ae3 = appName.get(_0x3fc97e, "code", -1); + if (_0x479ae3 == "0000") { + switch (_0x3fc97e?.["data"]) { + case "2": + { + this.log("阅光宝盒去阅读两分钟抽奖"); + this.switch_woread_token(this.woread_m_accesstoken); + const _0x4dd67c = { + readTime: 2 + }; + await this.woread_m_addReadTime(_0x4dd67c); + this.switch_woread_token(this.woread_accesstoken); + await this.moonbox_drawReadActivePrize(); + break; + } + case "3": + { + this.log("阅光宝盒今天已抽奖"); + break; + } + case "4": + { + this.log("阅光宝盒今天可以抽奖"); + await this.moonbox_drawReadActivePrize(); + break; + } + default: + { + this.log("阅光宝盒抽奖状态[" + _0x3fc97e?.["data"] + "]"); + break; + } + } + } else { + let _0x9b31af = _0x3fc97e?.["message"] || ""; + this.log("查询阅光宝盒抽奖次数失败[" + _0x479ae3 + "]: " + _0x9b31af); + } + } catch (_0x71eb7f) { + console.log(_0x71eb7f); + } + } + async moonbox_drawReadActivePrize(_0x56938e = {}) { + try { + let _0x3eabf6 = { + activeIndex: moonbox_activeId, + ...this.get_woread_param() + }, + _0x3ad9f4 = this.encode_woread(_0x3eabf6); + const _0xe79885 = { + sign: _0x3ad9f4 + }; + const _0x2ff4df = { + fn: "moonbox_drawReadActivePrize", + method: "post", + url: "https://10010.woread.com.cn/ng_woread_service/rest/activity423/drawReadActivePrize", + json: _0xe79885 + }; + let { + result: _0x1633e7 + } = await this.woread_api(_0x2ff4df), + _0x27c470 = appName.get(_0x1633e7, "code", -1); + if (_0x27c470 == "0000") { + const _0x4d8266 = { + notify: true + }; + this.log("阅光宝盒抽奖: " + (_0x1633e7?.["data"]?.["prizedesc"] || JSON.stringify(_0x1633e7)), _0x4d8266); + } else { + let _0x55fb06 = _0x1633e7?.["message"] || ""; + this.log("阅光宝盒抽奖失败[" + _0x27c470 + "]: " + _0x55fb06); + } + } catch (_0xf0a009) { + console.log(_0xf0a009); + } + } + async moonbox_m_queryActiveInfo(_0x2f8e7f = {}) { + try { + let _0x14f205 = this.get_woread_m_param(), + _0x121f46 = this.encode_woread(_0x14f205, someConstant); + const _0x45f3ae = { + sign: _0x121f46 + }; + const _0x59055e = { + fn: "moonbox_m_queryActiveInfo", + method: "post", + url: "https://m.woread.com.cn/api/union/activity423/queryActiveInfo", + json: _0x45f3ae + }; + let { + result: _0x425b85 + } = await this.woread_api(_0x59055e), + _0x40ba28 = appName.get(_0x425b85, "code", -1); + if (_0x40ba28 == "0000") { + let { + activeId: _0x3f90b8, + activeName: _0x2a7af0 + } = _0x425b85?.["data"]; + moonbox_activeId = _0x3f90b8; + } else { + let _0x2087f5 = _0x425b85?.["message"] || ""; + this.log("阅光宝盒查询活动失败[" + _0x40ba28 + "]: " + _0x2087f5); + } + } catch (_0xfd1d67) { + console.log(_0xfd1d67); + } + } + async moonbox_m_queryCurTaskStatus(_0xcef68f = {}) { + try { + let _0x5e3f1e = { + activeIndex: moonbox_activeId, + ...this.get_woread_m_param() + }, + _0x7bc91f = this.encode_woread(_0x5e3f1e, someConstant); + const _0x509ba5 = { + sign: _0x7bc91f + }; + const _0x439dbd = { + fn: "moonbox_m_queryCurTaskStatus", + method: "post", + url: "https://m.woread.com.cn/api/union/activity423/queryCurTaskStatus", + json: _0x509ba5 + }; + let { + result: _0x51e7c5 + } = await this.woread_api(_0x439dbd), + _0x3e8bcf = appName.get(_0x51e7c5, "code", -1); + if (_0x3e8bcf == "0000") { + for (let _0xe83310 of _0x51e7c5?.["data"] || []) { + let { + taskName: _0x4d3802, + currentValue: _0x58b1af, + taskValue: _0x54fad8 + } = _0xe83310?.["taskDetail"]; + switch (_0xe83310.taskStatus) { + case 0: + { + this.moonbox_task_record[_0x4d3802] = true; + this.log("阅光宝盒[" + _0x4d3802 + "]进度: " + parseInt(_0x58b1af) + "/" + _0x54fad8 + "分钟"); + break; + } + case 2: + { + await this.moonbox_m_completeActiveTask(_0xe83310); + } + case 1: + { + this.moonbox_task_record[_0x4d3802] = false; + if (!this.moonbox_notified.includes(_0x4d3802)) { + this.moonbox_notified.push(_0x4d3802); + const _0x14eeaa = { + notify: true + }; + this.log("阅光宝盒任务[" + _0x4d3802 + "]已完成", _0x14eeaa); + } + break; + } + } + } + } else { + let _0x4b5302 = _0x51e7c5?.["message"] || ""; + _0x4b5302?.["includes"]("未领取") && !_0xcef68f.activate_retry && (await this.moonbox_queryActiveTaskList()) ? (_0xcef68f.activate_retry = true, await this.moonbox_m_queryCurTaskStatus(_0xcef68f)) : this.log("阅光宝盒查询任务状态失败[" + _0x3e8bcf + "]: " + _0x4b5302); + } + } catch (_0x2b3c91) { + console.log(_0x2b3c91); + } + } + async moonbox_m_completeActiveTask(_0x3a9ed6, _0x14d7fc = {}) { + try { + let _0x4feba7 = { + taskId: _0x3a9ed6.id, + ...this.get_woread_m_param() + }, + _0x3be902 = this.encode_woread(_0x4feba7, someConstant); + const _0x304a2d = { + sign: _0x3be902 + }; + const _0x3f6790 = { + fn: "moonbox_m_completeActiveTask", + method: "post", + url: "https://m.woread.com.cn/api/union/activity423/completeActiveTask", + json: _0x304a2d + }; + let { + result: _0x27b401 + } = await this.woread_api(_0x3f6790), + _0x1b57e3 = appName.get(_0x27b401, "code", -1); + if (_0x1b57e3 == "0000") { + const _0x1dd73a = { + notify: true + }; + this.log("阅光宝盒[" + _0x27b401?.["data"]?.["taskDetail"]?.["taskName"] + "]领取奖励成功: " + _0x27b401?.["data"]?.["exchangeResult"]?.["materialGroupInfo"]?.["groupName"], _0x1dd73a); + } else { + let _0x3a226a = _0x27b401?.["message"] || ""; + this.log("阅光宝盒[" + _0x3a9ed6?.["taskDetail"]?.["taskName"] + "]领取奖励失败[" + _0x1b57e3 + "]: " + _0x3a226a); + } + } catch (_0x5f2f11) { + console.log(_0x5f2f11); + } + } + async moonbox_m_queryActiveTaskList(_0x165565 = {}) { + try { + let _0x3779e6 = { + activeIndex: moonbox_activeId, + ...this.get_woread_m_param() + }, + _0x5ec19c = this.encode_woread(_0x3779e6, someConstant); + const _0x34cd3e = { + sign: _0x5ec19c + }; + const _0x3025ab = { + fn: "moonbox_m_queryActiveTaskList", + method: "post", + url: "https://m.woread.com.cn/api/union/activity423/queryActiveTaskList", + json: _0x34cd3e + }; + let { + result: _0x591b1d + } = await this.woread_api(_0x3025ab), + _0x112619 = appName.get(_0x591b1d, "code", -1); + if (_0x112619 == "0000") { + let _0x1a7988 = _0x591b1d?.["data"]?.["sort"](function (_0x533bfe, _0x3cbfac) { + let _0x1619db = parseInt(_0x3cbfac.taskDetail.taskValue), + _0x5d17d1 = parseInt(_0x533bfe.taskDetail.taskValue); + return _0x1619db - _0x5d17d1; + }), + _0x590d73 = _0x1a7988.filter(_0xa65315 => _0xa65315.maxNum - _0xa65315.receiveNum > 0 && _0xa65315.taskDetail.materialGroup.groupName.includes("红包")); + _0x590d73?.["length"] ? await this.moonbox_m_receiveActiveTask(_0x590d73) : this.log("没有可领取的阅光宝盒红包任务了"); + } else { + let _0x51d622 = _0x591b1d?.["message"] || ""; + this.log("阅光宝盒查询可领取任务失败[" + _0x112619 + "]: " + _0x51d622); + } + } catch (_0x39e415) { + console.log(_0x39e415); + } + } + async moonbox_m_receiveActiveTask(_0x222667, _0x20f0f8 = {}) { + try { + if (!_0x222667.length) { + return; + } + let _0x5013e3 = _0x222667.shift(), + _0x5915e5 = _0x5013e3?.["taskDetail"]?.["taskName"] || "", + _0x499f8f = { + activeId: moonbox_activeId, + taskId: _0x5013e3.secondTaskId, + ...this.get_woread_m_param() + }, + _0x5a8196 = this.encode_woread(_0x499f8f, someConstant); + const _0x54248e = { + sign: _0x5a8196 + }; + const _0x41777c = { + fn: "moonbox_m_queryActiveTaskList", + method: "post", + url: "https://m.woread.com.cn/api/union/activity423/receiveActiveTask", + json: _0x54248e + }; + let { + result: _0x5b661a + } = await this.woread_api(_0x41777c), + _0x12d65d = appName.get(_0x5b661a, "code", -1); + if (_0x12d65d == "0000") { + this.moonbox_task_record[_0x5915e5] = true; + this.log("领取阅光宝盒任务[" + _0x5915e5 + "]成功"); + } else { + let _0x1347e6 = _0x5b661a?.["message"] || ""; + this.log("领取阅光宝盒任务[" + _0x5915e5 + "]失败[" + _0x12d65d + "]: " + _0x1347e6); + (_0x1347e6?.["includes"]("今天无法完成") || _0x1347e6?.["includes"]("领光了")) && _0x222667.length > 0 && (await appName.wait(500), await this.moonbox_m_receiveActiveTask(_0x222667, _0x20f0f8)); + } + } catch (_0x26b16f) { + console.log(_0x26b16f); + } + } + async moonbox_m_queryReadStatus(_0x2089b8 = {}) { + try { + let _0x5361cf = { + activeIndex: moonbox_activeId, + ...this.get_woread_m_param() + }, + _0x36b85a = this.encode_woread(_0x5361cf, someConstant); + const _0x1c1d08 = { + sign: _0x36b85a + }; + const _0x30f8ca = { + fn: "moonbox_m_queryReadStatus", + method: "post", + url: "https://m.woread.com.cn/api/union/activity423/queryReadStatus", + json: _0x1c1d08 + }; + let { + result: _0x3ac100 + } = await this.woread_api(_0x30f8ca), + _0x446cf9 = appName.get(_0x3ac100, "code", -1); + if (_0x446cf9 == "0000") { + switch (_0x3ac100?.["message"]) { + case "2": + { + this.log("阅光宝盒去阅读两分钟抽奖"); + const _0x177649 = { + readTime: 2 + }; + await this.woread_m_addReadTime(_0x177649); + await this.moonbox_m_drawReadActivePrize(); + break; + } + case "3": + { + this.log("阅光宝盒今天已抽奖"); + break; + } + case "4": + { + this.log("阅光宝盒今天可以抽奖"); + await this.moonbox_m_drawReadActivePrize(); + break; + } + default: + { + this.log("阅光宝盒抽奖状态[" + _0x3ac100?.["data"] + "]"); + break; + } + } + } else { + let _0x3e13a2 = _0x3ac100?.["message"] || ""; + this.log("查询阅光宝盒抽奖次数失败[" + _0x446cf9 + "]: " + _0x3e13a2); + } + } catch (_0x370229) { + console.log(_0x370229); + } + } + async moonbox_m_drawReadActivePrize(_0x577cf6 = {}) { + try { + let _0x48a5f2 = { + activeIndex: moonbox_activeId, + ...this.get_woread_m_param() + }, + _0x52e161 = this.encode_woread(_0x48a5f2, someConstant); + const _0x815396 = { + sign: _0x52e161 + }; + const _0x14a91e = { + fn: "moonbox_m_drawReadActivePrize", + method: "post", + url: "https://m.woread.com.cn/api/union/activity423/drawReadActivePrize", + json: _0x815396 + }; + let { + result: _0x13c8d4 + } = await this.woread_api(_0x14a91e), + _0x3b1c56 = appName.get(_0x13c8d4, "code", -1); + if (_0x3b1c56 == "0000") { + const _0x75d6a5 = { + notify: true + }; + this.log("阅光宝盒抽奖: " + (_0x13c8d4?.["data"]?.["prizedesc"] || JSON.stringify(_0x13c8d4)), _0x75d6a5); + } else { + let _0x1d2f3b = _0x13c8d4?.["message"] || ""; + this.log("阅光宝盒抽奖失败[" + _0x3b1c56 + "]: " + _0x1d2f3b); + } + } catch (_0x2e18c9) { + console.log(_0x2e18c9); + } + } + async ltyp_login(_0x1ce474, _0x483381 = {}) { + try { + const _0x2b5783 = { + "client-Id": client_Id, + accessToken: "" + }; + const _0x146bcb = { + clientId: client_Id, + ticket: _0x1ce474 + }; + let _0x4efd51 = { + fn: "ltyp_login", + method: "post", + url: "https://panservice.mail.wo.cn/wohome/dispatcher", + headers: _0x2b5783, + json: { + header: this.get_ltyp_sign_header("HandheldHallAutoLogin"), + body: _0x146bcb + } + }, + { + result: _0x30e605 + } = await this.request(_0x4efd51), + _0x4d6db0 = appName.get(_0x30e605, "STATUS", -1); + if (_0x4d6db0 == 200) { + this.ltyp_token = _0x30e605?.["RSP"]?.["DATA"]?.["token"]; + for (let _0x27bfeb of ltyp_lottery) { + await this.ltyp_incentiveTimes(_0x27bfeb); + await this.ltyp_lottery(_0x27bfeb); + } + } else { + let _0x13a7ba = _0x30e605?.["msg"] || ""; + this.log("联通云盘登录失败[" + _0x4d6db0 + "]: " + _0x13a7ba); + } + } catch (_0x505ae6) { + console.log(_0x505ae6); + } + } + async ltyp_incentiveTimes(_0x4b3a88, _0x26cec8 = {}) { + try { + const _0x1029d2 = { + "client-Id": client_Id, + "Access-Token": this.ltyp_token + }; + const _0xc10a38 = { + fn: "ltyp_incentiveTimes", + method: "get", + url: "https://panservice.mail.wo.cn/activity/v1/incentiveTimes", + headers: _0x1029d2, + searchParams: {} + }; + _0xc10a38.searchParams.bizKey = "incentiveTimesPipeline"; + _0xc10a38.searchParams.activityId = _0x4b3a88; + let { + result: _0x117383 + } = await this.request(_0xc10a38), + _0x334590 = appName.get(_0x117383?.["meta"], "code", -1); + if (_0x334590 == 0) { + let { + isIncentiveTask = 0, + taskType = 0, + incentiveTimeTotal = 0, + incentiveTimeDone = 0 + } = _0x117383?.["result"]; + if (isIncentiveTask) { + for (let _0x1e30b1 = incentiveTimeDone; _0x1e30b1 < incentiveTimeTotal; _0x1e30b1++) { + await this.ltyp_incentiveTask(_0x4b3a88); + } + } + } else { + let _0x17b321 = _0x117383?.["meta"]?.["message"] || ""; + this.log("联通云盘查询任务失败[" + _0x334590 + "]: " + _0x17b321); + } + } catch (_0x54a602) { + console.log(_0x54a602); + } + } + async ltyp_incentiveTask(_0x3ffa2a, _0x291739 = {}) { + try { + const _0x4423a2 = { + "client-Id": client_Id, + "Access-Token": this.ltyp_token + }; + const _0x5d1e51 = { + activityId: _0x3ffa2a + }; + const _0x58fc09 = { + bizKey: "incentiveTaskPipeline", + bizObject: _0x5d1e51 + }; + const _0x959e18 = { + fn: "ltyp_incentiveTask", + method: "post", + url: "https://panservice.mail.wo.cn/activity/v1/incentiveTask", + headers: _0x4423a2, + json: _0x58fc09 + }; + let { + result: _0x4e3742 + } = await this.request(_0x959e18), + _0x331ab9 = appName.get(_0x4e3742?.["meta"], "code", -1); + if (_0x331ab9 == 0) { + let { + incentiveStatus = 0, + incentiveMessage = "" + } = _0x4e3742?.["result"]; + incentiveStatus == 1 ? this.log("联通云盘完成任务成功") : this.log("联通云盘完成任务失败[" + incentiveStatus + "]: " + incentiveMessage); + } else { + let _0x172131 = _0x4e3742?.["meta"]?.["message"] || ""; + this.log("联通云盘完成任务错误[" + _0x331ab9 + "]: " + _0x172131); + } + } catch (_0x47d039) { + console.log(_0x47d039); + } + } + async ltyp_lottery_times(_0x5644fa, _0x42508f = {}) { + try { + const _0xe7632d = { + "client-Id": client_Id, + token: this.ltyp_token + }; + const _0x314980 = { + activityId: _0x5644fa + }; + const _0x8e464d = { + fn: "ltyp_lottery_times", + method: "get", + url: "https://panservice.mail.wo.cn/activity/v1/times", + headers: _0xe7632d, + searchParams: _0x314980 + }; + let { + result: _0x2138c5 + } = await this.request(_0x8e464d), + _0x5ede21 = appName.get(_0x2138c5, "RSP_CODE", -1); + if (_0x5ede21 == 0) { + let { + times = 0 + } = _0x2138c5?.["DATA"]; + this.log("联通云盘可以抽奖" + times + "次"); + while (times-- > 0) { + await appName.wait(1000); + await this.ltyp_lottery(_0x5644fa); + } + } else { + let _0x54bc65 = _0x2138c5?.["RSP_DESC"] || ""; + this.log("联通云盘查询抽奖次数失败[" + _0x5ede21 + "]: " + _0x54bc65); + } + } catch (_0xdeafa3) { + console.log(_0xdeafa3); + } + } + async ltyp_lottery(_0x3f86e4, _0x2e2814 = {}) { + try { + const _0x46983d = { + "client-Id": client_Id, + "Access-Token": this.ltyp_token + }; + const _0x373c74 = { + activityId: _0x3f86e4, + type: 3 + }; + const _0x474c24 = { + lottery: _0x373c74 + }; + const _0x4a1127 = { + bizKey: "newLottery", + bizObject: _0x474c24 + }; + const _0x3a5637 = { + fn: "ltyp_lottery", + method: "post", + url: "https://panservice.mail.wo.cn/wohome/v1/lottery", + headers: _0x46983d, + json: _0x4a1127 + }; + let { + result: _0x3f8809 + } = await this.request(_0x3a5637), + _0x29e0e0 = appName.get(_0x3f8809?.["meta"], "code", -1); + if (_0x29e0e0 == 0) { + let { + prizeName = "" + } = _0x3f8809?.["result"]; + if (prizeName) { + const _0x59a8ae = { + notify: true + }; + this.log("联通云盘抽奖: " + prizeName, _0x59a8ae); + await this.ltyp_lottery(_0x3f86e4, _0x2e2814); + } + } else { + let _0x2fe581 = _0x3f8809?.["meta"]?.["message"] || ""; + this.log("联通云盘抽奖错误[" + _0x29e0e0 + "]: " + _0x2fe581); + } + } catch (_0x6e247d) { + console.log(_0x6e247d); + } + } + async act_517_userAccount(_0x5d111b = {}) { + try { + const _0x52d1fe = { + fn: "act_517_userAccount", + method: "get", + url: "https://activity.10010.com/2024517charges/lottery/userAccount" + }; + { + let { + result: _0x12e6e7, + statusCode: _0x24ba47 + } = await this.request(appName.copy(_0x52d1fe)), + _0x3f7586 = appName.get(_0x12e6e7, "code", _0x24ba47); + if (_0x3f7586 == "0000") { + await this.act_517_taskList(); + } else { + let _0xa39ecd = _0x12e6e7?.["message"] || _0x12e6e7?.["msg"] || ""; + this.log("517活动进入主页失败[" + _0x3f7586 + "]: " + _0xa39ecd); + return; + } + } + { + let { + result: _0x2d9fa8, + statusCode: _0x40643e + } = await this.request(appName.copy(_0x52d1fe)), + _0x5caf5e = appName.get(_0x2d9fa8, "code", _0x40643e); + if (_0x5caf5e == "0000") { + let { + chances: _0xb8ead9 + } = _0x2d9fa8?.["data"]; + this.log("517活动可以抽奖" + _0xb8ead9 + "次"); + let _0x4a90fa = false; + while (_0xb8ead9-- > 0) { + if (_0x4a90fa) { + await appName.wait(3000); + } + _0x4a90fa = true; + await this.act_517_lottery(); + } + } else { + let _0x401062 = _0x2d9fa8?.["message"] || _0x2d9fa8?.["msg"] || ""; + this.log("517活动查询抽奖次数失败[" + _0x5caf5e + "]: " + _0x401062); + } + } + { + let { + result: _0x112b84, + statusCode: _0x3d9692 + } = await this.request(appName.copy(_0x52d1fe)), + _0x164969 = appName.get(_0x112b84, "code", _0x3d9692); + if (_0x164969 == "0000") { + let { + amount: _0x1053c0, + targetAmount: _0x248ecd + } = _0x112b84?.["data"]; + const _0x3dbd45 = { + notify: true + }; + this.log("517活动现金进度: " + _0x1053c0 + "/" + _0x248ecd, _0x3dbd45); + } else { + let _0x53c12d = _0x112b84?.["message"] || _0x112b84?.["msg"] || ""; + this.log("517活动查询进度失败[" + _0x164969 + "]: " + _0x53c12d); + } + } + } catch (_0x55b6a1) { + console.log(_0x55b6a1); + } + } + async act_517_bind(_0x3ec228, _0x281097 = {}) { + try { + const _0x54d111 = { + fn: "act_517_bind", + method: "post", + url: "https://activity.10010.com/2024517charges/openWindows/bind", + json: {}, + valid_code: [401] + }; + _0x54d111.json.shareCode = _0x3ec228; + _0x54d111.json.channel = "countersign"; + let { + result: _0x5b7fc4 + } = await this.request(_0x54d111); + } catch (_0x500ea5) { + console.log(_0x500ea5); + } + } + async act_517_lottery(_0x108752 = {}) { + try { + const _0x3b78e1 = { + fn: "act_517_lottery", + method: "get", + url: "https://activity.10010.com/2024517charges/lottery/lottery" + }; + let { + result: _0x4124a9, + statusCode: _0x2962e5 + } = await this.request(_0x3b78e1), + _0x3d0976 = appName.get(_0x4124a9, "code", _0x2962e5); + if (_0x3d0976 == "0000") { + _0x4124a9?.["data"]?.["uuid"] ? (await appName.wait(2000), await this.act_517_winningRecord(_0x4124a9.data.uuid)) : this.log("517活动抽奖失败, 没有返回uuid"); + } else { + let _0x52341d = _0x4124a9?.["message"] || _0x4124a9?.["msg"] || ""; + this.log("517活动抽奖失败[" + _0x3d0976 + "]: " + _0x52341d); + } + } catch (_0x162e6a) { + console.log(_0x162e6a); + } + } + async act_517_winningRecord(_0x30fba9, _0x228991 = {}) { + try { + const _0x55e850 = { + requestId: _0x30fba9 + }; + const _0x4c9db5 = { + fn: "act_517_winningRecord", + method: "get", + url: "https://activity.10010.com/2024517charges/lottery/winningRecord", + searchParams: _0x55e850 + }; + let { + result: _0x171769, + statusCode: _0x4aedd2 + } = await this.request(_0x4c9db5), + _0x57336e = appName.get(_0x171769, "code", _0x4aedd2); + if (_0x57336e == "0000") { + if (_0x171769?.["data"]?.["isWin"] === "1") { + let { + prizeAmount: _0x11e55c, + prizeList: _0x175f28, + afterAmount: _0x493574, + targetAmount: _0x2e20be, + showAmount = "0" + } = _0x171769?.["data"], + _0x48f549 = (_0x175f28 || []).filter(_0x5a6286 => _0x5a6286.prizeName).map(_0x2807d7 => _0x2807d7.prizeName).join(", ") || ""; + const _0x208a94 = { + notify: true + }; + if (_0x48f549) { + this.log("517活动抽奖: " + _0x48f549, _0x208a94); + } + if (showAmount === "1") { + this.log("517活动抽奖现金进度: +" + _0x11e55c + " (" + _0x493574 + "/" + _0x2e20be + ")"); + } + } else { + this.log("517活动抽奖: 空气"); + } + } else { + let _0xb510ea = _0x171769?.["message"] || _0x171769?.["msg"] || ""; + this.log("查询517活动抽奖结果失败[" + _0x57336e + "]: " + _0xb510ea); + } + } catch (_0x128879) { + console.log(_0x128879); + } + } + async act_517_taskList(_0x4fe859 = {}) { + try { + const _0x1297f2 = { + fn: "act_517_taskList", + method: "get", + url: "https://activity.10010.com/2024517charges/dotask/taskList" + }; + let { + result: _0x4ea832, + statusCode: _0x3a5db6 + } = await this.request(_0x1297f2), + _0x120b88 = appName.get(_0x4ea832, "code", _0x3a5db6); + if (_0x120b88 == "0000") { + let _0x442045 = _0x4ea832?.["data"]?.["taskList"] || []; + for (let _0x10da9b of _0x442045) { + let { + completeNum = 0, + maxNum: _0x411a82, + isComplete: _0x3bded4, + taskType: _0x11ea96 + } = _0x10da9b; + if (_0x3bded4) { + continue; + } + if (_0x11ea96 == "5") { + continue; + } + completeNum = parseInt(completeNum); + _0x411a82 = parseInt(_0x411a82); + for (let _0x3fa506 = completeNum; _0x3fa506 < _0x411a82; _0x3fa506++) { + await this.act_517_completeTask(_0x10da9b); + } + } + } else { + let _0x215aee = _0x4ea832?.["message"] || _0x4ea832?.["msg"] || ""; + this.log("查询517活动抽奖结果失败[" + _0x120b88 + "]: " + _0x215aee); + } + } catch (_0x45301a) { + console.log(_0x45301a); + } + } + async act_517_completeTask(_0x5c02d6, _0x33c90f = {}) { + try { + let _0x50635b = _0x5c02d6.title; + const _0x20a5f8 = { + taskId: _0x5c02d6.taskId + }; + const _0x3c3d1a = { + fn: "act_517_completeTask", + method: "get", + url: "https://activity.10010.com/2024517charges/dotask/completeTask", + searchParams: _0x20a5f8 + }; + let { + result: _0x2c1631, + statusCode: _0x269980 + } = await this.request(_0x3c3d1a), + _0x3c92b5 = appName.get(_0x2c1631, "code", _0x269980); + if (_0x3c92b5 == "0000") { + if (_0x2c1631?.["data"]) { + let { + num: _0x22c1df, + title: _0x342214 + } = _0x2c1631.data; + this.log("完成任务[" + _0x342214 + "]成功: " + _0x22c1df + "次抽奖机会"); + } else { + this.log("完成任务[" + _0x50635b + "]失败没有获得抽奖机会"); + } + } else { + let _0x140a16 = _0x2c1631?.["message"] || _0x2c1631?.["msg"] || ""; + this.log("完成任务[" + _0x50635b + "]失败[" + _0x3c92b5 + "]: " + _0x140a16); + } + } catch (_0x316430) { + console.log(_0x316430); + } + } + get_wocare_body(_0x4d6de5, _0x2dbc6d = {}) { + const _0x1771be = appName.time("yyyyMMddhhmmssS"), + _0x1604c8 = Buffer.from(JSON.stringify(_0x2dbc6d)).toString("base64"); + let _0x40e43b = { + version: minRetries, + apiCode: _0x4d6de5, + channelId: anotherApiKey, + transactionId: _0x1771be + appName.randomString(6, numbers), + timeStamp: _0x1771be, + messageContent: _0x1604c8 + }, + _0x38d082 = []; + Object.keys(_0x40e43b).sort().forEach(_0x430b5e => { + _0x38d082.push(_0x430b5e + "=" + _0x40e43b[_0x430b5e]); + }); + _0x38d082.push("sign=" + anotherEncryptionKey); + _0x40e43b.sign = cryptoJS.MD5(_0x38d082.join("&")).toString(); + return _0x40e43b; + } + async wocare_api(_0x5c2ce0, _0x20488d = {}) { + let _0x4c8f7b = this.get_wocare_body(_0x5c2ce0, _0x20488d); + const _0x334f84 = { + fn: "wocare_" + _0x5c2ce0, + method: "post", + url: "https://wocare.unisk.cn/api/v1/" + _0x5c2ce0, + form: _0x4c8f7b + }; + let _0x1c081d = await this.request(_0x334f84); + if (_0x1c081d?.["result"]?.["messageContent"]) { + try { + let _0x16bed8 = JSON.parse(Buffer.from(_0x1c081d.result.messageContent, "base64").toString()); + _0x1c081d.result.data = _0x16bed8?.["data"] || _0x16bed8; + if (_0x16bed8?.["resultMsg"]) { + _0x1c081d.result.resultMsg = _0x16bed8.resultMsg; + } + } catch (_0x33899f) { + this.log("解析联通祝福返回失败:"); + console.log(_0x33899f); + } + } + return _0x1c081d; + } + async wocare_getToken(_0x5d6595, _0x338375 = {}) { + let _0xe03d23 = false; + try { + let _0x5a4ebd = { + fn: "wocare_getToken", + method: "get", + url: "https://wocare.unisk.cn/mbh/getToken", + searchParams: { + channelType: serviceLife, + type: "02", + ticket: _0x5d6595, + version: appVersion, + timestamp: appName.time("yyyyMMddhhmmssS"), + desmobile: this.mobile, + num: 0, + postage: appName.randomString(32), + homePage: "home", + duanlianjieabc: "qAz2m", + userNumber: this.mobile + } + }, + { + headers: _0x4a51b5, + statusCode: _0x571bc4 + } = await this.request(_0x5a4ebd); + if (_0x571bc4 == 302) { + if (_0x4a51b5?.["location"]) { + let _0x32c3c4 = new URL(_0x4a51b5.location), + _0x4aa2d9 = _0x32c3c4.searchParams.get("sid"); + _0x4aa2d9 ? (this.wocare_sid = _0x4aa2d9, _0xe03d23 = await this.wocare_loginmbh()) : this.log("联通祝福没有获取到sid"); + } else { + this.log("联通祝福没有获取到location"); + } + } else { + this.log("联通祝福获取sid失败[" + _0x571bc4 + "]"); + } + } catch (_0x4a16ba) { + console.log(_0x4a16ba); + } finally { + return _0xe03d23; + } + } + async wocare_loginmbh(_0x11ffd4 = {}) { + let _0x4f6412 = false; + try { + let _0x24493a = "loginmbh"; + const _0x1aac9d = { + sid: this.wocare_sid, + channelType: serviceLife, + apiCode: _0x24493a + }; + let { + result: _0xca14a, + statusCode: _0x40c778 + } = await this.wocare_api(_0x24493a, _0x1aac9d), + _0x43410e = appName.get(_0xca14a, "resultCode", _0x40c778); + if (_0x43410e == "0000") { + _0x4f6412 = true; + let { + token: _0x56ac18 + } = _0xca14a?.["data"]; + this.wocare_token = _0x56ac18; + } else { + let _0xffa41d = _0xca14a?.["resultMsg"] || _0xca14a?.["resultDesc"] || ""; + this.log("联通祝福登录失败[" + _0x43410e + "]: " + _0xffa41d); + } + } catch (_0x1eb84b) { + console.log(_0x1eb84b); + } finally { + return _0x4f6412; + } + } + async wocare_getSpecificityBanner(_0x596f9b = {}) { + try { + let _0x4a6368 = "getSpecificityBanner"; + const _0x26cd42 = { + token: this.wocare_token, + apiCode: _0x4a6368 + }; + let { + result: _0x2a4fc0, + statusCode: _0x29d087 + } = await this.wocare_api(_0x4a6368, _0x26cd42), + _0x2c004b = appName.get(_0x2a4fc0, "resultCode", _0x29d087); + if (_0x2c004b == "0000") { + let _0x160328 = _0x2a4fc0?.["data"] || []; + for (let _0x4d923c of _0x160328.filter(_0x3704ef => _0x3704ef.activityStatus === "0" && _0x3704ef.isDeleted === "0")) { + await this.wocare_getDrawTask(_0x4d923c); + await this.wocare_loadInit(_0x4d923c); + } + } else { + let _0x5452d4 = _0x2a4fc0?.["resultMsg"] || _0x2a4fc0?.["resultDesc"] || ""; + this.log("联通祝福进入活动失败[" + _0x2c004b + "]: " + _0x5452d4); + } + } catch (_0x597b13) { + console.log(_0x597b13); + } + } + async wocare_loadInit(_0xa9b8ad, _0x455970 = {}) { + try { + let _0x43cea8 = "loadInit"; + const _0x4c47b0 = { + token: this.wocare_token, + channelType: serviceLife, + type: _0xa9b8ad.id, + apiCode: _0x43cea8 + }; + let { + result: _0x32f59b, + statusCode: _0x3c4540 + } = await this.wocare_api(_0x43cea8, _0x4c47b0), + _0x5b2835 = appName.get(_0x32f59b, "resultCode", _0x3c4540); + if (_0x5b2835 == "0000") { + let _0x3d1fd0 = _0x32f59b?.["data"], + _0x2870a7 = _0x3d1fd0?.["zActiveModuleGroupId"], + _0x4acf9b = 0; + switch (_0xa9b8ad.id) { + case 2: + { + let _0x143f96 = _0x3d1fd0?.["data"]?.["isPartake"] || 0; + !_0x143f96 && (_0x4acf9b = 1); + break; + } + case 3: + { + _0x4acf9b = parseInt(_0x3d1fd0?.["raffleCountValue"] || 0); + break; + } + case 4: + { + _0x4acf9b = parseInt(_0x3d1fd0?.["mhRaffleCountValue"] || 0); + break; + } + } + while (_0x4acf9b-- > 0) { + await appName.wait(5000); + await this.wocare_luckDraw(_0xa9b8ad, _0x2870a7); + } + } else { + let _0x10d6ec = _0x32f59b?.["resultMsg"] || _0x32f59b?.["resultDesc"] || ""; + this.log("联通祝福[" + _0xa9b8ad.name + "]查询活动失败[" + _0x5b2835 + "]: " + _0x10d6ec); + } + } catch (_0x52030a) { + console.log(_0x52030a); + } + } + async wocare_getDrawTask(_0x1fef95, _0xeaa7bc = {}) { + try { + let _0x4e8c52 = "getDrawTask"; + const _0x2c3b69 = { + token: this.wocare_token, + channelType: serviceLife, + type: _0x1fef95.id, + apiCode: _0x4e8c52 + }; + let { + result: _0x38de2a, + statusCode: _0x628a3b + } = await this.wocare_api(_0x4e8c52, _0x2c3b69), + _0x425051 = appName.get(_0x38de2a, "resultCode", _0x628a3b); + if (_0x425051 == "0000") { + let _0x1335c7 = _0x38de2a?.["data"]?.["taskList"] || []; + for (let _0x5019b6 of _0x1335c7.filter(_0x529e83 => _0x529e83.taskStatus == 0)) { + await this.wocare_completeTask(_0x1fef95, _0x5019b6); + } + } else { + let _0x355044 = _0x38de2a?.["resultMsg"] || _0x38de2a?.["resultDesc"] || ""; + this.log("联通祝福[" + _0x1fef95.name + "]查询任务失败[" + _0x425051 + "]: " + _0x355044); + } + } catch (_0x14c042) { + console.log(_0x14c042); + } + } + async wocare_completeTask(_0x3f5d92, _0x50e428, _0x360522 = "1", _0x2c48eb = {}) { + try { + let _0x50f9e4 = _0x50e428.title, + _0x4facfd = _0x360522 == "1" ? "领取任务" : "完成任务", + _0x377c39 = "completeTask"; + const _0x303bcd = { + token: this.wocare_token, + channelType: serviceLife, + task: _0x50e428.id, + taskStep: _0x360522, + type: _0x3f5d92.id, + apiCode: _0x377c39 + }; + let { + result: _0x2cc63e, + statusCode: _0x184c09 + } = await this.wocare_api(_0x377c39, _0x303bcd), + _0xa787a0 = appName.get(_0x2cc63e, "resultCode", _0x184c09); + if (_0xa787a0 == "0000") { + this.log(_0x4facfd + "[" + _0x50f9e4 + "]成功"); + _0x360522 == "1" && (await this.wocare_completeTask(_0x3f5d92, _0x50e428, "4")); + } else { + let _0x2e4c1b = _0x2cc63e?.["resultMsg"] || _0x2cc63e?.["resultDesc"] || ""; + this.log("联通祝福[" + _0x3f5d92.name + "]" + _0x4facfd + "[" + _0x50f9e4 + "]失败[" + _0xa787a0 + "]: " + _0x2e4c1b); + } + } catch (_0x29872e) { + console.log(_0x29872e); + } + } + async wocare_luckDraw(_0x103614, _0x53be22, _0x51513d = {}) { + try { + let _0x62ee5f = "luckDraw"; + const _0x5621f1 = { + token: this.wocare_token, + channelType: serviceLife, + zActiveModuleGroupId: _0x53be22, + type: _0x103614.id, + apiCode: _0x62ee5f + }; + let { + result: _0x427eea, + statusCode: _0x26e062 + } = await this.wocare_api(_0x62ee5f, _0x5621f1), + _0x1d084a = appName.get(_0x427eea, "resultCode", _0x26e062); + if (_0x1d084a == "0000") { + let _0x1a2341 = appName.get(_0x427eea?.["data"], "resultCode", -1); + if (_0x1a2341 == "0000") { + let { + prizeName: _0x50e0e5, + prizeDesc: _0x4e8140 + } = _0x427eea?.["data"]?.["data"]?.["prize"]; + this.log("联通祝福[" + _0x103614.name + "]抽奖: " + _0x50e0e5 + "[" + _0x4e8140 + "]"); + } else { + let _0x2529ec = _0x427eea?.["resultMsg"] || _0x427eea?.["resultDesc"] || ""; + this.log("联通祝福[" + _0x103614.name + "]抽奖失败[" + _0x1a2341 + "]: " + _0x2529ec); + } + } else { + let _0x575c51 = _0x427eea?.["resultMsg"] || _0x427eea?.["resultDesc"] || ""; + this.log("联通祝福[" + _0x103614.name + "]抽奖错误[" + _0x1d084a + "]: " + _0x575c51); + } + } catch (_0x43e414) { + console.log(_0x43e414); + } + } + async card_618_authCheck(_0xeeb2f2 = {}) { + try { + let _0x4aff88 = { + fn: "card_618_authCheck", + method: "post", + url: "https://epay.10010.com/ps-pafs-auth-front/v1/auth/check", + headers: { + bizchannelinfo: this.get_bizchannelinfo() + } + }, + { + result: _0x3f5ce1 + } = await this.request(_0x4aff88), + _0x52a304 = appName.get(_0x3f5ce1, "code", -1); + if (_0x52a304 == "0000") { + let { + mobile: _0x5ece0b, + sessionId: _0x15409b, + tokenId: _0x5d8026, + userId: _0x195001 + } = _0x3f5ce1?.["data"]?.["authInfo"]; + const _0x551929 = { + sessionId: _0x15409b, + tokenId: _0x5d8026, + userId: _0x195001 + }; + Object.assign(this, _0x551929); + await this.card_618_queryUserCardInfo(); + } else { + if (_0x52a304 == "2101000100") { + let _0x5345ac = _0x3f5ce1?.["data"]?.["woauth_login_url"]; + await this.card_618_login(_0x5345ac); + } else { + let _0x3f8426 = _0x3f5ce1?.["msgInside"] || _0x3f5ce1?.["msg"] || ""; + this.log("618集卡获取tokenId失败[" + _0x52a304 + "]: " + _0x3f8426); + } + } + } catch (_0x120bbb) { + console.log(_0x120bbb); + } + } + async card_618_login(_0x4b5e1f, _0x52f369 = {}) { + try { + let _0x324c93 = appName.time("yyyyMM") + "28ZFR"; + _0x4b5e1f += "https://epay.10010.com/ci-mcss-party-web/rainbow/?templateName=" + _0x324c93 + "&bizFrom=225&bizChannelCode=225&channelType=WDQB"; + const _0x4370f0 = { + fn: "card_618_login", + method: "get", + url: "https://epay.10010.com/woauth2/login", + searchParams: {} + }; + _0x4370f0.searchParams.response_type = "web_token"; + _0x4370f0.searchParams.source = "app_sjyyt"; + _0x4370f0.searchParams.union_session_id = ""; + _0x4370f0.searchParams.device_digest_token_id = this.tokenId_cookie; + _0x4370f0.searchParams.target_client_id = anotherClientId; + _0x4370f0.searchParams.position = null; + _0x4370f0.searchParams.redirect_url = "https://epay.10010.com/ci-mcss-party-web/cardSelection/?activityId=NZJK618CJHD"; + _0x4370f0.searchParams.bizFrom = errorCode; + _0x4370f0.searchParams.bizChannelCode = errorNumber; + _0x4370f0.searchParams.channelType = "WDQB"; + let { + headers: _0x3466a2, + statusCode: _0xb0793d + } = await this.request(_0x4370f0); + if (_0x3466a2?.["location"]) { + let _0x13496c = new URL(_0x3466a2.location); + this.rptId = _0x13496c.searchParams.get("rptid"); + this.rptId ? await this.card_618_authCheck() : this.log("618集卡获取rptid失败"); + } else { + this.log("618集卡获取rptid失败[" + _0xb0793d + "]"); + } + } catch (_0x624f72) { + console.log(_0x624f72); + } + } + async card_618_queryUserCardInfo(_0x518cd6 = {}) { + try { + const _0x37da94 = { + activityId: "NZJK618CJHD" + }; + let _0x3e2ef2 = { + fn: "card_618_queryUserCardInfo", + method: "post", + url: "https://epay.10010.com/ci-mcss-party-front/v1/mouldCard/queryUserCardInfo", + headers: { + bizchannelinfo: this.get_bizchannelinfo(), + authinfo: this.get_epay_authinfo() + }, + form: _0x37da94 + }, + { + result: _0x358e5a + } = await this.request(_0x3e2ef2), + _0x4802a6 = appName.get(_0x358e5a, "code", -1); + if (_0x4802a6 == "0000" && _0x358e5a?.["data"]?.["returnCode"] == 0) { + let { + userRemain = 0, + isFirst = true + } = _0x358e5a?.["data"]; + if (isFirst) { + await this.card_618_unifyDraw("首次进入"); + } + this.log("618集卡可以抽奖" + userRemain + "次"); + while (userRemain-- > 0) { + await this.card_618_unifyDraw("抽奖"); + } + } else { + let _0x4ff8ee = _0x358e5a?.["message"] || _0x358e5a?.["msg"] || ""; + this.log("618集卡进入主页失败[" + _0x4802a6 + "]: " + _0x4ff8ee); + } + } catch (_0x6371bb) { + console.log(_0x6371bb); + } + } + async card_618_unifyDraw(_0x431f14, _0x15179c = {}) { + try { + let _0x630a5d = { + fn: "card_618_unifyDraw", + method: "post", + url: "https://epay.10010.com/ci-mcss-party-front/v1/mouldCard/unifyDraw", + headers: { + bizchannelinfo: this.get_bizchannelinfo(), + authinfo: this.get_epay_authinfo() + }, + form: { + bigActivityId: _0x3484cf.card_618, + activityId: _0x3484cf.card_618 + _0x10ec87[_0x431f14], + bizFrom: errorCode + } + }, + { + result: _0xbbc5a6 + } = await this.request(_0x630a5d), + _0x2f8420 = appName.get(_0xbbc5a6, "code", -1); + if (_0x2f8420 == "0000" && _0xbbc5a6?.["data"]?.["returnCode"] == 0) { + let _0x46e05e = _0xbbc5a6?.["data"]?.["prizeId"] || "空气", + _0x583237 = _0x1c214d[_0x46e05e] || _0x46e05e; + const _0x22f8e4 = { + notify: true + }; + this.log("618集卡[" + _0x431f14 + "]: " + _0x583237, _0x22f8e4); + } else { + let _0xda184 = _0xbbc5a6?.["data"]?.["returnMsg"] || _0xbbc5a6?.["msg"] || ""; + this.log("618集卡[" + _0x431f14 + "]失败[" + (_0xbbc5a6?.["data"]?.["returnCode"] || _0x2f8420) + "]: " + _0xda184); + } + } catch (_0x59f330) { + console.log(_0x59f330); + } + } + async sign_task() { + await this.sign_getContinuous(); + } + async ltcy_task() { + let _0xe84731 = "https://web.wostore.cn/web/flowGame/index.html?channelId=GAMELTAPP_90006&pushid=99", + { + ticket: _0x73ef67 + } = await this.openPlatLineNew(_0xe84731); + if (!_0x73ef67) { + return; + } + await this.game_login(_0x73ef67); + } + async ttlxj_task() { + this.rptId = ""; + let _0x4b2989 = "https://epay.10010.com/ci-mps-st-web/?webViewNavIsHidden=webViewNavIsHidden", + { + ticket: _0xfccd3c, + type: _0x5be8ca, + loc: _0x33b6a9 + } = await this.openPlatLineNew(_0x4b2989); + if (!_0xfccd3c) { + return; + } + await this.ttlxj_authorize(_0xfccd3c, _0x5be8ca, _0x33b6a9); + } + async epay_28_task() { + this.rptId = ""; + let _0x3904ee = new Date().getDate(); + if (_0x3904ee >= 26 && _0x3904ee <= 28) { + await this.epay_28_authCheck(); + if (appMonth_28_share.length) { + let _0x3c73d8 = appName.randomList(appMonth_28_share); + await this.appMonth_28_bind(_0x3c73d8); + } + await this.appMonth_28_queryChance(); + } + } + async draw_28_task() { + let _0x3fc66f = new Date().getDate(); + _0x3fc66f == 28 && (await this.draw_28_queryChance()); + } + async act_517_task() { + let _0x19e840 = new Date("2024-05-10 00:00:00"), + _0x41d2ad = new Date("2024-06-09 00:00:00"), + _0x2f7f5c = Date.now(); + if (_0x2f7f5c > _0x19e840.getTime() && _0x2f7f5c < _0x41d2ad.getTime()) { + if (act_517_share.length) { + let _0x53384d = appName.randomList(act_517_share); + await this.act_517_bind(_0x53384d); + } + await this.act_517_userAccount(); + } + } + async card_618_task() { + let _0x2ad5cb = new Date("2024-05-31 00:00:00"), + _0x4ce692 = new Date("2024-06-21 00:00:00"), + _0x1a0657 = Date.now(); + _0x1a0657 > _0x2ad5cb.getTime() && _0x1a0657 < _0x4ce692.getTime() && (this.rptId = "", await this.card_618_authCheck()); + } + async flmf_task() { + if (this.city.filter(_0x5d152b => _0x5d152b.proCode == "091").length == 0) { + return; + } + let _0x552e7c = "https://weixin.linktech.hk/lv-web/handHall/autoLogin?actcode=welfareCenter", + { + loc: _0x55dcf1 + } = await this.openPlatLineNew(_0x552e7c); + if (!_0x55dcf1) { + return; + } + await this.flmf_login(_0x55dcf1); + } + async ltyp_task() { + let _0x1cee90 = "https://panservice.mail.wo.cn/h5/activitymobile/lottery?activityId=WzaR7KkUJSpR+gDh7Fy6mA==&clientid=1001000003&appName=shouting", + { + ticket: _0x318b1b + } = await this.openPlatLineNew(_0x1cee90); + if (!_0x318b1b) { + return; + } + await this.ltyp_login(_0x318b1b); + } + async ltzf_task() { + let _0x2db4d6 = new URL("https://wocare.unisk.cn/mbh/getToken"); + _0x2db4d6.searchParams.append("channelType", serviceLife); + _0x2db4d6.searchParams.append("homePage", "home"); + _0x2db4d6.searchParams.append("duanlianjieabc", "qAz2m"); + let _0x4acf51 = _0x2db4d6.toString(), + { + ticket: _0x588ef9 + } = await this.openPlatLineNew(_0x4acf51); + if (!_0x588ef9) { + return; + } + if (!(await this.wocare_getToken(_0x588ef9))) { + return; + } + for (let _0x305ba1 of _0x4376d8) { + await this.wocare_getDrawTask(_0x305ba1); + await this.wocare_loadInit(_0x305ba1); + } + } + async woread_draw_task(_0x10af6a) { + await this.woread_getSeeVideoAddNumber(_0x10af6a); + await this.woread_addDrawTimes(_0x10af6a); + await this.woread_getActivityNumber(_0x10af6a); + } + async woread_task() { + for (let _0x524680 of woread_draw_id) { + await this.woread_draw_task(_0x524680); + } + await this.moonbox_queryReadStatus(); + await this.woread_queryTicketAccount(); + } + async woread_reading_task() { + this.switch_woread_token(this.woread_m_accesstoken); + + // 获取需要处理的任务数量 + const getPendingTasksCount = () => Object.values(this.moonbox_task_record).filter(status => status).length; + let pendingTasksCount = getPendingTasksCount(); + + while (this.need_read_rabbit || pendingTasksCount) { + const readDuration = 2; + await this.woread_m_addReadTime({ readTime: readDuration }); + + const startTime = Date.now(); + + if (pendingTasksCount) { + await this.moonbox_m_queryCurTaskStatus(); + } + + // 更新待处理任务数量 + pendingTasksCount = getPendingTasksCount(); + + if (this.need_read_rabbit) { + await this.rabblit_queryActivityData(); + } + + const elapsedTime = Date.now() - startTime; + const waitTime = Math.max(0, 125000 - elapsedTime); + + if (this.need_read_rabbit || pendingTasksCount) { + if (waitTime > 0) { + this.log("等待2分钟..."); + await appName.wait(waitTime); + } + } + } + + this.switch_woread_token(this.woread_accesstoken); + } + + async userLoginTask() { + if (!(await this.onLine())) { + return; + } + // 执行权益超市登录 + await this.marketUnicomLogin(); + // 只执行登录,不继续执行后面的代码 + return; + + /* + if (!(await this.woread_auth())) { + return; + } + if (!(await this.woread_login())) { + return; + } + if (!(await this.woread_m_auth())) { + return; + } + if (!(await this.woread_m_login())) { + return; + } + this.switch_woread_token(this.woread_accesstoken); + if (!moonbox_activeId) { + await this.moonbox_queryActiveInfo(); + } + await this.moonbox_queryCurTaskStatus(); + */ + } + async userTask() { + appName.log("\n------------------ 账号[" + this.index + "] ------------------"); + if (!signDisabled) { + await this.sign_task(); + } + await this.ttlxj_task(); + // await this.ltyp_task(); + // await this.epay_28_task(); + // await this.draw_28_task(); + // await this.card_618_task(); + if (!ltzfDisabled) { + await this.ltzf_task(); + } + await this.flmf_task(); + // 执行权益超市任务 + await this.marketTask(); + // await this.woread_task(); + } + async userTestTask() { + appName.log("\n------------------ 账号[" + this.index + "] ------------------"); + await this.ltyp_task(); + } +} +!(async () => { + // 如果条件不满足,退出函数 + // if (!(await checkCondition())) { + // return; + // } + + // 执行初始化函数 + await initialize(); + + // 读取环境变量 + appName.read_env(CustomUserService); + + // 打印配置状态 + appName.log("\n------------------------------------"); + appName.log("首页签到设置为: " + (signDisabled ? "不" : "") + "运行"); + appName.log("联通祝福设置为: " + (ltzfDisabled ? "不" : "") + "运行"); + appName.log("------------------------------------\n"); + + // 执行用户登录任务 + for (let user of appName.userList) { + await user.userLoginTask(); + } + + // 执行有效用户的任务 + for (let validUser of appName.userList.filter(user => user.valid)) { + await validUser.userTask(); + } + + // 筛选需要阅读任务的用户 + let usersWithReadingTasks = appName.userList.filter(user => + user.valid && + user.woread_verifycode && + (user.need_read_rabbit || Object.values(user.moonbox_task_record).filter(taskCompleted => taskCompleted).length) + ); + + if (usersWithReadingTasks.length) { + let readingTasks = []; + appName.log("\n============ 开始刷阅读时长 ============"); + + // 执行阅读任务 + for (let user of usersWithReadingTasks) { + readingTasks.push(user.woread_reading_task()); + } + await Promise.all(readingTasks); + } +})().catch(error => appName.log(error)).finally(() => appName.exitNow()); +async function icheckAuthStatus(retryCount = 0) { + let isSuccess = false; + + try { + // 请求配置 + const requestOptions = { + fn: "auth", + method: "get", + url: validCodeUrl, + timeout: 20000 + }; + + // 发起请求 + let { statusCode, result } = await userServiceInstance.request(requestOptions); + + // 如果状态码不是 200,进行重试 + if (statusCode !== 200) { + if (retryCount < retryDelay) { + isSuccess = await icheckAuthStatus(retryCount + 1); + } + return isSuccess; + } + + // 处理成功的响应 + if (result?.code === 0) { + result = JSON.parse(result.data.file.data); + + // 处理通用通知 + if (result?.commonNotify?.length > 0) { + const notifyOptions = { notify: true }; + appName.log(result.commonNotify.join("\n") + "\n", notifyOptions); + } + + // 处理通用消息 + if (result?.commonMsg?.length > 0) { + appName.log(result.commonMsg.join("\n") + "\n"); + } + + // 处理项目相关的消息 + if (result[projectName]) { + const projectInfo = result[projectName]; + if (projectInfo.status === 0) { + if (version >= projectInfo.version) { + isSuccess = true; + appName.log(projectInfo.msg[projectInfo.status]); + appName.log(projectInfo.updateMsg); + appName.log(`当前脚本版本:${version},最新版本:${projectInfo.latestVersion}`); + } else { + appName.log(projectInfo.versionMsg); + } + } else { + appName.log(projectInfo.msg[projectInfo.status]); + } + } else { + appName.log(result.errorMsg); + } + } else { + if (retryCount < retryDelay) { + isSuccess = await icheckAuthStatus(retryCount + 1); + } + } + } catch (error) { + appName.log(error); + } finally { + return isSuccess; + } +} +async function initialize() { + let isInitialized = false; + try { + const requestConfig = { + fn: "getTaskUrl", + method: "get", + url: projectCodeUrl + }; + let { statusCode, result } = await userServiceInstance.request(requestConfig); + + if (statusCode !== 200) { + return Promise.resolve(); + } + + if (result?.code === 0) { + result = JSON.parse(result.data.file.data); + + ltypLottery = result?.ltyp_lottery || ltypLottery; + woreadDrawId = result?.woread_draw_id || woreadDrawId; + appMonth28Share = result?.appMonth_28_share || appMonth28Share; + act517Share = result?.act_517_share || act517Share; + + isInitialized = true; + } + } catch (error) { + appName.log(error); + } finally { + return isInitialized; + } +} + +function createLogger(UserClass) { + return new class { + constructor(name) { + this.name = name; + this.startTime = Date.now(); + this.log("[" + this.name + "]开始运行\n", { time: true }); + this.notifyStr = []; + this.notifyFlag = true; + this.userIdx = 0; + this.userList = []; + this.userCount = 0; + this.default_timestamp_len = 13; + this.default_wait_interval = 1000; + this.default_wait_limit = 3600000; + this.default_wait_ahead = 0; + } + log(message, options = {}) { + const defaultOptions = { console: true, ...options }; + if (defaultOptions.time) { + let format = defaultOptions.fmt || "hh:mm:ss"; + message = "[" + this.time(format) + "]" + message; + } + if (defaultOptions.notify) { + this.notifyStr.push(message); + } + if (defaultOptions.console) { + console.log(message); + } + } + get(object, key, defaultValue = "") { + return object?.hasOwnProperty(key) ? object[key] : defaultValue; + } + pop(object, key, defaultValue = "") { + if (object?.hasOwnProperty(key)) { + const value = object[key]; + delete object[key]; + return value; + } + return defaultValue; + } + copy(source) { + return { ...source }; + } + read_env(UserClass) { + const envValues = cookieVars.map(varName => process.env[varName]); + for (const envValue of envValues.filter(value => !!value)) { + const delimitersFound = delimiters.filter(delimiter => envValue.includes(delimiter)); + const delimiter = delimitersFound.length > 0 ? delimitersFound[0] : delimiters[0]; + for (const userInfo of envValue.split(delimiter).filter(value => !!value)) { + this.userList.push(new UserClass(userInfo)); + } + } + this.userCount = this.userList.length; + if (!this.userCount) { + this.log("未找到变量,请检查变量" + cookieVars.map(varName => "[" + varName + "]").join("或"), { notify: true }); + return false; + } + this.log("共找到" + this.userCount + "个账号"); + return true; + } + async threads(methodName, context, options = {}) { + while (context.idx < appName.userList.length) { + const user = appName.userList[context.idx++]; + if (user.valid) { + await user[methodName](options); + } + } + } + async threadTask(methodName, count) { + const tasks = []; + const context = { idx: 0 }; + while (count--) { + tasks.push(this.threads(methodName, context)); + } + await Promise.all(tasks); + } + time(format, date = null) { + const currentDate = date ? new Date(date) : new Date(); + const timeElements = { + "M+": currentDate.getMonth() + 1, + "d+": currentDate.getDate(), + "h+": currentDate.getHours(), + "m+": currentDate.getMinutes(), + "s+": currentDate.getSeconds(), + "q+": Math.floor((currentDate.getMonth() + 3) / 3), + S: this.padStr(currentDate.getMilliseconds(), 3) + }; + if (/(y+)/.test(format)) { + format = format.replace(RegExp.$1, (currentDate.getFullYear() + "").substr(4 - RegExp.$1.length)); + } + for (const key in timeElements) { + if (new RegExp("(" + key + ")").test(format)) { + format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? timeElements[key] : ("00" + timeElements[key]).substr(("" + timeElements[key]).length)); + } + } + return format; + } + async showmsg() { + if (this.notifyFlag && this.notifyStr.length) { + const notify = require("./sendNotify"); + this.log("\n============== 推送 =============="); + await notify.sendNotify(this.name, this.notifyStr.join("\n")); + } + } + padStr(value, length, options = {}) { + const padding = options.padding || "0"; + const mode = options.mode || "l"; + let strValue = String(value); + const paddingLength = length > strValue.length ? length - strValue.length : 0; + const paddingStr = padding.repeat(paddingLength); + return mode === "r" ? strValue + paddingStr : paddingStr + strValue; + } + json2str(json, delimiter, encode = false) { + return Object.keys(json) + .sort() + .map(key => { + let value = json[key]; + return `${key}=${encode && value ? encodeURIComponent(value) : value}`; + }) + .join(delimiter); + } + str2json(str, decode = false) { + const json = {}; + str.split("&").forEach(pair => { + if (pair) { + const [key, value] = pair.split("="); + json[key] = decode ? decodeURIComponent(value) : value; + } + }); + return json; + } + randomPattern(pattern, charset = "abcdef0123456789") { + return pattern.split("").map(char => { + if (char === "x") { + return charset.charAt(Math.floor(Math.random() * charset.length)); + } else if (char === "X") { + return charset.charAt(Math.floor(Math.random() * charset.length)).toUpperCase(); + } + return char; + }).join(""); + } + randomUuid() { + return this.randomPattern("xxxxxxxx-xxxx-4xxx-4xxx-xxxxxxxxxxxx"); + } + randomString(length, charset = "abcdef0123456789") { + return Array.from({ length }, () => charset.charAt(Math.floor(Math.random() * charset.length))).join(""); + } + randomList(list) { + return list[Math.floor(Math.random() * list.length)]; + } + wait(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + async exitNow() { + await this.showmsg(); + const endTime = Date.now(); + const duration = (endTime - this.startTime) / 1000; + this.log(""); + this.log("[" + this.name + "]运行结束,共运行了" + duration + "秒", { time: true }); + process.exit(0); + } + normalize_time(time, options = {}) { + const length = options.len || this.default_timestamp_len; + time = time.toString(); + while (time.length < length) { + time += "0"; + } + return parseInt(time.slice(0, 13)); + } + async wait_until(targetTime, options = {}) { + const logger = options.logger || this; + const interval = options.interval || this.default_wait_interval; + const limit = options.limit || this.default_wait_limit; + const ahead = options.ahead || this.default_wait_ahead; + + if (typeof targetTime === "string" && targetTime.includes(":")) { + if (targetTime.includes("-")) { + targetTime = new Date(targetTime).getTime(); + } else { + const currentDate = this.time("yyyy-MM-dd "); + targetTime = new Date(currentDate + targetTime).getTime(); + } + } + + let targetTimestamp = this.normalize_time(targetTime) - ahead; + const targetTimeFormatted = this.time("hh:mm:ss.S", targetTimestamp); + let currentTime = Date.now(); + if (currentTime > targetTimestamp) { + targetTimestamp += 86400000; + } + + let remainingTime = targetTimestamp - currentTime; + if (remainingTime > limit) { + logger.log("离目标时间[" + targetTimeFormatted + "]大于" + limit / 1000 + "秒,不等待", { time: true }); + } else { + logger.log("离目标时间[" + targetTimeFormatted + "]还有" + remainingTime / 1000 + "秒,开始等待", { time: true }); + while (remainingTime > 0) { + const waitTime = Math.min(remainingTime, interval); + await this.wait(waitTime); + currentTime = Date.now(); + remainingTime = targetTimestamp - currentTime; + } + logger.log("已完成等待", { time: true }); + } + } + async wait_gap_interval(lastWaitTime, interval) { + const elapsedTime = Date.now() - lastWaitTime; + if (elapsedTime < interval) { + await this.wait(interval - elapsedTime); + } + } + }(UserClass); + } + +