|
|
@@ -5,7 +5,9 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
import cn.iocoder.yudao.module.system.oa.SslSkippingRestTemplate;
|
|
|
import cn.iocoder.yudao.server.controller.admin.vo.crm.CrmTodoVo;
|
|
|
import cn.iocoder.yudao.server.dal.dataobject.CrmNoticeDO;
|
|
|
+import cn.iocoder.yudao.server.dal.dataobject.CrmPersonDO;
|
|
|
import cn.iocoder.yudao.server.dal.mysql.CrmNoticeMapper;
|
|
|
+import cn.iocoder.yudao.server.dal.mysql.CrmPersonMapper;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
@@ -22,6 +24,7 @@ import org.springframework.web.client.RestTemplate;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Comparator;
|
|
|
import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -32,9 +35,11 @@ public class CrmRest {
|
|
|
private static final String CLIENT_SECRET = "d38fcf6dcb0f754cece55862b1ae77b3";
|
|
|
private static final String REDIRECT_URI = "https://api-tencent.xiaoshouyi.com/";
|
|
|
private final CrmNoticeMapper crmNoticeMapper;
|
|
|
+ private final CrmPersonMapper crmPersonMapper;
|
|
|
|
|
|
- public CrmRest(CrmNoticeMapper crmNoticeMapper) {
|
|
|
+ public CrmRest(CrmNoticeMapper crmNoticeMapper, CrmPersonMapper crmPersonMapper) {
|
|
|
this.crmNoticeMapper = crmNoticeMapper;
|
|
|
+ this.crmPersonMapper = crmPersonMapper;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -74,6 +79,28 @@ public class CrmRest {
|
|
|
String records = JSON.parseObject(result).getJSONArray("records").toJSONString();
|
|
|
|
|
|
List<CrmUser> crmUsers = JSON.parseArray(records, CrmUser.class);
|
|
|
+ List<CrmPersonDO> crmPersonDOS = crmPersonMapper.selectList();
|
|
|
+ Set<String> existIds = crmPersonDOS.stream()
|
|
|
+ .map(CrmPersonDO::getCrmUserId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+
|
|
|
+ //插入自己的数据库,保存crm人员信息
|
|
|
+ List<CrmUser> needInsertUsers = crmUsers.stream()
|
|
|
+ .filter(user -> !existIds.contains(user.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<CrmPersonDO> collect = needInsertUsers.stream().map(e -> {
|
|
|
+ CrmPersonDO crmPersonDO = new CrmPersonDO();
|
|
|
+ crmPersonDO.setCrmUserId(e.getId());
|
|
|
+ crmPersonDO.setCrmUserName(e.getName());
|
|
|
+ crmPersonDO.setCrmUserPhone(e.getPhone());
|
|
|
+ crmPersonDO.setCrmUserMail(e.getPersonalEmail());
|
|
|
+ crmPersonDO.setCrmUserUnionid(e.getUnionId());
|
|
|
+ crmPersonDO.setDeleted(false);
|
|
|
+ return crmPersonDO;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ crmPersonMapper.insertBatch(collect);
|
|
|
+
|
|
|
AtomicReference<String> userId = new AtomicReference<>("");
|
|
|
if (crmUsers != null) {
|
|
|
crmUsers.stream().filter(e -> e.getUnionId().equals(dingUserId)).findAny().ifPresent(f ->{
|
|
|
@@ -88,14 +115,16 @@ public class CrmRest {
|
|
|
headers.add("Authorization", token);
|
|
|
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(headers);
|
|
|
RestTemplate restTemplate = SslSkippingRestTemplate.createRestTemplate();
|
|
|
- ResponseEntity<String> exchange = restTemplate.exchange("https://api-tencent.xiaoshouyi.com/rest/data/v2.0/creekflow/task/filter?assigneeIds="+crmUserId+"&status=pending&pageNo=1&pageSize=1000",
|
|
|
+ ResponseEntity<String> exchange = restTemplate.exchange("https://api-tencent.xiaoshouyi.com/rest/data/v2.0/creekflow/task/filter?status=approved&pageNo=1&pageSize=1000",
|
|
|
HttpMethod.GET, requestEntity, String.class);
|
|
|
String body = exchange.getBody();
|
|
|
String data = JSON.parseObject(body).getString("data");
|
|
|
String records = JSON.parseObject(data).getJSONArray("records").toJSONString();
|
|
|
List<CrmTodoVo> crmTodoVos = JSON.parseArray(records, CrmTodoVo.class);
|
|
|
Integer dataCount = JSON.parseObject(data).getInteger("dataCount");
|
|
|
+ crmTodoVos.forEach(e ->{
|
|
|
|
|
|
+ });
|
|
|
return ImmutableMap.of("todoCount", dataCount,"todoList", crmTodoVos);
|
|
|
}
|
|
|
|