2020-07-02 11:50:39 +08:00
const chavy = init ( )
const cookieName = '苏宁易购'
const KEY _loginurl = 'chavy_login_url_suning'
const KEY _loginbody = 'chavy_login_body_suning'
const KEY _loginheader = 'chavy_login_header_suning'
const KEY _signurl = 'chavy_sign_url_suning'
const KEY _signheader = 'chavy_sign_header_suning'
const KEY _signweburl = 'chavy_signweb_url_suning'
const KEY _signweburlBarry = 'snyg_userTokenKey'
const KEY _signwebheader = 'chavy_signweb_header_suning'
const KEY _signgameurl = 'chavy_signgame_url_suning'
const KEY _signgameheader = 'chavy_signgame_header_suning'
const KEY _signgetgameurl = 'chavy_signgetgame_url_suning'
const KEY _signgetgameheader = 'chavy_signgetgame_header_suning'
const KEY _runflag = 'chavy_runflag_suning'
const signinfo = { }
let VAL _loginurl = chavy . getdata ( KEY _loginurl )
let VAL _loginbody = chavy . getdata ( KEY _loginbody )
let VAL _loginheader = chavy . getdata ( KEY _loginheader )
let VAL _signurl = chavy . getdata ( KEY _signurl )
let VAL _signheader = chavy . getdata ( KEY _signheader )
let VAL _signweburl = chavy . getdata ( KEY _signweburl )
let VAL _signweburlBarry = chavy . getdata ( KEY _signweburlBarry )
let VAL _signwebheader = chavy . getdata ( KEY _signwebheader )
let VAL _signgameurl = chavy . getdata ( KEY _signgameurl )
let VAL _signgameheader = chavy . getdata ( KEY _signgameheader )
let VAL _signgetgameurl = chavy . getdata ( KEY _signgetgameurl )
let VAL _signgetgameheader = chavy . getdata ( KEY _signgetgameheader )
let VAL _runflag = chavy . getdata ( KEY _runflag )
; ( sign = async ( ) => {
2020-07-02 11:52:57 +08:00
chavy . log ( ` 🔔 ${ cookieName } ` )
await loginapp ( )
if ( VAL _signurl ) await signapp ( )
await getinfo ( )
if ( VAL _signweburl || VAL _signweburlBarry ) await signweb ( ) , await getwebinfo ( )
if ( VAL _signgameurl && VAL _signgetgameurl ) await signgame ( ) , await getgameinfo ( )
showmsg ( )
chavy . done ( )
2020-07-02 11:50:39 +08:00
} ) ( ) . catch ( ( e ) => chavy . log ( ` ❌ ${ cookieName } 签到失败: ${ e } ` ) , chavy . done ( ) )
function loginapp ( ) {
2020-07-02 11:52:57 +08:00
return new Promise ( ( resolve , reject ) => {
const url = { url : VAL _loginurl , body : VAL _loginbody , headers : JSON . parse ( VAL _loginheader ) }
// chavy.log(`❕ ${cookieName} loginapp - VAL_runflag: ${VAL_runflag}`)
// if (VAL_runflag) delete url.headers['Cookie']
// else chavy.setdata('true', KEY_runflag)
chavy . post ( url , ( error , response , data ) => {
resolve ( )
} )
2020-07-02 11:50:39 +08:00
} )
}
function signapp ( ) {
2020-07-02 11:52:57 +08:00
return new Promise ( ( resolve , reject ) => {
const url = { url : VAL _signurl , headers : JSON . parse ( VAL _signheader ) }
delete url . headers [ 'Cookie' ]
chavy . get ( url , ( error , response , data ) => {
try {
chavy . log ( ` ❕ ${ cookieName } signapp - response: ${ JSON . stringify ( response ) } ` )
signinfo . signapp = JSON . parse ( data )
resolve ( )
} catch ( e ) {
chavy . msg ( cookieName , ` 签到结果: 失败 ` , ` 说明: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } signapp - 签到失败: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } signapp - response: ${ JSON . stringify ( response ) } ` )
resolve ( )
}
} )
2020-07-02 11:50:39 +08:00
} )
}
function signgame ( ) {
2020-07-02 11:52:57 +08:00
return new Promise ( ( resolve , reject ) => {
const url = { url : VAL _signgameurl , headers : JSON . parse ( VAL _signgameheader ) }
delete url . headers [ 'Cookie' ]
chavy . get ( url , ( error , response , data ) => {
try {
chavy . log ( ` ❕ ${ cookieName } signgame - response: ${ JSON . stringify ( response ) } ` )
signinfo . signgame = JSON . parse ( data )
resolve ( )
} catch ( e ) {
chavy . msg ( cookieName , ` 天天低价: 失败 ` , ` 说明: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } signgame - 签到失败: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } signgame - response: ${ JSON . stringify ( response ) } ` )
resolve ( )
}
} )
2020-07-02 11:50:39 +08:00
} )
}
function signweb ( ) {
2020-07-02 11:52:57 +08:00
return new Promise ( ( resolve , reject ) => {
let url = null
if ( VAL _signweburl ) {
url = { url : VAL _signweburl , headers : JSON . parse ( VAL _signwebheader ) }
delete url . headers [ 'Cookie' ]
url . headers [ 'Host' ] = 'luckman.suning.com'
url . headers [ 'Referer' ] = 'https: //luckman.suning.com/luck-web/sign/app/index_sign.htm?wx_navbar_transparent=true'
url . headers [ 'User-Agent' ] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 SNEBUY-APP 8.5.0 SNCLIENT-WAP'
} else if ( VAL _signweburlBarry ) {
url = { url : VAL _signweburlBarry , headers : { } }
url . headers [ 'Cookie' ] = chavy . getdata ( 'snyg_userCookieKey' )
url . headers [ 'Accept' ] = 'application/json'
url . headers [ 'Accept-Encoding' ] = 'gzip, deflate, br'
url . headers [ 'Connection' ] = 'keep-alive'
url . headers [ 'Referer' ] = 'https://luckman.suning.com/luck-web/sign/app/index_sign.htm?wx_navbar_transparent=true'
url . headers [ 'Host' ] = 'luckman.suning.com'
url . headers [ 'User-Agent' ] = chavy . getdata ( 'snyg_userAgentKey' )
url . headers [ 'Accept-Language' ] = 'en-us'
url . headers [ 'X-Requested-With' ] = 'XMLHttpRequest'
}
chavy . get ( url , ( error , response , data ) => {
try {
chavy . log ( ` ❕ ${ cookieName } signweb - response: ${ JSON . stringify ( response ) } ` )
signinfo . signweb = JSON . parse ( data )
resolve ( )
} catch ( e ) {
chavy . msg ( cookieName , ` 每日红包: 失败 ` , ` 说明: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } signweb - 每日红包失败: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } signweb - response: ${ JSON . stringify ( response ) } ` )
resolve ( )
}
} )
2020-07-02 11:50:39 +08:00
} )
}
function getwebinfo ( ) {
2020-07-02 11:52:57 +08:00
return new Promise ( ( resolve , reject ) => {
const timestamp = Math . round ( new Date ( ) . getTime ( ) ) . toString ( )
const VAL _webinfourl = ` https://luckman.suning.com/luck-web/sign/api/query/detail/record_sign.do?terminal=app&channel=sign&_= ${ timestamp } `
const url = { url : VAL _webinfourl , headers : JSON . parse ( VAL _signheader ) }
delete url . headers [ 'Cookie' ]
url . headers [ 'Host' ] = 'luckman.suning.com'
chavy . get ( url , ( error , response , data ) => {
try {
chavy . log ( ` ❕ ${ cookieName } getwebinfo - response: ${ JSON . stringify ( response ) } ` )
signinfo . webinfo = JSON . parse ( data )
resolve ( )
} catch ( e ) {
chavy . msg ( cookieName , ` 领红包结果: 失败 ` , ` 说明: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } getwebinfo - 领红包失败: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } getwebinfo - response: ${ JSON . stringify ( response ) } ` )
resolve ( )
}
} )
2020-07-02 11:50:39 +08:00
} )
}
function getgameinfo ( ) {
2020-07-02 11:52:57 +08:00
return new Promise ( ( resolve , reject ) => {
const url = { url : VAL _signgetgameurl , headers : JSON . parse ( VAL _signgetgameheader ) }
delete url . headers [ 'Cookie' ]
chavy . get ( url , ( error , response , data ) => {
try {
chavy . log ( ` ❕ ${ cookieName } getgameinfo - response: ${ JSON . stringify ( response ) } ` )
signinfo . gameinfo = JSON . parse ( data . match ( /\((.*)\)/ ) [ 1 ] )
resolve ( )
} catch ( e ) {
chavy . msg ( cookieName , ` 查询天天低价: 失败 ` , ` 说明: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } getgameinfo - 查询天天低价失败: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } getgameinfo - response: ${ JSON . stringify ( response ) } ` )
resolve ( )
}
} )
2020-07-02 11:50:39 +08:00
} )
}
function getinfo ( ) {
2020-07-02 11:52:57 +08:00
return new Promise ( ( resolve , reject ) => {
const timestamp = Math . round ( new Date ( ) . getTime ( ) ) . toString ( )
const url = {
url : ` https://sign.suning.com/sign-web/m/newsign/getDiamondInfo.do?_= ${ timestamp } ` ,
headers : JSON . parse ( VAL _signheader )
}
delete url . headers [ 'Cookie' ]
chavy . get ( url , ( error , response , data ) => {
try {
chavy . log ( ` ❕ ${ cookieName } getinfo - info: ${ JSON . stringify ( response ) } ` )
signinfo . info = JSON . parse ( data )
resolve ( )
} catch ( e ) {
chavy . msg ( cookieName , ` 获取签到信息: 失败 ` , ` 说明: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } getinfo - 获取签到信息失败: ${ e } ` )
chavy . log ( ` ❌ ${ cookieName } getinfo - response: ${ JSON . stringify ( response ) } ` )
resolve ( )
}
} )
2020-07-02 11:50:39 +08:00
} )
}
function showmsg ( ) {
2020-07-02 11:52:57 +08:00
let subTitle = ''
let detail = ''
let moreDetail = ''
if ( signinfo . signapp && signinfo . signapp . code == '1' ) {
if ( signinfo . signapp . data . todayFirstSignFlag == true ) subTitle = '签到: 成功'
else subTitle = '签到: 重复'
for ( myinfo of signinfo . info . data ) {
detail += detail == '' ? '总共: ' : ', '
detail += myinfo . showLabel
}
if ( signinfo . signapp . data . prizeLists ) {
detail += ` , 说明: 还有 ${ signinfo . signapp . data . remainingPoint } 云钻待领取 `
const prizeLists = signinfo . signapp . data . prizeLists
const customerDays = signinfo . signapp . data . customerDays
const prize = prizeLists [ customerDays - 1 ]
moreDetail += moreDetail == '' ? '' : '\n'
moreDetail += '\n💎 每日签到: '
for ( res of prize ) moreDetail += ` \n ${ res . prizeName } : ${ res . prizeContent } `
}
} else {
subTitle = '签到: 失败'
chavy . log ( ` ❌ ${ cookieName } showmsg - 每日签到: ${ JSON . stringify ( signinfo . signapp ) } ` )
2020-07-02 11:50:39 +08:00
}
2020-07-02 11:52:57 +08:00
subTitle += subTitle == '' ? '' : ', '
if ( signinfo . signweb ) {
if ( signinfo . signweb . respCode == '1' ) {
subTitle += '红包: 成功'
} else if ( signinfo . signweb . respCode == '70512' ) {
subTitle += '红包: 重复'
} else {
subTitle += '红包: 失败'
chavy . log ( ` ❌ ${ cookieName } showmsg - 每日红包 - signweb: ${ JSON . stringify ( signinfo . signweb ) } ` )
}
2020-07-02 11:50:39 +08:00
} else {
2020-07-02 11:52:57 +08:00
subTitle += '红包: 失败'
chavy . log ( ` ❌ ${ cookieName } showmsg - 每日红包 - signweb: ${ JSON . stringify ( signinfo . signweb ) } ` )
2020-07-02 11:50:39 +08:00
}
2020-07-02 11:52:57 +08:00
subTitle += subTitle == '' ? '' : ', '
if ( signinfo . signgame && signinfo . signgame . code == '1' ) {
if ( signinfo . signgame . data . resultCode == 'SG0000' ) {
subTitle += '低价: 成功'
} else if ( signinfo . signgame . data . resultCode == 'SG0103' ) {
subTitle += '低价: 重复'
} else {
subTitle += '低价: 失败'
chavy . log ( ` ❌ ${ cookieName } showmsg - 每日红包 - signgame: ${ JSON . stringify ( signinfo . signgame ) } ` )
}
2020-07-02 11:50:39 +08:00
} else {
2020-07-02 11:52:57 +08:00
subTitle += '低价: 失败'
chavy . log ( ` ❌ ${ cookieName } showmsg - 每日红包 - signgame: ${ JSON . stringify ( signinfo . signgame ) } ` )
2020-07-02 11:50:39 +08:00
}
2020-07-02 11:52:57 +08:00
if ( signinfo . webinfo && signinfo . webinfo . respData ) {
const currentIndex = signinfo . webinfo . respData . currentIndex
const detailTreeMap = signinfo . webinfo . respData . detailTreeMap
const currentMap = detailTreeMap [ currentIndex ]
if ( currentMap . signMark == true ) {
moreDetail += moreDetail == '' ? '' : '\n'
moreDetail += '\n🧧 每日红包: '
for ( res of currentMap . resList ) moreDetail += ` \n ${ res . remark } : ${ res . amount } `
} else {
chavy . log ( ` ❌ ${ cookieName } showmsg - 每日红包 - webinfo: ${ JSON . stringify ( signinfo . webinfo ) } ` )
}
2020-07-02 11:50:39 +08:00
} else {
2020-07-02 11:52:57 +08:00
chavy . log ( ` ❌ ${ cookieName } showmsg - 每日红包 - webinfo: ${ JSON . stringify ( signinfo . webinfo ) } ` )
2020-07-02 11:50:39 +08:00
}
2020-07-02 11:52:57 +08:00
if ( signinfo . signgame && signinfo . gameinfo && signinfo . gameinfo . code == 1 ) {
if ( signinfo . gameinfo . data . resultCode == 0000 ) {
moreDetail += moreDetail == '' ? '' : '\n'
moreDetail += '\n💰 天天低价: '
for ( d of signinfo . gameinfo . data . result . datas )
if ( d . obj ) moreDetail += ` \n ${ d . obj . couponRuleName } ( ${ d . obj . remainValue } 元) `
else moreDetail += ` \n ${ d . basePrizeEntity . prizeName } ( ${ d . basePrizeEntity . prizeRules } ) `
} else {
chavy . log ( ` ❌ ${ cookieName } showmsg - 天天低价 - gameinfo: ${ JSON . stringify ( signinfo . gameinfo ) } ` )
}
2020-07-02 11:50:39 +08:00
} else {
2020-07-02 11:52:57 +08:00
chavy . log ( ` ❌ ${ cookieName } showmsg - 天天低价 - gameinfo: ${ JSON . stringify ( signinfo . gameinfo ) } ` )
2020-07-02 11:50:39 +08:00
}
2020-07-02 11:52:57 +08:00
if ( moreDetail ) detail += ` \n 查看签到详情 \n ${ moreDetail } `
chavy . msg ( cookieName , subTitle , detail )
2020-07-02 11:50:39 +08:00
}
function init ( ) {
2020-07-02 11:52:57 +08:00
isSurge = ( ) => {
return undefined === this . $httpClient ? false : true
}
isQuanX = ( ) => {
return undefined === this . $task ? false : true
}
getdata = ( key ) => {
if ( isSurge ( ) ) return $persistentStore . read ( key )
if ( isQuanX ( ) ) return $prefs . valueForKey ( key )
}
setdata = ( key , val ) => {
if ( isSurge ( ) ) return $persistentStore . write ( key , val )
if ( isQuanX ( ) ) return $prefs . setValueForKey ( key , val )
}
msg = ( title , subtitle , body ) => {
if ( isSurge ( ) ) $notification . post ( title , subtitle , body )
if ( isQuanX ( ) ) $notify ( title , subtitle , body )
2020-07-02 11:50:39 +08:00
}
2020-07-02 11:52:57 +08:00
log = ( message ) => console . log ( message )
get = ( url , cb ) => {
if ( isSurge ( ) ) {
$httpClient . get ( url , cb )
}
if ( isQuanX ( ) ) {
url . method = 'GET'
$task . fetch ( url ) . then ( ( resp ) => cb ( null , resp , resp . body ) )
}
2020-07-02 11:50:39 +08:00
}
2020-07-02 11:52:57 +08:00
post = ( url , cb ) => {
if ( isSurge ( ) ) {
$httpClient . post ( url , cb )
}
if ( isQuanX ( ) ) {
url . method = 'POST'
$task . fetch ( url ) . then ( ( resp ) => cb ( null , resp , resp . body ) )
}
2020-07-02 11:50:39 +08:00
}
2020-07-02 11:52:57 +08:00
done = ( value = { } ) => {
$done ( value )
2020-07-02 11:50:39 +08:00
}
2020-07-02 11:52:57 +08:00
return { isSurge , isQuanX , msg , log , getdata , setdata , get , post , done }
2020-07-02 11:50:39 +08:00
}