REQ-3282: 替换单位相关接口
This commit is contained in:
parent
25b1226d87
commit
9e246b0382
@ -1,29 +1,26 @@
|
||||
package cn.axzo.im.account;
|
||||
|
||||
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||
import cn.axzo.framework.rocketmq.Event;
|
||||
import cn.axzo.framework.rocketmq.EventConsumer;
|
||||
import cn.axzo.framework.rocketmq.EventHandler;
|
||||
import cn.axzo.im.center.api.vo.req.AccountAbsentQuery;
|
||||
import cn.axzo.im.center.api.vo.resp.UserAccountResp;
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import cn.axzo.im.gateway.ProfilesApiGateway;
|
||||
import cn.axzo.im.gateway.OrgJobGateway;
|
||||
import cn.axzo.im.gateway.OrganizationalNodeUserApiGateway;
|
||||
import cn.axzo.im.job.PersonIdAndOu;
|
||||
import cn.axzo.im.service.AccountService;
|
||||
import cn.axzo.im.utils.ImProperties;
|
||||
import cn.axzo.maokai.api.client.OrganizationalJobApi;
|
||||
import cn.axzo.maokai.api.client.OrganizationalNodeUserApi;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalJobResp;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO;
|
||||
import cn.axzo.orggateway.api.job.resp.OrgJobResp;
|
||||
import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO;
|
||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@ -37,10 +34,9 @@ public class CreateAccountOnNodeUserListener implements EventHandler, Initializi
|
||||
|
||||
private final EventConsumer eventConsumer;
|
||||
private final AccountService accountService;
|
||||
private final OrganizationalNodeUserApi organizationalNodeUserApi;
|
||||
private final OrganizationalJobApi organizationalJobApi;
|
||||
private final OrganizationalNodeUserApiGateway organizationalNodeUserApiGateway;
|
||||
private final OrgJobGateway orgJobGateway;
|
||||
private final ImProperties props;
|
||||
private final ProfilesApiGateway profilesApiGateway;
|
||||
|
||||
@Override
|
||||
public void onEvent(Event event, EventConsumer.Context context) {
|
||||
@ -61,7 +57,7 @@ public class CreateAccountOnNodeUserListener implements EventHandler, Initializi
|
||||
log.info("消息体里没有node user id, 跳过生成. event={}", JSON.toJSONString(event));
|
||||
return;
|
||||
}
|
||||
OrganizationalNodeUserVO nodeUser = organizationalNodeUserApi.getNodeUser(eventNodeUser.getId()).getData();
|
||||
OrganizationalNodeUserDTO nodeUser = organizationalNodeUserApiGateway.getById(eventNodeUser.getId());
|
||||
if (nodeUser == null) {
|
||||
log.info("没有通过node user id查询到node user记录, 跳过生成");
|
||||
return;
|
||||
@ -85,7 +81,7 @@ public class CreateAccountOnNodeUserListener implements EventHandler, Initializi
|
||||
pou.getPersonId(), pou.getOuId(), JSON.toJSONString(resp));
|
||||
}
|
||||
|
||||
private boolean shouldGenImAccount(OrganizationalNodeUserVO nodeUser) {
|
||||
private boolean shouldGenImAccount(OrganizationalNodeUserDTO nodeUser) {
|
||||
if (shouldGenByIdentityType(nodeUser)) {
|
||||
return true;
|
||||
}
|
||||
@ -94,13 +90,11 @@ public class CreateAccountOnNodeUserListener implements EventHandler, Initializi
|
||||
log.info("无效的job id, 跳过生成账号. node user={}", JSON.toJSONString(nodeUser));
|
||||
return false;
|
||||
}
|
||||
List<OrganizationalJobResp> jobs = organizationalJobApi
|
||||
.getByIds(Collections.singletonList(jobId)).getData();
|
||||
if (CollectionUtils.isEmpty(jobs)) {
|
||||
OrgJobResp job = orgJobGateway.getById(jobId);
|
||||
if (job == null) {
|
||||
log.info("没有通过job id查询到job记录, 跳过生成账号. node user={}", JSON.toJSONString(nodeUser));
|
||||
return false;
|
||||
}
|
||||
OrganizationalJobResp job = jobs.get(0);
|
||||
boolean shouldGen = props.getGenImAccountJobCodes().contains(job.getCode());
|
||||
if (shouldGen) {
|
||||
log.info("通过身份判断需要生成管理端账号. node user={}, job={}",
|
||||
@ -109,7 +103,7 @@ public class CreateAccountOnNodeUserListener implements EventHandler, Initializi
|
||||
return shouldGen;
|
||||
}
|
||||
|
||||
boolean shouldGenByIdentityType(OrganizationalNodeUserVO nodeUser) {
|
||||
boolean shouldGenByIdentityType(OrganizationalNodeUserDTO nodeUser) {
|
||||
return Objects.equals(nodeUser.getIdentityType(), IdentityType.PRACTITIONER.getCode())
|
||||
|| Objects.equals(nodeUser.getIdentityType(), IdentityType.WORKER_LEADER.getCode());
|
||||
}
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
package cn.axzo.im.dependency;
|
||||
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.im.utils.BizAssertions;
|
||||
import cn.axzo.orggateway.api.unit.OrgGatewayUnitApi;
|
||||
import cn.axzo.orggateway.api.unit.req.OrgUnitPageQueryReq;
|
||||
import cn.axzo.orggateway.api.unit.resp.OrgUnitResp;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static java.util.function.Function.identity;
|
||||
import static java.util.stream.Collectors.toMap;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class UnitGateway {
|
||||
|
||||
private final OrgGatewayUnitApi orgGatewayUnitApi;
|
||||
|
||||
public Map<Long, OrgUnitResp> getByOuIdsMapped(Collection<Long> ouIds) {
|
||||
return getByOuIds(ouIds).stream().collect(toMap(OrgUnitResp::getId, identity(), (f, s) -> f));
|
||||
}
|
||||
|
||||
public List<OrgUnitResp> getByOuIds(Collection<Long> ouIds) {
|
||||
if (CollectionUtils.isEmpty(ouIds))
|
||||
return Collections.emptyList();
|
||||
PageResp<OrgUnitResp> page = BizAssertions.assertResponse(orgGatewayUnitApi.page(OrgUnitPageQueryReq.builder()
|
||||
.pageSize(Integer.MAX_VALUE)
|
||||
.unitIds(Lists.newArrayList(Sets.newHashSet(ouIds)))
|
||||
.build()));
|
||||
return page.getData() == null ? Collections.emptyList() : page.getData();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,43 +0,0 @@
|
||||
package cn.axzo.im.gateway;
|
||||
|
||||
import cn.axzo.im.utils.BizAssertions;
|
||||
import cn.axzo.maokai.api.client.OrgJobApi;
|
||||
import cn.axzo.maokai.api.vo.request.OrgJobListReq;
|
||||
import cn.axzo.maokai.api.vo.response.OrgJobRes;
|
||||
import cn.axzo.pokonyan.util.RpcUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service("orgJobApiGateway")
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class OrgJobApiGateway {
|
||||
|
||||
private final OrgJobApi orgJobApi;
|
||||
|
||||
public OrgJobRes fetchJobCodeByJobId(Long jobId) {
|
||||
if (Objects.isNull(jobId)) {
|
||||
return OrgJobRes.builder().build();
|
||||
}
|
||||
OrgJobListReq req = new OrgJobListReq();
|
||||
req.setJobIdList(Lists.newArrayList(jobId));
|
||||
List<OrgJobRes> orgJobRes = RpcUtil.rpcApiResultProcessor(() -> orgJobApi.list(req), "fetchJobCodeByJobId", jobId);
|
||||
BizAssertions.assertNotEmpty(orgJobRes, "根据jobId:{}获取Job为空", jobId);
|
||||
return orgJobRes.get(0);
|
||||
}
|
||||
|
||||
public List<OrgJobRes> fetchJobCodesByJobIds(List<Long> jobIds) {
|
||||
if (CollectionUtils.isEmpty(jobIds)) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
OrgJobListReq req = new OrgJobListReq();
|
||||
req.setJobIdList(jobIds);
|
||||
return RpcUtil.rpcApiResultProcessor(() -> orgJobApi.list(req), "fetchJobCodesByJobIds", jobIds);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
package cn.axzo.im.gateway;
|
||||
|
||||
import cn.axzo.orggateway.api.job.OrgJobApi;
|
||||
import cn.axzo.orggateway.api.job.req.PageOrgJobReq;
|
||||
import cn.axzo.orggateway.api.job.resp.OrgJobResp;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@Service("orgJobApiGateway")
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class OrgJobGateway {
|
||||
|
||||
private final OrgJobApi orgJobApi;
|
||||
|
||||
public OrgJobResp getById(Long jobId) {
|
||||
List<OrgJobResp> jobs = getByIds(Collections.singletonList(jobId));
|
||||
return jobs.isEmpty() ? null : jobs.get(0);
|
||||
}
|
||||
|
||||
public List<OrgJobResp> getByIds(Collection<Long> jobIds) {
|
||||
if (CollectionUtils.isEmpty(jobIds))
|
||||
return Collections.emptyList();
|
||||
List<OrgJobResp> jobs = orgJobApi.page(PageOrgJobReq.builder()
|
||||
.pageSize(jobIds.size())
|
||||
.jobIds(Sets.newHashSet(jobIds))
|
||||
.build()).getData().getData();
|
||||
return jobs == null ? Collections.emptyList() : jobs;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,29 +0,0 @@
|
||||
package cn.axzo.im.gateway;
|
||||
|
||||
import cn.axzo.maokai.api.client.OrganizationalNodeApi;
|
||||
import cn.axzo.maokai.api.vo.request.OrganizationalNodeBatchQueryVO;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalNodeVO;
|
||||
import cn.axzo.pokonyan.util.RpcUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service("organizationalNodeApiGateway")
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class OrganizationalNodeApiGateway {
|
||||
|
||||
private final OrganizationalNodeApi organizationalNodeApi;
|
||||
|
||||
public List<OrganizationalNodeVO> fetchNodesByNodeIds(List<Long> nodeIdList) {
|
||||
OrganizationalNodeBatchQueryVO organizationalNodeBatchQueryVO = new OrganizationalNodeBatchQueryVO();
|
||||
organizationalNodeBatchQueryVO.setNodeIds(nodeIdList);
|
||||
organizationalNodeBatchQueryVO.setContainsDeleted(false);
|
||||
List<OrganizationalNodeVO> nodeVOList = organizationalNodeApi.listNode(organizationalNodeBatchQueryVO).getData();
|
||||
return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeApi.listNode(organizationalNodeBatchQueryVO), "fetchNodesByNodeIds", JSON.toJSONString(nodeVOList));
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,13 +1,14 @@
|
||||
package cn.axzo.im.gateway;
|
||||
|
||||
import cn.axzo.maokai.api.client.OrganizationalNodeUserApi;
|
||||
import cn.axzo.maokai.api.vo.request.OrgNodeUserDetailByIdReq;
|
||||
import cn.axzo.maokai.api.vo.request.OrganizationalNodeUserSearchReq;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO;
|
||||
import cn.axzo.pokonyan.util.RpcUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.foundation.result.ApiResult;
|
||||
import cn.axzo.im.utils.BizAssertions;
|
||||
import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi;
|
||||
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
|
||||
import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
@ -18,44 +19,62 @@ import java.util.Set;
|
||||
@RequiredArgsConstructor
|
||||
public class OrganizationalNodeUserApiGateway {
|
||||
|
||||
private final OrganizationalNodeUserApi organizationalNodeUserApi;
|
||||
private final OrgNodeUserApi orgNodeUserApi;
|
||||
|
||||
public List<OrganizationalNodeUserVO> searchNodeUser(Long nodeId, Long workspaceId, Set<String> jobCodes, Long personId, Boolean needJobCode) {
|
||||
OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq();
|
||||
searchReq.setOrganizationNodeId(nodeId);
|
||||
public List<OrganizationalNodeUserDTO> searchNodeUser(Long nodeId, Long workspaceId, Set<String> jobCodes, Long personId, Boolean needJobCode) {
|
||||
ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq();
|
||||
searchReq.setOrganizationalNodeId(nodeId);
|
||||
searchReq.setWorkspaceId(workspaceId);
|
||||
searchReq.setJobCodes(jobCodes);
|
||||
searchReq.setOrganizationalJobCodes(jobCodes);
|
||||
searchReq.setPersonId(personId);
|
||||
searchReq.setNeedJobCode(needJobCode);
|
||||
return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserApi.list(searchReq), "searchNodeUser", JSON.toJSONString(searchReq));
|
||||
searchReq.setNeeds(ListOrgNodeUserReq.Needs.builder()
|
||||
.job(needJobCode)
|
||||
.build());
|
||||
ApiResult<PageResp<OrganizationalNodeUserDTO>> response = orgNodeUserApi.list(searchReq);
|
||||
return BizAssertions.assertResponse(response).getData();
|
||||
}
|
||||
|
||||
public List<OrganizationalNodeUserVO> fetchNodeUsersByWorkspaceNodeIdJobCodes(Long workspaceId, Long nodeId,Set<String> jobCodes) {
|
||||
OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq();
|
||||
public List<OrganizationalNodeUserDTO> fetchNodeUsersByWorkspaceNodeIdJobCodes(Long workspaceId, Long nodeId, Set<String> jobCodes) {
|
||||
ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq();
|
||||
searchReq.setWorkspaceId(workspaceId);
|
||||
searchReq.setOrganizationNodeId(nodeId);
|
||||
searchReq.setJobCodes(jobCodes);//班组长/带班长
|
||||
return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserApi.list(searchReq), "fetchNodeUsersByWorkspaceOuIdJobCodes", JSON.toJSONString(searchReq));
|
||||
searchReq.setOrganizationalNodeId(nodeId);
|
||||
searchReq.setOrganizationalJobCodes(jobCodes);
|
||||
searchReq.setNeeds(ListOrgNodeUserReq.Needs.builder()
|
||||
.job(true)
|
||||
.build());
|
||||
return BizAssertions.assertResponse(orgNodeUserApi.list(searchReq)).getData();
|
||||
}
|
||||
|
||||
public List<OrganizationalNodeUserVO> fetchNodeUsersByWorkspaceIdJobCodes(Long workspaceId, Set<String> jobCodes) {
|
||||
OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq();
|
||||
public List<OrganizationalNodeUserDTO> fetchNodeUsersByWorkspaceIdJobCodes(Long workspaceId, Set<String> jobCodes) {
|
||||
ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq();
|
||||
searchReq.setWorkspaceId(workspaceId);
|
||||
searchReq.setJobCodes(jobCodes);
|
||||
return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserApi.list(searchReq), "fetchNodeUsersByWorkspaceIdJobCodes", JSON.toJSONString(searchReq));
|
||||
searchReq.setOrganizationalJobCodes(jobCodes);
|
||||
searchReq.setNeeds(ListOrgNodeUserReq.Needs.builder()
|
||||
.job(true)
|
||||
.build());
|
||||
return BizAssertions.assertResponse(orgNodeUserApi.list(searchReq)).getData();
|
||||
}
|
||||
|
||||
public List<OrganizationalNodeUserVO> fetchNodeUsersByWorkspaceOuIdJobCodes(Long workspaceId, Long ouId, Set<String> jobCodes) {
|
||||
OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq();
|
||||
public List<OrganizationalNodeUserDTO> fetchNodeUsersByWorkspaceOuIdJobCodes(Long workspaceId, Long ouId, Set<String> jobCodes) {
|
||||
ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq();
|
||||
searchReq.setWorkspaceId(workspaceId);
|
||||
searchReq.setOrganizationalUnitId(ouId);
|
||||
searchReq.setJobCodes(jobCodes);
|
||||
return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserApi.list(searchReq), "fetchNodeUsersByWorkspaceOuIdJobCodes", JSON.toJSONString(searchReq));
|
||||
searchReq.setOrganizationalJobCodes(jobCodes);
|
||||
searchReq.setNeeds(ListOrgNodeUserReq.Needs.builder()
|
||||
.job(true)
|
||||
.build());
|
||||
return BizAssertions.assertResponse(orgNodeUserApi.list(searchReq)).getData();
|
||||
}
|
||||
|
||||
public OrganizationalNodeUserVO getById(Long id) {
|
||||
OrgNodeUserDetailByIdReq req = OrgNodeUserDetailByIdReq.builder().id(id).build();
|
||||
return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserApi.detailById(req), "detailById", req);
|
||||
public OrganizationalNodeUserDTO getById(Long id) {
|
||||
List<OrganizationalNodeUserDTO> records = BizAssertions.assertResponse(
|
||||
orgNodeUserApi.list(ListOrgNodeUserReq.builder()
|
||||
.id(id)
|
||||
.needs(ListOrgNodeUserReq.Needs.builder()
|
||||
.job(true)
|
||||
.build())
|
||||
.build())).getData();
|
||||
return CollectionUtils.isEmpty(records) ? null : records.get(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -11,7 +11,7 @@ import cn.axzo.im.event.inner.EventTypeEnum;
|
||||
import cn.axzo.im.event.payload.ChatGroupCreatePayload;
|
||||
import cn.axzo.im.gateway.ProfilesApiGateway;
|
||||
import cn.axzo.im.service.ChatGroupService;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO;
|
||||
import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO;
|
||||
import cn.hutool.core.lang.Pair;
|
||||
import com.alibaba.excel.util.StringUtils;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
@ -87,15 +87,15 @@ public class ChatGroupEventHandler implements EventHandler, InitializingBean {
|
||||
*/
|
||||
public Set<String> chatGroupOfMembers(ChatGroupCreateReq req) {
|
||||
//Pair,key:管理人员集合;value:工人集合
|
||||
Pair<List<OrganizationalNodeUserVO>, List<OrganizationalNodeUserVO>> adminWorkerPair = chatGroupService.fetchUsersByWorkspaceOuId(req.getCrowType(), req.getWorkspaceId(), req.getOuId(), this.chatGroupService.buildJobCodesByCrowType(req.getCrowType()), req.getCreator());
|
||||
List<OrganizationalNodeUserVO> adminSet = adminWorkerPair.getKey();
|
||||
List<OrganizationalNodeUserVO> workerSet = adminWorkerPair.getValue();
|
||||
Pair<List<OrganizationalNodeUserDTO>, List<OrganizationalNodeUserDTO>> adminWorkerPair = chatGroupService.fetchUsersByWorkspaceOuId(req.getCrowType(), req.getWorkspaceId(), req.getOuId(), this.chatGroupService.buildJobCodesByCrowType(req.getCrowType()), req.getCreator());
|
||||
List<OrganizationalNodeUserDTO> adminSet = adminWorkerPair.getKey();
|
||||
List<OrganizationalNodeUserDTO> workerSet = adminWorkerPair.getValue();
|
||||
|
||||
Map<Long, PersonProfileDto> personProfileMap = this.buildPersonProfileMap(adminWorkerPair);
|
||||
|
||||
Set<String> userAccountRespList = Sets.newHashSet();
|
||||
|
||||
for (OrganizationalNodeUserVO item : adminSet) {
|
||||
for (OrganizationalNodeUserDTO item : adminSet) {
|
||||
PersonProfileDto personProfileDto = personProfileMap.get(item.getPersonId());
|
||||
if (Objects.isNull(personProfileDto) || Objects.isNull(personProfileDto.getId())) {
|
||||
log.info("admin-personProfileDto is null");
|
||||
@ -107,7 +107,7 @@ public class ChatGroupEventHandler implements EventHandler, InitializingBean {
|
||||
}
|
||||
}
|
||||
|
||||
for (OrganizationalNodeUserVO worker : workerSet) {
|
||||
for (OrganizationalNodeUserDTO worker : workerSet) {
|
||||
PersonProfileDto personProfileDto = personProfileMap.get(worker.getPersonId());
|
||||
if (Objects.isNull(personProfileDto) || Objects.isNull(personProfileDto.getId())) {
|
||||
log.info("worker-personProfileDto is null");
|
||||
@ -125,14 +125,14 @@ public class ChatGroupEventHandler implements EventHandler, InitializingBean {
|
||||
* 构建personProfile的Map
|
||||
* key:id,value:personProfile
|
||||
*/
|
||||
private Map<Long, PersonProfileDto> buildPersonProfileMap(Pair<List<OrganizationalNodeUserVO>, List<OrganizationalNodeUserVO>> adminWorkerPair) {
|
||||
private Map<Long, PersonProfileDto> buildPersonProfileMap(Pair<List<OrganizationalNodeUserDTO>, List<OrganizationalNodeUserDTO>> adminWorkerPair) {
|
||||
|
||||
List<OrganizationalNodeUserVO> adminSet = CollectionUtils.isNotEmpty(adminWorkerPair.getKey()) ? adminWorkerPair.getKey() : Lists.newArrayList();
|
||||
List<OrganizationalNodeUserVO> workerSet = CollectionUtils.isNotEmpty(adminWorkerPair.getValue()) ? adminWorkerPair.getValue() : Lists.newArrayList();
|
||||
List<OrganizationalNodeUserDTO> adminSet = CollectionUtils.isNotEmpty(adminWorkerPair.getKey()) ? adminWorkerPair.getKey() : Lists.newArrayList();
|
||||
List<OrganizationalNodeUserDTO> workerSet = CollectionUtils.isNotEmpty(adminWorkerPair.getValue()) ? adminWorkerPair.getValue() : Lists.newArrayList();
|
||||
|
||||
List<Long> adminWorkerList = Lists.newArrayList();
|
||||
adminWorkerList.addAll(Lists.newArrayList(adminSet.stream().map(OrganizationalNodeUserVO::getPersonId).collect(Collectors.toList())));
|
||||
adminWorkerList.addAll(Lists.newArrayList(workerSet.stream().map(OrganizationalNodeUserVO::getPersonId).collect(Collectors.toList())));
|
||||
adminWorkerList.addAll(Lists.newArrayList(adminSet.stream().map(OrganizationalNodeUserDTO::getPersonId).collect(Collectors.toList())));
|
||||
adminWorkerList.addAll(Lists.newArrayList(workerSet.stream().map(OrganizationalNodeUserDTO::getPersonId).collect(Collectors.toList())));
|
||||
|
||||
List<PersonProfileDto> personProfileDtoList = profilesApiGateway.getPersonProfilesByIds(adminWorkerList);
|
||||
return personProfileDtoList.stream().collect(Collectors.toMap(PersonProfileDto::getId, Function.identity(), (x, y) -> x));
|
||||
|
||||
@ -16,13 +16,13 @@ import cn.axzo.im.event.inner.EventTypeEnum;
|
||||
import cn.axzo.im.event.payload.OrganizationalNodeUser;
|
||||
import cn.axzo.im.event.payload.OrganizationalNodeUserPayload;
|
||||
import cn.axzo.im.event.payload.OrganizationalNodeUserUpsertedPayload;
|
||||
import cn.axzo.im.gateway.OrgJobApiGateway;
|
||||
import cn.axzo.im.gateway.OrgJobGateway;
|
||||
import cn.axzo.im.gateway.OrganizationalNodeUserApiGateway;
|
||||
import cn.axzo.im.service.ChatGroupService;
|
||||
import cn.axzo.im.utils.BizAssertions;
|
||||
import cn.axzo.im.utils.JobCodeUtils;
|
||||
import cn.axzo.maokai.api.vo.response.OrgJobRes;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO;
|
||||
import cn.axzo.orggateway.api.job.resp.OrgJobResp;
|
||||
import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO;
|
||||
import com.alibaba.excel.util.StringUtils;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.collect.Lists;
|
||||
@ -64,7 +64,7 @@ public class OrganizationalNodeUserChangeEventHandler implements EventHandler, I
|
||||
private NimChannelService nimChannelService;
|
||||
|
||||
@Autowired
|
||||
private OrgJobApiGateway orgJobApiGateway;
|
||||
private OrgJobGateway orgJobGateway;
|
||||
|
||||
@Autowired
|
||||
private JobCodeProperties jobCodeProperties;
|
||||
@ -150,7 +150,7 @@ public class OrganizationalNodeUserChangeEventHandler implements EventHandler, I
|
||||
*/
|
||||
private OrgNodeUserPayLoad buildPayload(Long nodeUserId) {
|
||||
|
||||
OrganizationalNodeUserVO newNodeUserVO = organizationalNodeUserApiGateway.getById(nodeUserId);
|
||||
OrganizationalNodeUserDTO newNodeUserVO = organizationalNodeUserApiGateway.getById(nodeUserId);
|
||||
return OrgNodeUserPayLoad.builder()
|
||||
.workspaceId(newNodeUserVO.getWorkspaceId())
|
||||
.ouId(newNodeUserVO.getOrganizationalUnitId())
|
||||
@ -228,7 +228,7 @@ public class OrganizationalNodeUserChangeEventHandler implements EventHandler, I
|
||||
* 获取岗位code
|
||||
*/
|
||||
private String fetchJobCodeByJobId(Long jobId) {
|
||||
OrgJobRes orgJobRes = orgJobApiGateway.fetchJobCodeByJobId(jobId);
|
||||
OrgJobResp orgJobRes = orgJobGateway.getById(jobId);
|
||||
if (Objects.nonNull(orgJobRes) && StringUtils.isNotBlank(orgJobRes.getCode())) {
|
||||
return orgJobRes.getCode();
|
||||
}
|
||||
|
||||
@ -1,19 +1,18 @@
|
||||
package cn.axzo.im.job;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||
import cn.axzo.im.center.api.vo.req.AccountAbsentQuery;
|
||||
import cn.axzo.im.center.api.vo.resp.UserAccountResp;
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import cn.axzo.im.channel.IMChannelProvider;
|
||||
import cn.axzo.im.dao.repository.AccountRegisterDao;
|
||||
import cn.axzo.im.entity.AccountRegister;
|
||||
import cn.axzo.im.gateway.OrgJobGateway;
|
||||
import cn.axzo.im.service.AccountService;
|
||||
import cn.axzo.im.utils.ImProperties;
|
||||
import cn.axzo.maokai.api.client.OrganizationalJobApi;
|
||||
import cn.axzo.maokai.api.client.OrganizationalNodeUserApi;
|
||||
import cn.axzo.maokai.api.vo.request.OrganizationalNodeUserPageReq;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalJobResp;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO;
|
||||
import cn.axzo.orggateway.api.job.resp.OrgJobResp;
|
||||
import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi;
|
||||
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
|
||||
import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO;
|
||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.cache.Cache;
|
||||
@ -51,8 +50,8 @@ import static java.util.stream.Collectors.toSet;
|
||||
@RequiredArgsConstructor
|
||||
public class CreateAccountJob extends IJobHandler {
|
||||
|
||||
private final OrganizationalNodeUserApi organizationalNodeUserApi;
|
||||
private final OrganizationalJobApi organizationalJobApi;
|
||||
private final OrgJobGateway orgJobGateway;
|
||||
private final OrgNodeUserApi orgNodeUserApi;
|
||||
private final AccountService accountService;
|
||||
private final IMChannelProvider imChannelProvider;
|
||||
private final AccountRegisterDao accountRegisterDao;
|
||||
@ -98,13 +97,12 @@ public class CreateAccountJob extends IJobHandler {
|
||||
log.info("执行被中断...");
|
||||
return;
|
||||
}
|
||||
OrganizationalNodeUserPageReq request = new OrganizationalNodeUserPageReq();
|
||||
ListOrgNodeUserReq request = new ListOrgNodeUserReq();
|
||||
request.setPageSize(pageSize);
|
||||
request.setPage(page);
|
||||
log.info("开始查询 node user 表, page={}", page);
|
||||
ApiPageResult<OrganizationalNodeUserVO> resp = organizationalNodeUserApi.page(request);
|
||||
List<OrganizationalNodeUserDTO> nodeUsers = orgNodeUserApi.list(request).getData().getData();
|
||||
page++;
|
||||
List<OrganizationalNodeUserVO> nodeUsers = resp.getData().getList();
|
||||
if (CollectionUtils.isNotEmpty(nodeUsers)) {
|
||||
tryGenImAccount(param, nodeUsers);
|
||||
}
|
||||
@ -113,10 +111,10 @@ public class CreateAccountJob extends IJobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private void tryGenImAccount(Param param, List<OrganizationalNodeUserVO> nodeUsers) {
|
||||
private void tryGenImAccount(Param param, List<OrganizationalNodeUserDTO> nodeUsers) {
|
||||
// 过滤本次job已经处理过的
|
||||
ArrayList<OrganizationalNodeUserVO> noAccessed = new ArrayList<>();
|
||||
for (OrganizationalNodeUserVO nodeUser : nodeUsers) {
|
||||
ArrayList<OrganizationalNodeUserDTO> noAccessed = new ArrayList<>();
|
||||
for (OrganizationalNodeUserDTO nodeUser : nodeUsers) {
|
||||
PersonIdAndOu pou = new PersonIdAndOu(nodeUser.getPersonId(), nodeUser.getOrganizationalUnitId());
|
||||
if (param.accessed.getIfPresent(pou) == null)
|
||||
noAccessed.add(nodeUser);
|
||||
@ -125,7 +123,7 @@ public class CreateAccountJob extends IJobHandler {
|
||||
return;
|
||||
|
||||
// 过滤已经存在的im账号
|
||||
Function<OrganizationalNodeUserVO, String> imAccountBuilder = nodeUser ->
|
||||
Function<OrganizationalNodeUserDTO, String> imAccountBuilder = nodeUser ->
|
||||
accountService.buildUserIdWrapper(String.valueOf(nodeUser.getPersonId()),
|
||||
AppTypeEnum.CMP.getCode(), nodeUser.getOrganizationalUnitId());
|
||||
List<String> allImAccounts = noAccessed.stream().map(imAccountBuilder).distinct().collect(toList());
|
||||
@ -139,8 +137,8 @@ public class CreateAccountJob extends IJobHandler {
|
||||
.map(AccountRegister::getImAccount)
|
||||
.collect(toSet());
|
||||
}
|
||||
ArrayList<OrganizationalNodeUserVO> toCreateImAccounts = new ArrayList<>();
|
||||
for (OrganizationalNodeUserVO nodeUser : noAccessed) {
|
||||
ArrayList<OrganizationalNodeUserDTO> toCreateImAccounts = new ArrayList<>();
|
||||
for (OrganizationalNodeUserDTO nodeUser : noAccessed) {
|
||||
String imAccount = imAccountBuilder.apply(nodeUser);
|
||||
if (!existsImAccounts.contains(imAccount))
|
||||
toCreateImAccounts.add(nodeUser);
|
||||
@ -150,12 +148,12 @@ public class CreateAccountJob extends IJobHandler {
|
||||
}
|
||||
|
||||
// 避免url过长
|
||||
for (List<OrganizationalNodeUserVO> batchNodeUsers : Lists.partition(toCreateImAccounts, param.queryJobMaxSize)) {
|
||||
for (List<OrganizationalNodeUserDTO> batchNodeUsers : Lists.partition(toCreateImAccounts, param.queryJobMaxSize)) {
|
||||
List<Long> jobIds = param.determineNeedToQueryJobIds(batchNodeUsers);
|
||||
if (!jobIds.isEmpty()) {
|
||||
param.addJobs(organizationalJobApi.getByIds(jobIds).getData());
|
||||
param.addJobs(orgJobGateway.getByIds(jobIds));
|
||||
}
|
||||
for (OrganizationalNodeUserVO nodeUser : batchNodeUsers) {
|
||||
for (OrganizationalNodeUserDTO nodeUser : batchNodeUsers) {
|
||||
if (Thread.currentThread().isInterrupted()) {
|
||||
log.info("执行被中断...");
|
||||
return;
|
||||
@ -198,7 +196,7 @@ public class CreateAccountJob extends IJobHandler {
|
||||
// !! helpers for running
|
||||
|
||||
final AtomicInteger genCount = new AtomicInteger(0);
|
||||
final Map<Long, OrganizationalJobResp> jobId2Job = new HashMap<>();
|
||||
final Map<Long, OrgJobResp> jobId2Job = new HashMap<>();
|
||||
final Cache<PersonIdAndOu, Boolean> accessed = CacheBuilder.newBuilder()
|
||||
.maximumSize(10000)
|
||||
.build();
|
||||
@ -211,17 +209,17 @@ public class CreateAccountJob extends IJobHandler {
|
||||
return rateLimiter;
|
||||
}
|
||||
|
||||
void addJobs(List<OrganizationalJobResp> jobs) {
|
||||
void addJobs(List<OrgJobResp> jobs) {
|
||||
if (jobs == null) return;
|
||||
for (OrganizationalJobResp job : jobs) {
|
||||
for (OrgJobResp job : jobs) {
|
||||
jobId2Job.put(job.getId(), job);
|
||||
}
|
||||
}
|
||||
|
||||
List<Long> determineNeedToQueryJobIds(List<OrganizationalNodeUserVO> nodeUsers) {
|
||||
List<Long> determineNeedToQueryJobIds(List<OrganizationalNodeUserDTO> nodeUsers) {
|
||||
return nodeUsers.stream()
|
||||
.filter(nodeUser -> !shouldGenByIdentityType(nodeUser))
|
||||
.map(OrganizationalNodeUserVO::getOrganizationalJobId)
|
||||
.map(OrganizationalNodeUserDTO::getOrganizationalJobId)
|
||||
.filter(Objects::nonNull)
|
||||
.filter(jobId -> !jobId2Job.containsKey(jobId))
|
||||
.filter(jobId -> jobId > 0)
|
||||
@ -229,16 +227,16 @@ public class CreateAccountJob extends IJobHandler {
|
||||
.collect(toList());
|
||||
}
|
||||
|
||||
boolean shouldGenByIdentityType(OrganizationalNodeUserVO nodeUser) {
|
||||
boolean shouldGenByIdentityType(OrganizationalNodeUserDTO nodeUser) {
|
||||
return Objects.equals(nodeUser.getIdentityType(), IdentityType.PRACTITIONER.getCode())
|
||||
|| Objects.equals(nodeUser.getIdentityType(), IdentityType.WORKER_LEADER.getCode());
|
||||
}
|
||||
|
||||
boolean shouldGenImAccount(ImProperties props, OrganizationalNodeUserVO nodeUser) {
|
||||
boolean shouldGenImAccount(ImProperties props, OrganizationalNodeUserDTO nodeUser) {
|
||||
if (shouldGenByIdentityType(nodeUser)) {
|
||||
return true;
|
||||
}
|
||||
OrganizationalJobResp job = jobId2Job.get(nodeUser.getOrganizationalJobId());
|
||||
OrgJobResp job = jobId2Job.get(nodeUser.getOrganizationalJobId());
|
||||
return job != null && props.getGenImAccountJobCodes().contains(job.getCode());
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@ package cn.axzo.im.service;
|
||||
|
||||
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||
import cn.axzo.im.entity.AccountRegister;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
|
||||
import cn.axzo.orggateway.api.unit.resp.OrgUnitResp;
|
||||
import cn.axzo.pokonyan.dao.page.IPageParam;
|
||||
import cn.axzo.pokonyan.dao.wrapper.CriteriaField;
|
||||
import cn.axzo.pokonyan.dao.wrapper.Operator;
|
||||
@ -104,11 +104,11 @@ public interface AccountRegisterService extends IService<AccountRegister> {
|
||||
|
||||
private PersonProfileDto personProfile;
|
||||
|
||||
private OrganizationalUnitVO organizationalUnit;
|
||||
private OrgUnitResp organizationalUnit;
|
||||
|
||||
public static AccountRegisterDTO from(AccountRegister accountRegister,
|
||||
Map<String, PersonProfileDto> personProfiles,
|
||||
Map<Long, OrganizationalUnitVO> organizationals) {
|
||||
Map<Long, OrgUnitResp> organizationals) {
|
||||
AccountRegisterDTO accountRegisterDTO = AccountRegisterDTO.builder().build();
|
||||
BeanUtils.copyProperties(accountRegister, accountRegisterDTO);
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ import cn.axzo.im.center.api.vo.resp.ChatGroupQueryResp;
|
||||
import cn.axzo.im.center.api.vo.resp.HistoryMsgQueryResp;
|
||||
import cn.axzo.im.center.common.enums.ChatGroupUserDataSourceEnum;
|
||||
import cn.axzo.im.entity.ChatGroup;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO;
|
||||
import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO;
|
||||
import cn.hutool.core.lang.Pair;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
@ -39,7 +39,7 @@ public interface ChatGroupService extends IService<ChatGroup> {
|
||||
/**
|
||||
* 获取IM账号
|
||||
*/
|
||||
Pair<List<OrganizationalNodeUserVO>, List<OrganizationalNodeUserVO>> fetchUsersByWorkspaceOuId(ChatGroupCreateReq.CrowTypeEnum crowType, Long workspaceId, Long ouId, Set<String> jobCodes, Long personId);
|
||||
Pair<List<OrganizationalNodeUserDTO>, List<OrganizationalNodeUserDTO>> fetchUsersByWorkspaceOuId(ChatGroupCreateReq.CrowTypeEnum crowType, Long workspaceId, Long ouId, Set<String> jobCodes, Long personId);
|
||||
|
||||
/**
|
||||
* 根据项目Id/单位Id/节点Id,获取班组内成员
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
package cn.axzo.im.service;
|
||||
|
||||
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.im.center.api.vo.req.UpdateTemplateSendPriorityRequest;
|
||||
import cn.axzo.im.entity.MessageHistory;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
|
||||
import cn.axzo.orggateway.api.unit.resp.OrgUnitResp;
|
||||
import cn.axzo.pokonyan.dao.page.IPageParam;
|
||||
import cn.axzo.pokonyan.dao.wrapper.CriteriaField;
|
||||
import cn.axzo.pokonyan.dao.wrapper.Operator;
|
||||
@ -15,8 +14,6 @@ import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -94,11 +91,11 @@ public interface MessageHistoryService extends IService<MessageHistory> {
|
||||
class MessageHistoryDTO extends MessageHistory {
|
||||
private PersonProfileDto receivePersonProfile;
|
||||
|
||||
private OrganizationalUnitVO receiveOrganizationalUnit;
|
||||
private OrgUnitResp receiveOrganizationalUnit;
|
||||
|
||||
public static MessageHistoryDTO from(MessageHistory messageHistory,
|
||||
Map<String, PersonProfileDto> personProfiles,
|
||||
Map<Long, OrganizationalUnitVO> organizationals) {
|
||||
Map<Long, OrgUnitResp> organizationals) {
|
||||
MessageHistoryDTO messageHistoryDTO = MessageHistoryDTO.builder().build();
|
||||
BeanUtils.copyProperties(messageHistory, messageHistoryDTO);
|
||||
|
||||
|
||||
@ -5,11 +5,10 @@ import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||
import cn.axzo.im.center.common.enums.AccountTypeEnum;
|
||||
import cn.axzo.im.channel.IMChannelProvider;
|
||||
import cn.axzo.im.dao.mapper.AccountRegisterMapper;
|
||||
import cn.axzo.im.dependency.UnitGateway;
|
||||
import cn.axzo.im.entity.AccountRegister;
|
||||
import cn.axzo.im.service.AccountRegisterService;
|
||||
import cn.axzo.maokai.api.client.OrganizationalUnitApi;
|
||||
import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
|
||||
import cn.axzo.orggateway.api.unit.resp.OrgUnitResp;
|
||||
import cn.axzo.pokonyan.dao.converter.PageConverter;
|
||||
import cn.axzo.pokonyan.dao.mysql.QueryWrapperHelper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@ -38,9 +37,9 @@ public class AccountRegisterServiceImpl extends ServiceImpl<AccountRegisterMappe
|
||||
@Autowired
|
||||
private IMChannelProvider imChannelProvider;
|
||||
@Autowired
|
||||
private OrganizationalUnitApi organizationalUnitApi;
|
||||
@Autowired
|
||||
private UserProfileServiceApi userProfileServiceApi;
|
||||
@Autowired
|
||||
private UnitGateway unitGateway;
|
||||
|
||||
@Override
|
||||
public Page<AccountRegisterDTO> page(PageAccountRegisterParam param) {
|
||||
@ -53,7 +52,7 @@ public class AccountRegisterServiceImpl extends ServiceImpl<AccountRegisterMappe
|
||||
|
||||
Map<String, PersonProfileDto> personProfiles = listUserPersonProfile(param, page.getRecords());
|
||||
|
||||
Map<Long, OrganizationalUnitVO> organizationals = listOrganizational(param, page.getRecords());
|
||||
Map<Long, OrgUnitResp> organizationals = listOrganizational(param, page.getRecords());
|
||||
|
||||
return PageConverter.convert(page, (record) -> AccountRegisterDTO.from(record,
|
||||
personProfiles,
|
||||
@ -94,7 +93,7 @@ public class AccountRegisterServiceImpl extends ServiceImpl<AccountRegisterMappe
|
||||
.collect(Collectors.toMap(e -> e.getId().toString(), Function.identity()));
|
||||
}
|
||||
|
||||
private Map<Long, OrganizationalUnitVO> listOrganizational(PageAccountRegisterParam param,
|
||||
private Map<Long, OrgUnitResp> listOrganizational(PageAccountRegisterParam param,
|
||||
List<AccountRegister> accountRegisters) {
|
||||
if (CollectionUtils.isEmpty(accountRegisters) || BooleanUtils.isNotTrue(param.isNeedOuInfo())) {
|
||||
return Collections.emptyMap();
|
||||
@ -109,10 +108,6 @@ public class AccountRegisterServiceImpl extends ServiceImpl<AccountRegisterMappe
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
return organizationalUnitApi.page(OrganizationalUnitQuery.builder().unitIds(ouIds).build())
|
||||
.getData()
|
||||
.getList()
|
||||
.stream()
|
||||
.collect(Collectors.toMap(OrganizationalUnitVO::getId, Function.identity(), (f, s) -> f));
|
||||
return unitGateway.getByOuIdsMapped(ouIds);
|
||||
}
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ import cn.axzo.im.service.OperateLogService;
|
||||
import cn.axzo.im.utils.BizAssertions;
|
||||
import cn.axzo.im.utils.DateFormatUtil;
|
||||
import cn.axzo.im.utils.JobCodeUtils;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO;
|
||||
import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO;
|
||||
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
||||
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserV2DTO;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
@ -216,11 +216,11 @@ public class ChatGroupServiceImpl extends ServiceImpl<ChatGroupMapper, ChatGrou
|
||||
|
||||
//2 人数超限校验
|
||||
//Pair,key:管理人员集合;value:工人集合
|
||||
Pair<List<OrganizationalNodeUserVO>, List<OrganizationalNodeUserVO>> adminWorkerPair = this.fetchUsersByWorkspaceOuId(req.getCrowType(), req.getWorkspaceId(), req.getOuId(), this.buildJobCodesByCrowType(req.getCrowType()), req.getCreator());
|
||||
List<OrganizationalNodeUserVO> adminSet = adminWorkerPair.getKey();
|
||||
List<OrganizationalNodeUserVO> workerSet = adminWorkerPair.getValue();
|
||||
Pair<List<OrganizationalNodeUserDTO>, List<OrganizationalNodeUserDTO>> adminWorkerPair = this.fetchUsersByWorkspaceOuId(req.getCrowType(), req.getWorkspaceId(), req.getOuId(), this.buildJobCodesByCrowType(req.getCrowType()), req.getCreator());
|
||||
List<OrganizationalNodeUserDTO> adminSet = adminWorkerPair.getKey();
|
||||
List<OrganizationalNodeUserDTO> workerSet = adminWorkerPair.getValue();
|
||||
|
||||
Integer chatGroupAdminMemberCount = CollectionUtils.isEmpty(adminSet) ? 0 : adminSet.stream().map(OrganizationalNodeUserVO::getPersonId).collect(Collectors.toSet()).contains(ownerId) ? adminSet.size() : adminSet.size() + 1;
|
||||
Integer chatGroupAdminMemberCount = CollectionUtils.isEmpty(adminSet) ? 0 : adminSet.stream().map(OrganizationalNodeUserDTO::getPersonId).collect(Collectors.toSet()).contains(ownerId) ? adminSet.size() : adminSet.size() + 1;
|
||||
Integer chatGroupWorkerMemberCount = CollectionUtils.isNotEmpty(workerSet) ? workerSet.size() : 0;
|
||||
|
||||
if ((chatGroupAdminMemberCount + chatGroupWorkerMemberCount) < 2) {
|
||||
@ -333,7 +333,7 @@ public class ChatGroupServiceImpl extends ServiceImpl<ChatGroupMapper, ChatGrou
|
||||
break;
|
||||
case TEAM:
|
||||
//获取personId,在workspaceId下项目班组对象,(角色列表:班组长/带班长/小组长/工人)
|
||||
OrganizationalNodeUserVO projectTeamUser = this.fetchProjectTeamLeaderWorkspacePersonId(workspaceId, personId);
|
||||
OrganizationalNodeUserDTO projectTeamUser = this.fetchProjectTeamLeaderWorkspacePersonId(workspaceId, personId);
|
||||
resp.setTeamNodeId(projectTeamUser.getOrganizationalNodeId());
|
||||
|
||||
ownerId = personId;
|
||||
@ -359,23 +359,23 @@ public class ChatGroupServiceImpl extends ServiceImpl<ChatGroupMapper, ChatGrou
|
||||
/**
|
||||
* 获取IM账号
|
||||
*/
|
||||
public Pair<List<OrganizationalNodeUserVO>, List<OrganizationalNodeUserVO>> fetchUsersByWorkspaceOuId(ChatGroupCreateReq.CrowTypeEnum crowType, Long workspaceId, Long ouId, Set<String> jobCodes,Long personId) {
|
||||
public Pair<List<OrganizationalNodeUserDTO>, List<OrganizationalNodeUserDTO>> fetchUsersByWorkspaceOuId(ChatGroupCreateReq.CrowTypeEnum crowType, Long workspaceId, Long ouId, Set<String> jobCodes,Long personId) {
|
||||
switch (crowType) {
|
||||
case WORKSPACE:
|
||||
List<OrganizationalNodeUserVO> userListWhenWorkspace = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceIdJobCodes(workspaceId, jobCodes);
|
||||
List<OrganizationalNodeUserDTO> userListWhenWorkspace = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceIdJobCodes(workspaceId, jobCodes);
|
||||
BizAssertions.assertNotEmpty(userListWhenWorkspace, "人群类型是项目时,成员列表为空,项目Id:{},单位Id:{}", workspaceId, ouId);
|
||||
return Pair.of(userListWhenWorkspace, Lists.newArrayList());
|
||||
case OU:
|
||||
List<OrganizationalNodeUserVO> userListWhenOuId = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceOuIdJobCodes(workspaceId,ouId,jobCodes);
|
||||
List<OrganizationalNodeUserDTO> userListWhenOuId = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceOuIdJobCodes(workspaceId,ouId,jobCodes);
|
||||
BizAssertions.assertNotEmpty(userListWhenOuId, "人群类型是单位时,成员列表为空,项目Id:{},单位Id:{}", workspaceId, ouId);
|
||||
return Pair.of(userListWhenOuId, Lists.newArrayList());
|
||||
case TEAM:
|
||||
//获取personId,在workspaceId下项目班组对象,(角色列表:班组长/带班长/小组长/工人)
|
||||
OrganizationalNodeUserVO projectTeamUser = this.fetchProjectTeamLeaderWorkspacePersonId(workspaceId, personId);
|
||||
OrganizationalNodeUserDTO projectTeamUser = this.fetchProjectTeamLeaderWorkspacePersonId(workspaceId, personId);
|
||||
|
||||
//班组长/带班长
|
||||
List<OrganizationalNodeUserVO> teamerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,projectTeamUser.getOrganizationalNodeId(), Sets.newHashSet("projTeamLeader", "projectTeamManager"), true);
|
||||
List<OrganizationalNodeUserVO> workerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,projectTeamUser.getOrganizationalNodeId(), Sets.newHashSet("projWorker","projectTeamGPLeader"), false);
|
||||
List<OrganizationalNodeUserDTO> teamerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,projectTeamUser.getOrganizationalNodeId(), Sets.newHashSet("projTeamLeader", "projectTeamManager"), true);
|
||||
List<OrganizationalNodeUserDTO> workerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,projectTeamUser.getOrganizationalNodeId(), Sets.newHashSet("projWorker","projectTeamGPLeader"), false);
|
||||
return Pair.of(teamerList,workerList);
|
||||
default:
|
||||
throw new ServiceException("人群不存在");
|
||||
@ -387,19 +387,19 @@ public class ChatGroupServiceImpl extends ServiceImpl<ChatGroupMapper, ChatGrou
|
||||
*/
|
||||
public Set<String> teamOfMembers(Long workspaceId, Long ouId, Long nodeId) {
|
||||
//班组长/带班长
|
||||
List<OrganizationalNodeUserVO> teamerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,nodeId, Sets.newHashSet("projTeamLeader", "projectTeamManager"), true);
|
||||
List<OrganizationalNodeUserVO> workerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,nodeId, Sets.newHashSet("projWorker","projectTeamGPLeader"), false);
|
||||
List<OrganizationalNodeUserDTO> teamerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,nodeId, Sets.newHashSet("projTeamLeader", "projectTeamManager"), true);
|
||||
List<OrganizationalNodeUserDTO> workerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,nodeId, Sets.newHashSet("projWorker","projectTeamGPLeader"), false);
|
||||
|
||||
Set<String> userAccountRespList = Sets.newHashSet();
|
||||
|
||||
if (CollectionUtils.isNotEmpty(teamerList)) {
|
||||
for (OrganizationalNodeUserVO item : teamerList) {
|
||||
for (OrganizationalNodeUserDTO item : teamerList) {
|
||||
userAccountRespList.add(this.registerAccountIfAbsent(AppTypeEnum.CMP.getCode(), item.getPersonId(), item.getOrganizationalUnitId()));
|
||||
}
|
||||
}
|
||||
|
||||
if (CollectionUtils.isNotEmpty(workerList)) {
|
||||
for (OrganizationalNodeUserVO worker : workerList) {
|
||||
for (OrganizationalNodeUserDTO worker : workerList) {
|
||||
userAccountRespList.add(this.registerAccountIfAbsent(AppTypeEnum.CM.getCode(), worker.getPersonId(), worker.getOrganizationalUnitId()));
|
||||
}
|
||||
}
|
||||
@ -412,15 +412,15 @@ public class ChatGroupServiceImpl extends ServiceImpl<ChatGroupMapper, ChatGrou
|
||||
* @param personId 人员Id
|
||||
* @return 项目内班组的OrganizationalNode组织对象
|
||||
*/
|
||||
private OrganizationalNodeUserVO fetchProjectTeamLeaderWorkspacePersonId(Long workspaceId, Long personId) {
|
||||
List<OrganizationalNodeUserVO> projectTeamUserList = this.organizationalNodeUserApiGateway.searchNodeUser( null, workspaceId, Sets.newHashSet(JobCodeUtils.PROJECT_TEAM_LEADER_JOB_CODE), personId, false);
|
||||
private OrganizationalNodeUserDTO fetchProjectTeamLeaderWorkspacePersonId(Long workspaceId, Long personId) {
|
||||
List<OrganizationalNodeUserDTO> projectTeamUserList = this.organizationalNodeUserApiGateway.searchNodeUser( null, workspaceId, Sets.newHashSet(JobCodeUtils.PROJECT_TEAM_LEADER_JOB_CODE), personId, false);
|
||||
BizAssertions.assertNotEmpty(projectTeamUserList, "人员Id:{}在项目Id:{},不是班组长", personId, workspaceId);
|
||||
|
||||
return projectTeamUserList.get(0);
|
||||
}
|
||||
|
||||
private List<OrganizationalNodeUserVO> fetchUsersByWorkspaceIdJobCodes(Long workspaceId, Long ouId, Long nodeId,Set<String> jobCodes, boolean isAdmin) {
|
||||
List<OrganizationalNodeUserVO> userListWhenTeamer = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceNodeIdJobCodes(workspaceId, nodeId, jobCodes);
|
||||
private List<OrganizationalNodeUserDTO> fetchUsersByWorkspaceIdJobCodes(Long workspaceId, Long ouId, Long nodeId,Set<String> jobCodes, boolean isAdmin) {
|
||||
List<OrganizationalNodeUserDTO> userListWhenTeamer = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceNodeIdJobCodes(workspaceId, nodeId, jobCodes);
|
||||
if (isAdmin) {
|
||||
BizAssertions.assertNotEmpty(userListWhenTeamer, "人群是班组时,{}为空,workspaceId:{},ouId:{}", isAdmin ? "班组长/带班长" : "工人", workspaceId, ouId);
|
||||
}
|
||||
@ -478,9 +478,9 @@ public class ChatGroupServiceImpl extends ServiceImpl<ChatGroupMapper, ChatGrou
|
||||
}
|
||||
|
||||
Set<ChatGroupCreateReq.CrowTypeEnum> jobResult = Sets.newHashSet();
|
||||
List<OrganizationalNodeUserVO> nodeUserVOList = organizationalNodeUserApiGateway.searchNodeUser(null, workspaceId, null, personId, true);
|
||||
List<OrganizationalNodeUserDTO> nodeUserVOList = organizationalNodeUserApiGateway.searchNodeUser(null, workspaceId, null, personId, true);
|
||||
if (CollectionUtils.isNotEmpty(nodeUserVOList)) {
|
||||
for(OrganizationalNodeUserVO nodeUserVO : nodeUserVOList) {
|
||||
for(OrganizationalNodeUserDTO nodeUserVO : nodeUserVOList) {
|
||||
if (JobCodeUtils.isProjectManaGpWorkerLeader(nodeUserVO.getOrganizationalJobCode())) {
|
||||
continue;
|
||||
}
|
||||
@ -733,20 +733,20 @@ public class ChatGroupServiceImpl extends ServiceImpl<ChatGroupMapper, ChatGrou
|
||||
*/
|
||||
public Set<String> chatGroupOfMembers(ChatGroupCreateReq.CrowTypeEnum crowType, Long workspaceId, Long ouId, Long creator) {
|
||||
//Pair,key:管理人员集合;value:工人集合
|
||||
Pair<List<OrganizationalNodeUserVO>, List<OrganizationalNodeUserVO>> adminWorkerPair = this.fetchUsersByWorkspaceOuId(crowType, workspaceId, ouId, this.buildJobCodesByCrowType(crowType), creator);
|
||||
List<OrganizationalNodeUserVO> adminSet = adminWorkerPair.getKey();
|
||||
List<OrganizationalNodeUserVO> workerSet = adminWorkerPair.getValue();
|
||||
Pair<List<OrganizationalNodeUserDTO>, List<OrganizationalNodeUserDTO>> adminWorkerPair = this.fetchUsersByWorkspaceOuId(crowType, workspaceId, ouId, this.buildJobCodesByCrowType(crowType), creator);
|
||||
List<OrganizationalNodeUserDTO> adminSet = adminWorkerPair.getKey();
|
||||
List<OrganizationalNodeUserDTO> workerSet = adminWorkerPair.getValue();
|
||||
|
||||
Set<String> userAccountRespList = Sets.newHashSet();
|
||||
|
||||
if (CollectionUtils.isNotEmpty(adminSet)) {
|
||||
for (OrganizationalNodeUserVO item : adminSet) {
|
||||
for (OrganizationalNodeUserDTO item : adminSet) {
|
||||
userAccountRespList.add(this.registerAccountIfAbsent(AppTypeEnum.CMP.getCode(), item.getPersonId(), item.getOrganizationalUnitId()));
|
||||
}
|
||||
}
|
||||
|
||||
if (CollectionUtils.isNotEmpty(workerSet)) {
|
||||
for (OrganizationalNodeUserVO worker : workerSet) {
|
||||
for (OrganizationalNodeUserDTO worker : workerSet) {
|
||||
userAccountRespList.add(this.registerAccountIfAbsent(AppTypeEnum.CM.getCode(), worker.getPersonId(), worker.getOrganizationalUnitId()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import cn.axzo.im.channel.netease.dto.MessageBatchDispatchRequest;
|
||||
import cn.axzo.im.channel.netease.dto.MessageBatchDispatchResponse;
|
||||
import cn.axzo.im.config.MqProducer;
|
||||
import cn.axzo.im.dao.mapper.MessageHistoryMapper;
|
||||
import cn.axzo.im.dependency.UnitGateway;
|
||||
import cn.axzo.im.entity.HistoryRecordExt;
|
||||
import cn.axzo.im.entity.MessageHistory;
|
||||
import cn.axzo.im.enums.MessageHistoryStatus;
|
||||
@ -17,9 +18,7 @@ import cn.axzo.im.event.payload.MessageHistoryCreatedPayload;
|
||||
import cn.axzo.im.event.payload.MessageHistoryUpdatedPayload;
|
||||
import cn.axzo.im.service.AccountService;
|
||||
import cn.axzo.im.service.MessageHistoryService;
|
||||
import cn.axzo.maokai.api.client.OrganizationalUnitApi;
|
||||
import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
|
||||
import cn.axzo.orggateway.api.unit.resp.OrgUnitResp;
|
||||
import cn.axzo.pokonyan.client.RateLimiter;
|
||||
import cn.axzo.pokonyan.client.RateLimiterClient;
|
||||
import cn.axzo.pokonyan.dao.converter.PageConverter;
|
||||
@ -59,7 +58,7 @@ public class MessageHistoryServiceImpl extends ServiceImpl<MessageHistoryMapper,
|
||||
implements MessageHistoryService, InitializingBean {
|
||||
|
||||
@Autowired
|
||||
private OrganizationalUnitApi organizationalUnitApi;
|
||||
private UnitGateway unitGateway;
|
||||
@Autowired
|
||||
private UserProfileServiceApi userProfileServiceApi;
|
||||
@Autowired
|
||||
@ -113,7 +112,7 @@ public class MessageHistoryServiceImpl extends ServiceImpl<MessageHistoryMapper,
|
||||
|
||||
Map<String, PersonProfileDto> personProfiles = listReceiveUserPersonProfile(param, page.getRecords());
|
||||
|
||||
Map<Long, OrganizationalUnitVO> organizationals = listReceiveOrganizational(param, page.getRecords());
|
||||
Map<Long, OrgUnitResp> organizationals = listReceiveOrganizational(param, page.getRecords());
|
||||
|
||||
return PageConverter.convert(page, (record) -> MessageHistoryDTO.from(record,
|
||||
personProfiles,
|
||||
@ -318,7 +317,7 @@ public class MessageHistoryServiceImpl extends ServiceImpl<MessageHistoryMapper,
|
||||
.collect(Collectors.toMap(e -> e.getId().toString(), Function.identity()));
|
||||
}
|
||||
|
||||
private Map<Long, OrganizationalUnitVO> listReceiveOrganizational(PageMessageHistoryParam param,
|
||||
private Map<Long, OrgUnitResp> listReceiveOrganizational(PageMessageHistoryParam param,
|
||||
List<MessageHistory> messageHistories) {
|
||||
if (CollectionUtils.isEmpty(messageHistories) || BooleanUtils.isNotTrue(param.isNeedReceiveOuInfo())) {
|
||||
return Collections.emptyMap();
|
||||
@ -333,14 +332,7 @@ public class MessageHistoryServiceImpl extends ServiceImpl<MessageHistoryMapper,
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
OrganizationalUnitQuery query = new OrganizationalUnitQuery();
|
||||
query.setUnitIds(ouIds);
|
||||
query.setPageSize(param.getPageSize() + 1L);
|
||||
return organizationalUnitApi.page(query)
|
||||
.getData()
|
||||
.getList()
|
||||
.stream()
|
||||
.collect(Collectors.toMap(OrganizationalUnitVO::getId, Function.identity(), (f, s) -> f));
|
||||
return unitGateway.getByOuIdsMapped(ouIds);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -139,4 +139,22 @@ public class BizAssertions {
|
||||
return response.getData();
|
||||
}
|
||||
|
||||
|
||||
public static <T> T assertResponse(cn.axzo.foundation.result.ApiResult<T> response) {
|
||||
return assertResponse(response, "error resp={}", JSON.toJSONString(response));
|
||||
}
|
||||
|
||||
public static <T> T assertResponse(cn.axzo.foundation.result.ApiResult<T> response, String message, Object... args) {
|
||||
if (!response.isSuccess()) {
|
||||
String finalMsg = MessageFormatter.arrayFormat(message, args).getMessage();
|
||||
if (StringUtils.isNotBlank(response.getMsg())) {
|
||||
finalMsg += ": " + response.getMsg();
|
||||
}
|
||||
ServiceException e = new ServiceException(finalMsg);
|
||||
log.warn("remote call response with error. response={}", JSON.toJSONString(response), e);
|
||||
throw e;
|
||||
}
|
||||
return response.getData();
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user