lyhzzz 2 år sedan
förälder
incheckning
aad690d2ff

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

@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController
-public class DataCountController {
+public class DataCountController extends BaseController {
 
     @Autowired
     DataCountService dataCountService;
@@ -22,8 +22,7 @@ public class DataCountController {
      */
     @GetMapping("/roomData")
     public ResultData roomData(){
-
-        return ResultData.ok(dataCountService.roomData());
+        return ResultData.ok(dataCountService.roomData(getToken()));
     }
 
     /**
@@ -32,7 +31,7 @@ public class DataCountController {
     @GetMapping("/takeLookTop5")
     public ResultData takeLookTop5(){
 
-        return ResultData.ok(dataCountService.takeLookTop5());
+        return ResultData.ok(dataCountService.takeLookTop5(getToken()));
     }
 
     /**

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

@@ -21,7 +21,7 @@ import java.util.List;
 @Mapper
 public interface IRoomDanmakuMapper extends BaseMapper<RoomDanmaku> {
 
-    List<DataCount> getDataCountTop5();
+    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);
 

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

@@ -19,7 +19,7 @@ import java.util.List;
 @Mapper
 public interface IRoomVisitLogMapper extends BaseMapper<RoomVisitLog> {
 
-    Long manCount();
+    Long manCount(@Param("roomIds")List<String> roomIds);
 
     Long getCountByTime(@Param("key") Integer key);
 

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

@@ -4,8 +4,8 @@ import lombok.Data;
 
 @Data
 public class RoomData {
-    private Long roomCount;
-    private Long visitManCount;
-    private Long visitCount;
-    private Long shareCount;
+    private Long roomCount = 0L;
+    private Long visitManCount = 0L;
+    private Long visitCount = 0L;
+    private Long shareCount = 0L;
 }

+ 3 - 2
src/main/java/com/fdkankan/tk/response/TakeLookTop5.java

@@ -2,11 +2,12 @@ package com.fdkankan.tk.response;
 
 import lombok.Data;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Data
 public class TakeLookTop5 {
 
-    private List<DataCount> takeLookList;
-    private List<DataCount> danmakuList;
+    private List<DataCount> takeLookList = new ArrayList<>();
+    private List<DataCount> danmakuList = new  ArrayList<>();
 }

+ 51 - 12
src/main/java/com/fdkankan/tk/service/DataCountService.java

@@ -3,6 +3,7 @@ import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.tk.common.PageInfo;
+import com.fdkankan.tk.common.util.JwtUtil;
 import com.fdkankan.tk.entity.*;
 import com.fdkankan.tk.response.*;
 import com.fdkankan.tk.util.DataCountUtil;
@@ -38,11 +39,34 @@ public class DataCountService {
     IWxUserService wxUserService;
 
 
-    public Object roomData() {
-        Long roomCount = roomService.count();
-        Long visitManCount = roomVisitLogService.manCount();
-        Long visitCount = roomVisitLogService.count();
-        Long shareCount = roomShareLogService.count();
+    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){
+            return new RoomData();
+        }
+        List<String> roomIds = list.stream().map(Room::getRoomId).collect(Collectors.toList());
+
+        Long visitManCount = roomVisitLogService.manCount(roomIds);
+        LambdaQueryWrapper<RoomVisitLog> wrapper2 = new LambdaQueryWrapper<>();
+        if(roomIds.size() >0){
+            wrapper2.in(RoomVisitLog::getRoomId,roomIds);
+        }
+        Long visitCount = roomVisitLogService.count(wrapper2);
+
+        LambdaQueryWrapper<RoomShareLog> wrapper3 = new LambdaQueryWrapper<>();
+        if(roomIds.size() >0){
+            wrapper3.in(RoomShareLog::getRoomId,roomIds);
+        }
+        Long shareCount = roomShareLogService.count(wrapper3);
 
         RoomData roomData = new RoomData();
         roomData.setRoomCount(roomCount);
@@ -52,22 +76,37 @@ public class DataCountService {
         return roomData;
     }
 
-    public Object takeLookTop5() {
+    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);
-        Page<Room> page = roomService.page(new Page<>(1, 5), wrapper);
-        List<Room> roomList = page.getRecords();
+        if(StringUtils.isNotBlank(userName)){
+            wrapper.eq(Room::getRoomUserName,userName);
+
+        }
+        wrapper.orderByDesc(Room::getRoomViewCount);
+        List<Room> roomList = roomService.list( wrapper);
+        List<String> roomIds = roomList.stream().map(Room::getRoomId).collect(Collectors.toList());
+        if(roomIds.size() <=0){
+            return takeLookTop5;
+        }
         for (Room room : roomList) {
+            if(takeLookList.size() >= 5){
+                continue;
+            }
             DataCount dataCount = new DataCount();
             dataCount.setDataKey(room.getRoomTitle());
             dataCount.setDataCount(Long.valueOf(room.getRoomViewCount()));
             takeLookList.add(dataCount);
         }
 
-        List<DataCount> danmakuList = roomDanmakuService.getDataCountTop5();
+        List<DataCount> danmakuList = roomDanmakuService.getDataCountTop5(roomIds);
         takeLookTop5.setTakeLookList(takeLookList);
         takeLookTop5.setDanmakuList(danmakuList);
         return takeLookTop5;
@@ -250,10 +289,10 @@ public class DataCountService {
                 }
                 time += (roomVisitLog.getOutRoomTime().getTime() - roomVisitLog.getInRoomTime().getTime());
             }
-            List<RoomDanmaku> danmakus  = danmakusMap.get(record.getRoomId());
+            List<RoomDanmaku> danmakus  = danmakusMap.get(record.getRoomId()+record.getWxUserId());
             if(danmakus == null){
-                danmakus = roomDanmakuService.getByRoomId(record.getRoomId());
-                danmakusMap.put(record.getRoomId(),danmakus);
+                danmakus = roomDanmakuService.getByRoomId(record.getRoomId(),record.getWxUserId());
+                danmakusMap.put(record.getRoomId()+record.getWxUserId(),danmakus);
             }
             List<String> collect = danmakus.stream().map(RoomDanmaku::getText).collect(Collectors.toList());
             record.setOnlineTime(time/1000/60);

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

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

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

@@ -20,7 +20,7 @@ public interface IRoomVisitLogService extends IService<RoomVisitLog> {
 
     void stopRoom(Integer liveId);
 
-    Long manCount();
+    Long manCount(List<String> roomIds);
 
     Long getCountByTime(Integer key);
 

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

@@ -76,8 +76,8 @@ public class RoomDanmakuServiceImpl extends ServiceImpl<IRoomDanmakuMapper, Room
     }
 
     @Override
-    public List<DataCount> getDataCountTop5() {
-        return this.getBaseMapper().getDataCountTop5();
+    public List<DataCount> getDataCountTop5(List<String> roomIds) {
+        return this.getBaseMapper().getDataCountTop5(roomIds);
     }
 
     @Override
@@ -86,9 +86,10 @@ public class RoomDanmakuServiceImpl extends ServiceImpl<IRoomDanmakuMapper, Room
     }
 
     @Override
-    public List<RoomDanmaku> getByRoomId(String roomId) {
+    public List<RoomDanmaku> getByRoomId(String roomId,String wxUserId) {
         LambdaQueryWrapper<RoomDanmaku> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(RoomDanmaku::getRoomId,roomId);
+        wrapper.eq(RoomDanmaku::getUserId,wxUserId);
         return this.list(wrapper);
     }
 }

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

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

+ 7 - 1
src/main/resources/mapper/tk/RoomDanmakuMapper.xml

@@ -4,7 +4,13 @@
 
     <select id="getDataCountTop5" resultType="com.fdkankan.tk.response.DataCount">
         SELECT  nick_name as dataKey,count(1) as dataCount  FROM t_room_danmaku
-
+            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>
             GROUP BY nick_name  ORDER BY dataCount desc LIMIT 5
 
     </select>

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

@@ -3,7 +3,13 @@
 <mapper namespace="com.fdkankan.tk.mapper.IRoomVisitLogMapper">
 
     <select id="manCount" resultType="java.lang.Long">
-        SELECT  count(DISTINCT visit_user_id) FROM t_room_visit_log
+        SELECT  count(DISTINCT visit_user_id) FROM t_room_visit_log 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>
     </select>
     <select id="getCountByTime" resultType="java.lang.Long">
         SELECT count(1) FROM t_room_visit_log