Browse Source

12月18日 解析token,获取jwcode 导出excel尝试 合并登入退出

dev_ljk
lijikun 5 months ago
parent
commit
88cc99e473
  1. 1
      link_homework/go.sum
  2. 22
      link_homework/internal/controller/clientPage/clientPage.go
  3. 4
      link_homework/internal/logic/client/client.go
  4. 2
      link_homework/internal/service/client.go
  5. 20
      link_homework/utility/utility.go

1
link_homework/go.sum

@ -1,3 +1,4 @@
github.com/360EntSecGroup-Skylar/excelize v1.4.1 h1:l55mJb6rkkaUzOpSsgEeKYtS6/0gHwBYyfo5Jcjv/Ks=
github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE= github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE=
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=

22
link_homework/internal/controller/clientPage/clientPage.go

@ -5,6 +5,7 @@ import (
CPage "link_homework/api/v1/ClientPage" CPage "link_homework/api/v1/ClientPage"
"link_homework/internal/model/dto" "link_homework/internal/model/dto"
"link_homework/internal/service" "link_homework/internal/service"
"link_homework/utility"
) )
type ClientPage struct{} type ClientPage struct{}
@ -16,7 +17,15 @@ func NewClientPage() *ClientPage {
// 查询作业列表 // 查询作业列表
func (c *ClientPage) GetHomeworkList(r *ghttp.Request) { func (c *ClientPage) GetHomeworkList(r *ghttp.Request) {
//请求中不需要携带任何参数 //请求中不需要携带任何参数
result, err := service.Client().ClientGetHomeworkList(r.Context())
token := r.Get("token").String()
jwcode, err := utility.GetJwcodeJSON(token)
if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
}
result, err := service.Client().ClientGetHomeworkList(r.Context(), jwcode)
if err != nil { if err != nil {
r.Response.WriteJsonExit(dto.Result{ r.Response.WriteJsonExit(dto.Result{
Code: 400, Code: 400,
@ -54,7 +63,14 @@ func (c *ClientPage) GetHomeworkQuestion(r *ghttp.Request) {
} }
func (c *ClientPage) CommitHomework(r *ghttp.Request) { func (c *ClientPage) CommitHomework(r *ghttp.Request) {
var jwcode int = 90038794
token := r.Get("token").String()
jwcode, err := utility.GetJwcodeJSON(token)
if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
}
var req CPage.CommitHomeworkReq var req CPage.CommitHomeworkReq
if err := r.Parse(&req); err != nil { if err := r.Parse(&req); err != nil {
r.Response.WriteJsonExit(dto.Result{ r.Response.WriteJsonExit(dto.Result{
@ -63,7 +79,7 @@ func (c *ClientPage) CommitHomework(r *ghttp.Request) {
}) })
} }
err := service.Client().CommitHomework(r.Context(), req, jwcode)
err = service.Client().CommitHomework(r.Context(), req, jwcode)
if err != nil { if err != nil {
r.Response.WriteJsonExit(dto.Result{ r.Response.WriteJsonExit(dto.Result{
Code: 400, Code: 400,

4
link_homework/internal/logic/client/client.go

@ -16,8 +16,8 @@ func init() {
service.RegisterClient(&sClient{}) service.RegisterClient(&sClient{})
} }
func (s *sClient) ClientGetHomeworkList(ctx context.Context) (homeworkList []ClientPage.GetHomeworkListRse, err error) {
var jwcode = 90038794 //需要从token中获取当前的数据
func (s *sClient) ClientGetHomeworkList(ctx context.Context, jwcode int) (homeworkList []ClientPage.GetHomeworkListRse, err error) {
//var jwcode = 90038794 //需要从token中获取当前的数据
err = dao.ActivityInteractiveGroup.Ctx(ctx).Fields("id", "name", "DATE_FORMAT(end_date, '%Y-%m-%d') as end_date"). err = dao.ActivityInteractiveGroup.Ctx(ctx).Fields("id", "name", "DATE_FORMAT(end_date, '%Y-%m-%d') as end_date").
Where("end_date>?", gtime.Now()).OrderDesc("end_date").Scan(&homeworkList) Where("end_date>?", gtime.Now()).OrderDesc("end_date").Scan(&homeworkList)
if err != nil { if err != nil {

2
link_homework/internal/service/client.go

@ -12,7 +12,7 @@ import (
type ( type (
IClient interface { IClient interface {
ClientGetHomeworkList(ctx context.Context) (homeworkList []ClientPage.GetHomeworkListRse, err error)
ClientGetHomeworkList(ctx context.Context, jwcode int) (homeworkList []ClientPage.GetHomeworkListRse, err error)
GetHomeworkQuestion(ctx context.Context, groupId int) (questions []ClientPage.GetHomeworkQuestionRes, err error) GetHomeworkQuestion(ctx context.Context, groupId int) (questions []ClientPage.GetHomeworkQuestionRes, err error)
CommitHomework(ctx context.Context, req ClientPage.CommitHomeworkReq, jwcode int) (err error) CommitHomework(ctx context.Context, req ClientPage.CommitHomeworkReq, jwcode int) (err error)
} }

20
link_homework/utility/utility.go

@ -60,11 +60,11 @@ func selectBaseUrl(hashKey string) *dto.Result {
} }
// 获取 jwcode // 获取 jwcode
func GetJwcodeJSON(token string) (string, error) {
func GetJwcodeJSON(token string) (int, error) { // 返回类型改为 int
// 1. 获取基础 URL // 1. 获取基础 URL
urlResult := getUrl(consts.URL_KEY, consts.URL_HASH_KEY) urlResult := getUrl(consts.URL_KEY, consts.URL_HASH_KEY)
if urlResult.Code != 200 { if urlResult.Code != 200 {
return "", errors.New("获取基础 URL 失败: " + urlResult.Message)
return 0, errors.New("获取基础 URL 失败: " + urlResult.Message)
} }
baseUrl := urlResult.Data.(string) baseUrl := urlResult.Data.(string)
@ -75,7 +75,7 @@ func GetJwcodeJSON(token string) (string, error) {
// 3. 创建 HTTP 请求 // 3. 创建 HTTP 请求
req, err := http.NewRequest("POST", url, requestBody) req, err := http.NewRequest("POST", url, requestBody)
if err != nil { if err != nil {
return "", fmt.Errorf("HTTP 请求创建失败: %v", err)
return 0, fmt.Errorf("HTTP 请求创建失败: %v", err)
} }
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
@ -83,33 +83,33 @@ func GetJwcodeJSON(token string) (string, error) {
client := &http.Client{} client := &http.Client{}
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
return "", fmt.Errorf("HTTP 请求失败: %v", err)
return 0, fmt.Errorf("HTTP 请求失败: %v", err)
} }
defer resp.Body.Close() defer resp.Body.Close()
// 5. 检查 HTTP 状态码 // 5. 检查 HTTP 状态码
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
return "", fmt.Errorf("HTTP 状态码错误: %v", resp.Status)
return 0, fmt.Errorf("HTTP 状态码错误: %v", resp.Status)
} }
// 6. 读取并解析响应体 // 6. 读取并解析响应体
body, err := ioutil.ReadAll(resp.Body) body, err := ioutil.ReadAll(resp.Body)
if err != nil { if err != nil {
return "", fmt.Errorf("读取响应失败: %v", err)
return 0, fmt.Errorf("读取响应失败: %v", err)
} }
// 7. 解析 JSON 数据 // 7. 解析 JSON 数据
var jsonResponse map[string]interface{} var jsonResponse map[string]interface{}
if err = json.Unmarshal(body, &jsonResponse); err != nil { if err = json.Unmarshal(body, &jsonResponse); err != nil {
return "", fmt.Errorf("解析 JSON 失败: %v", err)
return 0, fmt.Errorf("解析 JSON 失败: %v", err)
} }
// 8. 提取并直接返回 jwcode // 8. 提取并直接返回 jwcode
if data, ok := jsonResponse["data"].(map[string]interface{}); ok { if data, ok := jsonResponse["data"].(map[string]interface{}); ok {
if jwcode, exists := data["jwcode"].(string); exists {
return jwcode, nil // 直接返回 jwcode
if jwcode, exists := data["jwcode"].(float64); exists { // 确保将 jwcode 作为数字解析
return int(jwcode), nil // 转换为整数并返回
} }
} }
return "", errors.New("响应体中没有 jwcode")
return 0, errors.New("响应体中没有 jwcode")
} }
Loading…
Cancel
Save