REQ-3345: 补全单位名称

This commit is contained in:
yanglin 2025-02-05 19:23:24 +08:00
parent 8bdc8cc2f3
commit 4f5fef5f17
2 changed files with 69 additions and 1 deletions

View File

@ -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();
}
}
}

View File

@ -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.center.api.vo.resp.GroupMessagePageQueryResponse;
import cn.axzo.im.dao.repository.GroupMessageDao; import cn.axzo.im.dao.repository.GroupMessageDao;
import cn.axzo.im.entity.GroupMessage; import cn.axzo.im.entity.GroupMessage;
import cn.axzo.im.gateway.OrgGateway;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
import static java.util.stream.Collectors.toList;
/** /**
* @author yanglin * @author yanglin
*/ */
@ -22,6 +28,7 @@ import org.springframework.web.bind.annotation.RestController;
public class GroupMessageController implements GroupMessageApi { public class GroupMessageController implements GroupMessageApi {
private final GroupMessageDao groupMessageDao; private final GroupMessageDao groupMessageDao;
private final OrgGateway orgGateway;
@Override @Override
public ApiPageResult<GroupMessagePageQueryResponse> pageQuery(GroupMessagePageQueryRequest request) { public ApiPageResult<GroupMessagePageQueryResponse> pageQuery(GroupMessagePageQueryRequest request) {
@ -29,11 +36,22 @@ public class GroupMessageController implements GroupMessageApi {
IPage<GroupMessage> page = groupMessageDao.lambdaQuery() IPage<GroupMessage> page = groupMessageDao.lambdaQuery()
.orderByDesc(GroupMessage::getTid, GroupMessage::getSendTime) .orderByDesc(GroupMessage::getTid, GroupMessage::getSendTime)
.page(request.toPage()); .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( PageResp<GroupMessagePageQueryResponse> pageResp = PageResp.list(
page.getCurrent(), page.getCurrent(),
page.getSize(), page.getSize(),
page.getTotal(), page.getTotal(),
BeanMapper.copyList(page.getRecords(), GroupMessagePageQueryResponse.class)); messages);
return ApiPageResult.ok(pageResp); return ApiPageResult.ok(pageResp);
} }