|
@@ -3,8 +3,11 @@ package com.management.platform.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.aliyun.dingtalkcontact_1_0.Client;
|
|
import com.aliyun.dingtalkcontact_1_0.models.GetUserHeaders;
|
|
import com.aliyun.dingtalkcontact_1_0.models.GetUserHeaders;
|
|
|
|
+import com.aliyun.tea.TeaConverter;
|
|
import com.aliyun.tea.TeaException;
|
|
import com.aliyun.tea.TeaException;
|
|
|
|
+import com.aliyun.tea.TeaPair;
|
|
import com.aliyun.teaopenapi.models.Config;
|
|
import com.aliyun.teaopenapi.models.Config;
|
|
import com.aliyun.teautil.models.RuntimeOptions;
|
|
import com.aliyun.teautil.models.RuntimeOptions;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
@@ -19,7 +22,9 @@ import com.management.platform.mapper.*;
|
|
import com.management.platform.service.*;
|
|
import com.management.platform.service.*;
|
|
import com.management.platform.util.*;
|
|
import com.management.platform.util.*;
|
|
import com.taobao.api.ApiException;
|
|
import com.taobao.api.ApiException;
|
|
|
|
+import com.taobao.api.FileItem;
|
|
import com.taobao.api.internal.util.StringUtils;
|
|
import com.taobao.api.internal.util.StringUtils;
|
|
|
|
+import com.taobao.api.internal.util.WebUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -38,6 +43,13 @@ import java.time.*;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
+import com.aliyun.tea.*;
|
|
|
|
+import com.aliyun.teautil.*;
|
|
|
|
+import com.aliyun.teautil.models.*;
|
|
|
|
+import com.aliyun.dingtalkcontact_1_0.*;
|
|
|
|
+import com.aliyun.dingtalkcontact_1_0.models.*;
|
|
|
|
+import com.aliyun.teaopenapi.*;
|
|
|
|
+import com.aliyun.teaopenapi.models.*;
|
|
|
|
|
|
//import com.management.platform.entity.vo.LeaveQuotaNum;
|
|
//import com.management.platform.entity.vo.LeaveQuotaNum;
|
|
|
|
|
|
@@ -152,6 +164,9 @@ public class DingDingServiceImpl implements DingDingService {
|
|
@Value("${configEnv.isDev}")
|
|
@Value("${configEnv.isDev}")
|
|
private boolean isDev;//是否是本地开发环境
|
|
private boolean isDev;//是否是本地开发环境
|
|
|
|
|
|
|
|
+ @Value("${upload.path}")
|
|
|
|
+ private String path;//是否是本地开发环境
|
|
|
|
+
|
|
public static final HashMap<String, Long> syncLog = new HashMap();
|
|
public static final HashMap<String, Long> syncLog = new HashMap();
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -2529,6 +2544,84 @@ public class DingDingServiceImpl implements DingDingService {
|
|
return SUITE_ACCESS_TOKEN;
|
|
return SUITE_ACCESS_TOKEN;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //上传文件获取media_id
|
|
|
|
+ @Override
|
|
|
|
+ public String getTranslationMediaId(String fileName,CompanyDingding dingding) throws Exception {
|
|
|
|
+ OapiFileUploadSingleRequest request = new OapiFileUploadSingleRequest();
|
|
|
|
+ request.setFileSize(45L);
|
|
|
|
+ request.setAgentId(String.valueOf(dingding.getAgentId()));
|
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/file/upload/single?"+ WebUtils.buildQuery(request.getTextParams(),"utf-8"));
|
|
|
|
+ // 必须重新new一个请求
|
|
|
|
+ String media_id;
|
|
|
|
+ request = new OapiFileUploadSingleRequest();
|
|
|
|
+ request.setFile(new FileItem(path+fileName));
|
|
|
|
+ OapiFileUploadSingleResponse response = client.execute(request,getCorpAccessToken(dingding));
|
|
|
|
+ System.out.println(response.getBody());
|
|
|
|
+ JSONObject obj = JSONObject.parseObject(response.getBody());
|
|
|
|
+ if (obj.getIntValue("errcode") == 0) {
|
|
|
|
+ media_id = obj.getString("media_id");
|
|
|
|
+ return media_id;
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public String syncTranslation(String mediaId, String fileName, String unionId,CompanyDingding dingding) throws Exception {
|
|
|
|
+ com.aliyun.dingtalkcontact_1_0.Client client = createClient();
|
|
|
|
+ TranslateFileHeaders translateFileHeaders = new TranslateFileHeaders();
|
|
|
|
+ translateFileHeaders.xAcsDingtalkAccessToken =getCorpAccessToken(dingding);
|
|
|
|
+ if(mediaId!=null){
|
|
|
|
+ java.util.Map<String, String> medias = TeaConverter.buildMap(
|
|
|
|
+ new TeaPair(mediaId,fileName)
|
|
|
|
+ );
|
|
|
|
+ TranslateFileRequest translateFileRequest = new TranslateFileRequest()
|
|
|
|
+ .setMedias(medias)
|
|
|
|
+ .setUnionId(unionId);
|
|
|
|
+ try {
|
|
|
|
+ TranslateFileResponse translateFileResponse = client.translateFileWithOptions(translateFileRequest, translateFileHeaders, new RuntimeOptions());
|
|
|
|
+ TranslateFileResponseBody body = translateFileResponse.body;
|
|
|
|
+ return body.jobId;
|
|
|
|
+ } catch (TeaException err) {
|
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception _err) {
|
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public String getSyncTranslationResult(String jobId,CompanyDingding dingding) throws Exception {
|
|
|
|
+ if(jobId!=null){
|
|
|
|
+ com.aliyun.dingtalkcontact_1_0.Client client = createClient();
|
|
|
|
+ GetTranslateFileJobResultHeaders getTranslateFileJobResultHeaders = new GetTranslateFileJobResultHeaders();
|
|
|
|
+ getTranslateFileJobResultHeaders.xAcsDingtalkAccessToken = getCorpAccessToken(dingding);
|
|
|
|
+ GetTranslateFileJobResultRequest getTranslateFileJobResultRequest = new GetTranslateFileJobResultRequest()
|
|
|
|
+ .setJobId(jobId);
|
|
|
|
+ try {
|
|
|
|
+ GetTranslateFileJobResultResponse translateFileJobResultWithOptions = client.getTranslateFileJobResultWithOptions(getTranslateFileJobResultRequest, getTranslateFileJobResultHeaders, new RuntimeOptions());
|
|
|
|
+ GetTranslateFileJobResultResponseBody body = translateFileJobResultWithOptions.body;
|
|
|
|
+ return body.url;
|
|
|
|
+ } catch (TeaException err) {
|
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception _err) {
|
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
|
|
private boolean judgeIsLeader(String userId) {
|
|
private boolean judgeIsLeader(String userId) {
|
|
int cnt = projectAuditorMapper.selectCount(new QueryWrapper<ProjectAuditor>().eq("auditor_id", userId));
|
|
int cnt = projectAuditorMapper.selectCount(new QueryWrapper<ProjectAuditor>().eq("auditor_id", userId));
|