Browse Source

内存分页

刘俊驰 1 year ago
parent
commit
0e399497c6

+ 37 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomMemberServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -15,10 +16,13 @@ import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomDetailVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.WrapperUtil;
+import com.ym.mec.dto.RoomMember;
+import com.ym.mec.web.KLXFeignService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
@@ -53,6 +57,9 @@ public class ImLiveBroadcastRoomMemberServiceImpl extends ServiceImpl<ImLiveBroa
     @Autowired
     private OrganizationDao organizationDao;
 
+    @Autowired
+    private KLXFeignService klxFeignService;
+
     @Override
     public ImLiveBroadcastRoomMemberDao getDao() {
         return this.baseMapper;
@@ -72,10 +79,22 @@ public class ImLiveBroadcastRoomMemberServiceImpl extends ServiceImpl<ImLiveBroa
     @Override
     public PageInfo<ImLiveBroadcastRoomMemberVo> queryRoomMember(Map<String, Object> param) {
         Page<ImLiveBroadcastRoomMemberVo> pageInfo = PageUtil.getPageInfo(param);
+        IPage<ImLiveBroadcastRoomMemberVo> page ;
+        HttpResponseResult<List<RoomMember>> listHttpResponseResult = klxFeignService.queryRoomMember(param);
+        List<RoomMember> roomMembers = listHttpResponseResult.getData();
+        List<ImLiveBroadcastRoomMemberVo> records;
+        if (CollectionUtils.isNotEmpty(roomMembers)) {
+
+            //roomMembers 转 ImLiveBroadcastRoomMemberVo
+
+            pageInfo.setPages(1);
+            pageInfo.setSize(-1);
+            page = baseMapper.queryMemberPage(pageInfo, param);
+        } else {
+            page = baseMapper.queryMemberPage(pageInfo, param);
+        }
 
-        IPage<ImLiveBroadcastRoomMemberVo> page = baseMapper.queryMemberPage(pageInfo, param);
-
-        List<ImLiveBroadcastRoomMemberVo> records = page.getRecords();
+        records = page.getRecords();
 
         if (CollectionUtils.isNotEmpty(records)) {
 
@@ -157,6 +176,21 @@ public class ImLiveBroadcastRoomMemberServiceImpl extends ServiceImpl<ImLiveBroa
             }
         }
 
+        if (CollectionUtils.isNotEmpty(roomMembers)) {
+
+            //roomMembers 转 ImLiveBroadcastRoomMemberVo
+            List<ImLiveBroadcastRoomMemberVo> imLiveBroadcastRoomMemberVos = JSON
+                .parseArray(JSON.toJSONString(roomMembers),ImLiveBroadcastRoomMemberVo.class);
+            records.addAll(imLiveBroadcastRoomMemberVos);
+            records.sort(Comparator.comparing(ImLiveBroadcastRoomMemberVo::getJoinTime));
+            long pages = page.getPages();
+            long rows = page.getSize();
+            List<ImLiveBroadcastRoomMemberVo> imLiveBroadcastRoomMemberVos1 = records.subList((int) (((pages-1)>=0?(pages-1):0) * rows), (int) rows);
+            page.setRecords(imLiveBroadcastRoomMemberVos1);
+        } else {
+            page = baseMapper.queryMemberPage(pageInfo, param);
+        }
+
         return PageUtil.pageInfo(page);
     }