|
@@ -9,9 +9,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.dingtalk.api.DefaultDingTalkClient;
|
|
import com.dingtalk.api.DefaultDingTalkClient;
|
|
import com.dingtalk.api.DingTalkClient;
|
|
import com.dingtalk.api.DingTalkClient;
|
|
|
|
+import com.dingtalk.api.request.OapiGettokenRequest;
|
|
import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
|
|
import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
|
|
import com.dingtalk.api.request.OapiMessageCorpconversationSendbytemplateRequest;
|
|
import com.dingtalk.api.request.OapiMessageCorpconversationSendbytemplateRequest;
|
|
import com.dingtalk.api.request.OapiServiceGetSuiteTokenRequest;
|
|
import com.dingtalk.api.request.OapiServiceGetSuiteTokenRequest;
|
|
|
|
+import com.dingtalk.api.response.OapiGettokenResponse;
|
|
import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
|
|
import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
|
|
import com.dingtalk.api.response.OapiMessageCorpconversationSendbytemplateResponse;
|
|
import com.dingtalk.api.response.OapiMessageCorpconversationSendbytemplateResponse;
|
|
import com.dingtalk.api.response.OapiServiceGetSuiteTokenResponse;
|
|
import com.dingtalk.api.response.OapiServiceGetSuiteTokenResponse;
|
|
@@ -379,7 +381,7 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
|
|
// request.setMsg(msg);
|
|
// request.setMsg(msg);
|
|
OapiMessageCorpconversationAsyncsendV2Response rsp = null;
|
|
OapiMessageCorpconversationAsyncsendV2Response rsp = null;
|
|
try {
|
|
try {
|
|
- rsp = client.execute(request, getCorpAccessToken(dingding));
|
|
|
|
|
|
+ rsp = client.execute(request, getInnerCorpToken(dingding));
|
|
} catch (Exception exception) {
|
|
} catch (Exception exception) {
|
|
exception.printStackTrace();
|
|
exception.printStackTrace();
|
|
}
|
|
}
|
|
@@ -406,13 +408,32 @@ public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMappe
|
|
|
|
|
|
OapiMessageCorpconversationAsyncsendV2Response rsp = null;
|
|
OapiMessageCorpconversationAsyncsendV2Response rsp = null;
|
|
try {
|
|
try {
|
|
- rsp = client.execute(request, getCorpAccessToken(dingding));
|
|
|
|
|
|
+ rsp = client.execute(request, getInnerCorpToken(dingding));
|
|
} catch (Exception exception) {
|
|
} catch (Exception exception) {
|
|
exception.printStackTrace();
|
|
exception.printStackTrace();
|
|
}
|
|
}
|
|
System.out.println(rsp.getBody());
|
|
System.out.println(rsp.getBody());
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 获取钉钉内部企业的token
|
|
|
|
+ */
|
|
|
|
+ private String getInnerCorpToken(CompanyDingding dingding) throws ApiException {
|
|
|
|
+ if (dingding.getInnerToken() == null || LocalDateTime.now().isAfter(dingding.getInnerExpireTime())) {
|
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
|
|
|
|
+ OapiGettokenRequest request = new OapiGettokenRequest();
|
|
|
|
+ request.setAppkey(dingding.getInnerAppkey());
|
|
|
|
+ request.setAppsecret(dingding.getInnerAppsecret());
|
|
|
|
+ request.setHttpMethod("GET");
|
|
|
|
+ OapiGettokenResponse response = client.execute(request);
|
|
|
|
+ if (!response.isSuccess()) {
|
|
|
|
+ System.err.println("获取企业内部token失败:"+response.getErrorCode()+":"+response.getErrmsg());
|
|
|
|
+ }
|
|
|
|
+ dingding.setInnerToken(response.getAccessToken());
|
|
|
|
+ dingding.setInnerExpireTime(LocalDateTime.now().plusSeconds(response.getExpiresIn()));
|
|
|
|
+ companyDingdingMapper.updateById(dingding);
|
|
|
|
+ }
|
|
|
|
+ return dingding.getInnerToken();
|
|
|
|
+ }
|
|
private String getDDSuiteAccessToken() throws ApiException {
|
|
private String getDDSuiteAccessToken() throws ApiException {
|
|
if (DingDingServiceImpl.SUITE_ACCESS_TOKEN == null || DingDingServiceImpl.suiteTokenExpireTime < System.currentTimeMillis()) {
|
|
if (DingDingServiceImpl.SUITE_ACCESS_TOKEN == null || DingDingServiceImpl.suiteTokenExpireTime < System.currentTimeMillis()) {
|
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/get_suite_token");
|
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/get_suite_token");
|