From bf8b3911ae3f69fb2576f10b6ba71965cab9cf0d Mon Sep 17 00:00:00 2001 From: cdle <798731886@qq.com> Date: Wed, 18 Aug 2021 12:00:15 +0800 Subject: [PATCH] x --- models/asset.go | 119 +++++++++++++++++++++++++++++++++++++++++--- models/available.go | 1 + models/bot.go | 40 +++++---------- 3 files changed, 126 insertions(+), 34 deletions(-) diff --git a/models/asset.go b/models/asset.go index c194408..0785bb2 100644 --- a/models/asset.go +++ b/models/asset.go @@ -27,6 +27,11 @@ type Asset struct { ToExpireJd float64 ToExpireJx float64 ToExpireJs float64 + ToExpireJk float64 + Jd float64 + Jx float64 + Js float64 + Jk float64 } } @@ -35,6 +40,11 @@ var Int = func(s string) int { return i } +var Float64 = func(s string) float64 { + i, _ := strconv.ParseFloat(s, 64) + return i +} + func DailyAssetsPush() { for _, ck := range GetJdCookies() { if (ck.QQ != 0 && Config.QQID != 0 && SendQQ != nil) || ck.PushPlus != "" { @@ -61,9 +71,12 @@ func DailyAssetsPush() { } func (ck *JdCookie) Query() string { - msgs := []string{} + msgs := []string{ + fmt.Sprintf("账号:%s", ck.Nickname), + } asset := Asset{} if CookieOK(ck) { + cookie := fmt.Sprintf("pt_key=%s;pt_pin=%s;", ck.PtKey, ck.PtPin) today := time.Now().Local().Format("2006-01-02") yestoday := time.Now().Local().Add(-time.Hour * 24).Format("2006-01-02") page := 1 @@ -72,9 +85,10 @@ func (ck *JdCookie) Query() string { if end { break } - bds := getJingBeanBalanceDetail(page, fmt.Sprintf("pt_key=%s;pt_pin=%s;", ck.PtKey, ck.PtPin)) + bds := getJingBeanBalanceDetail(page, cookie) if bds == nil { end = true + msgs = append(msgs, "京豆数据异常") break } for _, bd := range bds { @@ -104,17 +118,57 @@ func (ck *JdCookie) Query() string { fmt.Sprintf("今日收入:%d京豆", asset.Bean.TodayIn), fmt.Sprintf("今日支出:%d京豆", asset.Bean.TodayOut), }...) + msgs = append(msgs, fmt.Sprintf("当前京豆:%v京豆", ck.BeanNum)) + rps := redPacket(cookie) + ysd := int(time.Now().Add(24 * time.Hour).Unix()) + if rps != nil { + for _, rp := range rps { + b := Float64(rp.Balance) + asset.RedPacket.Total += b + if strings.Contains(rp.ActivityName, "京喜") { + asset.RedPacket.Jx += b + if ysd >= rp.BeginTime { + asset.RedPacket.ToExpireJx += b + asset.RedPacket.ToExpire += b + } + } else if strings.Contains(rp.ActivityName, "极速版") { + asset.RedPacket.Js += b + if ysd >= rp.BeginTime { + asset.RedPacket.ToExpireJs += b + asset.RedPacket.ToExpire += b + } + + } else if strings.Contains(rp.ActivityName, "京东健康") { + asset.RedPacket.Jk += b + if ysd >= rp.BeginTime { + asset.RedPacket.ToExpireJk += b + asset.RedPacket.ToExpire += b + } + } else { + asset.RedPacket.Jd += b + if ysd >= rp.BeginTime { + asset.RedPacket.ToExpireJd += b + asset.RedPacket.ToExpire += b + } + } + } + msgs = append(msgs, []string{ + fmt.Sprintf("当前总红包:%.2f(今日总过期%.2f)元🧧", asset.RedPacket.Total, asset.RedPacket.ToExpire), + fmt.Sprintf("京喜红包:%.2f(今日总过期%.2f)元🧧", asset.RedPacket.Jx, asset.RedPacket.ToExpireJx), + fmt.Sprintf("极速红包:%.2f(今日总过期%.2f)元🧧", asset.RedPacket.Js, asset.RedPacket.ToExpireJs), + fmt.Sprintf("健康红包:%.2f(今日总过期%.2f)元🧧", asset.RedPacket.Jk, asset.RedPacket.ToExpireJk), + fmt.Sprintf("京东红包:%.2f(今日总过期%.2f)元🧧", asset.RedPacket.Jd, asset.RedPacket.ToExpireJd), + }...) + } else { + msgs = append(msgs, "红包数据异常") + } } else { msgs = append(msgs, []string{ "提醒:该账号已过期,请重新登录", }...) } ck.PtPin, _ = url.QueryUnescape(ck.PtPin) - return strings.Join(append([]string{ - fmt.Sprintf("账号:%s", ck.PtPin), - fmt.Sprintf("昵称:%s", ck.Nickname), - fmt.Sprintf("备注:%s", ck.Note), - }, append(msgs, fmt.Sprintf("当前京豆:%v京豆", ck.BeanNum))...), "\n") + return strings.Join(msgs, "\n") } type BeanDetail struct { @@ -142,3 +196,54 @@ func getJingBeanBalanceDetail(page int, cookie string) []BeanDetail { json.Unmarshal(data, &a) return a.DetailList } + +type RedList struct { + ActivityName string `json:"activityName"` + Balance string `json:"balance"` + BeginTime int `json:"beginTime"` + DelayRemark string `json:"delayRemark"` + Discount string `json:"discount"` + EndTime int `json:"endTime"` + HbID string `json:"hbId"` + HbState int `json:"hbState"` + IsDelay bool `json:"isDelay"` + OrgLimitStr string `json:"orgLimitStr"` +} + +func redPacket(cookie string) []RedList { + type UseRedInfo struct { + Count int `json:"count"` + RedList []RedList `json:"redList"` + } + type Data struct { + AvaiCount int `json:"avaiCount"` + Balance string `json:"balance"` + CountdownTime string `json:"countdownTime"` + ExpiredBalance string `json:"expiredBalance"` + ServerCurrTime int `json:"serverCurrTime"` + UseRedInfo UseRedInfo `json:"useRedInfo"` + } + type AutoGenerated struct { + Data Data `json:"data"` + Errcode int `json:"errcode"` + Msg string `json:"msg"` + } + + a := AutoGenerated{} + req := httplib.Get(`https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_=` + fmt.Sprint(time.Now().Unix()) + `&sceneval=2&g_login_type=1&g_ty=ls`) + req.Header("User-Agent", ua) + req.Header("Host", "m.jingxi.com") + req.Header("Accept", "*/*") + req.Header("Connection", "keep-alive") + req.Header("Accept-Language", "zh-cn") + req.Header("Accept-Encoding", "gzip, deflate, br") + req.Header("Referer", "https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961") + req.Header("Cookie", cookie) + data, err := req.Bytes() + fmt.Println(data, err) + if err != nil { + return nil + } + json.Unmarshal(data, &a) + return a.Data.UseRedInfo.RedList +} diff --git a/models/available.go b/models/available.go index 654d969..b427bf4 100644 --- a/models/available.go +++ b/models/available.go @@ -133,6 +133,7 @@ func initCookie() { } func CookieOK(ck *JdCookie) bool { + // redPacket(fmt.Sprintf("pt_key=%s;pt_pin=%s;", ck.PtKey, ck.PtPin)) if ck == nil { return true } diff --git a/models/bot.go b/models/bot.go index 5852b58..63058bc 100644 --- a/models/bot.go +++ b/models/bot.go @@ -163,29 +163,23 @@ var handleMessage = func(msgs ...interface{}) interface{} { return nil case "查询", "query": cks := GetJdCookies() - pins := "" + tmp := []JdCookie{} for _, ck := range cks { if tp == "qq" { if ck.QQ == id { - pins += "&" + ck.PtPin + tmp = append(tmp, ck) } } else if tp == "qqg" { if ck.QQ == msgs[3].(int) { - pins += "&" + ck.PtPin + tmp = append(tmp, ck) } } } - if pins == "" { + if len(tmp) == 0 { return "你尚未绑定🐶东账号,请对我说扫码,扫码后即可查询账户资产信息。" } - for _, task := range Config.Tasks { - if task.Word == msg { - task.Envs = []Env{{ - Name: "pins", - Value: pins, - }} - runTask(&task, msgs...) - } + for _, ck := range tmp { + go sendMessagee(ck.Query(), msgs...) } return nil default: @@ -249,11 +243,11 @@ var handleMessage = func(msgs ...interface{}) interface{} { } cks := GetJdCookies() a := s[2] - pins := "" + tmp := []JdCookie{} if s := strings.Split(a, "-"); len(s) == 2 { for i, ck := range cks { if i+1 >= Int(s[0]) && i+1 <= Int(s[1]) { - pins += "&" + ck.PtPin + tmp = append(tmp, ck) } } } else if x := regexp.MustCompile(`^[\s\d,]+$`).FindString(a); x != "" { @@ -261,7 +255,7 @@ var handleMessage = func(msgs ...interface{}) interface{} { for i, ck := range cks { for _, x := range xx { if fmt.Sprint(i+1) == x[1] { - pins += "&" + ck.PtPin + tmp = append(tmp, ck) } } @@ -270,24 +264,16 @@ var handleMessage = func(msgs ...interface{}) interface{} { a = strings.Replace(a, " ", "", -1) for _, ck := range cks { if strings.Contains(ck.Note, a) || strings.Contains(ck.Nickname, a) || strings.Contains(ck.PtPin, a) { - pins += "&" + ck.PtPin + tmp = append(tmp, ck) } } } - if pins == "" { + if len(tmp) == 0 { return "找不到匹配的账号" } - - for _, task := range Config.Tasks { - if task.Word == "查询" { - task.Envs = []Env{{ - Name: "pins", - Value: pins, - }} - runTask(&task, msgs...) - break - } + for _, ck := range tmp { + go sendMessagee(ck.Query(), msgs...) } return nil