From 3f7867a43ea3741f0eb6ae0ae696e712d4537467 Mon Sep 17 00:00:00 2001 From: cdle <798731886@qq.com> Date: Thu, 16 Sep 2021 10:15:33 +0800 Subject: [PATCH] update --- core/function.go | 17 + develop/jd_asset/main.go | 1223 -------------------------------------- develop/jd_help/help.go | 109 ---- 3 files changed, 17 insertions(+), 1332 deletions(-) delete mode 100644 develop/jd_asset/main.go delete mode 100644 develop/jd_help/help.go diff --git a/core/function.go b/core/function.go index 9cbaf0a..4560737 100644 --- a/core/function.go +++ b/core/function.go @@ -155,3 +155,20 @@ func handleMessage(sender im.Sender) { } } } + +func FetchCookieValue(ps ...string) string { + var key, cookies string + if len(ps) == 2 { + if len(ps[0]) > len(ps[1]) { + key, cookies = ps[1], ps[0] + } else { + key, cookies = ps[0], ps[1] + } + } + match := regexp.MustCompile(key + `=([^;]*);{0,1}`).FindStringSubmatch(cookies) + if len(match) == 2 { + return match[1] + } else { + return "" + } +} diff --git a/develop/jd_asset/main.go b/develop/jd_asset/main.go deleted file mode 100644 index d79c6b7..0000000 --- a/develop/jd_asset/main.go +++ /dev/null @@ -1,1223 +0,0 @@ -package jd_asset - -import ( - "encoding/json" - "fmt" - "net/url" - "regexp" - "strconv" - "strings" - "time" - - "github.com/beego/beego/v2/client/httplib" - "github.com/buger/jsonparser" - "github.com/cdle/sillyGirl/core" - "github.com/cdle/sillyGirl/develop/qinglong" - "github.com/cdle/sillyGirl/im" -) - -type JdCookie struct { - ID int - PtKey string - PtPin string - WsKey string - Note string - Nickname string - BeanNum string - UserLevel string - LevelName string -} - -var ua = `Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5 UCBrowser/13.4.2.1122` - -func init() { - core.AddCommand("jd", []core.Function{ - { - Rules: []string{`asset ?`}, - Admin: true, - Handle: func(s im.Sender) interface{} { - a := s.Get() - envs, err := qinglong.GetEnvs("JD_COOKIE") - if err != nil { - return err - } - if len(envs) == 0 { - return "青龙没有京东账号。" - } - cks := []JdCookie{} - for _, env := range envs { - pt_key := FetchJdCookieValue("pt_key", env.Value) - pt_pin := FetchJdCookieValue("pt_pin", env.Value) - if pt_key != "" && pt_pin != "" { - cks = append(cks, JdCookie{ - PtKey: pt_key, - PtPin: pt_pin, - Note: env.Remarks, - }) - } - } - cks = LimitJdCookie(cks, a) - if len(cks) == 0 { - return "没有匹配的京东账号。" - } - for _, ck := range cks { - go s.Reply(ck.QueryAsset()) - } - return nil - }, - }, - { - Rules: []string{`today bean(?)`}, - Admin: true, - Handle: func(s im.Sender) interface{} { - a := s.Get() - envs, err := qinglong.GetEnvs("JD_COOKIE") - if err != nil { - return err - } - if len(envs) == 0 { - return "青龙没有京东账号。" - } - cks := []JdCookie{} - for _, env := range envs { - pt_key := FetchJdCookieValue("pt_key", env.Value) - pt_pin := FetchJdCookieValue("pt_pin", env.Value) - if pt_key != "" && pt_pin != "" { - cks = append(cks, JdCookie{ - PtKey: pt_key, - PtPin: pt_pin, - Note: env.Remarks, - }) - } - } - cks = LimitJdCookie(cks, a) - if len(cks) == 0 { - return "没有匹配的京东账号。" - } - var beans []chan int - for _, ck := range cks { - var bean = make(chan int) - go GetTodayBean(&ck, bean) - beans = append(beans, bean) - } - all := 0 - for i := range beans { - all += <-beans[i] - } - return fmt.Sprintf("今日收入%d京豆。", all) - }, - }, - { - Rules: []string{`yestoday bean(?)`}, - Admin: true, - Handle: func(s im.Sender) interface{} { - a := s.Get() - envs, err := qinglong.GetEnvs("JD_COOKIE") - if err != nil { - return err - } - if len(envs) == 0 { - return "青龙没有京东账号。" - } - cks := []JdCookie{} - for _, env := range envs { - pt_key := FetchJdCookieValue("pt_key", env.Value) - pt_pin := FetchJdCookieValue("pt_pin", env.Value) - if pt_key != "" && pt_pin != "" { - cks = append(cks, JdCookie{ - PtKey: pt_key, - PtPin: pt_pin, - Note: env.Remarks, - }) - } - } - cks = LimitJdCookie(cks, a) - if len(cks) == 0 { - return "没有匹配的京东账号。" - } - var beans []chan int - for _, ck := range cks { - var bean = make(chan int) - go GetYestodayBean(&ck, bean) - beans = append(beans, bean) - } - all := 0 - for i := range beans { - all += <-beans[i] - } - return fmt.Sprintf("昨日收入%d京豆。", all) - }, - }, - { - Rules: []string{`bean(?)`}, - Admin: true, - Handle: func(s im.Sender) interface{} { - a := s.Get() - envs, err := qinglong.GetEnvs("JD_COOKIE") - if err != nil { - return err - } - if len(envs) == 0 { - return "青龙没有京东账号。" - } - cks := []JdCookie{} - for _, env := range envs { - pt_key := FetchJdCookieValue("pt_key", env.Value) - pt_pin := FetchJdCookieValue("pt_pin", env.Value) - if pt_key != "" && pt_pin != "" { - cks = append(cks, JdCookie{ - PtKey: pt_key, - PtPin: pt_pin, - Note: env.Remarks, - }) - } - } - cks = LimitJdCookie(cks, a) - if len(cks) == 0 { - return "没有匹配的京东账号。" - } - all := 0 - for _, ck := range cks { - ck.Available() - all += Int(ck.BeanNum) - } - return fmt.Sprintf("总计%d京豆。", all) - }, - }, - }) - -} - -func LimitJdCookie(cks []JdCookie, a string) []JdCookie { - ncks := []JdCookie{} - if s := strings.Split(a, "-"); len(s) == 2 { - for i := range cks { - if i+1 >= Int(s[0]) && i+1 <= Int(s[1]) { - ncks = append(ncks, cks[i]) - } - } - } else if x := regexp.MustCompile(`^[\s\d,]+$`).FindString(a); x != "" { - xx := regexp.MustCompile(`(\d+)`).FindAllStringSubmatch(a, -1) - for i := range cks { - for _, x := range xx { - if fmt.Sprint(i+1) == x[1] { - ncks = append(ncks, cks[i]) - } - } - - } - } else if a != "" { - a = strings.Replace(a, " ", "", -1) - for i := range cks { - if strings.Contains(cks[i].Note, a) || strings.Contains(cks[i].Nickname, a) || strings.Contains(cks[i].PtPin, a) { - ncks = append(ncks, cks[i]) - } - } - } - return ncks -} - -type Asset struct { - Nickname string - Bean struct { - Total int - TodayIn int - TodayOut int - YestodayIn int - YestodayOut int - ToExpire []int - } - RedPacket struct { - Total float64 - ToExpire float64 - ToExpireJd float64 - ToExpireJx float64 - ToExpireJs float64 - ToExpireJk float64 - Jd float64 - Jx float64 - Js float64 - Jk float64 - } - Other struct { - JsCoin float64 - NcStatus float64 - McStatus float64 - } -} - -var Int = func(s string) int { - i, _ := strconv.Atoi(s) - return i -} - -var Float64 = func(s string) float64 { - i, _ := strconv.ParseFloat(s, 64) - return i -} - -func (ck *JdCookie) QueryAsset() string { - msgs := []string{} - if ck.Note != "" { - msgs = append(msgs, fmt.Sprintf("账号备注:%s", ck.Note)) - } - asset := Asset{} - if ck.Available() { - msgs = append(msgs, fmt.Sprintf("用户等级:%v", ck.UserLevel)) - msgs = append(msgs, fmt.Sprintf("等级名称:%v", ck.LevelName)) - cookie := fmt.Sprintf("pt_key=%s;pt_pin=%s;", ck.PtKey, ck.PtPin) - var rpc = make(chan []RedList) - var fruit = make(chan string) - var pet = make(chan string) - var gold = make(chan int64) - var egg = make(chan int64) - var tyt = make(chan string) - var mmc = make(chan int64) - var zjb = make(chan int64) - go redPacket(cookie, rpc) - go initFarm(cookie, fruit) - go initPetTown(cookie, pet) - go jsGold(cookie, gold) - go jxncEgg(cookie, egg) - go tytCoupon(cookie, tyt) - go mmCoin(cookie, mmc) - go jdzz(cookie, zjb) - today := time.Now().Local().Format("2006-01-02") - yestoday := time.Now().Local().Add(-time.Hour * 24).Format("2006-01-02") - page := 1 - end := false - for { - if end { - msgs = append(msgs, []string{ - fmt.Sprintf("昨日收入:%d京豆", asset.Bean.YestodayIn), - fmt.Sprintf("昨日支出:%d京豆", asset.Bean.YestodayOut), - fmt.Sprintf("今日收入:%d京豆", asset.Bean.TodayIn), - fmt.Sprintf("今日支出:%d京豆", asset.Bean.TodayOut), - }...) - break - } - bds := getJingBeanBalanceDetail(page, cookie) - if bds == nil { - end = true - msgs = append(msgs, "京豆数据异常") - break - } - for _, bd := range bds { - amount := Int(bd.Amount) - if strings.Contains(bd.Date, today) { - if amount > 0 { - asset.Bean.TodayIn += amount - } else { - asset.Bean.TodayOut += -amount - } - } else if strings.Contains(bd.Date, yestoday) { - if amount > 0 { - asset.Bean.YestodayIn += amount - } else { - asset.Bean.YestodayOut += -amount - } - } else { - end = true - break - } - } - page++ - } - msgs = append(msgs, fmt.Sprintf("当前京豆:%v京豆", ck.BeanNum)) - ysd := int(time.Now().Add(24 * time.Hour).Unix()) - if rps := <-rpc; len(rps) != 0 { - for _, rp := range rps { - b := Float64(rp.Balance) - asset.RedPacket.Total += b - if strings.Contains(rp.ActivityName, "京喜") || strings.Contains(rp.OrgLimitStr, "京喜") { - asset.RedPacket.Jx += b - if ysd >= rp.EndTime { - asset.RedPacket.ToExpireJx += b - asset.RedPacket.ToExpire += b - } - } else if strings.Contains(rp.ActivityName, "极速版") { - asset.RedPacket.Js += b - if ysd >= rp.EndTime { - asset.RedPacket.ToExpireJs += b - asset.RedPacket.ToExpire += b - } - - } else if strings.Contains(rp.ActivityName, "京东健康") { - asset.RedPacket.Jk += b - if ysd >= rp.EndTime { - asset.RedPacket.ToExpireJk += b - asset.RedPacket.ToExpire += b - } - } else { - asset.RedPacket.Jd += b - if ysd >= rp.EndTime { - asset.RedPacket.ToExpireJd += b - asset.RedPacket.ToExpire += b - } - } - } - e := func(m float64) string { - if m > 0 { - return fmt.Sprintf(`(今日过期%.2f)`, m) - } - return "" - } - msgs = append(msgs, []string{ - fmt.Sprintf("所有红包:%.2f%s元🧧", asset.RedPacket.Total, e(asset.RedPacket.ToExpire)), - fmt.Sprintf("京喜红包:%.2f%s元", asset.RedPacket.Jx, e(asset.RedPacket.ToExpireJx)), - fmt.Sprintf("极速红包:%.2f%s元", asset.RedPacket.Js, e(asset.RedPacket.ToExpireJs)), - fmt.Sprintf("健康红包:%.2f%s元", asset.RedPacket.Jk, e(asset.RedPacket.ToExpireJk)), - fmt.Sprintf("京东红包:%.2f%s元", asset.RedPacket.Jd, e(asset.RedPacket.ToExpireJd)), - }...) - } else { - msgs = append(msgs, "暂无红包数据🧧") - } - msgs = append(msgs, fmt.Sprintf("东东农场:%s", <-fruit)) - msgs = append(msgs, fmt.Sprintf("东东萌宠:%s", <-pet)) - gn := <-gold - msgs = append(msgs, fmt.Sprintf("极速金币:%d(≈%.2f元)💰", gn, float64(gn)/10000)) - zjbn := <-zjb - if zjbn != 0 { - msgs = append(msgs, fmt.Sprintf("京东赚赚:%d金币(≈%.2f元)💰", zjbn, float64(zjbn)/10000)) - } else { - msgs = append(msgs, fmt.Sprintf("京东赚赚:暂无数据")) - } - mmcCoin := <-mmc - if mmcCoin != 0 { - msgs = append(msgs, fmt.Sprintf("京东秒杀:%d秒秒币(≈%.2f元)💰", mmcCoin, float64(mmcCoin)/1000)) - } else { - msgs = append(msgs, fmt.Sprintf("京东秒杀:暂无数据")) - } - msgs = append(msgs, fmt.Sprintf("推一推券:%s", <-tyt)) - msgs = append(msgs, fmt.Sprintf("惊喜牧场:%d枚鸡蛋🥚", <-egg)) - if ck.Note != "" { - msgs = append([]string{ - fmt.Sprintf("账号备注:%s", ck.Note), - }, msgs...) - } - msgs = append([]string{ - fmt.Sprintf("账号昵称:%s", ck.Nickname), - }, msgs...) - } else { - ck.PtPin, _ = url.QueryUnescape(ck.PtPin) - msgs = append(msgs, fmt.Sprintf("京东账号:%s", ck.PtPin)) - if ck.Note != "" { - msgs = append(msgs, fmt.Sprintf("账号备注:%s", ck.Note)) - } - msgs = append(msgs, []string{ - "提醒:该账号已过期,请重新登录", - }...) - } - ck.PtPin, _ = url.QueryUnescape(ck.PtPin) - return strings.Join(msgs, "\n") -} - -type BeanDetail struct { - Date string `json:"date"` - Amount string `json:"amount"` - EventMassage string `json:"eventMassage"` -} - -func getJingBeanBalanceDetail(page int, cookie string) []BeanDetail { - type AutoGenerated struct { - Code string `json:"code"` - DetailList []BeanDetail `json:"detailList"` - } - a := AutoGenerated{} - req := httplib.Post(`https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`) - req.Header("User-Agent", ua) - req.Header("Host", "api.m.jd.com") - req.Header("Content-Type", "application/x-www-form-urlencoded") - req.Header("Cookie", cookie) - req.Body(fmt.Sprintf(`body={"pageSize": "20", "page": "%d"}&appid=ld`, page)) - data, err := req.Bytes() - if err != nil { - return nil - } - 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, rpc chan []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") - req.Header("Cookie", cookie) - data, _ := req.Bytes() - json.Unmarshal(data, &a) - rpc <- a.Data.UseRedInfo.RedList -} - -func initFarm(cookie string, state chan string) { - type RightUpResouces struct { - AdvertID string `json:"advertId"` - Name string `json:"name"` - AppImage string `json:"appImage"` - AppLink string `json:"appLink"` - CxyImage string `json:"cxyImage"` - CxyLink string `json:"cxyLink"` - Type string `json:"type"` - OpenLink bool `json:"openLink"` - } - type TurntableInit struct { - TimeState int `json:"timeState"` - } - type MengchongResouce struct { - AdvertID string `json:"advertId"` - Name string `json:"name"` - AppImage string `json:"appImage"` - AppLink string `json:"appLink"` - CxyImage string `json:"cxyImage"` - CxyLink string `json:"cxyLink"` - Type string `json:"type"` - OpenLink bool `json:"openLink"` - } - type GUIDPopupTask struct { - GUIDPopupTask string `json:"guidPopupTask"` - } - type IosConfigResouces struct { - AdvertID string `json:"advertId"` - Name string `json:"name"` - AppImage string `json:"appImage"` - AppLink string `json:"appLink"` - CxyImage string `json:"cxyImage"` - CxyLink string `json:"cxyLink"` - Type string `json:"type"` - OpenLink bool `json:"openLink"` - } - type TodayGotWaterGoalTask struct { - CanPop bool `json:"canPop"` - } - type LeftUpResouces struct { - AdvertID string `json:"advertId"` - Name string `json:"name"` - AppImage string `json:"appImage"` - AppLink string `json:"appLink"` - CxyImage string `json:"cxyImage"` - CxyLink string `json:"cxyLink"` - Type string `json:"type"` - OpenLink bool `json:"openLink"` - } - type RightDownResouces struct { - AdvertID string `json:"advertId"` - Name string `json:"name"` - AppImage string `json:"appImage"` - AppLink string `json:"appLink"` - CxyImage string `json:"cxyImage"` - CxyLink string `json:"cxyLink"` - Type string `json:"type"` - OpenLink bool `json:"openLink"` - } - type FarmUserPro struct { - TotalEnergy int `json:"totalEnergy"` - TreeState int `json:"treeState"` - CreateTime int64 `json:"createTime"` - TreeEnergy int `json:"treeEnergy"` - TreeTotalEnergy int `json:"treeTotalEnergy"` - ShareCode string `json:"shareCode"` - WinTimes int `json:"winTimes"` - NickName string `json:"nickName"` - CouponKey string `json:"couponKey"` - CouponID string `json:"couponId"` - CouponEndTime int64 `json:"couponEndTime"` - Type string `json:"type"` - SimpleName string `json:"simpleName"` - Name string `json:"name"` - GoodsImage string `json:"goodsImage"` - SkuID string `json:"skuId"` - LastLoginDate int64 `json:"lastLoginDate"` - NewOldState int `json:"newOldState"` - OldMarkComplete int `json:"oldMarkComplete"` - CommonState int `json:"commonState"` - PrizeLevel int `json:"prizeLevel"` - } - type LeftDownResouces struct { - AdvertID string `json:"advertId"` - Name string `json:"name"` - AppImage string `json:"appImage"` - AppLink string `json:"appLink"` - CxyImage string `json:"cxyImage"` - CxyLink string `json:"cxyLink"` - Type string `json:"type"` - OpenLink bool `json:"openLink"` - } - type LoadFriend struct { - Code string `json:"code"` - StatisticsTimes interface{} `json:"statisticsTimes"` - SysTime int64 `json:"sysTime"` - Message interface{} `json:"message"` - FirstAddUser bool `json:"firstAddUser"` - } - type AutoGenerated struct { - Code string `json:"code"` - RightUpResouces RightUpResouces `json:"rightUpResouces"` - TurntableInit TurntableInit `json:"turntableInit"` - IosShieldConfig interface{} `json:"iosShieldConfig"` - MengchongResouce MengchongResouce `json:"mengchongResouce"` - ClockInGotWater bool `json:"clockInGotWater"` - GUIDPopupTask GUIDPopupTask `json:"guidPopupTask"` - ToFruitEnergy int `json:"toFruitEnergy"` - StatisticsTimes interface{} `json:"statisticsTimes"` - SysTime int64 `json:"sysTime"` - CanHongbaoContineUse bool `json:"canHongbaoContineUse"` - ToFlowTimes int `json:"toFlowTimes"` - IosConfigResouces IosConfigResouces `json:"iosConfigResouces"` - TodayGotWaterGoalTask TodayGotWaterGoalTask `json:"todayGotWaterGoalTask"` - LeftUpResouces LeftUpResouces `json:"leftUpResouces"` - MinSupportAPPVersion string `json:"minSupportAPPVersion"` - LowFreqStatus int `json:"lowFreqStatus"` - FunCollectionHasLimit bool `json:"funCollectionHasLimit"` - Message interface{} `json:"message"` - TreeState int `json:"treeState"` - RightDownResouces RightDownResouces `json:"rightDownResouces"` - IconFirstPurchaseInit bool `json:"iconFirstPurchaseInit"` - ToFlowEnergy int `json:"toFlowEnergy"` - FarmUserPro FarmUserPro `json:"farmUserPro"` - RetainPopupLimit int `json:"retainPopupLimit"` - ToBeginEnergy int `json:"toBeginEnergy"` - LeftDownResouces LeftDownResouces `json:"leftDownResouces"` - EnableSign bool `json:"enableSign"` - LoadFriend LoadFriend `json:"loadFriend"` - HadCompleteXgTask bool `json:"hadCompleteXgTask"` - OldUserIntervalTimes []int `json:"oldUserIntervalTimes"` - ToFruitTimes int `json:"toFruitTimes"` - OldUserSendWater []string `json:"oldUserSendWater"` - } - a := AutoGenerated{} - req := httplib.Post(`https://api.m.jd.com/client.action?functionId=initForFarm`) - req.Header("accept", "*/*") - req.Header("accept-encoding", "gzip, deflate, br") - req.Header("accept-language", "zh-CN,zh;q=0.9") - req.Header("cache-control", "no-cache") - req.Header("cookie", cookie) - req.Header("origin", "https://home.m.jd.com") - req.Header("pragma", "no-cache") - req.Header("referer", "https://home.m.jd.com/myJd/newhome.action") - req.Header("sec-fetch-dest", "empty") - req.Header("sec-fetch-mode", "cors") - req.Header("sec-fetch-site", "same-site") - req.Header("User-Agent", ua) - req.Header("Content-Type", "application/x-www-form-urlencoded") - req.Body(`body={"version":4}&appid=wh5&clientVersion=9.1.0`) - data, _ := req.Bytes() - json.Unmarshal(data, &a) - - rt := a.FarmUserPro.Name - if rt == "" { - rt = "数据异常" - } else { - if a.TreeState == 2 || a.TreeState == 3 { - rt += "已可领取⏰" - } else if a.TreeState == 1 { - rt += fmt.Sprintf("种植中,进度%.2f%%🍒", 100*float64(a.FarmUserPro.TreeEnergy)/float64(a.FarmUserPro.TreeTotalEnergy)) - } else if a.TreeState == 0 { - rt = "您忘了种植新的水果⏰" - } - } - state <- rt -} - -func initPetTown(cookie string, state chan string) { - type ResourceList struct { - AdvertID string `json:"advertId"` - ImageURL string `json:"imageUrl"` - Link string `json:"link"` - ShopID string `json:"shopId"` - } - type PetPlaceInfoList struct { - Place int `json:"place"` - Energy int `json:"energy"` - } - type PetInfo struct { - AdvertID string `json:"advertId"` - NickName string `json:"nickName"` - IconURL string `json:"iconUrl"` - ClickIconURL string `json:"clickIconUrl"` - FeedGifURL string `json:"feedGifUrl"` - HomePetImage string `json:"homePetImage"` - CrossBallURL string `json:"crossBallUrl"` - RunURL string `json:"runUrl"` - TickleURL string `json:"tickleUrl"` - } - type GoodsInfo struct { - GoodsName string `json:"goodsName"` - GoodsURL string `json:"goodsUrl"` - GoodsID string `json:"goodsId"` - ExchangeMedalNum int `json:"exchangeMedalNum"` - ActivityID string `json:"activityId"` - ActivityIds string `json:"activityIds"` - } - type Result struct { - ShareCode string `json:"shareCode"` - HisHbFlag bool `json:"hisHbFlag"` - MasterHelpPeoples []interface{} `json:"masterHelpPeoples"` - HelpSwitchOn bool `json:"helpSwitchOn"` - UserStatus int `json:"userStatus"` - TotalEnergy int `json:"totalEnergy"` - MasterInvitePeoples []interface{} `json:"masterInvitePeoples"` - ShareTo string `json:"shareTo"` - PetSportStatus int `json:"petSportStatus"` - UserImage string `json:"userImage"` - MasterHelpReward int `json:"masterHelpReward"` - ShowHongBaoExchangePop bool `json:"showHongBaoExchangePop"` - ShowNeedCollectPop bool `json:"showNeedCollectPop"` - PetSportReward string `json:"petSportReward"` - NewhandBubble bool `json:"newhandBubble"` - ResourceList []ResourceList `json:"resourceList"` - ProjectBubble bool `json:"projectBubble"` - MasterInvitePop bool `json:"masterInvitePop"` - MasterInviteReward int `json:"masterInviteReward"` - MedalNum int `json:"medalNum"` - MasterHelpPop bool `json:"masterHelpPop"` - MeetDays int `json:"meetDays"` - PetPlaceInfoList []PetPlaceInfoList `json:"petPlaceInfoList"` - MedalPercent float64 `json:"medalPercent"` - CharitableSwitchOn bool `json:"charitableSwitchOn"` - PetInfo PetInfo `json:"petInfo"` - NeedCollectEnergy int `json:"needCollectEnergy"` - FoodAmount int `json:"foodAmount"` - InviteCode string `json:"inviteCode"` - RulesURL string `json:"rulesUrl"` - PetStatus int `json:"petStatus"` - GoodsInfo GoodsInfo `json:"goodsInfo"` - } - type AutoGenerated struct { - Code string `json:"code"` - ResultCode string `json:"resultCode"` - Message string `json:"message"` - Result Result `json:"result"` - } - a := AutoGenerated{} - req := httplib.Post(`https://api.m.jd.com/client.action?functionId=initPetTown`) - req.Header("Host", "api.m.jd.com") - req.Header("User-Agent", ua) - req.Header("cookie", cookie) - req.Header("Content-Type", "application/x-www-form-urlencoded") - req.Body(`body={}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`) - data, _ := req.Bytes() - json.Unmarshal(data, &a) - rt := "" - if a.Code == "0" && a.ResultCode == "0" && a.Message == "success" { - if a.Result.UserStatus == 0 { - rt = "请手动开启活动⏰" - } else if a.Result.GoodsInfo.GoodsName == "" { - rt = "你忘了选购新的商品⏰" - } else if a.Result.PetStatus == 5 { - rt = a.Result.GoodsInfo.GoodsName + "已可领取⏰" - } else if a.Result.PetStatus == 6 { - rt = a.Result.GoodsInfo.GoodsName + "未继续领养新的物品⏰" - } else { - rt = a.Result.GoodsInfo.GoodsName + fmt.Sprintf("领养中,进度%.2f%%,勋章%d/%d🐶", a.Result.MedalPercent, a.Result.MedalNum, a.Result.GoodsInfo.ExchangeMedalNum) - } - } else { - rt = "数据异常" - } - state <- rt -} - -func jsGold(cookie string, state chan int64) { // - - type BalanceVO struct { - CashBalance string `json:"cashBalance"` - EstimatedAmount string `json:"estimatedAmount"` - ExchangeGold string `json:"exchangeGold"` - FormatGoldBalance string `json:"formatGoldBalance"` - GoldBalance int `json:"goldBalance"` - } - type Gears struct { - Amount string `json:"amount"` - ExchangeAmount string `json:"exchangeAmount"` - Order int `json:"order"` - Status int `json:"status"` - Type int `json:"type"` - } - type Data struct { - Advertise string `json:"advertise"` - BalanceVO BalanceVO `json:"balanceVO"` - Gears []Gears `json:"gears"` - IsGetCoupon bool `json:"isGetCoupon"` - IsGetCouponEid bool `json:"isGetCouponEid"` - IsLogin bool `json:"isLogin"` - NewPeople bool `json:"newPeople"` - } - type AutoGenerated struct { - Code int `json:"code"` - Data Data `json:"data"` - IsSuccess bool `json:"isSuccess"` - Message string `json:"message"` - RequestID string `json:"requestId"` - } - a := AutoGenerated{} - req := httplib.Post(`https://api.m.jd.com?functionId=MyAssetsService.execute&appid=market-task-h5`) - req.Header("Accept", "application/json, text/plain, */*") - req.Header("Accept-Encoding", "gzip, deflate, br") - req.Header("Cookie", cookie) - req.Header("Content-Type", "application/x-www-form-urlencoded") - req.Header("Origin", "https://gold.jd.com") - req.Header("Host", "api.m.jd.com") - req.Header("Connection", "keep-alive") - req.Header("User-Agent", ua) - req.Header("Referer", "https://gold.jd.com/") - req.Body(`functionId=MyAssetsService.execute&body={"method":"goldShopPage","data":{"channel":1}}&_t=` + fmt.Sprint(time.Now().Unix()) + `&appid=market-task-h5;`) - data, _ := req.Bytes() - json.Unmarshal(data, &a) - state <- int64(a.Data.BalanceVO.GoldBalance) -} - -func jxncEgg(cookie string, state chan int64) { - req := httplib.Get("https://m.jingxi.com/jxmc/queryservice/GetHomePageInfo?channel=7&sceneid=1001&activeid=null&activekey=null&isgift=1&isquerypicksite=1&_stk=activeid%2Cactivekey%2Cchannel%2Cisgift%2Cisquerypicksite%2Csceneid&_ste=1&h5st=20210818211830955%3B4408816258824161%3B10028%3Btk01w8db21b2130ny2eg0siAPpNQgBqjGzYfuG6IP7Z%2BAOB40BiqLQ%2Blglfi540AB%2FaQrTduHbnk61ngEeKn813gFeRD%3Bd9a0b833bf99a29ed726cbffa07ba955cc27d1ff7d2d55552878fc18fc667929&_=1629292710957&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/pingou/jxmc/index.html?nativeConfig=%7B%22immersion%22%3A1%2C%22toColor%22%3A%22%23e62e0f%22%7D&;__mcwvt=sjcp&ptag=7155.9.95") - req.Header("Cookie", cookie) - data, _ := req.Bytes() - - egg, _ := jsonparser.GetInt(data, "data", "eggcnt") - state <- egg -} - -func tytCoupon(cookie string, state chan string) { - - type DiscountInfo struct { - High string `json:"high"` - Info []interface{} `json:"info"` - } - type ExtInfo struct { - Num5 string `json:"5"` - Num12 string `json:"12"` - Num16 string `json:"16"` - Num21 string `json:"21"` - Num52 string `json:"52"` - Num54 string `json:"54"` - Num74 string `json:"74"` - BusinessLabel string `json:"business_label"` - LimitOrganization string `json:"limit_organization"` - UserLabel string `json:"user_label"` - } - type Useable struct { - AreaDesc string `json:"areaDesc"` - AreaType int `json:"areaType"` - Batchid string `json:"batchid"` - BeanNumForPerson int `json:"beanNumForPerson"` - BeanNumForPlat int `json:"beanNumForPlat"` - BeginTime string `json:"beginTime"` - CanBeSell bool `json:"canBeSell"` - CanBeShare bool `json:"canBeShare"` - CompleteTime string `json:"completeTime"` - CouponKind int `json:"couponKind"` - CouponStyle int `json:"couponStyle"` - CouponTitle string `json:"couponTitle"` - Couponid string `json:"couponid"` - Coupontype int `json:"coupontype"` - CreateTime string `json:"createTime"` - Discount string `json:"discount"` - DiscountInfo DiscountInfo `json:"discountInfo"` - EndTime string `json:"endTime"` - ExpireType int `json:"expireType"` - ExtInfo ExtInfo `json:"extInfo"` - HourCoupon int `json:"hourCoupon"` - IsOverlay int `json:"isOverlay"` - LimitStr string `json:"limitStr"` - LinkStr string `json:"linkStr"` - OperateTime string `json:"operateTime"` - OrderID string `json:"orderId"` - OverlayDesc string `json:"overlayDesc"` - PassKey string `json:"passKey"` - Pin string `json:"pin"` - PlatFormInfo string `json:"platFormInfo"` - Platform int `json:"platform"` - PlatformDetails []interface{} `json:"platformDetails"` - PwdKey string `json:"pwdKey"` - Quota string `json:"quota"` - SellID string `json:"sellId"` - ShareID string `json:"shareId"` - ShopID string `json:"shopId"` - ShopName string `json:"shopName"` - State int `json:"state"` - UseTime string `json:"useTime"` - VenderID string `json:"venderId"` - } - type Coupon struct { - Curtimestamp int `json:"curtimestamp"` - ExpiredCount int `json:"expired_count"` - IsHideBaiTiaoInJxWxapp int `json:"isHideBaiTiaoInJxWxapp"` - IsHideMailInWxapp int `json:"isHideMailInWxapp"` - Useable []Useable `json:"useable"` - UseableCount int `json:"useable_count"` - UsedCount int `json:"used_count"` - } - type AutoGenerated struct { - Coupon Coupon `json:"coupon"` - ErrMsg string `json:"errMsg"` - ErrorCode int `json:"errorCode"` - HasNext int `json:"hasNext"` - Jdpin string `json:"jdpin"` - State int `json:"state"` - Uin string `json:"uin"` - } - a := AutoGenerated{} - req := httplib.Get(`https://m.jingxi.com/activeapi/queryjdcouponlistwithfinance?state=1&wxadd=1&filterswitch=1&_=1629296270692&sceneval=2&g_login_type=1&callback=jsonpCBKB&g_ty=ls`) - req.Header("Accept", "*/*") - req.Header("Connection", "keep-alive") - req.Header("Accept-Encoding", "gzip, deflate, br") - req.Header("Cookie", cookie) - req.Header("Content-Type", "application/x-www-form-urlencoded") - req.Header("Host", "m.jingxi.com") - - req.Header("User-Agent", ua) - req.Header("Referer", "https://st.jingxi.com/my/coupon/jx.shtml?sceneval=2&ptag=7155.1.18") - data, _ := req.Bytes() - res := regexp.MustCompile(`jsonpCBKB[(](.*)\s+[)];}catch`).FindSubmatch(data) - rt := "暂无数据" - if len(res) > 0 { - json.Unmarshal(res[1], &a) - num := 0 - toexp := 0 - tm := int(time.Now().Unix() * 1000) - for _, cp := range a.Coupon.Useable { - if strings.Contains(cp.CouponTitle, "推推5.01") { - num++ - if Int(cp.EndTime) < tm { - toexp++ - } - } - } - if num == 0 { - rt = "无优惠券" - } else { - rt = fmt.Sprintf("%d张5元优惠券", num) - if toexp > 0 { - rt += fmt.Sprintf("(今天将过期%d张)⏰", toexp) - } else { - rt += "🎰" - } - } - } - state <- rt -} - -func mmCoin(cookie string, state chan int64) { - req := httplib.Post(`https://api.m.jd.com/client.action`) - req.Header("Host", "api.m.jd.com") - req.Header("Accept", "application/json, text/plain, */*") - req.Header("Origin", "https://h5.m.jd.com") - - req.Header("User-Agent", ua) - req.Header("cookie", cookie) - req.Header("Content-Type", "application/x-www-form-urlencoded") - req.Body(`uuid=3245ad3d16ab2153c69f9ca91cd2e931b06a3bb8&clientVersion=10.1.0&client=wh5&osVersion=&area=&networkType=wifi&functionId=homePageV2&body=%7B%7D&appid=SecKill2020`) - data, _ := req.Bytes() - mmc, _ := jsonparser.GetInt(data, "result", "assignment", "assignmentPoints") - state <- mmc -} - -func jdzz(cookie string, state chan int64) { // - req := httplib.Get(`https://api.m.jd.com/client.action?functionId=interactTaskIndex&body={}&client=wh5&clientVersion=9.1.0`) - req.Header("Host", "api.m.jd.com") - req.Header("Accept-Language", "zh-cn") - req.Header("Accept-Encoding", "gzip, deflate, br") - req.Header("Referer", "http://wq.jd.com/wxapp/pages/hd-interaction/index/index") - req.Header("User-Agent", ua) - req.Header("cookie", cookie) - req.Header("Content-Type", "application/json") - data, _ := req.Bytes() - mmc, _ := jsonparser.GetString(data, "data", "totalNum") - state <- int64(Int(mmc)) -} - -func (ck *JdCookie) Available() bool { - cookie := "pt_key=" + ck.PtKey + ";pt_pin=" + ck.PtPin + ";" - if ck == nil { - return true - } - req := httplib.Get("https://me-api.jd.com/user_new/info/GetJDUserInfoUnion") - req.Header("Cookie", cookie) - req.Header("Accept", "*/*") - req.Header("Accept-Language", "zh-cn,") - req.Header("Connection", "keep-alive,") - req.Header("Referer", "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&") - req.Header("Host", "me-api.jd.com") - req.Header("User-Agent", "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") - data, err := req.Bytes() - if err != nil { - return true - } - ui := &UserInfoResult{} - if nil != json.Unmarshal(data, ui) { - return true - } - switch ui.Retcode { - case "1001": //ck.BeanNum - if ui.Msg == "not login" { - return false - } - case "0": - if url.QueryEscape(ui.Data.UserInfo.BaseInfo.CurPin) != ck.PtPin { - return av2(cookie) - } - if ui.Data.UserInfo.BaseInfo.Nickname != ck.Nickname || ui.Data.AssetInfo.BeanNum != ck.BeanNum || ui.Data.UserInfo.BaseInfo.UserLevel != ck.UserLevel || ui.Data.UserInfo.BaseInfo.LevelName != ck.LevelName { - ck.UserLevel = ui.Data.UserInfo.BaseInfo.UserLevel - ck.LevelName = ui.Data.UserInfo.BaseInfo.LevelName - ck.Nickname = ui.Data.UserInfo.BaseInfo.Nickname - ck.BeanNum = ui.Data.AssetInfo.BeanNum - } - return true - } - return av2(cookie) -} - -func av2(cookie string) bool { - req := httplib.Get(`https://m.jingxi.com/user/info/GetJDUserBaseInfo?_=1629334995401&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/userinfo.html?&ptag=7205.12.4") - req.Header("Cookie", cookie) - data, err := req.String() - if err != nil { - return true - } - return !strings.Contains(data, "login") -} - -type UserInfoResult struct { - Data struct { - JdVvipCocoonInfo struct { - JdVvipCocoon struct { - DisplayType int `json:"displayType"` - HitTypeList []int `json:"hitTypeList"` - Link string `json:"link"` - Price string `json:"price"` - Qualification int `json:"qualification"` - SellingPoints string `json:"sellingPoints"` - } `json:"JdVvipCocoon"` - JdVvipCocoonStatus string `json:"JdVvipCocoonStatus"` - } `json:"JdVvipCocoonInfo"` - JdVvipInfo struct { - JdVvipStatus string `json:"jdVvipStatus"` - } `json:"JdVvipInfo"` - AssetInfo struct { - AccountBalance string `json:"accountBalance"` - BaitiaoInfo struct { - AvailableLimit string `json:"availableLimit"` - BaiTiaoStatus string `json:"baiTiaoStatus"` - Bill string `json:"bill"` - BillOverStatus string `json:"billOverStatus"` - Outstanding7Amount string `json:"outstanding7Amount"` - OverDueAmount string `json:"overDueAmount"` - OverDueCount string `json:"overDueCount"` - UnpaidForAll string `json:"unpaidForAll"` - UnpaidForMonth string `json:"unpaidForMonth"` - } `json:"baitiaoInfo"` - BeanNum string `json:"beanNum"` - CouponNum string `json:"couponNum"` - CouponRed string `json:"couponRed"` - RedBalance string `json:"redBalance"` - } `json:"assetInfo"` - FavInfo struct { - FavDpNum string `json:"favDpNum"` - FavGoodsNum string `json:"favGoodsNum"` - FavShopNum string `json:"favShopNum"` - FootNum string `json:"footNum"` - IsGoodsRed string `json:"isGoodsRed"` - IsShopRed string `json:"isShopRed"` - } `json:"favInfo"` - GrowHelperCoupon struct { - AddDays int `json:"addDays"` - BatchID int `json:"batchId"` - CouponKind int `json:"couponKind"` - CouponModel int `json:"couponModel"` - CouponStyle int `json:"couponStyle"` - CouponType int `json:"couponType"` - Discount float64 `json:"discount"` - LimitType int `json:"limitType"` - MsgType int `json:"msgType"` - Quota float64 `json:"quota"` - RoleID int `json:"roleId"` - State int `json:"state"` - Status int `json:"status"` - } `json:"growHelperCoupon"` - KplInfo struct { - KplInfoStatus string `json:"kplInfoStatus"` - Mopenbp17 string `json:"mopenbp17"` - Mopenbp22 string `json:"mopenbp22"` - } `json:"kplInfo"` - OrderInfo struct { - CommentCount string `json:"commentCount"` - Logistics []interface{} `json:"logistics"` - OrderCountStatus string `json:"orderCountStatus"` - ReceiveCount string `json:"receiveCount"` - WaitPayCount string `json:"waitPayCount"` - } `json:"orderInfo"` - PlusPromotion struct { - Status int `json:"status"` - } `json:"plusPromotion"` - UserInfo struct { - BaseInfo struct { - AccountType string `json:"accountType"` - BaseInfoStatus string `json:"baseInfoStatus"` - CurPin string `json:"curPin"` - DefinePin string `json:"definePin"` - HeadImageURL string `json:"headImageUrl"` - LevelName string `json:"levelName"` - Nickname string `json:"nickname"` - Pinlist string `json:"pinlist"` - UserLevel string `json:"userLevel"` - } `json:"baseInfo"` - IsHideNavi string `json:"isHideNavi"` - IsHomeWhite string `json:"isHomeWhite"` - IsJTH string `json:"isJTH"` - IsKaiPu string `json:"isKaiPu"` - IsPlusVip string `json:"isPlusVip"` - IsQQFans string `json:"isQQFans"` - IsRealNameAuth string `json:"isRealNameAuth"` - IsWxFans string `json:"isWxFans"` - Jvalue string `json:"jvalue"` - OrderFlag string `json:"orderFlag"` - PlusInfo struct { - } `json:"plusInfo"` - XbScore string `json:"xbScore"` - } `json:"userInfo"` - UserLifeCycle struct { - IdentityID string `json:"identityId"` - LifeCycleStatus string `json:"lifeCycleStatus"` - TrackID string `json:"trackId"` - } `json:"userLifeCycle"` - } `json:"data"` - Msg string `json:"msg"` - Retcode string `json:"retcode"` - Timestamp int64 `json:"timestamp"` -} - -func FetchJdCookieValue(ps ...string) string { - var key, cookies string - if len(ps) == 2 { - if len(ps[0]) > len(ps[1]) { - key, cookies = ps[1], ps[0] - } else { - key, cookies = ps[0], ps[1] - } - } - match := regexp.MustCompile(key + `=([^;]*);{0,1}`).FindStringSubmatch(cookies) - if len(match) == 2 { - return match[1] - } else { - return "" - } -} - -func GetTodayBean(ck *JdCookie, state chan int) { - cookie := fmt.Sprintf("pt_key=%s;pt_pin=%s;", ck.PtKey, ck.PtPin) - today := time.Now().Local().Format("2006-01-02") - page := 1 - end := false - in := 0 - defer func() { - state <- in - }() - for { - if end { - return - } - bds := getJingBeanBalanceDetail(page, cookie) - if bds == nil { - break - } - for _, bd := range bds { - amount := Int(bd.Amount) - if strings.Contains(bd.Date, today) { - if amount > 0 { - in += amount - } else { - - } - } else { - end = true - break - } - } - page++ - } - return -} - -func GetYestodayBean(ck *JdCookie, state chan int) { - 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 - end := false - in := 0 - defer func() { - state <- in - }() - for { - if end { - return - } - bds := getJingBeanBalanceDetail(page, cookie) - if bds == nil { - break - } - for _, bd := range bds { - amount := Int(bd.Amount) - if strings.Contains(bd.Date, yestoday) { - if amount > 0 { - in += amount - } else { - - } - } else if strings.Contains(bd.Date, today) { - - } else { - end = true - break - } - } - page++ - } - return -} diff --git a/develop/jd_help/help.go b/develop/jd_help/help.go deleted file mode 100644 index 92d1eed..0000000 --- a/develop/jd_help/help.go +++ /dev/null @@ -1,109 +0,0 @@ -package jd_help - -import ( - "regexp" - "strings" - - "github.com/beego/beego/v2/core/logs" - "github.com/cdle/sillyGirl/develop/qinglong" -) - -func init() { - crons, _ := qinglong.GetCrons("") - for _, cron := range crons { - if strings.Contains(cron.Command, "jd_get_share_code.js") && cron.IsDisabled == 0 { - data, err := qinglong.GetCronLog(cron.ID) - if err != nil { - logs.Warn("助力码日志获取失败:%v", err) - return - } - if data == "" { - logs.Warn("助力码日志为空:%v", err) - return - } - var codes = map[string][]string{ - "Fruit": {}, - "Pet": {}, - "Bean": {}, - "JdFactory": {}, - "DreamFactory": {}, - "Sgmh": {}, - "Cash": {}, - } - for _, v := range regexp.MustCompile(`京东账号\d*((.*))(.*)】(\S*)`).FindAllStringSubmatch(data, -1) { - if !strings.Contains(v[3], "种子") && !strings.Contains(v[3], "undefined") { - // pt_pin := url.QueryEscape(v[1]) - for key, ss := range map[string][]string{ - "Fruit": {"京东农场", "东东农场"}, - "Pet": {"京东萌宠"}, - "Bean": {"种豆得豆"}, - "JdFactory": {"东东工厂"}, - "DreamFactory": {"京喜工厂"}, - "Jdzz": {"京东赚赚"}, - "Sgmh": {"闪购盲盒"}, - "Cash": {"签到领现金"}, - } { - for _, s := range ss { - if strings.Contains(v[2], s) && v[3] != "" { - codes[key] = append(codes[key], v[3]) - } - } - } - } - } - var e = map[string]string{ - "Fruit": "", - "Pet": "", - "Bean": "", - "JdFactory": "", - "DreamFactory": "", - "Sgmh": "", - "Cfd": "", - "Cash": "", - } - for k := range codes { - vv := codes[k] - for i := range vv { - vv[i] = strings.Replace(vv[i], `"`, `\"`, -1) - - } - e[k] += strings.Join(vv, "@") - } - for k := range e { - n := []string{} - for i := 0; i < 20; i++ { - n = append(n, e[k]) - } - e[k] = strings.Join(n, "&") - } - var f = map[string]string{} - for k := range e { - switch k { - case "Fruit": - f["FRUITSHARECODES"] = e[k] - case "Pet": - f["PETSHARECODES"] = e[k] - case "Bean": - f["PLANT_BEAN_SHARECODES"] = e[k] - case "JdFactory": - f["DDFACTORY_SHARECODES"] = e[k] - case "DreamFactory": - f["DREAM_FACTORY_SHARE_CODES"] = e[k] - case "Sgmh": - f["JDSGMH_SHARECODES"] = e[k] - case "Cash": - f["JD_CASH_SHARECODES"] = e[k] - } - } - envs := []qinglong.Env{} - for i := range f { - envs = append(envs, qinglong.Env{ - Name: i, - Value: f[i], - }) - } - qinglong.SetConfigEnv(envs...) - return - } - } -}