REQ-3345: 补全单位名称
This commit is contained in:
parent
8bdc8cc2f3
commit
4f5fef5f17
@ -0,0 +1,50 @@
|
||||
package cn.axzo.im.gateway;
|
||||
|
||||
import cn.axzo.im.utils.BizAssertions;
|
||||
import cn.axzo.maokai.api.client.OrganizationalUnitApi;
|
||||
import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery;
|
||||
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class OrgGateway {
|
||||
|
||||
private final OrganizationalUnitApi organizationalUnitApi;
|
||||
|
||||
public List<OrganizationalUnitVO> getUnits(List<Long> ouIdList) {
|
||||
if (ouIdList.isEmpty())
|
||||
return Collections.emptyList();
|
||||
OrganizationalUnitQuery req = new OrganizationalUnitQuery();
|
||||
req.setPageSize((long) ouIdList.size());
|
||||
req.setUnitIds(ouIdList);
|
||||
return BizAssertions.assertResponse(organizationalUnitApi.list(req));
|
||||
}
|
||||
|
||||
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public static class Orgs {
|
||||
|
||||
private final List<OrganizationalUnitVO> units;
|
||||
|
||||
public static Orgs wrap(List<OrganizationalUnitVO> units) {
|
||||
return new Orgs(units);
|
||||
}
|
||||
|
||||
public Optional<OrganizationalUnitVO> findUnit(Long ouId) {
|
||||
return units.stream().filter(unit -> unit.getId().equals(ouId)).findFirst();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -8,11 +8,17 @@ import cn.axzo.im.center.api.vo.req.GroupMessagePageQueryRequest;
|
||||
import cn.axzo.im.center.api.vo.resp.GroupMessagePageQueryResponse;
|
||||
import cn.axzo.im.dao.repository.GroupMessageDao;
|
||||
import cn.axzo.im.entity.GroupMessage;
|
||||
import cn.axzo.im.gateway.OrgGateway;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@ -22,6 +28,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
public class GroupMessageController implements GroupMessageApi {
|
||||
|
||||
private final GroupMessageDao groupMessageDao;
|
||||
private final OrgGateway orgGateway;
|
||||
|
||||
@Override
|
||||
public ApiPageResult<GroupMessagePageQueryResponse> pageQuery(GroupMessagePageQueryRequest request) {
|
||||
@ -29,11 +36,22 @@ public class GroupMessageController implements GroupMessageApi {
|
||||
IPage<GroupMessage> page = groupMessageDao.lambdaQuery()
|
||||
.orderByDesc(GroupMessage::getTid, GroupMessage::getSendTime)
|
||||
.page(request.toPage());
|
||||
List<GroupMessagePageQueryResponse> messages = BeanMapper.copyList(
|
||||
page.getRecords(), GroupMessagePageQueryResponse.class);
|
||||
OrgGateway.Orgs units = OrgGateway.Orgs.wrap(orgGateway.getUnits(messages.stream()
|
||||
.map(GroupMessagePageQueryResponse::getFromPersonOuId)
|
||||
.filter(Objects::nonNull)
|
||||
.filter(ouId -> ouId > 0)
|
||||
.distinct()
|
||||
.collect(toList())));
|
||||
for (GroupMessagePageQueryResponse message : messages)
|
||||
units.findUnit(message.getFromPersonOuId())
|
||||
.ifPresent(unit -> message.setUnitName(unit.getName()));
|
||||
PageResp<GroupMessagePageQueryResponse> pageResp = PageResp.list(
|
||||
page.getCurrent(),
|
||||
page.getSize(),
|
||||
page.getTotal(),
|
||||
BeanMapper.copyList(page.getRecords(), GroupMessagePageQueryResponse.class));
|
||||
messages);
|
||||
return ApiPageResult.ok(pageResp);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user