func Sign_in(id, pwd, user_type string) ([]byte, bool, []*http.Cookie, error) { if user_type != "学生" && user_type != "教师" { return nil, false, nil, models.ErrorInfo("Sign_in", errors.New("user type is error:"+user_type)) } if len(id) <= 0 || len(pwd) <= 0 { return nil, false, nil, models.ErrorInfo("Sign_in", errors.New("id or pwd is error:["+id+"_"+pwd+"]")) } data, cookies, err := client.SendRequest("GET", Host_url, "", nil, nil) if err != nil { return nil, false, nil, models.ErrorInfo("Sign_in", err) } vierstate, eventvalidation, err := getLoginKey(string(data)) if err != nil { return nil, false, nil, models.ErrorInfo("Sign_in", err) } // sigin... post_arg := url.Values{ "__VIEWSTATE": {vierstate}, "__EVENTVALIDATION": {eventvalidation}, "TextBox1": {id}, "TextBox2": {pwd}, "RadioButtonList1": {models.Utf82gbk(user_type)}, "Button1": {""}, } // 登陆 main_data, _, err := client.SendRequest("POST", Host_url+"/default2.aspx", post_arg.Encode(), cookies, header) if err != nil { return nil, false, nil, models.ErrorInfo("Sign_in", err) } // 判断是否登录失败 if strings.Contains(string(main_data), "<title>登录</title>") { return nil, false, nil, models.ErrorInfo("Sign_in", errors.New("id or pwd not match")) } return main_data, true, cookies, nil }
func GetStudentScore(user *models.Student, data []byte, cookies []*http.Cookie) (map[string]map[string]string, error) { userscorehref, _ := getUserScoreHref(string(data)) userscore_param, _, err := client.SendRequest("GET", Host_url+"/"+userscorehref, "", cookies, header) if err != nil { return nil, models.ErrorInfo("GetStudentScore", errors.New("连接失败,错误原因:"+err.Error())) } vierstate, eventvalidation, _ := getLoginKey(string(userscore_param)) userscore_info, _, err := client.SendRequest("POST", Host_url+"/"+userscorehref, url.Values{ "__VIEWSTATE": {vierstate}, "__EVENTVALIDATION": {eventvalidation}, "ddIXN": {""}, "ddIXQ": {""}, "Button1": {models.Utf82gbk("按学期查询")}, }.Encode(), cookies, header) if err != nil { return nil, models.ErrorInfo("GetStudentScore", errors.New("连接失败,错误原因:"+err.Error())) } userscore, _ := getUserScore(string(userscore_info)) for _, v := range userscore { if len(v) > 0 { if exist := models.CourseExist(v["课程名称"]); !exist { if exist := models.DepartmentExist(v["学院名称"]); !exist { if _, err := models.AddDepartment(&models.Department{Name: v["学院名称"]}); err == nil { EduLogCreate(&EduLog{Student: user, Content: v["学院名称"], Type: "department", Result: 1}) } else { EduLogCreate(&EduLog{Student: user, Content: v["学院名称"], Type: "department", Result: 0}) } } if department, err := models.GetDepartmentByName(v["学院名称"]); err == nil { f, _ := strconv.ParseFloat(v["学分"], 64) if err := models.AddCourse(&models.Course{Id: v["课程代码"], Name: v["课程名称"], Department: department, Remark: v["课程归属"], Type: v["课程性质"], Credit: f}); err == nil { EduLogCreate(&EduLog{Student: user, Content: v["课程名称"], Type: "course", Result: 1}) } else { EduLogCreate(&EduLog{Student: user, Content: v["课程名称"], Type: "course", Result: 0}) } } } } } return userscore, nil }