|
|
|
|
@ -1,7 +1,19 @@
|
|
|
|
|
package cmd
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"crypto/md5"
|
|
|
|
|
"encoding/base64"
|
|
|
|
|
"encoding/hex"
|
|
|
|
|
"fmt"
|
|
|
|
|
"math/rand"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/go-resty/resty/v2"
|
|
|
|
|
"github.com/mizuki1412/go-core-kit/class/exception"
|
|
|
|
|
"github.com/mizuki1412/go-core-kit/service/configkit"
|
|
|
|
|
"github.com/spf13/cast"
|
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
|
"github.com/tidwall/gjson"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
|
@ -12,6 +24,134 @@ var testCmd = &cobra.Command{
|
|
|
|
|
Use: "test",
|
|
|
|
|
Short: "Only for test",
|
|
|
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
|
|
|
|
|
|
|
|
res := getUserIds()
|
|
|
|
|
fmt.Println(res)
|
|
|
|
|
for _, v := range res {
|
|
|
|
|
result, err := CheckUser(
|
|
|
|
|
v,
|
|
|
|
|
WMSToken,
|
|
|
|
|
)
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(exception.New(err.Error()))
|
|
|
|
|
}
|
|
|
|
|
moduleResultList := gjson.Get(result, "data.moduleResultList").Array()
|
|
|
|
|
qianfei := moduleResultList[0].Get("itemList").Array()[3].Get("itemResult").String()
|
|
|
|
|
lixian := moduleResultList[3].Get("itemList").Array()[0].Get("itemResult").String()
|
|
|
|
|
if qianfei == "是" && lixian == "离线" {
|
|
|
|
|
fmt.Println(v + " 欠费且离线")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func getUserIds() []string {
|
|
|
|
|
var m []string
|
|
|
|
|
client := resty.New().SetRetryCount(5).SetRetryWaitTime(20 * time.Second)
|
|
|
|
|
resp, err := client.R().
|
|
|
|
|
SetHeaders(map[string]string{
|
|
|
|
|
"Authorization": "HaoXian " + cast.ToString(configkit.Get("token", "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjo5MzYsInVzZXJfa2V5IjoiNzYzNjQyZTktNmMyZS00ODdkLWE3NWItNTM5NGYyZmFmMjBlIiwidXNlcm5hbWUiOiJ2emphZXhoeTAxMzMifQ.42oypkCmHDoqrRHI2J0K-7Ub2Acc7YjfaddW8xlOjirjaeGtW8Xy1sSUrLDDS0_ep2qgmO8Yj9tqUlHFhYjzVw")),
|
|
|
|
|
"Content-Type": "application/json;charset=UTF-8",
|
|
|
|
|
"Cookie": "Admin-Expires-In=720; Admin-Token=" + cast.ToString(configkit.Get("token", "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjo5MzYsInVzZXJfa2V5IjoiNzYzNjQyZTktNmMyZS00ODdkLWE3NWItNTM5NGYyZmFmMjBlIiwidXNlcm5hbWUiOiJ2emphZXhoeTAxMzMifQ.42oypkCmHDoqrRHI2J0K-7Ub2Acc7YjfaddW8xlOjirjaeGtW8Xy1sSUrLDDS0_ep2qgmO8Yj9tqUlHFhYjzVw")),
|
|
|
|
|
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
|
|
|
|
|
}).SetBody(map[string]string{
|
|
|
|
|
"eqptId": "124390484",
|
|
|
|
|
"regionId": "A",
|
|
|
|
|
}).Post("http://132.151.25.19:15609/prod-api/eqpt/resEqpt/portOfEqpt")
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(exception.New(err.Error()))
|
|
|
|
|
}
|
|
|
|
|
arr := gjson.Get(resp.String(), "data").Array()
|
|
|
|
|
for i, v := range arr {
|
|
|
|
|
if i == 0 || v.Get("STATE").String() != "A" {
|
|
|
|
|
continue
|
|
|
|
|
} else {
|
|
|
|
|
id := v.Get("SUBSCRIBER_ID").String()
|
|
|
|
|
resp, err = client.R().
|
|
|
|
|
SetHeaders(map[string]string{
|
|
|
|
|
"Authorization": "HaoXian " + cast.ToString(configkit.Get("token", "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjo5MzYsInVzZXJfa2V5IjoiNzYzNjQyZTktNmMyZS00ODdkLWE3NWItNTM5NGYyZmFmMjBlIiwidXNlcm5hbWUiOiJ2emphZXhoeTAxMzMifQ.42oypkCmHDoqrRHI2J0K-7Ub2Acc7YjfaddW8xlOjirjaeGtW8Xy1sSUrLDDS0_ep2qgmO8Yj9tqUlHFhYjzVw")),
|
|
|
|
|
"Content-Type": "application/json;charset=UTF-8",
|
|
|
|
|
"Cookie": "Admin-Expires-In=720; Admin-Token=" + cast.ToString(configkit.Get("token", "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjo5MzYsInVzZXJfa2V5IjoiNzYzNjQyZTktNmMyZS00ODdkLWE3NWItNTM5NGYyZmFmMjBlIiwidXNlcm5hbWUiOiJ2emphZXhoeTAxMzMifQ.42oypkCmHDoqrRHI2J0K-7Ub2Acc7YjfaddW8xlOjirjaeGtW8Xy1sSUrLDDS0_ep2qgmO8Yj9tqUlHFhYjzVw")),
|
|
|
|
|
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
|
|
|
|
|
}).SetQueryParams(map[string]string{
|
|
|
|
|
"productInstanceId": id,
|
|
|
|
|
"regionId": "A",
|
|
|
|
|
"state": "A",
|
|
|
|
|
"sysMenuId": "2166",
|
|
|
|
|
}).Get("http://132.151.25.19:15609/prod-api/resource/queryProductInfo/portUserList")
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(exception.New(err.Error()))
|
|
|
|
|
}
|
|
|
|
|
if len(gjson.Get(resp.String(), "data").Array()) > 0 {
|
|
|
|
|
m = append(m, gjson.Get(resp.String(), "data").Array()[0].Get("bandNumber").String())
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return m
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
AppID = "gkSystem"
|
|
|
|
|
AppSec = "123456"
|
|
|
|
|
UserType = 1
|
|
|
|
|
WMSToken = "2521870EF1B066C03DAE4A3F954961A4C22BC06A5FBCD5B54AD4586B24755772817529295CB7A609E022DE1810993F01"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
|
|
|
|
|
|
|
|
|
|
func randomString(n int) string {
|
|
|
|
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
|
|
|
|
|
|
|
|
b := make([]byte, n)
|
|
|
|
|
for i := range b {
|
|
|
|
|
b[i] = chars[r.Intn(len(chars))]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return string(b)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func buildSign() (string, string, int64) {
|
|
|
|
|
timestamp := time.Now().UnixMilli()
|
|
|
|
|
nonceStr := randomString(32)
|
|
|
|
|
raw := fmt.Sprintf(
|
|
|
|
|
"%s_%s_%d_%s",
|
|
|
|
|
AppID,
|
|
|
|
|
AppSec,
|
|
|
|
|
timestamp,
|
|
|
|
|
nonceStr,
|
|
|
|
|
)
|
|
|
|
|
sum := md5.Sum([]byte(raw))
|
|
|
|
|
md5Hex := hex.EncodeToString(sum[:])
|
|
|
|
|
|
|
|
|
|
sign := base64.StdEncoding.EncodeToString(
|
|
|
|
|
[]byte(md5Hex),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return sign, nonceStr, timestamp
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func CheckUser(account string, token string) (string, error) {
|
|
|
|
|
sign, nonceStr, timestamp := buildSign()
|
|
|
|
|
body := map[string]any{
|
|
|
|
|
"account": base64.StdEncoding.EncodeToString([]byte(account)),
|
|
|
|
|
"type": UserType,
|
|
|
|
|
"appId": AppID,
|
|
|
|
|
"sign": sign,
|
|
|
|
|
"nonceStr": nonceStr,
|
|
|
|
|
"timestamp": timestamp,
|
|
|
|
|
}
|
|
|
|
|
resp, err := resty.New().
|
|
|
|
|
R().
|
|
|
|
|
SetHeader("Content-Type", "application/json").
|
|
|
|
|
SetQueryParam("touchKey", AppID).
|
|
|
|
|
SetQueryParam("appSec", AppSec).
|
|
|
|
|
SetQueryParam("token", token).
|
|
|
|
|
SetBody(body).
|
|
|
|
|
Post("https://zjgkappservice.zj186.com/diagnosed/checkUser")
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(exception.New(err.Error()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return resp.String(), nil
|
|
|
|
|
}
|
|
|
|
|
|