Browse Source

弹幕添加大奖

cup 3 years ago
parent
commit
1d6c9fef39

+ 24 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketController.java

@@ -273,14 +273,37 @@ public class UserTicketController extends BaseApiController {
         }
       }
     }
-    // 获取除该用户外,最近中奖的 20 条弹幕信息
+    // 获取除该用户外,最近中奖的 40 条弹幕信息
     List<TicketHitPrizeBarrageVO> ticketHitPrizeBarrageVOList = userHitPrizeService.hitPrizeBarrage(userId);
 
+    // 获取除该用户外,近 6 个月,8 条高级中奖弹幕信息
+    List<TicketHitPrizeBarrageVO> expensiveHitPrizeBarrageList = userHitPrizeService.expensiveHitPrizeBarrage(userId);
+    int count = 0;
+    int index = 0;
+    if (CollectionUtils.isNotEmpty(expensiveHitPrizeBarrageList)) {
+      count = expensiveHitPrizeBarrageList.size();
+      // 去重
+      ticketHitPrizeBarrageVOList.removeAll(expensiveHitPrizeBarrageList);
+    }
+
+
     for (int i = 0; i < ticketHitPrizeBarrageVOList.size(); i++) {
       // 类型为盲豆则拼接数量
       if(TicketPrizeTypeEnum.COIN.getValue().equals(ticketHitPrizeBarrageVOList.get(i).getPrizeType())){
         ticketHitPrizeBarrageVOList.get(i).setPrizeInfo(ticketHitPrizeBarrageVOList.get(i).getPrizeInfo() + ticketHitPrizeBarrageVOList.get(i).getValue() + "颗");
       }
+
+      // 插入大奖弹幕
+      if (count != 0 && i % 5 == 0) {
+        if (index % 2 == 0) {
+          listOne.add(expensiveHitPrizeBarrageList.get(index));
+        }else {
+          listTwo.add(expensiveHitPrizeBarrageList.get(index));
+        }
+        count--;
+        index++;
+      }
+
       if (i % 2 == 0) {
         listOne.add(ticketHitPrizeBarrageVOList.get(i));
       }else {

+ 11 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/UserHitPrizeMapper.java

@@ -30,4 +30,15 @@ public interface UserHitPrizeMapper extends BaseMapper<UserHitPrize> {
      * @return
      */
     List<TicketHitPrizeBarrageVO> selectTicketHitPrizeBarrageByUserId(@Param("userId") Long userId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
+
+
+    /**
+     * 获取除当前用户外,6 个月内 5 条大奖弹幕
+     * @param userId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<TicketHitPrizeBarrageVO> selectTicketExpensiveHitPrizeBarrageNotByUserId(@Param("userId") Long userId,@Param("startTime") LocalDateTime startTime,@Param("endTime") LocalDateTime endTime);
+
 }

+ 7 - 0
mp-service/src/main/java/com/qs/mp/user/service/IUserHitPrizeService.java

@@ -46,4 +46,11 @@ public interface IUserHitPrizeService extends IService<UserHitPrize> {
    * @return
    */
   List<TicketHitPrizeBarrageVO> hitPrizeBarrageByUserId(Long userId);
+
+  /**
+   * 获取除当前用户外,6 个月内 5 条大奖弹幕
+   * @param userId  用户 id
+   * @return
+   */
+  List<TicketHitPrizeBarrageVO> expensiveHitPrizeBarrage(Long userId);
 }

+ 8 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserHitPrizeServiceImpl.java

@@ -172,4 +172,12 @@ public class UserHitPrizeServiceImpl extends ServiceImpl<UserHitPrizeMapper, Use
         return this.getBaseMapper().selectTicketHitPrizeBarrageByUserId(userId, startTime, endTime);
     }
 
+    @Override
+    public List<TicketHitPrizeBarrageVO> expensiveHitPrizeBarrage(Long userId) {
+        LocalDateTime endTime = LocalDateTime.now().withNano(0);
+        LocalDateTime startTime = endTime.minusMonths(6);
+        return this.getBaseMapper().selectTicketExpensiveHitPrizeBarrageNotByUserId(userId, startTime, endTime);
+    }
+
+
 }

+ 19 - 1
mp-service/src/main/resources/mapper/user/UserHitPrizeMapper.xml

@@ -35,7 +35,7 @@
         AND muhp.user_id != #{userId}
         AND ((mtap.prize_type = 'coin' AND mtap.value >= 100) OR mtap.prize_type='goods')
         ORDER BY muhp.created_time DESC
-        LIMIT 20
+        LIMIT 40
     </select>
 
     <select id="selectTicketHitPrizeBarrageByUserId" resultType="com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO">
@@ -54,4 +54,22 @@
         ORDER BY muhp.created_time DESC
         LIMIT 2
     </select>
+
+    <select id="selectTicketExpensiveHitPrizeBarrageNotByUserId"
+            resultType="com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO">
+        SELECT su.nick_name nickName,
+                su.avatar avatar,
+                mtap.title prizeInfo,
+                mtap.value value,
+                mtap.prize_type prizeType
+        FROM mp_user_hit_prize muhp
+                 LEFT JOIN mp_ticket_awards_prize mtap ON muhp.prize_id = mtap.prize_id
+                 LEFT JOIN sys_user su ON muhp.user_id = su.user_id
+        WHERE muhp.prize_id != ''
+          AND muhp.user_id != #{userId}
+          AND mtap.prize_type='goods'
+          AND muhp.created_time BETWEEN #{startTime} AND #{endTime}
+        ORDER BY mtap.`value` DESC
+        LIMIT 8
+    </select>
 </mapper>