Skip to content

Commit

Permalink
🛠️完成对周报月报的获取(周报月报上传 开发中🚧)
Browse files Browse the repository at this point in the history
  • Loading branch information
mirai-MIC committed Nov 29, 2024
1 parent 7ef295c commit 2b73c37
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 32 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ CREATE TABLE sign
|---------|-----------------|--------|
| 工学云签到 | 模拟登录并完成每日签到任务 | 已完成 ✅ |
| 滑块验证破解 | 自动处理工学云最新版滑块验证 | 已完成 ✅ |
| 工学云定时上报 | 自动完成上报周报月报 | 开发中🚧 |
| 超星学习通 | 自动刷课、考试、答题 | 开发中 🚧 |
| 用户管理 | 基于数据库管理用户信息 | 已完成 ✅ |
| 日志记录 | 自动记录签到状态和错误信息 | 已完成 ✅ |
Expand Down Expand Up @@ -140,6 +141,7 @@ CREATE TABLE sign
* ✅工学云平台自动签到
* ✅解决工学云最新版滑块验证
* ✅完成对邮箱发送的支持
* 🚧工学云平台自动周报月报
* ⬜超星学习通自动刷课
* ⬜添加 Docker 支持
* ⬜增强错误处理和日志记录
Expand All @@ -159,8 +161,6 @@ Star 趋势图
让 BronyaBot 成为你学习路上的得力助手!🎉 签到从此无忧!

![GitHub Stars](https://img.shields.io/github/stars/mirai-MIC/BronyaBot?style=flat&label=Stars)

[//]: # ([![Star History Chart](https://api.star-history.com/svg?repos=mirai-MIC/BronyaBot&type=Date)](https://star-history.com/#mirai-MIC/BronyaBot&Date))
[![Star History Chart](https://starchart.cc/mirai-MIC/BronyaBot.svg?variant=adaptive)](https://starchart.cc/mirai-MIC/BronyaBot)

---
Expand Down
17 changes: 9 additions & 8 deletions internal/api/gongxueapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ package api
var BaseApi = "https://api.moguding.net:9000"

const (
BlockPuzzle = "/session/captcha/v1/get"
CHECK = "/session/captcha/v1/check"
LoginAPI = "/session/user/v6/login"
GetPlanIDAPI = "/practice/plan/v3/getPlanByStu"
SignAPI = "/attendence/clock/v4/save"
GetWeekCountAPI = "/practice/paper/v2/listByStu"
GetWeeks = "/practice/paper/v1/getWeeks1"
SubmitWeeklyOrDailyAPI = "/practice/paper/v2/save"
BlockPuzzle = "/session/captcha/v1/get"
CHECK = "/session/captcha/v1/check"
LoginAPI = "/session/user/v6/login"
GetPlanIDAPI = "/practice/plan/v3/getPlanByStu"
SignAPI = "/attendence/clock/v4/save"
GetWeekCountAPI = "/practice/paper/v2/listByStu"
GetWeeks = "/practice/paper/v3/getWeeks1"
SubmitAReport = "/practice/paper/v5/save"
getUploadToken = "session/upload/v1/token"
)
8 changes: 8 additions & 0 deletions internal/service/gongxueyun_service/data/ReportsData.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package data

type ReportsInfo struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data []interface{} `json:"data"`
Flag int `json:"flag"`
}
53 changes: 32 additions & 21 deletions internal/service/gongxueyun_service/logic.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ func (m *MoguDing) Run() {
}
m.GetPlanId()
m.SignIn()
//m.getSubmittedReportsInfo("week")
}

type SignStruct struct {
Expand Down Expand Up @@ -120,7 +121,7 @@ func (mo *MoguDing) GetBlock() error {
}
func (mo *MoguDing) processBlock() error {
// 获取验证码数据
requestData := map[string]string{
requestData := map[string]interface{}{
"clientUid": clientUid,
"captchaType": "blockPuzzle",
}
Expand Down Expand Up @@ -151,7 +152,7 @@ func (mo *MoguDing) processBlock() error {
comm.secretKey = blockData.Data.SecretKey
cipher, _ := utils.NewAESECBPKCS5Padding(comm.secretKey, "base64")
encrypt, _ := cipher.Encrypt(comm.xY)
requestData = map[string]string{
requestData = map[string]interface{}{
"pointJson": encrypt,
"token": blockData.Data.Token,
"captchaType": "blockPuzzle",
Expand Down Expand Up @@ -183,9 +184,7 @@ func (mogu *MoguDing) Login() error {
encryptPhone, _ := padding.Encrypt(mogu.PhoneNumber)
encryptPassword, _ := padding.Encrypt(mogu.Password)
timestamp, _ := encryptTimestamp(time.Now().UnixMilli())

global.Log.Info("Login")
requestData := map[string]string{
requestData := map[string]interface{}{
"phone": encryptPhone,
"password": encryptPassword,
"captcha": comm.captcha,
Expand Down Expand Up @@ -222,15 +221,13 @@ func (mogu *MoguDing) Login() error {
return nil
}
func (mogu *MoguDing) GetPlanId() {
var planData = &data.PlanByStuData{}
planData := &data.PlanByStuData{}
timestamp, _ := encryptTimestamp(time.Now().UnixMilli())

sign := utils.CreateSign(mogu.UserId, mogu.RoleKey)

addHeader("rolekey", mogu.RoleKey)
addHeader("sign", sign)
addHeader("authorization", mogu.Authorization)
body := map[string]string{
body := map[string]interface{}{
"pageSize": strconv.Itoa(999999),
"t": timestamp,
}
Expand All @@ -247,13 +244,12 @@ func (mogu *MoguDing) GetPlanId() {
global.Log.Info(mogu.PlanID)
global.Log.Info(mogu.PlanName)
global.Log.Info("================")
global.Log.Info(fmt.Sprintf("Get plan id successful"))
}
func (mogu *MoguDing) SignIn() {
var resdata = &data.SaveData{}
resdata := &data.SaveData{}
filling := dataStructureFilling(mogu)
sign := utils.CreateSign(filling["device"], filling["type"], mogu.PlanID, mogu.UserId, filling["address"])
addHeader("rolekey", mogu.UserId)
sign := utils.CreateSign(filling["device"].(string), filling["type"].(string), mogu.PlanID, mogu.UserId, filling["address"].(string))
addHeader("rolekey", mogu.RoleKey)
addHeader("sign", sign)
addHeader("authorization", mogu.Authorization)
request, err := utils.SendRequest("POST", api.BaseApi+api.SignAPI, filling, headers)
Expand All @@ -270,7 +266,6 @@ func (mogu *MoguDing) SignIn() {
} else {
mogu.updateSignState(0)
}

utils.SendMail(mogu.Email, "检查是否打卡完成", resdata.Msg+"\n如果未成功请联系管理员")

}
Expand All @@ -284,17 +279,35 @@ func (mogu *MoguDing) updateSignState(state int) {
}
}

func (mogu *MoguDing) weeklyNewspaper() {

// 获取已经提交的日报、周报或月报的数量。
func (mogu *MoguDing) getSubmittedReportsInfo(reportType string) {
report := &data.ReportsInfo{}
sign := utils.CreateSign(mogu.UserId, mogu.RoleKey, reportType)
addHeader("rolekey", mogu.RoleKey)
addHeader("userid", mogu.UserId)
addHeader("sign", sign)
timestamp, _ := encryptTimestamp(time.Now().UnixMilli())
body := map[string]interface{}{
"currPage": 1,
"pageSize": 10,
"reportType": reportType,
"planId": mogu.PlanID,
"t": timestamp,
}
request, err := utils.SendRequest("POST", api.BaseApi+api.GetWeekCountAPI, body, headers)
if err != nil {
global.Log.Info(fmt.Sprintf("Failed to send request: %v", err))
}
json.Unmarshal(request, &report)
global.Log.Info(report)
}
func dataStructureFilling(mogu *MoguDing) map[string]string {
func dataStructureFilling(mogu *MoguDing) map[string]interface{} {
// 加载中国时区
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
global.Log.Error("Failed to load location: ", err)
return nil
}

// 获取当前时间并格式化
now := time.Now().In(loc)
formattedTime := now.Format("2006-01-02 15:04:05")
Expand All @@ -304,16 +317,14 @@ func dataStructureFilling(mogu *MoguDing) map[string]string {
if now.Hour() >= 12 {
typeStr = "END"
}

// 加密当前时间戳
encryptTime, err := encryptTimestamp(now.UnixMilli())
if err != nil {
global.Log.Error("Failed to encrypt timestamp: ", err)
return nil
}

// 直接构造 map,而不是先构造结构体再转换为 map
return map[string]string{
return map[string]interface{}{
"address": mogu.Sign.Address,
"city": mogu.Sign.City,
"area": mogu.Sign.Area,
Expand Down
2 changes: 1 addition & 1 deletion utils/HttpUtils.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (

var client = &http.Client{}

func SendRequest(method, url string, payload map[string]string, header http.Header) ([]byte, error) {
func SendRequest(method, url string, payload map[string]interface{}, header http.Header) ([]byte, error) {
marshal, err := json.Marshal(payload)
if err != nil {
return nil, fmt.Errorf("failed to marshal payload: %v", err)
Expand Down

0 comments on commit 2b73c37

Please sign in to comment.