yangyale hace 1 año
padre
commit
19958fab1b

+ 4 - 0
src/main/java/com/hy/modules/bz/mapper/BzGiftRecordMapper.java

@@ -1,11 +1,13 @@
 package com.hy.modules.bz.mapper;
 
+import com.hy.modules.bz.webapi.dto.RankingDto;
 import org.apache.ibatis.annotations.Mapper;
 import java.util.List;
 import java.util.Map;
 
 import com.hy.modules.bz.domain.BzGiftRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 直播间礼物列表展示Mapper接口
@@ -26,4 +28,6 @@ public interface BzGiftRecordMapper extends BaseMapper<BzGiftRecord> {
     int countPayingUsers(BzGiftRecord bzGiftRecord);
 
     Map<String,Object> statisticsPayingUsers(BzGiftRecord bzGiftRecord);
+
+    List<RankingDto> selectRankingList(@Param("roomId") String roomId,@Param("start") int start,@Param("limit") int limit);
 }

+ 23 - 0
src/main/java/com/hy/modules/bz/mapper/xml/BzGiftRecordMapper.xml

@@ -26,6 +26,29 @@
         <result property="remark" column="remark"/>
     </resultMap>
 
+    <resultMap id="RankingDto" type="com.hy.modules.bz.webapi.dto.RankingDto">
+        <result property="userId" column="user_id"/>
+        <result property="userNickName" column="user_nick_name"/>
+        <result property="totalGiftValue" column="total_gift_value"/>
+        <result property="rank" column="rank"/>
+    </resultMap>
+
+    <select id="selectRankingList" resultMap="RankingDto">
+        SELECT
+            user_id,
+            user_id AS user_nick_name,
+            SUM( gift_value ) AS total_gift_value
+        FROM
+            bz_gift_record
+        WHERE
+            room_id = #{roomId}
+          AND `status` = 'finished'
+        GROUP BY
+            user_id
+        ORDER BY
+            total_gift_value DESC LIMIT #{start},#{limit}
+    </select>
+
     <select id="selectBzGiftRecordList" parameterType="BzGiftRecord" resultMap="BzGiftRecordResult">
         select `id`,`platform`,`game`,`gift_info`,`gift_count`,`gift_value`,`status`,`mode`,`user_nick_name`,`user_id`,`anchor_code`,`anchor_id`,`anchor_nick_name`,`studio_id`,`room_id`,`publish_time`,`create_time`,`update_time`,`create_by`,`update_by`,`remark` from `bz_gift_record`
         <where>

+ 11 - 0
src/main/java/com/hy/modules/bz/service/IBzGiftRecordService.java

@@ -4,7 +4,9 @@ import com.github.pagehelper.PageInfo;
 import com.hy.common.web.domain.request.PageDomain;
 import com.hy.modules.bz.domain.BzGiftRecord;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.hy.modules.bz.webapi.dto.RankingDto;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -29,4 +31,13 @@ public interface IBzGiftRecordService extends IService<BzGiftRecord> {
      * @return
      */
     Map<String,Object> statistics(BzGiftRecord bzGiftRecord);
+
+    /**
+     * 获取排行榜
+     * @param roomId
+     * @param start
+     * @param limit
+     * @return
+     */
+    List<RankingDto> rankingList(String roomId, int start, int limit);
 }

+ 7 - 0
src/main/java/com/hy/modules/bz/service/impl/BzGiftRecordServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.hy.common.web.domain.request.PageDomain;
+import com.hy.modules.bz.webapi.dto.RankingDto;
 import org.springframework.stereotype.Service;
 import com.hy.modules.bz.mapper.BzGiftRecordMapper;
 import com.hy.modules.bz.domain.BzGiftRecord;
@@ -50,4 +51,10 @@ public class BzGiftRecordServiceImpl extends ServiceImpl<BzGiftRecordMapper,BzGi
         return result;
     }
 
+    @Override
+    public List<RankingDto> rankingList(String roomId, int start, int limit) {
+        return baseMapper.selectRankingList(roomId,start,limit);
+    }
+
+
 }

+ 19 - 1
src/main/java/com/hy/modules/bz/webapi/service/impl/WebApiServiceImpl.java

@@ -5,6 +5,7 @@ import com.hy.common.tools.EncodeUtils;
 import com.hy.modules.bz.domain.BzAnchorStudio;
 import com.hy.modules.bz.domain.BzPlayer;
 import com.hy.modules.bz.service.IBzAnchorStudioService;
+import com.hy.modules.bz.service.IBzGiftRecordService;
 import com.hy.modules.bz.service.IBzPlayerService;
 import com.hy.modules.bz.utils.TokenStatusManager;
 import com.hy.modules.bz.webapi.ErrorCode;
@@ -35,6 +36,9 @@ public class WebApiServiceImpl implements WebApiService {
     @Resource
     private IBzAnchorStudioService anchorStudioService;
 
+    @Resource
+    private IBzGiftRecordService giftRecordService;
+
     @Resource
     private StringRedisTemplate stringRedisTemplate;
 
@@ -98,6 +102,20 @@ public class WebApiServiceImpl implements WebApiService {
 
     @Override
     public List<RankingDto> rankingList(RankingFetchDto fetchDto) {
-        return Collections.emptyList();
+
+        if(fetchDto.getEndRank() - fetchDto.getStartRank() > 500){
+            fetchDto.setEndRank(fetchDto.getStartRank() + 500);
+        }
+        List<RankingDto> rankingDtos = giftRecordService.rankingList(fetchDto.getRoomId(),fetchDto.getStartRank(),fetchDto.getEndRank() == 0 ? 20 : fetchDto.getEndRank() - fetchDto.getStartRank() );
+
+        if(rankingDtos.isEmpty()){
+            return Collections.emptyList();
+        }
+
+        for (int i = 0; i < rankingDtos.size(); i++) {
+            rankingDtos.get(i).setRank(i + 1);
+        }
+
+        return rankingDtos;
     }
 }