Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
dd_school
Overview
Overview
Details
Activity
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangqi
dd_school
Commits
63dc7a74
Commit
63dc7a74
authored
Oct 10, 2023
by
baochunxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
家校通讯录查询上传
parent
272909d3
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
313 additions
and
0 deletions
+313
-0
smart-campus/src/main/java/yangtz/cs/liu/dingding/controller/DingJiaXiaoController.java
+206
-0
smart-campus/src/main/java/yangtz/cs/liu/dingding/vo/DingJiaXiaoVo.java
+107
-0
No files found.
smart-campus/src/main/java/yangtz/cs/liu/dingding/controller/DingJiaXiaoController.java
0 → 100644
View file @
63dc7a74
package
yangtz
.
cs
.
liu
.
dingding
.
controller
;
import
cn.hutool.http.HttpUtil
;
//import cn.hutool.json.JSONObject;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson2.JSONArray
;
import
com.alibaba.fastjson2.JSONObject
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
yangtz.cs.liu.dingding.utils.AccessTokenUtils
;
import
yangtz.cs.liu.dingding.vo.DingJiaXiaoVo
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 家校通讯录
*/
@RestController
@RequestMapping
(
"/dd/djtx"
)
public
class
DingJiaXiaoController
{
@Autowired
private
AccessTokenUtils
accessTokenUtils
;
final
String
listUrl
=
"https://oapi.dingtalk.com/topapi/edu/dept/list?access_token="
;
final
String
userUrl
=
"https://oapi.dingtalk.com/topapi/edu/user/list?access_token="
;
public
List
<
String
>
userTypes
=
new
ArrayList
<
String
>(){
{
this
.
add
(
"teacher"
);
this
.
add
(
"guardian"
);
this
.
add
(
"student"
);
}
};
@GetMapping
(
"/getList"
)
private
List
<
DingJiaXiaoVo
>
getList
(){
//年级
List
<
DingJiaXiaoVo
>
njInfoList
=
new
ArrayList
<>();
// 0 获取校园信息
String
token
=
accessTokenUtils
.
getToken
();
JSONObject
jsonObjectParme
=
new
JSONObject
();
jsonObjectParme
.
put
(
"page_no"
,
1
);
jsonObjectParme
.
put
(
"page_size"
,
30
);
String
post
=
HttpUtil
.
post
(
listUrl
+
token
,
jsonObjectParme
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
post
);
if
((
Integer
)
jsonObject
.
get
(
"errcode"
)
!=
0
){
throw
new
RuntimeException
(
"获取校园列表失败"
);
}
Integer
deptId
=
null
;
JSONObject
result
=
(
JSONObject
)
jsonObject
.
get
(
"result"
);
JSONArray
detailsArray
=
JSONArray
.
of
(
result
.
get
(
"details"
));
for
(
int
i
=
0
;
i
<
detailsArray
.
size
();
i
++){
JSONObject
da
=
detailsArray
.
getJSONArray
(
i
).
getJSONObject
(
i
);
deptId
=
(
Integer
)
da
.
get
(
"dept_id"
);
}
//1 获取校园学历类型
JSONObject
xyParme
=
new
JSONObject
();
xyParme
.
put
(
"page_no"
,
1
);
xyParme
.
put
(
"page_size"
,
30
);
xyParme
.
put
(
"super_id"
,
deptId
);
String
xyPost
=
HttpUtil
.
post
(
listUrl
+
token
,
xyParme
);
JSONObject
xyObject
=
JSONObject
.
parseObject
(
xyPost
);
if
((
Integer
)
xyObject
.
get
(
"errcode"
)
!=
0
){
throw
new
RuntimeException
(
"获取年纪列表失败"
);
}
JSONObject
xyResult
=
(
JSONObject
)
xyObject
.
get
(
"result"
);
JSONArray
xyDetailsArray
=
JSONArray
.
of
(
xyResult
.
get
(
"details"
));
for
(
int
i
=
0
;
i
<
xyDetailsArray
.
size
();
i
++){
JSONObject
da
=
xyDetailsArray
.
getJSONArray
(
i
).
getJSONObject
(
i
);
deptId
=
(
Integer
)
da
.
get
(
"dept_id"
);
}
//2.获取校园年级
JSONObject
njParme
=
new
JSONObject
();
njParme
.
put
(
"page_no"
,
1
);
njParme
.
put
(
"page_size"
,
30
);
njParme
.
put
(
"super_id"
,
deptId
);
String
njPost
=
HttpUtil
.
post
(
listUrl
+
token
,
njParme
);
JSONObject
njObject
=
JSONObject
.
parseObject
(
njPost
);
if
((
Integer
)
njObject
.
get
(
"errcode"
)
!=
0
){
throw
new
RuntimeException
(
"获取年纪列表失败"
);
}
JSONObject
njResult
=
(
JSONObject
)
njObject
.
get
(
"result"
);
JSONArray
njDetailsArray
=
JSONArray
.
of
(
njResult
.
get
(
"details"
));
for
(
int
i
=
0
;
i
<
njDetailsArray
.
size
();
i
++){
for
(
int
q
=
0
;
q
<
njDetailsArray
.
getJSONArray
(
i
).
size
();
q
++){
JSONObject
da
=
njDetailsArray
.
getJSONArray
(
i
).
getJSONObject
(
q
);
Integer
supId
=
(
Integer
)
da
.
get
(
"dept_id"
);
DingJiaXiaoVo
dingJiaXiaoVo
=
new
DingJiaXiaoVo
();
dingJiaXiaoVo
.
setGradeId
((
Integer
)
da
.
get
(
"dept_id"
));
dingJiaXiaoVo
.
setGradeName
((
String
)
da
.
get
(
"name"
));
//3.查询年纪下的班级
JSONObject
bjParme
=
new
JSONObject
();
bjParme
.
put
(
"page_no"
,
1
);
bjParme
.
put
(
"page_size"
,
30
);
bjParme
.
put
(
"super_id"
,
supId
);
String
bjPost
=
HttpUtil
.
post
(
listUrl
+
token
,
bjParme
);
JSONObject
bjObject
=
JSONObject
.
parseObject
(
bjPost
);
if
((
Integer
)
bjObject
.
get
(
"errcode"
)
!=
0
){
throw
new
RuntimeException
(
"获取班级列表失败"
);
}
JSONObject
bjResult
=
(
JSONObject
)
bjObject
.
get
(
"result"
);
JSONArray
bjDetailsArray
=
JSONArray
.
of
(
bjResult
.
get
(
"details"
));
//班级
List
<
DingJiaXiaoVo
.
ClassInfo
>
classInfoList
=
new
ArrayList
<>();
//查询班级班级
for
(
int
j
=
0
;
j
<
bjDetailsArray
.
size
();
j
++)
{
for
(
int
n
=
0
;
n
<
bjDetailsArray
.
getJSONArray
(
j
).
size
();
n
++)
{
JSONObject
classDate
=
bjDetailsArray
.
getJSONArray
(
j
).
getJSONObject
(
n
);
Integer
classId
=
(
Integer
)
classDate
.
get
(
"dept_id"
);
//创建班级
DingJiaXiaoVo
.
ClassInfo
classInfo
=
new
DingJiaXiaoVo
().
new
ClassInfo
();
classInfo
.
setClassId
((
Integer
)
classDate
.
get
(
"dept_id"
));
classInfo
.
setClassName
((
String
)
classDate
.
get
(
"name"
));
/**
* 学生信息
*/
List
<
DingJiaXiaoVo
.
StudentUserInfo
>
studentUserInfos
=
new
ArrayList
<>();
/**
* 老师信息
*/
List
<
DingJiaXiaoVo
.
StudentUserInfo
>
teacherUserInfos
=
new
ArrayList
<>();
/**
* 监护人信息
*/
List
<
DingJiaXiaoVo
.
StudentUserInfo
>
guardianUserInfos
=
new
ArrayList
<>();
//分页查询,每次查询数据最大只有30条,分5次查询 一个班判断最大150人
for
(
String
type
:
userTypes
)
{
if
(
type
.
equals
(
"teacher"
))
{
//老师
teacherUserInfos
=
this
.
addUserList
(
token
,
type
,
classId
);
}
else
if
(
type
.
equals
(
"guardian"
))
{
//监护人
guardianUserInfos
=
this
.
addUserList
(
token
,
type
,
classId
);
}
else
if
(
type
.
equals
(
"student"
))
{
//学生
studentUserInfos
=
this
.
addUserList
(
token
,
type
,
classId
);
}
}
//将人员存入班级中
classInfo
.
setStudentUserInfos
(
studentUserInfos
);
classInfo
.
setTeacherUserInfos
(
teacherUserInfos
);
classInfo
.
setGuardianUserInfos
(
guardianUserInfos
);
classInfoList
.
add
(
classInfo
);
}
}
dingJiaXiaoVo
.
setClassInfoList
(
classInfoList
);
njInfoList
.
add
(
dingJiaXiaoVo
);
}
}
return
njInfoList
;
}
private
List
<
DingJiaXiaoVo
.
StudentUserInfo
>
addUserList
(
String
token
,
String
type
,
Integer
classId
){
List
<
DingJiaXiaoVo
.
StudentUserInfo
>
userList
=
new
ArrayList
<>();
//分页查询,每次查询数据最大只有30条,分5次查询 一个班判断最大150人
for
(
int
k
=
1
;
k
<=
5
;
k
++
){
//查询班级下边的人员
JSONObject
ryParme
=
new
JSONObject
();
ryParme
.
put
(
"page_no"
,
k
);
ryParme
.
put
(
"page_size"
,
30
);
ryParme
.
put
(
"role"
,
type
);
ryParme
.
put
(
"class_id"
,
classId
);
String
ryPost
=
HttpUtil
.
post
(
userUrl
+
token
,
ryParme
);
JSONObject
ryObject
=
JSONObject
.
parseObject
(
ryPost
);
if
((
Integer
)
ryObject
.
get
(
"errcode"
)
!=
0
){
throw
new
RuntimeException
(
"获取班级人员列表失败"
);
}
JSONObject
ryResult
=
(
JSONObject
)
ryObject
.
get
(
"result"
);
JSONArray
xyDetailsArray
=
JSONArray
.
of
(
ryResult
.
get
(
"details"
));
for
(
int
o
=
0
;
o
<
xyDetailsArray
.
size
();
o
++){
for
(
int
i
=
0
;
i
<
xyDetailsArray
.
getJSONArray
(
o
).
size
();
i
++){
JSONObject
userInfo
=
xyDetailsArray
.
getJSONArray
(
o
).
getJSONObject
(
i
);
DingJiaXiaoVo
.
StudentUserInfo
studentUserInfo
=
new
DingJiaXiaoVo
().
new
StudentUserInfo
();
studentUserInfo
.
setUserId
(
userInfo
.
get
(
"userid"
).
toString
());
studentUserInfo
.
setClassId
((
Integer
)
userInfo
.
get
(
"class_id"
));
studentUserInfo
.
setRole
(
userInfo
.
get
(
"role"
)==
null
?
null
:
userInfo
.
get
(
"role"
).
toString
());
studentUserInfo
.
setUnionid
(
userInfo
.
get
(
"unionid"
)==
null
?
null
:
userInfo
.
get
(
"unionid"
).
toString
());
studentUserInfo
.
setName
(
userInfo
.
get
(
"name"
).
toString
());
studentUserInfo
.
setIsAdviser
(
userInfo
.
getJSONObject
(
"feature"
).
get
(
"is_adviser"
)
==
null
?
null
:
userInfo
.
getJSONObject
(
"feature"
).
get
(
"is_adviser"
).
toString
());
studentUserInfo
.
setStudentNo
(
userInfo
.
get
(
"student_no"
)==
null
?
null
:
userInfo
.
get
(
"student_no"
).
toString
());
userList
.
add
(
studentUserInfo
);
}
}
}
return
userList
;
}
}
smart-campus/src/main/java/yangtz/cs/liu/dingding/vo/DingJiaXiaoVo.java
0 → 100644
View file @
63dc7a74
package
yangtz
.
cs
.
liu
.
dingding
.
vo
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
DingJiaXiaoVo
{
/**
* 年纪id
*/
Integer
gradeId
;
/**
* 年纪名称
*/
String
gradeName
;
/**
* 班级信息
*/
List
<
ClassInfo
>
classInfoList
;
/**
* 班级信息
*/
@Data
public
class
ClassInfo
{
/**
* 班级id
*/
Integer
classId
;
/**
* 年纪名称
*/
String
className
;
/**
* 学生信息
*/
List
<
StudentUserInfo
>
studentUserInfos
;
/**
* 老师信息
*/
List
<
StudentUserInfo
>
teacherUserInfos
;
/**
* 监护人信息
*/
List
<
StudentUserInfo
>
guardianUserInfos
;
}
/**
* 学生信息
*/
@Data
public
class
StudentUserInfo
{
/**
* 班级id
*/
Integer
classId
;
/**
* 人员的userId。
*/
String
userId
;
/**
* 人员姓名。
*/
String
name
;
/**
* 人员的unionId,无手机号的学生为""。
*/
String
unionid
;
/**
* 家校人员角色。
* teacher:老师
* guardian:监护人
* student:学生
*/
String
role
;
/**
* 只在老师角色下意义。
* 1:班主任
* 0:非班主任
*/
String
isAdviser
;
/**
* 学号,只有在学生角色下才有意义,并且需确认各个班级的设置,如果没有设置,则不会返回此字段。
*/
String
studentNo
;
}
}
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