Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
EduSpider
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
viitto
EduSpider
Commits
94d5dbd2
Commit
94d5dbd2
authored
Sep 21, 2022
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
47041ac9
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
599 additions
and
522 deletions
+599
-522
ClassInFlow.cs
EduSpider/Spiders/ClassInRule/ClassInFlow.cs
+0
-2
CourseManager.cs
EduSpider/Spiders/ClassInRule/CourseManager.cs
+229
-189
HomeWorkManager.cs
EduSpider/Spiders/ClassInRule/HomeWorkManager.cs
+126
-106
QuestionManager.cs
EduSpider/Spiders/ClassInRule/QuestionManager.cs
+152
-131
StudentManager.cs
EduSpider/Spiders/ClassInRule/StudentManager.cs
+64
-59
TeacherManager.cs
EduSpider/Spiders/ClassInRule/TeacherManager.cs
+28
-22
ICookiesManager.cs
EduSpider/Spiders/ICookiesManager.cs
+0
-13
No files found.
EduSpider/Spiders/ClassInRule/ClassInFlow.cs
View file @
94d5dbd2
using
EduSpider.Spiders.ClassInRule
;
using
EduSpider.Utility.Plugin
;
using
System
;
using
System.Threading
;
namespace
TicketSpider.Spiders.ClassInRule
{
...
...
EduSpider/Spiders/ClassInRule/CourseManager.cs
View file @
94d5dbd2
...
...
@@ -33,76 +33,89 @@ namespace EduSpider.Spiders.ClassInRule
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
ICourseRepository
courseRepository
=
new
CourseRepository
();
int
totalCount
=
0
;
string
url
=
"https://console.eeo.cn/saasajax/course.ajax.php?action=getCourseList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
try
{
JObject
rootObj
=
JObject
.
Parse
(
result
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
string
url
=
"https://console.eeo.cn/saasajax/course.ajax.php?action=getCourseList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
var
totalNum
=
dataObj
.
GetInt
(
"totalCourseNum"
);
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"courseList"
));
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
JObject
rootObj
=
JObject
.
Parse
(
result
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
{
courseRepository
.
BatchSetCourseRepository
(
tempList
);
totalCount
+=
tempList
.
Count
;
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunCourse"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
foreach
(
var
item
in
tempList
)
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
var
totalNum
=
dataObj
.
GetInt
(
"totalCourseNum"
);
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"courseList"
));
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
{
RunCourseStudent
(
cookie
,
item
.
CourseId
);
RunCourseTeacher
(
cookie
,
item
.
CourseId
);
RunCourseInfo
(
cookie
,
item
.
CourseId
);
GetCourseLessionList
(
cookie
,
item
);
courseRepository
.
BatchSetCourseRepository
(
tempList
);
totalCount
+=
tempList
.
Count
;
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunCourse"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
foreach
(
var
item
in
tempList
)
{
RunCourseStudent
(
cookie
,
item
.
CourseId
);
RunCourseTeacher
(
cookie
,
item
.
CourseId
);
RunCourseInfo
(
cookie
,
item
.
CourseId
);
GetCourseLessionList
(
cookie
,
item
);
}
}
}
if
(
totalNum
%
perpage
==
0
)
{
pageCount
=
totalNum
/
perpage
;
}
else
{
pageCount
=
totalNum
/
perpage
+
1
;
}
if
(
totalNum
>
perpage
)
{
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
if
(
totalNum
%
perpage
==
0
)
{
Thread
.
Sleep
(
1000
*
2
);
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
);
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
sub_response
=
await
request
.
PostAsync
(
url
,
sub_content
);
var
sub_result
=
sub_response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sub_result
))
pageCount
=
totalNum
/
perpage
;
}
else
{
pageCount
=
totalNum
/
perpage
+
1
;
}
if
(
totalNum
>
perpage
)
{
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
{
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
Thread
.
Sleep
(
1000
*
2
);
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
);
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
try
{
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
)
);
var
sub
tempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"courseList"
))
;
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
var
sub_response
=
await
request
.
PostAsync
(
url
,
sub_content
);
var
sub
_result
=
sub_response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(
!
string
.
IsNullOrWhiteSpace
(
sub_result
)
)
{
courseRepository
.
BatchSetCourseRepository
(
subtempList
);
totalCount
+=
subtempList
.
Count
;
foreach
(
var
sItem
in
subtempList
)
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
{
RunCourseStudent
(
cookie
,
sItem
.
CourseId
);
RunCourseTeacher
(
cookie
,
sItem
.
CourseId
);
RunCourseInfo
(
cookie
,
sItem
.
CourseId
);
GetCourseLessionList
(
cookie
,
sItem
);
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
));
var
subtempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"courseList"
));
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
{
courseRepository
.
BatchSetCourseRepository
(
subtempList
);
totalCount
+=
subtempList
.
Count
;
foreach
(
var
sItem
in
subtempList
)
{
RunCourseStudent
(
cookie
,
sItem
.
CourseId
);
RunCourseTeacher
(
cookie
,
sItem
.
CourseId
);
RunCourseInfo
(
cookie
,
sItem
.
CourseId
);
GetCourseLessionList
(
cookie
,
sItem
);
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunCourse"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunCourse"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
catch
(
Exception
ex2
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_RunCourse2"
,
ex
:
ex2
);
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_RunCourse"
,
ex
:
ex
);
}
}
/// <summary>
...
...
@@ -146,7 +159,7 @@ namespace EduSpider.Spiders.ClassInRule
TeacherName
=
courseObj
.
GetString
(
"teacherName"
),
TeacherLogo
=
courseObj
.
GetString
(
"teacherLogo"
),
CourseType
=
courseObj
.
GetInt
(
"courseType"
),
});
});
}
}
return
list
;
...
...
@@ -171,51 +184,57 @@ namespace EduSpider.Spiders.ClassInRule
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}课程学员数据"
,
courseId
));
string
url
=
"https://console.eeo.cn/saasajax/student.ajax.php?action=getCourseStudentList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
sutResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
List
<
RB_Course_Student
>
list
=
new
();
List
<
RB_Course_Student
>
deleteList
=
new
List
<
RB_Course_Student
>();
if
(!
string
.
IsNullOrWhiteSpace
(
sutResult
))
try
{
JObject
stuRootObj
=
JObject
.
Parse
(
sutResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuRootObj
.
GetString
(
"data"
)))
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
sutResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sutResult
))
{
J
Array
courseStudentArray
=
JArray
.
Parse
(
stuRootObj
.
GetString
(
"data"
)
);
if
(
courseStudentArray
!=
null
&&
courseStudentArray
.
Count
>
0
)
J
Object
stuRootObj
=
JObject
.
Parse
(
sutResult
);
if
(
!
string
.
IsNullOrWhiteSpace
(
stuRootObj
.
GetString
(
"data"
))
)
{
foreach
(
var
jItem
in
courseStudentArray
)
JArray
courseStudentArray
=
JArray
.
Parse
(
stuRootObj
.
GetString
(
"data"
));
if
(
courseStudentArray
!=
null
&&
courseStudentArray
.
Count
>
0
)
{
JObject
courseStuObj
=
JObject
.
Parse
(
jItem
.
ToString
());
string
deleteCourseStudentReplay
=
courseStuObj
.
GetString
(
"deleteCourseStudentReplay"
);
if
(
deleteCourseStudentReplay
!=
"0"
)
foreach
(
var
jItem
in
courseStudentArray
)
{
list
.
Add
(
new
RB_Course_Student
()
JObject
courseStuObj
=
JObject
.
Parse
(
jItem
.
ToString
());
string
deleteCourseStudentReplay
=
courseStuObj
.
GetString
(
"deleteCourseStudentReplay"
);
if
(
deleteCourseStudentReplay
!=
"0"
)
{
id
=
courseStuObj
.
GetInt
(
"id"
),
uid
=
courseStuObj
.
GetInt
(
"uid"
),
name
=
courseStuObj
.
GetString
(
"name
"
),
account
=
courseStuObj
.
GetString
(
"account
"
),
logo
=
courseStuObj
.
GetString
(
"logo
"
),
courseId
=
courseId
});
}
else
{
deleteList
.
Add
(
new
RB_Course_Student
()
list
.
Add
(
new
RB_Course_Student
()
{
id
=
courseStuObj
.
GetInt
(
"id
"
),
uid
=
courseStuObj
.
GetInt
(
"uid
"
),
name
=
courseStuObj
.
GetString
(
"name
"
),
account
=
courseStuObj
.
GetString
(
"account"
),
logo
=
courseStuObj
.
GetString
(
"logo"
),
courseId
=
courseId
});
}
else
{
id
=
courseStuObj
.
GetInt
(
"id"
),
uid
=
courseStuObj
.
GetInt
(
"uid"
),
name
=
courseStuObj
.
GetString
(
"name"
),
account
=
courseStuObj
.
GetString
(
"account"
),
logo
=
courseStuObj
.
GetString
(
"logo"
),
courseId
=
courseId
});
deleteList
.
Add
(
new
RB_Course_Student
()
{
id
=
courseStuObj
.
GetInt
(
"id"
),
uid
=
courseStuObj
.
GetInt
(
"uid"
),
name
=
courseStuObj
.
GetString
(
"name"
),
account
=
courseStuObj
.
GetString
(
"account"
),
logo
=
courseStuObj
.
GetString
(
"logo"
),
courseId
=
courseId
});
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_RunCourseStudent"
,
ex
:
ex
);
}
if
(
list
!=
null
&&
list
.
Count
>
0
)
{
courseStudentRepository
.
BatchSetCourseStudentRepository
(
list
);
...
...
@@ -233,48 +252,54 @@ namespace EduSpider.Spiders.ClassInRule
/// <param name="courseId"></param>
public
static
async
void
RunCourseTeacher
(
string
cookie
,
int
courseId
)
{
List
<
RB_Course_Teacher
>
list
=
new
();
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
string
queryStr
=
"courseId={0}"
;
string
paramStr
=
string
.
Format
(
queryStr
,
courseId
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
ICourseTeacherRepository
courseTeacherRepository
=
new
CourseTeacherRepository
();
ICourseTeacherRepository
courseTeacherRepository
=
new
CourseTeacherRepository
();
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}课程老师数据"
,
courseId
));
string
url
=
"https://console.eeo.cn/saasajax/course.ajax.php?action=getCourseTeacherList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
teacherResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
List
<
RB_Course_Teacher
>
list
=
new
();
if
(!
string
.
IsNullOrWhiteSpace
(
teacherResult
))
try
{
JObject
teacherRootObj
=
JObject
.
Parse
(
teacherResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
teacherRootObj
.
GetString
(
"data"
)))
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
teacherResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
teacherResult
))
{
JObject
teacher
Obj
=
JObject
.
Parse
(
teacherRootObj
.
GetString
(
"data"
)
);
if
(!
string
.
IsNullOrWhiteSpace
(
teacher
Obj
.
GetString
(
"teacherList
"
)))
JObject
teacher
RootObj
=
JObject
.
Parse
(
teacherResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
teacher
RootObj
.
GetString
(
"data
"
)))
{
J
Array
courseTeacherArray
=
JArray
.
Parse
(
teacherObj
.
GetString
(
"teacherList
"
));
if
(
courseTeacherArray
!=
null
&&
courseTeacherArray
.
Count
>
0
)
J
Object
teacherObj
=
JObject
.
Parse
(
teacherRootObj
.
GetString
(
"data
"
));
if
(
!
string
.
IsNullOrWhiteSpace
(
teacherObj
.
GetString
(
"teacherList"
))
)
{
foreach
(
var
jItem
in
courseTeacherArray
)
JArray
courseTeacherArray
=
JArray
.
Parse
(
teacherObj
.
GetString
(
"teacherList"
));
if
(
courseTeacherArray
!=
null
&&
courseTeacherArray
.
Count
>
0
)
{
JObject
courseTeacherObj
=
JObject
.
Parse
(
jItem
.
ToString
());
JObject
infoObj
=
JObject
.
Parse
(
courseTeacherObj
.
GetString
(
"teacherInfo"
));
list
.
Add
(
new
RB_Course_Teacher
()
foreach
(
var
jItem
in
courseTeacherArray
)
{
id
=
infoObj
.
GetInt
(
"id"
),
uid
=
infoObj
.
GetInt
(
"uid"
),
phone
=
infoObj
.
GetString
(
"phone"
),
logo
=
infoObj
.
GetString
(
"logo"
),
name
=
infoObj
.
GetString
(
"name"
),
courseId
=
courseId
,
courseTeacherId
=
courseTeacherObj
.
GetInt
(
"courseTeacherId"
)
});
JObject
courseTeacherObj
=
JObject
.
Parse
(
jItem
.
ToString
());
JObject
infoObj
=
JObject
.
Parse
(
courseTeacherObj
.
GetString
(
"teacherInfo"
));
list
.
Add
(
new
RB_Course_Teacher
()
{
id
=
infoObj
.
GetInt
(
"id"
),
uid
=
infoObj
.
GetInt
(
"uid"
),
phone
=
infoObj
.
GetString
(
"phone"
),
logo
=
infoObj
.
GetString
(
"logo"
),
name
=
infoObj
.
GetString
(
"name"
),
courseId
=
courseId
,
courseTeacherId
=
courseTeacherObj
.
GetInt
(
"courseTeacherId"
)
});
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_RunCourseTeacher"
,
ex
:
ex
);
}
if
(
list
!=
null
&&
list
.
Count
>
0
)
{
courseTeacherRepository
.
BatchSetCourseTeacherRepository
(
list
);
...
...
@@ -288,87 +313,95 @@ namespace EduSpider.Spiders.ClassInRule
/// <param name="courseId"></param>
public
static
async
void
RunCourseInfo
(
string
cookie
,
int
courseId
)
{
List
<
rb_course_hk
>
list
=
new
();
List
<
RB_Course_Teacher
>
teacherList
=
new
();
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
string
queryStr
=
"courseId={0}"
;
string
paramStr
=
string
.
Format
(
queryStr
,
courseId
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
ICourseRepository
courseRepository
=
new
CourseRepository
();
ICourseRepository
courseRepository
=
new
CourseRepository
();
ICourseTeacherRepository
courseTeacherRepository
=
new
CourseTeacherRepository
();
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}课程详情数据"
,
courseId
));
string
url
=
"https://console.eeo.cn/saasajax/course.ajax.php?action=getCourseInfo"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
courseInfoResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
List
<
rb_course_hk
>
list
=
new
();
List
<
RB_Course_Teacher
>
teacherList
=
new
();
if
(!
string
.
IsNullOrWhiteSpace
(
courseInfoResult
))
try
{
JObject
courseRootObj
=
JObject
.
Parse
(
courseInfoResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
courseRootObj
.
GetString
(
"data"
)))
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
courseInfoResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
courseInfoResult
))
{
JObject
courseObj
=
JObject
.
Parse
(
courseRootObj
.
GetString
(
"data"
));
var
expiryTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"expiryTime"
));
if
(
ConvertHelper
.
FormatTime
(
expiryTime
)
==
"1970-01-01 08:00:00"
)
{
expiryTime
=
new
DateTime
(
0001
,
01
,
01
);
}
var
courseModel
=
new
rb_course_hk
()
{
CourseId
=
courseObj
.
GetInt
(
"courseId"
),
CourseName
=
courseObj
.
GetString
(
"courseName"
),
BeginTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"beginTime"
)),
CompleteNum
=
courseObj
.
GetInt
(
"completeNum"
),
TotalClassNum
=
courseObj
.
GetInt
(
"totalClassNum"
),
ExpiryTime
=
expiryTime
,
LiveNum
=
courseObj
.
GetInt
(
"liveNum"
),
RecordNum
=
0
,
OpenNum
=
courseObj
.
GetInt
(
"openNum"
),
StudentNum
=
courseObj
.
GetInt
(
"studentNum"
),
AuditNum
=
courseObj
.
GetInt
(
"auditNum"
),
TeacherNum
=
courseObj
.
GetInt
(
"teacherNum"
),
CourseStatus
=
courseObj
.
GetInt
(
"courseStatus"
),
WebCast
=
courseObj
.
GetString
(
"webCastUrl"
),
TeacherId
=
courseObj
.
GetInt
(
"teacherId"
),
TeacherAccount
=
courseObj
.
GetString
(
"teacherAccount"
),
TeacherUid
=
courseObj
.
GetInt
(
"teacherUid"
),
TeacherName
=
courseObj
.
GetString
(
"teacherName"
),
TeacherLogo
=
courseObj
.
GetString
(
"teacherLogo"
),
CourseType
=
courseObj
.
GetInt
(
"courseType"
),
AddTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"addTime"
)),
CourseWare
=
courseObj
.
GetString
(
"courseWare"
),
};
string
tempCoverImg
=
courseObj
.
GetString
(
"coverImg"
);
string
coverImg
=
""
;
if
(!
string
.
IsNullOrWhiteSpace
(
tempCoverImg
))
JObject
courseRootObj
=
JObject
.
Parse
(
courseInfoResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
courseRootObj
.
GetString
(
"data"
)))
{
coverImg
=
"https://console.eeo.cn/upload/images/"
+
tempCoverImg
;
}
courseModel
.
CoverImg
=
coverImg
;
list
.
Add
(
courseModel
);
if
(
courseModel
.
TeacherUid
>
0
)
{
var
cTeacherModel
=
courseTeacherRepository
.
GetTeacherCourseListRepository
(
new
Model
.
Query
.
CourseQuery
()
JObject
courseObj
=
JObject
.
Parse
(
courseRootObj
.
GetString
(
"data"
));
var
expiryTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"expiryTime"
));
if
(
ConvertHelper
.
FormatTime
(
expiryTime
)
==
"1970-01-01 08:00:00"
)
{
CourseId
=
courseModel
.
CourseId
,
TeacherIds
=
courseModel
.
TeacherUid
.
ToString
()
}).
FirstOrDefault
();
int
newId
=
Convert
.
ToInt32
(
DateTime
.
Now
.
ToString
(
"yyyyMMdd"
));
var
courseTeacher
=
new
RB_Course_Teacher
()
expiryTime
=
new
DateTime
(
0001
,
01
,
01
);
}
var
courseModel
=
new
rb_course_hk
()
{
id
=
cTeacherModel
?.
id
??
newId
,
uid
=
Convert
.
ToInt32
(
courseModel
.
TeacherUid
),
phone
=
courseModel
.
TeacherAccount
,
logo
=
courseModel
.
TeacherLogo
,
name
=
courseModel
.
TeacherName
,
courseId
=
courseId
,
courseTeacherId
=
courseModel
.
TeacherId
CourseId
=
courseObj
.
GetInt
(
"courseId"
),
CourseName
=
courseObj
.
GetString
(
"courseName"
),
BeginTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"beginTime"
)),
CompleteNum
=
courseObj
.
GetInt
(
"completeNum"
),
TotalClassNum
=
courseObj
.
GetInt
(
"totalClassNum"
),
ExpiryTime
=
expiryTime
,
LiveNum
=
courseObj
.
GetInt
(
"liveNum"
),
RecordNum
=
0
,
OpenNum
=
courseObj
.
GetInt
(
"openNum"
),
StudentNum
=
courseObj
.
GetInt
(
"studentNum"
),
AuditNum
=
courseObj
.
GetInt
(
"auditNum"
),
TeacherNum
=
courseObj
.
GetInt
(
"teacherNum"
),
CourseStatus
=
courseObj
.
GetInt
(
"courseStatus"
),
WebCast
=
courseObj
.
GetString
(
"webCastUrl"
),
TeacherId
=
courseObj
.
GetInt
(
"teacherId"
),
TeacherAccount
=
courseObj
.
GetString
(
"teacherAccount"
),
TeacherUid
=
courseObj
.
GetInt
(
"teacherUid"
),
TeacherName
=
courseObj
.
GetString
(
"teacherName"
),
TeacherLogo
=
courseObj
.
GetString
(
"teacherLogo"
),
CourseType
=
courseObj
.
GetInt
(
"courseType"
),
AddTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"addTime"
)),
CourseWare
=
courseObj
.
GetString
(
"courseWare"
),
};
teacherList
.
Add
(
courseTeacher
);
string
tempCoverImg
=
courseObj
.
GetString
(
"coverImg"
);
string
coverImg
=
""
;
if
(!
string
.
IsNullOrWhiteSpace
(
tempCoverImg
))
{
coverImg
=
"https://console.eeo.cn/upload/images/"
+
tempCoverImg
;
}
courseModel
.
CoverImg
=
coverImg
;
list
.
Add
(
courseModel
);
if
(
courseModel
.
TeacherUid
>
0
)
{
var
cTeacherModel
=
courseTeacherRepository
.
GetTeacherCourseListRepository
(
new
Model
.
Query
.
CourseQuery
()
{
CourseId
=
courseModel
.
CourseId
,
TeacherIds
=
courseModel
.
TeacherUid
.
ToString
()
}).
FirstOrDefault
();
int
newId
=
Convert
.
ToInt32
(
DateTime
.
Now
.
ToString
(
"yyyyMMdd"
));
var
courseTeacher
=
new
RB_Course_Teacher
()
{
id
=
cTeacherModel
?.
id
??
newId
,
uid
=
Convert
.
ToInt32
(
courseModel
.
TeacherUid
),
phone
=
courseModel
.
TeacherAccount
,
logo
=
courseModel
.
TeacherLogo
,
name
=
courseModel
.
TeacherName
,
courseId
=
courseId
,
courseTeacherId
=
courseModel
.
TeacherId
};
teacherList
.
Add
(
courseTeacher
);
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_RunCourseInfo"
,
ex
:
ex
);
}
if
(
list
!=
null
&&
list
.
Count
>
0
)
{
courseRepository
.
BatchSetCourseOtherRepository
(
list
);
...
...
@@ -397,33 +430,40 @@ namespace EduSpider.Spiders.ClassInRule
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
string
queryStr
=
$"courseKey=
{
searchKey
}
"
;
var
content
=
new
StringContent
(
queryStr
,
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
string
url
=
"https://live.eeo.cn/saasajax/webcast.ajax.php?action=getLessonList"
;
var
response
=
request
.
PostAsync
(
url
,
content
).
Result
;
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
var
lessonKeyList
=
new
List
<
string
>();
int
lessonVodCount
=
0
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
string
url
=
"https://live.eeo.cn/saasajax/webcast.ajax.php?action=getLessonList"
;
try
{
var
rootObj
=
JObject
.
Parse
(
result
);
if
(
rootObj
.
ContainsKey
(
"data"
))
var
response
=
request
.
PostAsync
(
url
,
content
).
Result
;
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
JArray
dataArray
=
JArray
.
Parse
(
rootObj
[
"data"
].
ToString
()
);
if
(
dataArray
!=
null
&&
dataArray
.
Count
>
0
)
var
rootObj
=
JObject
.
Parse
(
result
);
if
(
rootObj
.
ContainsKey
(
"data"
)
)
{
foreach
(
var
sItem
in
dataArray
)
JArray
dataArray
=
JArray
.
Parse
(
rootObj
[
"data"
].
ToString
());
if
(
dataArray
!=
null
&&
dataArray
.
Count
>
0
)
{
JObject
sObj
=
JObject
.
Parse
(
JsonHelper
.
Serialize
(
sItem
));
lessonKeyList
.
Add
(
sObj
.
GetString
(
"lessonKey"
));
int
lessonStatus
=
sObj
.
GetInt
(
"lessonStatus"
);
if
(
lessonStatus
==
1
)
foreach
(
var
sItem
in
dataArray
)
{
lessonVodCount
+=
sObj
.
GetInt
(
"lessonVodCount"
);
JObject
sObj
=
JObject
.
Parse
(
JsonHelper
.
Serialize
(
sItem
));
lessonKeyList
.
Add
(
sObj
.
GetString
(
"lessonKey"
));
int
lessonStatus
=
sObj
.
GetInt
(
"lessonStatus"
);
if
(
lessonStatus
==
1
)
{
lessonVodCount
+=
sObj
.
GetInt
(
"lessonVodCount"
);
}
}
}
}
}
}
if
(
lessonVodCount
>
0
)
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_GetCourseLessionList"
,
ex
:
ex
);
}
if
(
lessonVodCount
>
0
)
{
var
resultList
=
new
List
<
string
>();
//var request2 = Utility.HttpHelper.GenerateHttp(cookie);
...
...
@@ -463,7 +503,7 @@ namespace EduSpider.Spiders.ClassInRule
//}
if
(
resultList
!=
null
&&
resultList
.
Count
>
0
)
{
}
rb_course_hk
model
=
new
rb_course_hk
()
{
...
...
EduSpider/Spiders/ClassInRule/HomeWorkManager.cs
View file @
94d5dbd2
...
...
@@ -33,75 +33,88 @@ namespace EduSpider.Spiders.ClassInRule
IHomeWorkRepository
homeWorkRepository
=
new
HomeWorkRepository
();
IStuHomeWorkRepository
stuHomeWorkRepository
=
new
StuHomeWorkRepository
();
int
totalCount
=
0
;
string
url
=
"https://console.eeo.cn/saasajax/homework.ajax.php?action=getHomeworkList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
try
{
JObject
rootObj
=
JObject
.
Parse
(
result
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
string
url
=
"https://console.eeo.cn/saasajax/homework.ajax.php?action=getHomeworkList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
var
totalNum
=
dataObj
.
GetInt
(
"total"
);
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"list"
));
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
JObject
rootObj
=
JObject
.
Parse
(
result
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
tempList
);
totalCount
+=
tempList
.
Count
;
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
foreach
(
var
item
in
tempList
)
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
var
totalNum
=
dataObj
.
GetInt
(
"total"
);
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"list"
));
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
{
RunStuHomeWork
(
cookie
,
item
.
Homework_id
,
item
.
Course_id
);
homeWorkRepository
.
BatchSetHomeWorkRepository
(
tempList
);
totalCount
+=
tempList
.
Count
;
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
foreach
(
var
item
in
tempList
)
{
RunStuHomeWork
(
cookie
,
item
.
Homework_id
,
item
.
Course_id
);
}
}
if
(
totalNum
%
perpage
==
0
)
{
pageCount
=
totalNum
/
perpage
;
}
else
{
pageCount
=
totalNum
/
perpage
+
1
;
}
}
if
(
totalNum
%
perpage
==
0
)
{
pageCount
=
totalNum
/
perpage
;
}
else
{
pageCount
=
totalNum
/
perpage
+
1
;
}
if
(
totalNum
>
perpage
)
{
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
if
(
totalNum
>
perpage
)
{
Thread
.
Sleep
(
1000
*
2
);
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
);
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
sub_response
=
await
request
.
PostAsync
(
url
,
sub_content
);
var
sub_result
=
sub_response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sub_result
))
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
{
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
Thread
.
Sleep
(
1000
*
2
);
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
);
try
{
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
));
var
subtempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"list"
));
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
sub_response
=
await
request
.
PostAsync
(
url
,
sub_content
);
var
sub_result
=
sub_response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sub_result
))
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
subtempList
);
totalCount
+=
subtempList
.
Count
;
foreach
(
var
sItem
in
subtempList
)
{
RunStuHomeWork
(
cookie
,
sItem
.
Homework_id
,
sItem
.
Course_id
);
}
if
(
i
==
totalCount
)
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
{
// stuHomeWorkRepository.CreateHomeWorkCommentRepository(0);
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
));
var
subtempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"list"
));
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
subtempList
);
totalCount
+=
subtempList
.
Count
;
foreach
(
var
sItem
in
subtempList
)
{
RunStuHomeWork
(
cookie
,
sItem
.
Homework_id
,
sItem
.
Course_id
);
}
if
(
i
==
totalCount
)
{
// stuHomeWorkRepository.CreateHomeWorkCommentRepository(0);
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
catch
(
Exception
ex2
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"HomeWorkManager_RunHomeWork2"
,
ex
:
ex2
);
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"HomeWorkManager_RunHomeWork"
,
ex
:
ex
);
}
}
/// <summary>
...
...
@@ -165,7 +178,7 @@ namespace EduSpider.Spiders.ClassInRule
/// </summary>
/// <param name="cookie"></param>
/// <param name="homework_id"></param>
public
static
async
void
RunStuHomeWork
(
string
cookie
,
int
homework_id
,
int
courseId
)
public
static
async
void
RunStuHomeWork
(
string
cookie
,
int
homework_id
,
int
courseId
)
{
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
IStuHomeWorkRepository
stuHomeWorkRepository
=
new
StuHomeWorkRepository
();
...
...
@@ -177,75 +190,78 @@ namespace EduSpider.Spiders.ClassInRule
stuIds
=
string
.
Join
(
","
,
courseStuList
.
Select
(
qitem
=>
qitem
.
uid
));
}
string
queryStr
=
"page=1&perpage=100000&homework_id=[{0}]&course_id=[{1}]&is_del=[0]&student_uid=[{2}]&by=2"
;
string
paramStr
=
string
.
Format
(
queryStr
,
homework_id
,
courseId
,
stuIds
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}作业学员数据"
,
homework_id
));
string
url
=
"https://console.eeo.cn/saasajax/homework.ajax.php?action=getStudentsHomeworkList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
sutHomeWorkResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
List
<
RB_Stu_HomeWork
>
list
=
new
();
if
(!
string
.
IsNullOrWhiteSpace
(
sutHomeWorkResult
))
try
{
JObject
stuHomeRootObj
=
JObject
.
Parse
(
sutHomeWorkResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuHomeRootObj
.
GetString
(
"data"
)))
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
sutHomeWorkResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sutHomeWorkResult
))
{
JObject
stuHome
DataObj
=
JObject
.
Parse
(
stuHomeRootObj
.
GetString
(
"data"
)
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuHome
DataObj
.
GetString
(
"list
"
)))
JObject
stuHome
RootObj
=
JObject
.
Parse
(
sutHomeWorkResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuHome
RootObj
.
GetString
(
"data
"
)))
{
J
Array
stuHomeArray
=
JArray
.
Parse
(
stuHomeDataObj
.
GetString
(
"list
"
));
if
(
stuHomeArray
!=
null
&&
stuHomeArray
.
Count
>
0
)
J
Object
stuHomeDataObj
=
JObject
.
Parse
(
stuHomeRootObj
.
GetString
(
"data
"
));
if
(
!
string
.
IsNullOrWhiteSpace
(
stuHomeDataObj
.
GetString
(
"list"
))
)
{
foreach
(
var
rootItem
in
stuHomeArray
)
JArray
stuHomeArray
=
JArray
.
Parse
(
stuHomeDataObj
.
GetString
(
"list"
));
if
(
stuHomeArray
!=
null
&&
stuHomeArray
.
Count
>
0
)
{
JObject
stuItemObj
=
JObject
.
Parse
(
rootItem
.
ToString
());
if
(!
string
.
IsNullOrWhiteSpace
(
stuItemObj
.
GetString
(
"students"
)))
foreach
(
var
rootItem
in
stuHomeArray
)
{
J
Array
stuListArray
=
JArray
.
Parse
(
stuItemObj
.
GetString
(
"students"
));
if
(
stuListArray
!=
null
&&
stuListArray
.
Count
>
0
)
J
Object
stuItemObj
=
JObject
.
Parse
(
rootItem
.
ToString
(
));
if
(
!
string
.
IsNullOrWhiteSpace
(
stuItemObj
.
GetString
(
"students"
))
)
{
foreach
(
var
sItem
in
stuListArray
)
JArray
stuListArray
=
JArray
.
Parse
(
stuItemObj
.
GetString
(
"students"
));
if
(
stuListArray
!=
null
&&
stuListArray
.
Count
>
0
)
{
JObject
lastObj
=
JObject
.
Parse
(
sItem
.
ToString
());
list
.
Add
(
new
RB_Stu_HomeWork
()
foreach
(
var
sItem
in
stuListArray
)
{
stu_homework_id
=
lastObj
.
GetInt
(
"stu_homework_id"
),
admire
=
lastObj
.
GetString
(
"admire"
),
cancel
=
lastObj
.
GetString
(
"cancel"
),
correct
=
lastObj
.
GetDecimal
(
"correct"
),
wrong
=
lastObj
.
GetInt
(
"wrong"
),
course_id
=
lastObj
.
GetInt
(
"course_id"
),
is_cream
=
lastObj
.
GetInt
(
"is_cream"
),
emend
=
lastObj
.
GetInt
(
"emend"
),
homework_id
=
lastObj
.
GetInt
(
"homework_id"
),
homework_share_key
=
lastObj
.
GetString
(
"homework_share_key"
),
is_draft
=
lastObj
.
GetInt
(
"is_draft"
),
is_reform
=
lastObj
.
GetInt
(
"is_reform"
),
is_revised
=
lastObj
.
GetInt
(
"is_revised"
),
is_startd
=
lastObj
.
GetInt
(
"is_startd"
),
readover
=
lastObj
.
GetString
(
"readover"
),
ref_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"ref_time"
)),
comment
=
lastObj
.
GetString
(
"comment"
),
reform
=
lastObj
.
GetString
(
"reform"
),
school_uid
=
lastObj
.
GetInt
(
"school_uid"
),
score
=
lastObj
.
GetDecimal
(
"score"
),
score_p
=
lastObj
.
GetDecimal
(
"score_p"
),
score_type
=
lastObj
.
GetInt
(
"score_type"
),
show_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"show_time"
)),
status
=
lastObj
.
GetInt
(
"status"
),
stu_homework_share_key
=
lastObj
.
GetString
(
"stu_homework_share_key"
),
student_account
=
lastObj
.
GetString
(
"student_account"
),
student_name
=
lastObj
.
GetString
(
"student_name"
),
student_uid
=
lastObj
.
GetInt
(
"student_uid"
),
th_account
=
lastObj
.
GetString
(
"th_account"
),
th_cancel
=
lastObj
.
GetString
(
"th_cancel"
),
th_name
=
lastObj
.
GetString
(
"th_name"
),
th_num
=
lastObj
.
GetInt
(
"th_num"
),
th_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"th_time"
)),
th_uid
=
lastObj
.
GetInt
(
"th_uid"
),
add_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"add_time"
)),
update_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"update_time"
)),
});
JObject
lastObj
=
JObject
.
Parse
(
sItem
.
ToString
());
list
.
Add
(
new
RB_Stu_HomeWork
()
{
stu_homework_id
=
lastObj
.
GetInt
(
"stu_homework_id"
),
admire
=
lastObj
.
GetString
(
"admire"
),
cancel
=
lastObj
.
GetString
(
"cancel"
),
correct
=
lastObj
.
GetDecimal
(
"correct"
),
wrong
=
lastObj
.
GetInt
(
"wrong"
),
course_id
=
lastObj
.
GetInt
(
"course_id"
),
is_cream
=
lastObj
.
GetInt
(
"is_cream"
),
emend
=
lastObj
.
GetInt
(
"emend"
),
homework_id
=
lastObj
.
GetInt
(
"homework_id"
),
homework_share_key
=
lastObj
.
GetString
(
"homework_share_key"
),
is_draft
=
lastObj
.
GetInt
(
"is_draft"
),
is_reform
=
lastObj
.
GetInt
(
"is_reform"
),
is_revised
=
lastObj
.
GetInt
(
"is_revised"
),
is_startd
=
lastObj
.
GetInt
(
"is_startd"
),
readover
=
lastObj
.
GetString
(
"readover"
),
ref_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"ref_time"
)),
comment
=
lastObj
.
GetString
(
"comment"
),
reform
=
lastObj
.
GetString
(
"reform"
),
school_uid
=
lastObj
.
GetInt
(
"school_uid"
),
score
=
lastObj
.
GetDecimal
(
"score"
),
score_p
=
lastObj
.
GetDecimal
(
"score_p"
),
score_type
=
lastObj
.
GetInt
(
"score_type"
),
show_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"show_time"
)),
status
=
lastObj
.
GetInt
(
"status"
),
stu_homework_share_key
=
lastObj
.
GetString
(
"stu_homework_share_key"
),
student_account
=
lastObj
.
GetString
(
"student_account"
),
student_name
=
lastObj
.
GetString
(
"student_name"
),
student_uid
=
lastObj
.
GetInt
(
"student_uid"
),
th_account
=
lastObj
.
GetString
(
"th_account"
),
th_cancel
=
lastObj
.
GetString
(
"th_cancel"
),
th_name
=
lastObj
.
GetString
(
"th_name"
),
th_num
=
lastObj
.
GetInt
(
"th_num"
),
th_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"th_time"
)),
th_uid
=
lastObj
.
GetInt
(
"th_uid"
),
add_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"add_time"
)),
update_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"update_time"
)),
});
}
}
}
}
...
...
@@ -254,6 +270,10 @@ namespace EduSpider.Spiders.ClassInRule
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"HomeWorkManager_RunStuHomeWork"
,
ex
:
ex
);
}
if
(
list
!=
null
&&
list
.
Count
>
0
)
{
stuHomeWorkRepository
.
BatchSetStuHomeWorkRepository
(
list
);
...
...
EduSpider/Spiders/ClassInRule/QuestionManager.cs
View file @
94d5dbd2
...
...
@@ -10,7 +10,6 @@ using System.Linq;
using
System.Net.Http
;
using
System.Text
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
VTX.FW.Helper
;
namespace
EduSpider.Spiders.ClassInRule
...
...
@@ -27,111 +26,126 @@ namespace EduSpider.Spiders.ClassInRule
var
range
=
$"[1609430400,
{
ConvertHelper
.
DateTimeToUnix
(
DateTime
.
Now
)}
]"
;
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
string
queryStr
=
"page={0}&perpage={1}&examStatus=&paperName=&courseName=&arrangeTime={2}&display=0"
;
string
paramStr
=
string
.
Format
(
queryStr
,
pageCount
,
perpage
,
range
);
string
paramStr
=
string
.
Format
(
queryStr
,
pageCount
,
perpage
,
range
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
IHomeWorkRepository
homeWorkRepository
=
new
HomeWorkRepository
();
int
totalCount
=
0
;
string
url
=
"https://console.eeo.cn/saasajax/exam.ajax.php?action=getExamManageList"
;
var
response
=
request
.
PostAsync
(
url
,
content
);
var
result
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
try
{
JObject
rootObj
=
JObject
.
Parse
(
result
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
var
response
=
request
.
PostAsync
(
url
,
content
);
var
result
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
var
totalNum
=
dataObj
.
GetInt
(
"totalSum"
);
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"examsData"
),
cookie
);
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
JObject
rootObj
=
JObject
.
Parse
(
result
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
tempList
);
totalCount
+=
tempList
.
Count
;
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"QuestionManager_RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
foreach
(
var
item
in
tempList
)
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
var
totalNum
=
dataObj
.
GetInt
(
"totalSum"
);
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"examsData"
),
cookie
);
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
{
RunStuHomeWork
(
cookie
,
item
.
Homework_id
,
item
.
Course_id
,
item
);
homeWorkRepository
.
BatchSetHomeWorkRepository
(
tempList
);
totalCount
+=
tempList
.
Count
;
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"QuestionManager_RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
foreach
(
var
item
in
tempList
)
{
RunStuHomeWork
(
cookie
,
item
.
Homework_id
,
item
.
Course_id
,
item
);
}
}
}
if
(
totalNum
%
perpage
==
0
)
{
pageCount
=
totalNum
/
perpage
;
}
else
{
pageCount
=
totalNum
/
perpage
+
1
;
}
if
(
totalNum
>
perpage
)
{
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
if
(
totalNum
%
perpage
==
0
)
{
pageCount
=
totalNum
/
perpage
;
}
else
{
Thread
.
Sleep
(
1000
*
2
);
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
,
range
);
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
sub_response
=
request
.
PostAsync
(
url
,
sub_content
);
pageCount
=
totalNum
/
perpage
+
1
;
}
var
sub_result
=
sub_response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sub_result
))
if
(
totalNum
>
perpage
)
{
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
{
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
Thread
.
Sleep
(
1000
*
2
);
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
,
range
);
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
try
{
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
)
);
var
sub
tempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"list"
),
cookie
)
;
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
var
sub_response
=
request
.
PostAsync
(
url
,
sub_content
);
var
sub
_result
=
sub_response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
if
(
!
string
.
IsNullOrWhiteSpace
(
sub_result
)
)
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
subtempList
);
totalCount
+=
subtempList
.
Count
;
foreach
(
var
sItem
in
subtempList
)
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
{
RunStuHomeWork
(
cookie
,
sItem
.
Homework_id
,
sItem
.
Course_id
,
sItem
);
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
));
var
subtempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"list"
),
cookie
);
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
subtempList
);
totalCount
+=
subtempList
.
Count
;
foreach
(
var
sItem
in
subtempList
)
{
RunStuHomeWork
(
cookie
,
sItem
.
Homework_id
,
sItem
.
Course_id
,
sItem
);
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"QuestionManager_RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"QuestionManager_RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
catch
(
Exception
ex2
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"QuestionManager_RunHomeWork2"
,
ex
:
ex2
);
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"QuestionManager_RunHomeWork"
,
ex
:
ex
);
}
}
public
static
void
RequestExamDetail
(
string
cookie
,
int
courseId
,
int
examId
,
int
tid
,
ref
RB_HomeWork
m
)
public
static
void
RequestExamDetail
(
string
cookie
,
int
courseId
,
int
examId
,
int
tid
,
ref
RB_HomeWork
m
)
{
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RequestExamDetail"
,
$"正在查询测验详细信息"
);
var
paramStr
=
$"courseId=
{
courseId
}
&examsId=[
{
examId
}
]&teachersId=[
{
tid
}
]&page=1&perpage=20"
;
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
response
=
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/exam.ajax.php?action=getCourseExamAnalysisList"
,
content
);
var
resultStr
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
??
string
.
Empty
;
var
result
=
resultStr
.
TryToJObject
();
if
(
result
.
flag
)
try
{
var
data
=
(
result
.
val
.
ContainsKey
(
"data"
)
?
result
.
val
[
"data"
]
:
new
JObject
())
as
JObject
;
var
homeObj
=
(
data
[
"examsData"
]
as
JArray
)?.
FirstOrDefault
()
as
JObject
;
if
(
homeObj
!=
null
)
var
response
=
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/exam.ajax.php?action=getCourseExamAnalysisList"
,
content
);
var
resultStr
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
??
string
.
Empty
;
var
result
=
resultStr
.
TryToJObject
();
if
(
result
.
flag
)
{
m
.
Num
=
homeObj
.
GetInt
(
"shouldStSum"
);
m
.
Cream_num
=
homeObj
.
GetInt
(
"excellentStSum"
);
m
.
Revised_num
=
0
;
//未匹配数据;
m
.
Rnum
=
homeObj
.
GetInt
(
"beReviewStSum"
);
m
.
Cnum
=
homeObj
.
GetInt
(
"endStSum"
);
m
.
Score_value
=
homeObj
.
GetDecimal
(
"score_value"
);
m
.
Th_cancel
=
string
.
Empty
;
m
.
Ref_num
=
homeObj
.
GetInt
(
"needReStSum"
);
m
.
Refc_num
=
homeObj
.
GetInt
(
"alreadyReStSum"
);
m
.
Av_score
=
homeObj
.
GetDecimal
(
"averageScore"
)
/
100
;
m
.
Max_score
=
homeObj
.
GetDecimal
(
"highestScore"
)
/
100
;
m
.
Min_score
=
homeObj
.
GetDecimal
(
"lowestScore"
)
/
100
;
var
data
=
(
result
.
val
.
ContainsKey
(
"data"
)
?
result
.
val
[
"data"
]
:
new
JObject
())
as
JObject
;
var
homeObj
=
(
data
[
"examsData"
]
as
JArray
)?.
FirstOrDefault
()
as
JObject
;
if
(
homeObj
!=
null
)
{
m
.
Num
=
homeObj
.
GetInt
(
"shouldStSum"
);
m
.
Cream_num
=
homeObj
.
GetInt
(
"excellentStSum"
);
m
.
Revised_num
=
0
;
//未匹配数据;
m
.
Rnum
=
homeObj
.
GetInt
(
"beReviewStSum"
);
m
.
Cnum
=
homeObj
.
GetInt
(
"endStSum"
);
m
.
Score_value
=
homeObj
.
GetDecimal
(
"score_value"
);
m
.
Th_cancel
=
string
.
Empty
;
m
.
Ref_num
=
homeObj
.
GetInt
(
"needReStSum"
);
m
.
Refc_num
=
homeObj
.
GetInt
(
"alreadyReStSum"
);
m
.
Av_score
=
homeObj
.
GetDecimal
(
"averageScore"
)
/
100
;
m
.
Max_score
=
homeObj
.
GetDecimal
(
"highestScore"
)
/
100
;
m
.
Min_score
=
homeObj
.
GetDecimal
(
"lowestScore"
)
/
100
;
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"QuestionManager_RequestExamDetail"
,
ex
:
ex
);
}
}
/// <summary>
...
...
@@ -139,7 +153,7 @@ namespace EduSpider.Spiders.ClassInRule
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public
static
List
<
RB_HomeWork
>
ParseJson
(
string
data
,
string
cookie
)
public
static
List
<
RB_HomeWork
>
ParseJson
(
string
data
,
string
cookie
)
{
List
<
RB_HomeWork
>
list
=
new
();
if
(!
string
.
IsNullOrWhiteSpace
(
data
))
...
...
@@ -215,74 +229,77 @@ namespace EduSpider.Spiders.ClassInRule
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}作业学员数据"
,
homework_id
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunStuHomeWork"
,
string
.
Format
(
"开始获取{0}作业学员数据"
,
homework_id
));
string
url
=
"https://console.eeo.cn/saasajax/exam.ajax.php?action=getCourseExamsStDetailList"
;
var
response
=
request
.
PostAsync
(
url
,
content
);
var
sutHomeWorkResult
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
List
<
RB_Stu_HomeWork
>
list
=
new
();
if
(!
string
.
IsNullOrWhiteSpace
(
sutHomeWorkResult
))
try
{
JObject
stuHomeRootObj
=
JObject
.
Parse
(
sutHomeWorkResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuHomeRootObj
.
GetString
(
"data"
)))
var
response
=
request
.
PostAsync
(
url
,
content
);
var
sutHomeWorkResult
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sutHomeWorkResult
))
{
JObject
stuHome
DataObj
=
JObject
.
Parse
(
stuHomeRootObj
.
GetString
(
"data"
)
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuHome
DataObj
.
GetString
(
"examsD
ata"
)))
JObject
stuHome
RootObj
=
JObject
.
Parse
(
sutHomeWorkResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuHome
RootObj
.
GetString
(
"d
ata"
)))
{
J
Array
stuHomeArray
=
JArray
.
Parse
(
stuHomeDataObj
.
GetString
(
"examsD
ata"
));
if
(
stuHomeArray
!=
null
&&
stuHomeArray
.
Count
>
0
)
J
Object
stuHomeDataObj
=
JObject
.
Parse
(
stuHomeRootObj
.
GetString
(
"d
ata"
));
if
(
!
string
.
IsNullOrWhiteSpace
(
stuHomeDataObj
.
GetString
(
"examsData"
))
)
{
foreach
(
var
rootItem
in
stuHomeArray
)
JArray
stuHomeArray
=
JArray
.
Parse
(
stuHomeDataObj
.
GetString
(
"examsData"
));
if
(
stuHomeArray
!=
null
&&
stuHomeArray
.
Count
>
0
)
{
JObject
stuItemObj
=
JObject
.
Parse
(
rootItem
.
ToString
());
if
(!
string
.
IsNullOrWhiteSpace
(
stuItemObj
.
GetString
(
"studentsDetail"
)))
foreach
(
var
rootItem
in
stuHomeArray
)
{
J
Array
stuListArray
=
JArray
.
Parse
(
stuItemObj
.
GetString
(
"studentsDetail"
));
if
(
stuListArray
!=
null
&&
stuListArray
.
Count
>
0
)
J
Object
stuItemObj
=
JObject
.
Parse
(
rootItem
.
ToString
(
));
if
(
!
string
.
IsNullOrWhiteSpace
(
stuItemObj
.
GetString
(
"studentsDetail"
))
)
{
foreach
(
var
sItem
in
stuListArray
)
JArray
stuListArray
=
JArray
.
Parse
(
stuItemObj
.
GetString
(
"studentsDetail"
));
if
(
stuListArray
!=
null
&&
stuListArray
.
Count
>
0
)
{
JObject
lastObj
=
JObject
.
Parse
(
sItem
.
ToString
());
var
tempCream
=
lastObj
.
GetString
(
"scoreRate"
).
Replace
(
"%"
,
""
);
tempCream
=
tempCream
==
"-"
?
"0"
:
tempCream
;
var
tempStatus
=
lastObj
.
GetInt
(
"stStatus"
);
tempStatus
=
tempStatus
==
0
?
0
:
(
tempStatus
==
6
?
2
:
1
);
list
.
Add
(
new
RB_Stu_HomeWork
()
foreach
(
var
sItem
in
stuListArray
)
{
stu_homework_id
=
Int64
.
Parse
(
$"
{
homework_id
}{
lastObj
.
GetInt
(
"studentId"
)}
"
),
admire
=
string
.
Empty
,
cancel
=
string
.
Empty
,
correct
=
lastObj
.
GetDecimal
(
"correctSum"
),
wrong
=
lastObj
.
GetInt
(
"mistakeSum"
),
course_id
=
courseId
,
is_cream
=
Convert
.
ToDecimal
(
tempCream
)>=
80
?
1
:
0
,
emend
=
0
,
homework_id
=
homework_id
,
homework_share_key
=
string
.
Empty
,
is_draft
=
0
,
is_reform
=
0
,
is_revised
=
1
,
is_startd
=
1
,
readover
=
string
.
Empty
,
ref_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
comment
=
string
.
Empty
,
reform
=
string
.
Empty
,
school_uid
=
0
,
score
=
lastObj
.
GetDecimal
(
"examScore"
)/
100
,
score_p
=
Convert
.
ToDecimal
(
tempCream
)/
100
,
score_type
=
5
,
show_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
status
=
tempStatus
,
stu_homework_share_key
=
string
.
Empty
,
student_account
=
lastObj
.
GetString
(
"studentAccount"
),
student_name
=
lastObj
.
GetString
(
"studentName"
),
student_uid
=
lastObj
.
GetInt
(
"studentId"
),
th_account
=
m
.
Teacher_account
,
th_cancel
=
String
.
Empty
,
th_name
=
m
.
Teacher_name
,
th_num
=
1
,
th_time
=
DateTime
.
Now
,
th_uid
=
m
.
Teacher_uid
,
add_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
update_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
});
JObject
lastObj
=
JObject
.
Parse
(
sItem
.
ToString
());
var
tempCream
=
lastObj
.
GetString
(
"scoreRate"
).
Replace
(
"%"
,
""
);
tempCream
=
tempCream
==
"-"
?
"0"
:
tempCream
;
var
tempStatus
=
lastObj
.
GetInt
(
"stStatus"
);
tempStatus
=
tempStatus
==
0
?
0
:
(
tempStatus
==
6
?
2
:
1
);
list
.
Add
(
new
RB_Stu_HomeWork
()
{
stu_homework_id
=
Int64
.
Parse
(
$"
{
homework_id
}{
lastObj
.
GetInt
(
"studentId"
)}
"
),
admire
=
string
.
Empty
,
cancel
=
string
.
Empty
,
correct
=
lastObj
.
GetDecimal
(
"correctSum"
),
wrong
=
lastObj
.
GetInt
(
"mistakeSum"
),
course_id
=
courseId
,
is_cream
=
Convert
.
ToDecimal
(
tempCream
)
>=
80
?
1
:
0
,
emend
=
0
,
homework_id
=
homework_id
,
homework_share_key
=
string
.
Empty
,
is_draft
=
0
,
is_reform
=
0
,
is_revised
=
1
,
is_startd
=
1
,
readover
=
string
.
Empty
,
ref_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
comment
=
string
.
Empty
,
reform
=
string
.
Empty
,
school_uid
=
0
,
score
=
lastObj
.
GetDecimal
(
"examScore"
)
/
100
,
score_p
=
Convert
.
ToDecimal
(
tempCream
)
/
100
,
score_type
=
5
,
show_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
status
=
tempStatus
,
stu_homework_share_key
=
string
.
Empty
,
student_account
=
lastObj
.
GetString
(
"studentAccount"
),
student_name
=
lastObj
.
GetString
(
"studentName"
),
student_uid
=
lastObj
.
GetInt
(
"studentId"
),
th_account
=
m
.
Teacher_account
,
th_cancel
=
String
.
Empty
,
th_name
=
m
.
Teacher_name
,
th_num
=
1
,
th_time
=
DateTime
.
Now
,
th_uid
=
m
.
Teacher_uid
,
add_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
update_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
});
}
}
}
}
...
...
@@ -291,6 +308,10 @@ namespace EduSpider.Spiders.ClassInRule
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"QuestionManager_RunStuHomeWork"
,
ex
:
ex
);
}
if
(
list
!=
null
&&
list
.
Count
>
0
)
{
stuHomeWorkRepository
.
BatchSetStuHomeWorkRepository
(
list
);
...
...
EduSpider/Spiders/ClassInRule/StudentManager.cs
View file @
94d5dbd2
...
...
@@ -18,10 +18,14 @@ namespace EduSpider.Spiders.ClassInRule
private
static
readonly
IStudentRepository
courseRepository
=
new
StudentRepository
();
/// <summary>
/// 获取学生数据
/// </summary>
/// <param name="cookie"></param>
public
static
async
void
RunAsync
(
string
cookie
)
{
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
int
pageIndex
=
1
,
pageCount
=
1
,
pageSize
=
500
;
int
pageIndex
=
1
,
pageCount
=
1
,
pageSize
=
500
;
#
region
获取最大学生
ID
//更新账户
...
...
@@ -31,78 +35,81 @@ namespace EduSpider.Spiders.ClassInRule
List
<
rb_account_hk
>
accountList
=
new
();
#
endregion
while
(
pageIndex
<=
pageCount
)
while
(
pageIndex
<=
pageCount
)
{
InfoHelper
.
WriteLine
(
$"正在查询第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunAsync"
,
$"正在查询第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
var
paramStr
=
$"page=
{
pageIndex
}
&perpage=
{
pageSize
}
&isdel=0"
;
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
response
=
await
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/student.ajax.php?action=getSchoolStudentListByPage"
,
content
);
var
resultStr
=
response
.
Content
.
ReadAsStringAsync
().
Result
??
string
.
Empty
;
var
result
=
resultStr
.
TryToJObject
();
if
(
result
.
flag
)
try
{
var
data
=
(
result
.
val
.
ContainsKey
(
"data"
)
?
result
.
val
[
"data"
]
:
new
JObject
())
as
JObject
;
if
(
data
.
ContainsKey
(
"totalStudentNum"
))
{
#
region
更新
PageCount
if
(
pageIndex
==
1
)
var
response
=
await
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/student.ajax.php?action=getSchoolStudentListByPage"
,
content
);
var
resultStr
=
response
.
Content
.
ReadAsStringAsync
().
Result
??
string
.
Empty
;
var
result
=
resultStr
.
TryToJObject
();
if
(
result
.
flag
)
{
var
data
=
(
result
.
val
.
ContainsKey
(
"data"
)
?
result
.
val
[
"data"
]
:
new
JObject
())
as
JObject
;
if
(
data
.
ContainsKey
(
"totalStudentNum"
))
{
pageCount
=
(
int
)
Math
.
Ceiling
(
data
.
GetDecimal
(
"totalStudentNum"
)
/
pageSize
);
}
#
endregion
#
region
组装实体
var
stus
=
new
List
<
rb_student_hk
>();
var
stuArray
=
(
data
[
"studentList"
]
as
JArray
);
foreach
(
JObject
x
in
stuArray
)
{
stus
.
Add
(
new
rb_student_hk
()
#
region
更新
PageCount
if
(
pageIndex
==
1
)
{
AddTime
=
ConvertHelper
.
UnixToDateTime
(
x
.
GetString
(
"addTime"
)),
StudentAccount
=
x
.
GetString
(
"studentAccount"
),
Isdel
=
x
.
GetInt
(
"isdel"
,
0
),
IsGroup
=
x
.
GetInt
(
"isGroup"
,
0
),
StudId
=
x
.
GetInt
(
"studId"
,
0
),
Progress
=
x
.
GetString
(
"progress"
),
PublicResourceStatus
=
x
.
GetInt
(
"publicResourceStatus"
,
0
),
ServeState
=
x
.
GetInt
(
"serveState"
,
0
),
StudentName
=
x
.
GetString
(
"studentName"
),
StudentUid
=
x
.
GetInt
(
"studentUid"
,
0
),
Stuno
=
x
.
GetString
(
"stuno"
),
});
}
courseRepository
.
BatchSetStudent
(
stus
);
InfoHelper
.
WriteLine
(
$"已导入第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunAsync"
,
$"已导入第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
#
endregion
pageCount
=
(
int
)
Math
.
Ceiling
(
data
.
GetDecimal
(
"totalStudentNum"
)
/
pageSize
);
}
#
endregion
#
region
写入账号
if
(
stus
.
Any
(
x
=>
x
.
StudId
>
MaxStuId
))
{
foreach
(
var
item
in
stus
.
Where
(
x
=>
x
.
StudId
>
MaxStuId
))
#
region
组装实体
var
stus
=
new
List
<
rb_student_hk
>();
var
stuArray
=
(
data
[
"studentList"
]
as
JArray
);
foreach
(
JObject
x
in
stuArray
)
{
accountList
.
Add
(
new
rb_accou
nt_hk
()
stus
.
Add
(
new
rb_stude
nt_hk
()
{
UniqueId
=
0
,
Id
=
item
.
StudId
,
Account
=
item
.
StudentAccount
,
AccountId
=
item
.
StudentUid
,
AccountType
=
Utility
.
Enum
.
AccountTypeEnum
.
Student
,
OpenId
=
""
,
Password
=
DESHepler
.
Encrypt
(
item
.
StudentAccount
[^
6.
.]),
Status
=
0
,
UnionId
=
""
AddTime
=
ConvertHelper
.
UnixToDateTime
(
x
.
GetString
(
"addTime"
)),
StudentAccount
=
x
.
GetString
(
"studentAccount"
),
Isdel
=
x
.
GetInt
(
"isdel"
,
0
),
IsGroup
=
x
.
GetInt
(
"isGroup"
,
0
),
StudId
=
x
.
GetInt
(
"studId"
,
0
),
Progress
=
x
.
GetString
(
"progress"
),
PublicResourceStatus
=
x
.
GetInt
(
"publicResourceStatus"
,
0
),
ServeState
=
x
.
GetInt
(
"serveState"
,
0
),
StudentName
=
x
.
GetString
(
"studentName"
),
StudentUid
=
x
.
GetInt
(
"studentUid"
,
0
),
Stuno
=
x
.
GetString
(
"stuno"
),
});
}
courseRepository
.
BatchSetStudent
(
stus
);
InfoHelper
.
WriteLine
(
$"已导入第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunAsync"
,
$"已导入第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
#
endregion
#
region
写入账号
if
(
stus
.
Any
(
x
=>
x
.
StudId
>
MaxStuId
))
{
foreach
(
var
item
in
stus
.
Where
(
x
=>
x
.
StudId
>
MaxStuId
))
{
accountList
.
Add
(
new
rb_account_hk
()
{
UniqueId
=
0
,
Id
=
item
.
StudId
,
Account
=
item
.
StudentAccount
,
AccountId
=
item
.
StudentUid
,
AccountType
=
Utility
.
Enum
.
AccountTypeEnum
.
Student
,
OpenId
=
""
,
Password
=
DESHepler
.
Encrypt
(
item
.
StudentAccount
[^
6.
.]),
Status
=
0
,
UnionId
=
""
});
}
}
#
endregion
}
#
endregion
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"StudentManager_RunAsync"
,
ex
:
ex
);
}
pageIndex
++;
}
...
...
@@ -115,8 +122,6 @@ namespace EduSpider.Spiders.ClassInRule
InfoHelper
.
WriteLine
(
"学员同步完成"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunAsync"
,
$"学员同步完成"
);
}
}
}
EduSpider/Spiders/ClassInRule/TeacherManager.cs
View file @
94d5dbd2
...
...
@@ -29,39 +29,45 @@ namespace EduSpider.Spiders.ClassInRule
{
string
paramStr
=
string
.
Format
(
"page={0}&perpage={1}"
,
pageIndex
,
perpage
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
response
=
await
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/teacher.ajax.php?action=getSchoolTeacherFullList"
,
content
);
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
try
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunTeacher"
,
$"result:
{
result
}
"
);
JObject
rootObj
=
JObject
.
Parse
(
result
)
;
if
(!
string
.
IsNullOrWhiteSpace
(
r
ootObj
.
GetString
(
"data"
)
))
var
response
=
await
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/teacher.ajax.php?action=getSchoolTeacherFullList"
,
content
);
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
r
esult
))
{
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
var
totalNum
=
dataObj
.
GetInt
(
"totalNum"
);
string
rlist
=
dataObj
.
GetString
(
"list"
);
if
(
pageIndex
==
1
)
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunTeacher"
,
$"result:
{
result
}
"
);
JObject
rootObj
=
JObject
.
Parse
(
result
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
{
if
(
totalNum
>
perpage
)
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
var
totalNum
=
dataObj
.
GetInt
(
"totalNum"
);
string
rlist
=
dataObj
.
GetString
(
"list"
);
if
(
pageIndex
==
1
)
{
if
(
totalNum
%
perpage
==
0
)
if
(
totalNum
>
perpage
)
{
pageCount
=
totalNum
/
perpage
;
}
else
{
pageCount
=
(
totalNum
/
perpage
)
+
1
;
if
(
totalNum
%
perpage
==
0
)
{
pageCount
=
totalNum
/
perpage
;
}
else
{
pageCount
=
(
totalNum
/
perpage
)
+
1
;
}
}
}
list
.
AddRange
(
ParseJson
(
rlist
));
}
list
.
AddRange
(
ParseJson
(
rlist
));
}
else
{
Console
.
WriteLine
(
"result"
,
result
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunTeacher"
,
$"result:
{
result
}
"
);
}
}
else
catch
(
Exception
ex
)
{
Console
.
WriteLine
(
"result"
,
result
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunTeacher"
,
$"result:
{
result
}
"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"RunTeacher"
,
ex
:
ex
);
}
if
(
pageIndex
==
pageCount
)
{
...
...
EduSpider/Spiders/ICookiesManager.cs
deleted
100644 → 0
View file @
47041ac9
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
TicketSpider.Spiders
{
public
interface
ICookiesManager
{
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment