2021-11-12 07:46:33 +00:00
|
|
|
|
package lib
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
2022-03-17 15:11:43 +00:00
|
|
|
|
"net/http"
|
2021-11-27 08:24:24 +00:00
|
|
|
|
"time"
|
2021-11-12 07:46:33 +00:00
|
|
|
|
|
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
|
"github.com/tidwall/gjson"
|
2022-08-14 04:14:46 +00:00
|
|
|
|
|
2022-12-14 07:43:39 +00:00
|
|
|
|
"github.com/sjkhsl/study_xxqg/utils"
|
2021-11-12 07:46:33 +00:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type Score struct {
|
2022-02-16 07:10:38 +00:00
|
|
|
|
TotalScore int `json:"total_score"`
|
|
|
|
|
TodayScore int `json:"today_score"`
|
|
|
|
|
Content map[string]Data `json:"content"`
|
2021-11-12 07:46:33 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Data struct {
|
2022-02-16 07:10:38 +00:00
|
|
|
|
CurrentScore int `json:"current_score"`
|
|
|
|
|
MaxScore int `json:"max_score"`
|
2021-11-12 07:46:33 +00:00
|
|
|
|
}
|
|
|
|
|
|
2023-08-21 09:33:11 +00:00
|
|
|
|
// 获取用户总分
|
2022-03-17 15:11:43 +00:00
|
|
|
|
func GetUserScore(cookies []*http.Cookie) (Score, error) {
|
2021-11-12 07:46:33 +00:00
|
|
|
|
var score Score
|
|
|
|
|
var resp []byte
|
2022-08-14 04:14:46 +00:00
|
|
|
|
|
|
|
|
|
header := map[string]string{
|
2021-11-12 07:46:33 +00:00
|
|
|
|
"Cache-Control": "no-cache",
|
2022-08-14 04:14:46 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
client := utils.GetClient()
|
|
|
|
|
response, err := client.R().SetCookies(cookies...).SetHeaders(header).Get(userTotalscoreUrl)
|
2021-11-12 07:46:33 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
log.Errorln("获取用户总分错误" + err.Error())
|
|
|
|
|
return Score{}, err
|
|
|
|
|
}
|
2022-08-14 04:14:46 +00:00
|
|
|
|
resp = response.Bytes()
|
2021-11-12 07:46:33 +00:00
|
|
|
|
score.TotalScore = int(gjson.GetBytes(resp, "data.score").Int())
|
|
|
|
|
|
2022-08-14 04:14:46 +00:00
|
|
|
|
response, err = client.R().SetCookies(cookies...).SetHeaders(header).Get(userTodaytotalscoreUrl)
|
|
|
|
|
if err != nil {
|
2023-08-21 09:33:11 +00:00
|
|
|
|
log.Errorln("获取用户今日得分错误" + err.Error())
|
2021-11-12 07:46:33 +00:00
|
|
|
|
return Score{}, err
|
|
|
|
|
}
|
2022-08-14 04:14:46 +00:00
|
|
|
|
resp = response.Bytes()
|
2021-11-12 07:46:33 +00:00
|
|
|
|
score.TodayScore = int(gjson.GetBytes(resp, "data.score").Int())
|
|
|
|
|
|
2022-08-14 04:14:46 +00:00
|
|
|
|
response, err = client.R().SetCookies(cookies...).SetHeaders(header).Get(userRatescoreUrl)
|
2021-11-12 07:46:33 +00:00
|
|
|
|
if err != nil {
|
2023-08-21 09:33:11 +00:00
|
|
|
|
log.Errorln("获取用户详情得分错误" + err.Error())
|
2021-11-12 07:46:33 +00:00
|
|
|
|
return Score{}, err
|
|
|
|
|
}
|
2022-08-14 04:14:46 +00:00
|
|
|
|
resp = response.Bytes()
|
2021-11-12 07:46:33 +00:00
|
|
|
|
datas := gjson.GetBytes(resp, "data.taskProgress").Array()
|
2023-06-24 02:44:24 +00:00
|
|
|
|
m := make(map[string]Data, 4)
|
2021-11-12 07:46:33 +00:00
|
|
|
|
m["article"] = Data{
|
|
|
|
|
CurrentScore: int(datas[0].Get("currentScore").Int()),
|
|
|
|
|
MaxScore: int(datas[0].Get("dayMaxScore").Int()),
|
|
|
|
|
}
|
|
|
|
|
m["video"] = Data{
|
|
|
|
|
CurrentScore: int(datas[1].Get("currentScore").Int()),
|
|
|
|
|
MaxScore: int(datas[1].Get("dayMaxScore").Int()),
|
|
|
|
|
}
|
2023-01-01 13:12:15 +00:00
|
|
|
|
m["login"] = Data{
|
2023-06-24 02:44:24 +00:00
|
|
|
|
CurrentScore: int(datas[2].Get("currentScore").Int()),
|
|
|
|
|
MaxScore: int(datas[2].Get("dayMaxScore").Int()),
|
2021-11-12 07:46:33 +00:00
|
|
|
|
}
|
2023-01-01 13:12:15 +00:00
|
|
|
|
m["daily"] = Data{
|
2023-06-24 02:44:24 +00:00
|
|
|
|
CurrentScore: int(datas[3].Get("currentScore").Int()),
|
|
|
|
|
MaxScore: int(datas[3].Get("dayMaxScore").Int()),
|
2021-11-12 07:46:33 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
score.Content = m
|
|
|
|
|
|
|
|
|
|
return score, err
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-21 09:33:11 +00:00
|
|
|
|
// 输出总分
|
2021-11-26 02:58:01 +00:00
|
|
|
|
func PrintScore(score Score) string {
|
|
|
|
|
result := ""
|
2022-09-13 02:02:36 +00:00
|
|
|
|
result += fmt.Sprintf("当前学习总积分:%d\n今日得分:%d\n", score.TotalScore, score.TodayScore)
|
2023-06-22 15:43:48 +00:00
|
|
|
|
result += fmt.Sprintf("[%v] [INFO]: 登录:%v/%v\n文章学习:%v/%v\n视频学习:%v/%v\n[%v] [INFO]: 每日答题:%v/%v",
|
2021-11-27 08:24:24 +00:00
|
|
|
|
time.Now().Format("2006-01-02 15:04:05"),
|
2021-11-26 02:58:01 +00:00
|
|
|
|
score.Content["login"].CurrentScore, score.Content["login"].MaxScore,
|
|
|
|
|
score.Content["article"].CurrentScore, score.Content["article"].MaxScore,
|
|
|
|
|
score.Content["video"].CurrentScore, score.Content["video"].MaxScore,
|
2021-11-27 08:24:24 +00:00
|
|
|
|
time.Now().Format("2006-01-02 15:04:05"),
|
2021-11-26 02:58:01 +00:00
|
|
|
|
score.Content["daily"].CurrentScore, score.Content["daily"].MaxScore,
|
|
|
|
|
)
|
|
|
|
|
log.Infoln(result)
|
|
|
|
|
return result
|
2021-11-12 07:46:33 +00:00
|
|
|
|
}
|
2021-11-27 08:24:24 +00:00
|
|
|
|
|
2023-08-21 09:33:11 +00:00
|
|
|
|
// 格式化总分
|
2022-07-24 07:56:12 +00:00
|
|
|
|
func FormatScore(score Score) string {
|
2021-11-27 08:24:24 +00:00
|
|
|
|
result := ""
|
2022-09-13 02:02:36 +00:00
|
|
|
|
result += fmt.Sprintf("当前学习总积分:%d\n今日得分:%d\n", score.TotalScore, score.TodayScore)
|
2023-06-22 15:43:48 +00:00
|
|
|
|
result += fmt.Sprintf("登录:%v/%v\n文章学习:%v/%v\n视频学习:%v/%v\n每日答题:%v/%v\n",
|
2021-11-27 08:24:24 +00:00
|
|
|
|
score.Content["login"].CurrentScore, score.Content["login"].MaxScore,
|
|
|
|
|
score.Content["article"].CurrentScore, score.Content["article"].MaxScore,
|
|
|
|
|
score.Content["video"].CurrentScore, score.Content["video"].MaxScore,
|
|
|
|
|
score.Content["daily"].CurrentScore, score.Content["daily"].MaxScore,
|
|
|
|
|
)
|
|
|
|
|
return result
|
|
|
|
|
}
|
2022-08-12 03:26:19 +00:00
|
|
|
|
|
2023-08-21 09:33:11 +00:00
|
|
|
|
// 格式化短格式总分
|
2022-08-12 03:26:19 +00:00
|
|
|
|
func FormatScoreShort(score Score) string {
|
|
|
|
|
result := ""
|
2022-09-13 02:02:36 +00:00
|
|
|
|
result += fmt.Sprintf("当前学习总积分:%d\n今日得分:%d\n", score.TotalScore, score.TodayScore)
|
2023-06-22 15:43:48 +00:00
|
|
|
|
result += fmt.Sprintf("登录:%v/%v\n文章学习:%v/%v\n视频学习:%v/%v\n每日答题:%v/%v",
|
2022-08-12 03:26:19 +00:00
|
|
|
|
score.Content["login"].CurrentScore, score.Content["login"].MaxScore,
|
|
|
|
|
score.Content["article"].CurrentScore, score.Content["article"].MaxScore,
|
|
|
|
|
score.Content["video"].CurrentScore, score.Content["video"].MaxScore,
|
|
|
|
|
score.Content["daily"].CurrentScore, score.Content["daily"].MaxScore,
|
|
|
|
|
)
|
|
|
|
|
return result
|
|
|
|
|
}
|