lyhzzz 2 年之前
父节点
当前提交
e6a04ca843

+ 4 - 4
src/main/java/com/fdkankan/tk/controller/DataCountController.java

@@ -40,7 +40,7 @@ public class DataCountController extends BaseController {
     @GetMapping("/onlineTimeCount")
     public ResultData onlineTimeCount(){
 
-        return ResultData.ok(dataCountService.onlineTimeCount());
+        return ResultData.ok(dataCountService.onlineTimeCount(getToken()));
     }
 
     @GetMapping("/allRoomList")
@@ -57,7 +57,7 @@ public class DataCountController extends BaseController {
                                     @RequestParam(required = false) String startTime,
                                     @RequestParam(required = false) String endTime){
 
-        return ResultData.ok(dataCountService.roomVisitData(roomTitle,startTime,endTime));
+        return ResultData.ok(dataCountService.roomVisitData(getToken(),roomTitle,startTime,endTime));
     }
 
     /**
@@ -70,7 +70,7 @@ public class DataCountController extends BaseController {
                                    @RequestParam(required = false,defaultValue = "1") Integer pageNum,
                                    @RequestParam(required = false,defaultValue = "10") Integer pageSize){
 
-        return ResultData.ok(dataCountService.roomDataList(roomTitle,startTime,endTime,pageNum,pageSize));
+        return ResultData.ok(dataCountService.roomDataList(getToken(),roomTitle,startTime,endTime,pageNum,pageSize));
     }
 
     /**
@@ -83,6 +83,6 @@ public class DataCountController extends BaseController {
                                    @RequestParam(required = false,defaultValue = "1") Integer pageNum,
                                    @RequestParam(required = false,defaultValue = "10") Integer pageSize){
 
-        return ResultData.ok(dataCountService.roomMsgList(roomTitle,startTime,endTime,pageNum,pageSize));
+        return ResultData.ok(dataCountService.roomMsgList(getToken(),roomTitle,startTime,endTime,pageNum,pageSize));
     }
 }

+ 1 - 1
src/main/java/com/fdkankan/tk/mapper/IRoomDanmakuMapper.java

@@ -23,6 +23,6 @@ public interface IRoomDanmakuMapper extends BaseMapper<RoomDanmaku> {
 
     List<DataCount> getDataCountTop5(@Param("roomIds")List<String> roomIds);
 
-    Page<UserMsgVo> pageList( Page<Object> page, @Param("roomId") String roomId, @Param("startTime") String startTime, @Param("endTime") String endTime);
+    Page<UserMsgVo> pageList( Page<Object> page, @Param("roomIds") List<String>  roomId, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
 }

+ 1 - 1
src/main/java/com/fdkankan/tk/mapper/IRoomVisitLogMapper.java

@@ -21,7 +21,7 @@ public interface IRoomVisitLogMapper extends BaseMapper<RoomVisitLog> {
 
     Long manCount(@Param("roomIds")List<String> roomIds);
 
-    Long getCountByTime(@Param("key") Integer key);
+    Long getCountByTime(@Param("key") Integer key,@Param("roomIds")List<String> roomIds);
 
     List<DataCount> getByGroupRoomId(@Param("tb") String tb,@Param("roomIds") List<String> roomIds,
                                      @Param("startTime") String startTime, @Param("endTime") String endTime);

+ 5 - 4
src/main/java/com/fdkankan/tk/response/RoomVisitData.java

@@ -2,14 +2,15 @@ package com.fdkankan.tk.response;
 
 import lombok.Data;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Data
 public class RoomVisitData {
 
-    private List<DataCount> userVisitList;
-    private List<DataCount> userShareList;
-    private List<DataCount> userMsgManList;
-    private List<DataCount> userMsgCountList;
+    private List<DataCount> userVisitList = new ArrayList<>();
+    private List<DataCount> userShareList = new ArrayList<>();
+    private List<DataCount> userMsgManList = new ArrayList<>();
+    private List<DataCount> userMsgCountList = new ArrayList<>();
 
 }

+ 53 - 37
src/main/java/com/fdkankan/tk/service/DataCountService.java

@@ -40,20 +40,12 @@ public class DataCountService {
 
 
     public Object roomData(String token) {
-        String userName = null;
-        if(StringUtils.isNotBlank(token)){
-            userName = JwtUtil.getUserName(token);
-        }
-        LambdaQueryWrapper<Room> wrapper = new LambdaQueryWrapper<>();
-        if(StringUtils.isNotBlank(userName)){
-            wrapper.eq(Room::getRoomUserName,userName);
-        }
-        List<Room> list = roomService.list(wrapper);
-        Long roomCount = Long.valueOf(list.size());
-        if(list.size() <=0){
+        List<Room> roomList = roomService.getRoomByToken(token);
+        List<String> roomIds = roomList.stream().map(Room::getRoomId).collect(Collectors.toList());
+        if(roomIds.size() <=0){
             return new RoomData();
         }
-        List<String> roomIds = list.stream().map(Room::getRoomId).collect(Collectors.toList());
+        Long roomCount = Long.valueOf(roomList.size());
 
         Long visitManCount = roomVisitLogService.manCount(roomIds);
         LambdaQueryWrapper<RoomVisitLog> wrapper2 = new LambdaQueryWrapper<>();
@@ -77,25 +69,15 @@ public class DataCountService {
     }
 
     public Object takeLookTop5(String token) {
-        String userName = null;
-        if(StringUtils.isNotBlank(token)){
-            userName = JwtUtil.getUserName(token);
-        }
-        TakeLookTop5 takeLookTop5 = new TakeLookTop5();
-
-        List<DataCount> takeLookList = new ArrayList<>();
-        LambdaQueryWrapper<Room> wrapper = new LambdaQueryWrapper<>();
-        wrapper.orderByDesc(Room::getRoomViewCount);
-        if(StringUtils.isNotBlank(userName)){
-            wrapper.eq(Room::getRoomUserName,userName);
-
-        }
-        wrapper.orderByDesc(Room::getRoomViewCount);
-        List<Room> roomList = roomService.list( wrapper);
+        List<Room> roomList = roomService.getRoomByToken(token);
         List<String> roomIds = roomList.stream().map(Room::getRoomId).collect(Collectors.toList());
+        TakeLookTop5 takeLookTop5 = new TakeLookTop5();
         if(roomIds.size() <=0){
             return takeLookTop5;
         }
+
+        List<DataCount> takeLookList = new ArrayList<>();
+
         for (Room room : roomList) {
             if(takeLookList.size() >= 5){
                 continue;
@@ -112,11 +94,19 @@ public class DataCountService {
         return takeLookTop5;
     }
 
-    public Object onlineTimeCount() {
+    public Object onlineTimeCount(String token) {
+        List<Room> roomList = roomService.getRoomByToken(token);
+        List<String> roomIds = roomList.stream().map(Room::getRoomId).collect(Collectors.toList());
+
         List<Integer> keys = DataCountUtil.timeShardingRes;
         List<DataCount> dataCounts = new ArrayList<>();
         for (Integer key : keys) {
-            Long count = roomVisitLogService.getCountByTime(key);
+            Long count = null;
+            if(roomIds.isEmpty()){
+                count = 0L;
+            }else {
+                count = roomVisitLogService.getCountByTime(key,roomIds);
+            }
             DataCount dataCount = new DataCount();
             dataCount.setDataKey(key.toString());
             dataCount.setDataCount(count);
@@ -125,17 +115,24 @@ public class DataCountService {
         return dataCounts;
     }
 
-    public Object roomVisitData(String roomTitle, String startTime, String endTime) {
-        List<String> roomIds = new ArrayList<>();
+    public Object roomVisitData(String token,String roomTitle, String startTime, String endTime) {
+        List<Room> roomList = roomService.getRoomByToken(token);
+        List<String> roomIdsDb = roomList.stream().map(Room::getRoomId).collect(Collectors.toList());
+        List<String> roomIds = roomIdsDb;
+
         if(StringUtils.isNotBlank(roomTitle)){
-            List<Room> roomList = roomService.getLikeTitle(roomTitle);
+            List<Room> roomListLike = roomService.getLikeTitle(roomTitle);
             if(roomList.size() >0){
-                roomIds = roomList.stream().map(Room::getRoomId).collect(Collectors.toList());
+               List<String> roomIds2 = roomListLike.stream().map(Room::getRoomId).collect(Collectors.toList());
+               roomIds = roomIdsDb.stream().filter(roomIds2::contains).collect(Collectors.toList());
             }
         }
+        RoomVisitData roomVisitData = new RoomVisitData();
+        if(roomIds.isEmpty()){
+            return roomVisitData;
+        }
         startTime = Dateutils.formatStartTime(startTime);
         endTime = Dateutils.formatEndTime(endTime);
-        RoomVisitData roomVisitData = new RoomVisitData();
         List<DataCount> dbVisitList = roomVisitLogService.getByGroupRoomId("t_room_visit_log",roomIds,startTime,endTime);
         List<DataCount>  dbVisitListFmt =  getDataCountListByList(dbVisitList, startTime, endTime);
 
@@ -174,11 +171,15 @@ public class DataCountService {
         return dataCounts;
     }
 
-    public Object roomDataList(String roomTitle, String startTime, String endTime, Integer pageNum, Integer pageSize) {
+    public Object roomDataList(String token,String roomTitle, String startTime, String endTime, Integer pageNum, Integer pageSize) {
         startTime = Dateutils.formatStartTime(startTime);
         endTime = Dateutils.formatEndTime(endTime);
 
         LambdaQueryWrapper<Room> wrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(token)){
+            String userName = JwtUtil.getUserName(token);
+            wrapper.eq(Room::getRoomUserName,userName);
+        }
         if(StringUtils.isNotBlank(roomTitle)){
             wrapper.like(Room::getRoomId,roomTitle);
         }
@@ -255,11 +256,26 @@ public class DataCountService {
         return PageInfo.PageInfo(pageVo);
     }
 
-    public Object roomMsgList(String roomTitle, String startTime, String endTime, Integer pageNum, Integer pageSize) {
+    public Object roomMsgList(String token ,String roomTitle, String startTime, String endTime, Integer pageNum, Integer pageSize) {
+        List<Room> roomList = roomService.getRoomByToken(token);
+        List<String> roomIdsDb = roomList.stream().map(Room::getRoomId).collect(Collectors.toList());
+        List<String> roomIds = roomIdsDb;
+
+        if(StringUtils.isNotBlank(roomTitle)){
+            List<Room> roomListLike = roomService.getLikeTitle(roomTitle);
+            if(roomList.size() >0){
+                List<String> roomIds2 = roomListLike.stream().map(Room::getRoomId).collect(Collectors.toList());
+                roomIds = roomIdsDb.stream().filter(roomIds2::contains).collect(Collectors.toList());
+            }
+        }
+        if(roomIds.isEmpty()){
+            return  PageInfo.PageInfo(new Page<>(pageNum,pageSize));
+        }
+
         startTime = Dateutils.formatStartTime(startTime);
         endTime = Dateutils.formatEndTime(endTime);
 
-        Page<UserMsgVo> page = roomDanmakuService.pageList(new Page<>(pageNum,pageSize) ,roomTitle,startTime,endTime);
+        Page<UserMsgVo> page = roomDanmakuService.pageList(new Page<>(pageNum,pageSize) ,roomIds,startTime,endTime);
 
         HashMap<String,List<RoomVisitLog>> roomVisitLogsMap = new HashMap<>();
         HashMap<String,List<RoomDanmaku>> danmakusMap = new HashMap<>();

+ 1 - 1
src/main/java/com/fdkankan/tk/service/IRoomDanmakuService.java

@@ -22,7 +22,7 @@ public interface IRoomDanmakuService extends IService<RoomDanmaku> {
 
     List<DataCount> getDataCountTop5(List<String> roomIds);
 
-    Page<UserMsgVo> pageList(Page<Object> page, String roomId, String startTime, String endTime);
+    Page<UserMsgVo> pageList(Page<Object> page, List<String> roomIds, String startTime, String endTime);
 
     List<RoomDanmaku> getByRoomId(String roomId,String wxUserId);
 }

+ 2 - 0
src/main/java/com/fdkankan/tk/service/IRoomService.java

@@ -46,4 +46,6 @@ public interface IRoomService extends IService<Room> {
     HashMap<String, Room> getByIds(List<String> roomIds);
 
     List<Room> getLikeTitle(String roomTitle);
+
+    List<Room> getRoomByToken(String token);
 }

+ 1 - 1
src/main/java/com/fdkankan/tk/service/IRoomVisitLogService.java

@@ -22,7 +22,7 @@ public interface IRoomVisitLogService extends IService<RoomVisitLog> {
 
     Long manCount(List<String> roomIds);
 
-    Long getCountByTime(Integer key);
+    Long getCountByTime(Integer key,List<String> roomIds);
 
     List<DataCount> getByGroupRoomId(String tb,List<String> roomIds, String startTime, String endTime);
 

+ 2 - 2
src/main/java/com/fdkankan/tk/service/impl/RoomDanmakuServiceImpl.java

@@ -81,8 +81,8 @@ public class RoomDanmakuServiceImpl extends ServiceImpl<IRoomDanmakuMapper, Room
     }
 
     @Override
-    public Page<UserMsgVo> pageList(Page<Object> page, String roomId, String startTime, String endTime) {
-        return this.getBaseMapper().pageList(page,roomId,startTime,endTime);
+    public Page<UserMsgVo> pageList(Page<Object> page, List<String> roomIds, String startTime, String endTime) {
+        return this.getBaseMapper().pageList(page,roomIds,startTime,endTime);
     }
 
     @Override

+ 14 - 0
src/main/java/com/fdkankan/tk/service/impl/RoomServiceImpl.java

@@ -406,4 +406,18 @@ public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> implements I
         wrapper.like(Room::getRoomTitle,roomTitle);
         return this.list(wrapper);
     }
+
+    @Override
+    public List<Room> getRoomByToken(String token) {
+        String userName = null;
+        if(StringUtils.isNotBlank(token)){
+            userName = JwtUtil.getUserName(token);
+        }
+        LambdaQueryWrapper<Room> wrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(userName)){
+            wrapper.eq(Room::getRoomUserName,userName);
+        }
+        wrapper.orderByDesc(Room::getRoomViewCount);
+       return this.list(wrapper);
+    }
 }

+ 2 - 2
src/main/java/com/fdkankan/tk/service/impl/RoomVisitLogServiceImpl.java

@@ -72,8 +72,8 @@ public class RoomVisitLogServiceImpl extends ServiceImpl<IRoomVisitLogMapper, Ro
     }
 
     @Override
-    public Long getCountByTime(Integer key) {
-        return this.getBaseMapper().getCountByTime(key);
+    public Long getCountByTime(Integer key,List<String> roomIds) {
+        return this.getBaseMapper().getCountByTime(key,roomIds);
     }
 
     @Override

+ 5 - 2
src/main/resources/mapper/tk/RoomDanmakuMapper.xml

@@ -19,8 +19,11 @@
         LEFT JOIN t_room r  on rd.room_id = r.room_id
         LEFT JOIN t_wx_user wx  on rd.user_id = wx.wx_user_id
         where rd.tb_status = 0
-        <if test="roomId != null and roomId !=''">
-            and rd.room_id = #{roomId}
+        <if test="roomIds != null and roomIds.size >0">
+            and  room_id in
+            <foreach item="roomId" collection="roomIds" open="(" separator="," close=")">
+                #{roomId}
+            </foreach>
         </if>
         <if test="startTime != null and endTime !=null ">
             and  rd.write_time between #{startTime} and #{endTime}

+ 8 - 1
src/main/resources/mapper/tk/RoomVisitLogMapper.xml

@@ -13,7 +13,14 @@
     </select>
     <select id="getCountByTime" resultType="java.lang.Long">
         SELECT count(1) FROM t_room_visit_log
-        WHERE  DATE_FORMAT(in_room_time,'%k')  &gt;=  #{key}  and  DATE_FORMAT(out_room_time,'%k') &lt;= #{key}
+        WHERE  tb_status = 0
+        <if test="roomIds != null and roomIds.size >0">
+            and  room_id in
+            <foreach item="roomId" collection="roomIds" open="(" separator="," close=")">
+                #{roomId}
+            </foreach>
+        </if>
+        and  DATE_FORMAT(in_room_time,'%k')  &gt;=  #{key}  and  DATE_FORMAT(out_room_time,'%k') &lt;= #{key}
 
     </select>
     <select id="getByGroupRoomId" resultType="com.fdkankan.tk.response.DataCount">