Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
attendance-performance-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
attendance-performance-platform
Commits
e0f251f0
Commit
e0f251f0
authored
Jul 12, 2023
by
周亚武
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
钉钉相关接口
parent
18785865
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
287 additions
and
25 deletions
+287
-25
attendance-performance-manager/pom.xml
attendance-performance-manager/pom.xml
+8
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/api/TalkApiController.java
...com/mortals/xhx/busiz/dingtalk/api/TalkApiController.java
+190
-20
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/config/TalkConfiguration.java
.../mortals/xhx/busiz/dingtalk/config/TalkConfiguration.java
+32
-4
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/req/UserPageReq.java
.../java/com/mortals/xhx/busiz/dingtalk/req/UserPageReq.java
+39
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/req/MobileReq.java
...er/src/main/java/com/mortals/xhx/busiz/req/MobileReq.java
+18
-0
No files found.
attendance-performance-manager/pom.xml
View file @
e0f251f0
...
...
@@ -145,7 +145,14 @@
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
dingtalk
</artifactId>
<version>
2.0.19
</version>
<version>
2.0.22
</version>
</dependency>
<!--dingdingtalk service sdk-->
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
alibaba-dingtalk-service-sdk
</artifactId>
<version>
2.0.0
</version>
</dependency>
<dependency>
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/api/TalkApiController.java
View file @
e0f251f0
...
...
@@ -2,20 +2,29 @@ package com.mortals.xhx.busiz.dingtalk.api;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.dingtalk.api.DefaultDingTalkClient
;
import
com.dingtalk.api.DingTalkClient
;
import
com.dingtalk.api.request.*
;
import
com.dingtalk.api.response.*
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.mortals.framework.annotation.UnAuth
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.
service.ICacheService
;
import
com.mortals.framework.
exception.AppException
;
import
com.mortals.xhx.busiz.dingtalk.config.TalkConfiguration
;
import
com.mortals.xhx.busiz.dingtalk.req.DingTalkBaseReq
;
import
com.mortals.xhx.busiz.dingtalk.req.UserPageReq
;
import
com.mortals.xhx.busiz.req.MobileReq
;
import
com.mortals.xhx.busiz.req.ReviewSaveReq
;
import
com.mortals.xhx.common.code.YesNoEnum
;
import
com.mortals.xhx.common.pdu.ApiRespPdu
;
import
lombok.extern.apachecommons.CommonsLog
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.formula.functions.T
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.
PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.
*
;
import
sun.security.krb5.internal.APOptions
;
import
java.util.List
;
/**
* 钉钉相关外部接口
...
...
@@ -29,7 +38,7 @@ public class TalkApiController {
@Autowired
private
TalkConfiguration
talkConfiguration
;
private
String
dingToken
;
/**
* 获取token
...
...
@@ -37,33 +46,194 @@ public class TalkApiController {
* @return
*/
@PostMapping
(
"/dingtalk/gettoken"
)
public
Rest
<
String
>
getToken
(
@RequestBody
DingTalkBaseReq
dingTalkBaseReq
)
{
log
.
info
(
"收到【getToken】请求【请求体】--> {}"
,
JSON
.
toJSONString
(
dingTalkBaseReq
));
@UnAuth
public
ApiRespPdu
<
String
>
getToken
()
{
ApiRespPdu
<
String
>
apiRespPdu
=
new
ApiRespPdu
<>();
try
{
// DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
// OapiGettokenRequest req = new OapiGettokenRequest();
// req.setHttpMethod("GET");
// OapiGettokenResponse rsp = client.execute(req);
/* DingTalkClient client = new DefaultDingTalkClient(talkConfiguration.getGetTokneUrl());
DingTalkClient
client
=
new
DefaultDingTalkClient
(
talkConfiguration
.
getGetTokneUrl
());
OapiGettokenRequest
req
=
new
OapiGettokenRequest
();
req.setAppkey(
apiKey
);
req.setAppsecret(
appsecret
);
req
.
setAppkey
(
talkConfiguration
.
getAppKey
()
);
req
.
setAppsecret
(
talkConfiguration
.
getAppSecret
()
);
req
.
setHttpMethod
(
"GET"
);
OapiGettokenResponse
rsp
=
client
.
execute
(
req
);
log
.
info
(
"gettoken rsp:"
+
rsp
.
getBody
());
if
(
rsp
.
getErrcode
()
==
0
)
{
dingToken
=
rsp
.
getAccessToken
();
apiRespPdu
.
setCode
(
0
);
apiRespPdu
.
setData
(
rsp
.
getAccessToken
());
apiRespPdu
.
setMsg
(
rsp
.
getMsg
());
}
else
{
throw new AppException(String.format("errorCode:%s,errorMsg:%s", rsp.getErrcode(), rsp.getErrmsg()));
apiRespPdu
.
setCode
(-
1
);
apiRespPdu
.
setData
(
""
);
apiRespPdu
.
setMsg
(
rsp
.
getMsg
());
}
*/
}
catch
(
Exception
e
)
{
log
.
error
(
"异常"
,
e
);
return
Rest
.
fail
(
e
.
getMessage
());
apiRespPdu
.
setCode
(-
1
);
apiRespPdu
.
setData
(
""
);
apiRespPdu
.
setMsg
(
e
.
toString
());
}
return
apiRespPdu
;
}
/**
* 获取部门列表
* @return
*/
@PostMapping
(
"/dingtalk/getSubList"
)
@UnAuth
public
ApiRespPdu
<
List
<
OapiV2DepartmentListsubResponse
.
DeptBaseResponse
>>
getSubList
(){
ApiRespPdu
<
List
<
OapiV2DepartmentListsubResponse
.
DeptBaseResponse
>>
apiRespPdu
=
new
ApiRespPdu
<>();
try
{
DingTalkClient
client
=
new
DefaultDingTalkClient
(
talkConfiguration
.
getGetSubList
());
OapiV2DepartmentListsubRequest
req
=
new
OapiV2DepartmentListsubRequest
();
if
(
dingToken
==
null
){
dingToken
=
getToken
().
getData
();
}
OapiV2DepartmentListsubResponse
rsp
=
client
.
execute
(
req
,
dingToken
);
if
(
rsp
.
getErrcode
()
==
0
){
apiRespPdu
.
setCode
(
0
);
apiRespPdu
.
setData
(
rsp
.
getResult
());
apiRespPdu
.
setMsg
(
rsp
.
getMsg
());
}
else
{
if
(
getToken
().
getCode
()
==
0
){
getSubList
();
}
else
{
apiRespPdu
.
setCode
(-
1
);
apiRespPdu
.
setData
(
null
);
apiRespPdu
.
setMsg
(
"获取token失败"
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
apiRespPdu
.
setCode
(-
1
);
apiRespPdu
.
setData
(
null
);
apiRespPdu
.
setMsg
(
e
.
toString
());
}
return
apiRespPdu
;
}
/**
* 根据部门id查询该部门下所有用户完整信息
* @return
*/
@PostMapping
(
"/dingtalk/getUserList"
)
@UnAuth
public
ApiRespPdu
<
OapiV2UserListResponse
.
PageResult
>
getUserList
(
@RequestBody
UserPageReq
res
){
ApiRespPdu
<
OapiV2UserListResponse
.
PageResult
>
apiRespPdu
=
new
ApiRespPdu
<>();
try
{
DingTalkClient
client
=
new
DefaultDingTalkClient
(
talkConfiguration
.
getGetuserlist
());
OapiV2UserListRequest
req
=
new
OapiV2UserListRequest
();
if
(
dingToken
==
null
){
dingToken
=
getToken
().
getData
();
}
req
.
setDeptId
(
res
.
getDeptid
());
req
.
setCursor
(
res
.
getCursor
());
req
.
setSize
(
res
.
getSize
());
OapiV2UserListResponse
rsp
=
client
.
execute
(
req
,
dingToken
);
if
(
rsp
.
getErrcode
()
==
0
){
apiRespPdu
.
setCode
(
0
);
apiRespPdu
.
setData
(
rsp
.
getResult
());
apiRespPdu
.
setMsg
(
rsp
.
getMsg
());
}
else
{
if
(
getToken
().
getCode
()
==
0
){
getUserList
(
res
);
}
else
{
apiRespPdu
.
setCode
(-
1
);
apiRespPdu
.
setData
(
null
);
apiRespPdu
.
setMsg
(
"获取token失败"
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
apiRespPdu
.
setCode
(-
1
);
apiRespPdu
.
setData
(
null
);
apiRespPdu
.
setMsg
(
e
.
toString
());
}
return
Rest
.
ok
();
return
apiRespPdu
;
}
/**
* 根据手机号查询用户
* @return
*/
@GetMapping
(
"/dingtalk/getByMobile"
)
@UnAuth
public
ApiRespPdu
<
OapiV2UserGetResponse
.
UserGetResponse
>
getByMobile
(
@RequestBody
MobileReq
mobile
){
ApiRespPdu
<
OapiV2UserGetResponse
.
UserGetResponse
>
apiRespPdu
=
new
ApiRespPdu
<>();
try
{
DingTalkClient
client
=
new
DefaultDingTalkClient
(
talkConfiguration
.
getGetbymobile
());
OapiV2UserGetbymobileRequest
req
=
new
OapiV2UserGetbymobileRequest
();
if
(
dingToken
==
null
){
dingToken
=
getToken
().
getData
();
}
req
.
setMobile
(
mobile
.
getMobile
());
OapiV2UserGetbymobileResponse
rsp
=
client
.
execute
(
req
,
dingToken
);
if
(
rsp
.
getErrcode
()
==
0
){
//根据获取到的userid去获取用户详情
ApiRespPdu
<
OapiV2UserGetResponse
.
UserGetResponse
>
userRsp
=
getUserInfo
(
rsp
.
getResult
().
getUserid
());
if
(
userRsp
.
getCode
()
==
0
){
apiRespPdu
.
setCode
(
userRsp
.
getCode
());
apiRespPdu
.
setData
(
userRsp
.
getData
());
apiRespPdu
.
setMsg
(
userRsp
.
getMsg
());
}
else
{
apiRespPdu
.
setCode
(-
1
);
apiRespPdu
.
setData
(
null
);
apiRespPdu
.
setMsg
(
userRsp
.
getMsg
());
}
}
else
{
if
(
getToken
().
getCode
()
==
0
){
getByMobile
(
mobile
);
}
else
{
apiRespPdu
.
setCode
(-
1
);
apiRespPdu
.
setData
(
null
);
apiRespPdu
.
setMsg
(
"获取token失败"
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
apiRespPdu
.
setCode
(-
1
);
apiRespPdu
.
setData
(
null
);
apiRespPdu
.
setMsg
(
e
.
toString
());
}
return
apiRespPdu
;
}
/**
* 根据userid查询用户详情
* @return
*/
@GetMapping
(
"/dingtalk/getUserInfo"
)
@UnAuth
public
ApiRespPdu
<
OapiV2UserGetResponse
.
UserGetResponse
>
getUserInfo
(
@RequestBody
String
userid
){
ApiRespPdu
<
OapiV2UserGetResponse
.
UserGetResponse
>
apiRespPdu
=
new
ApiRespPdu
<>();
try
{
DingTalkClient
client
=
new
DefaultDingTalkClient
(
talkConfiguration
.
getGetuserinfo
());
OapiV2UserGetRequest
req
=
new
OapiV2UserGetRequest
();
if
(
dingToken
==
null
){
dingToken
=
getToken
().
getData
();
}
req
.
setUserid
(
userid
);
OapiV2UserGetResponse
rsp
=
client
.
execute
(
req
,
dingToken
);
apiRespPdu
.
setCode
(
0
);
apiRespPdu
.
setData
(
rsp
.
getResult
());
apiRespPdu
.
setMsg
(
rsp
.
getMsg
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
apiRespPdu
.
setCode
(-
1
);
apiRespPdu
.
setData
(
null
);
apiRespPdu
.
setMsg
(
e
.
toString
());
}
return
apiRespPdu
;
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/config/TalkConfiguration.java
View file @
e0f251f0
...
...
@@ -19,19 +19,47 @@ public class TalkConfiguration {
@Value
(
"${dingtalk.agentId:''}"
)
private
String
getAgentId
;
/**
* appKey
*/
@Value
(
"${dingtalk.AppKey:''}"
)
private
String
AppKey
;
/**
* AppSecret
*/
@Value
(
"${dingtalk.AppSecret:''}"
)
private
String
AppSecret
;
/**
* getToken
*/
@Value
(
"${dingtalk.gettoken:
''
}"
)
@Value
(
"${dingtalk.gettoken:
https://oapi.dingtalk.com/gettoken
}"
)
private
String
getTokneUrl
;
/**
*
getbymobile
*
获取部门列表
*/
@Value
(
"${dingtalk.
getbymobile:''
}"
)
private
String
get
bymobile
;
@Value
(
"${dingtalk.
listsub:https://oapi.dingtalk.com/topapi/v2/department/listsub
}"
)
private
String
get
SubList
;
/**
* 根据部门id获取用户详情列表
*/
@Value
(
"${dingtalk.getUserList:https://oapi.dingtalk.com/topapi/v2/user/list}"
)
private
String
getuserlist
;
/**
* 根据电话查询用户信息
*/
@Value
(
"${dingtalk.getbymobile:https://oapi.dingtalk.com/topapi/v2/user/getbymobile}"
)
private
String
getbymobile
;
/**
* 根据userid查询用户信息
*/
@Value
(
"${dingtalk.getuserinfo:https://oapi.dingtalk.com/topapi/v2/user/get}"
)
private
String
getuserinfo
;
/**
* getDeptbyUser
*/
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/req/UserPageReq.java
0 → 100644
View file @
e0f251f0
package
com.mortals.xhx.busiz.dingtalk.req
;
/**
* @author ZYW
* @date 2023-07-12 11:38
*/
public
class
UserPageReq
{
//部门id
private
Long
deptid
;
//起始页码
private
Long
cursor
;
//每页条数
private
Long
size
;
public
Long
getDeptid
()
{
return
deptid
;
}
public
void
setDeptid
(
Long
deptid
)
{
this
.
deptid
=
deptid
;
}
public
Long
getCursor
()
{
return
cursor
;
}
public
void
setCursor
(
Long
cursor
)
{
this
.
cursor
=
cursor
;
}
public
Long
getSize
()
{
return
size
;
}
public
void
setSize
(
Long
size
)
{
this
.
size
=
size
;
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/req/MobileReq.java
0 → 100644
View file @
e0f251f0
package
com.mortals.xhx.busiz.req
;
/**
* @author ZYW
* @date 2023-07-12 13:47
*/
public
class
MobileReq
{
String
mobile
;
public
String
getMobile
()
{
return
mobile
;
}
public
void
setMobile
(
String
mobile
)
{
this
.
mobile
=
mobile
;
}
}
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