企业中有自己的业务系统,审批都在业务系统中审批,如何结合移动办公的开放平台实现统一审批至关重要。
场景很简单,自己的系统中可以审批,钉钉上也可以审批,使用H5来适配,统一待办任务
目标:人员统一
实现相互之间可以创建待办,更新待办,删除待办public OapiGettokenResponse getAccessToken() {
Object accessToken = PlatformLocalCache.get(ACCESS_TOKEN);
if (accessToken != null) {
return (OapiGettokenResponse) accessToken;
}
DefaultDingTalkClient client = new DefaultDingTalkClient(DingtalkUrlConstant.URL_GET_TOKEN);
OapiGettokenRequest request = new OapiGettokenRequest();
request.setAppkey(dingtalkProperties.getAppKey());
request.setAppsecret(dingtalkProperties.getAppSecret());
request.setHttpMethod("GET");
OapiGettokenResponse response = null;
try {
response = client.execute(request);
if (response.isSuccess()) {
PlatformLocalCache.put(ACCESS_TOKEN, response);
}
} catch (ApiException e) {
log.error("getAccessToken failed", e);
}
return response;
}
@Override
public OapiV2UserGetbymobileResponse getUserIdByMobile(String mobile) {
OapiGettokenResponse accessToken = this.getAccessToken();
DingTalkClient client = new DefaultDingTalkClient(DingtalkUrlConstant.URL_GETBY_MOBILE);
OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest();
req.setMobile(mobile);
OapiV2UserGetbymobileResponse rsp = null;
try {
rsp = client.execute(req, accessToken.getAccessToken());
} catch (ApiException e) {
log.error("getUserIdByMobile failed", e);
}
return rsp;
}
@Override
public OapiV2UserGetResponse getUserInfoByMobile(String mobile) {
OapiV2UserGetbymobileResponse response = this.getUserIdByMobile(mobile);
if (response.isSuccess()) {
String userid = response.getResult().getUserid();
OapiV2UserGetResponse userInfo = this.getUserInfoByUserId(userid);
return userInfo;
}
return null;
}
@Override
public OapiV2UserGetResponse getUserInfoByUserId(String userId) {
OapiGettokenResponse accessToken = this.getAccessToken();
DingTalkClient client = new DefaultDingTalkClient(DingtalkUrlConstant.URL_GETUSERINFOBY_USERID);
OapiV2UserGetRequest req = new OapiV2UserGetRequest();
req.setUserid(userId);
OapiV2UserGetResponse rsp = null;
try {
rsp = client.execute(req, accessToken.getAccessToken());
} catch (ApiException e) {
log.error("getUserInfoByUserId failed", e);
}
return rsp;
}
public void syncUserInfo() {
List<User> users = userService.getAll(null);
users.forEach(user -> {
if (StringUtils.isNotBlank(user.getMobile())) {
OapiV2UserGetResponse response = dingtalkSdkService.getUserInfoByMobile(user.getMobile());
if (response.isSuccess()) {
String unionid = response.getResult().getUnionid();
//TODO 更新用户的这个字段
}
try {
Thread.sleep(500);
} catch (Exception e) {
log.error("休眠失败", e);
}
}
});
}