From 47b901938213f609fc378d1e7666a516ff7c7ccf Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 26 九月 2025 14:35:36 +0800
Subject: [PATCH] 开发部分接口鉴权

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/biz/XiaoeLiveService.java |  123 ++++++++++++++++++++++++++++------------
 1 files changed, 85 insertions(+), 38 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/biz/XiaoeLiveService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/biz/XiaoeLiveService.java
index 43fe15b..708299f 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/biz/XiaoeLiveService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/biz/XiaoeLiveService.java
@@ -14,6 +14,7 @@
 import com.ruoyi.goods.domain.dto.XiaoeLiveQueryDto;
 import com.ruoyi.goods.domain.pojo.live.XiaoeLiveAppointment;
 import com.ruoyi.goods.domain.pojo.live.XiaoeLiveRecord;
+import com.ruoyi.goods.domain.vo.XiaoeLiveDetailVOV2;
 import com.ruoyi.goods.domain.vo.XiaoeLiveVo;
 import com.ruoyi.goods.service.live.IXiaoeLiveAppointmentService;
 import com.ruoyi.goods.service.live.IXiaoeLiveRecordService;
@@ -32,6 +33,7 @@
 import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
@@ -67,17 +69,31 @@
         //已预约的记录
         List<XiaoeLiveAppointment> appointments = xiaoeLiveAppointmentService.lambdaQuery()
                 .gt(XiaoeLiveAppointment::getAliveStartAt, DateUtils.getNowDate()).eq(XiaoeLiveAppointment::getUserId, userId).list();
-        //处理获取到的直播数据
+        Map<String, XiaoeLiveAppointment> appointmentMap = appointments.stream().collect(Collectors.toMap(XiaoeLiveAppointment::getLiveId, appointment -> appointment));
+        // 处理直播数据
         List<XiaoeLiveVo> filteredRecords = livePageList.getRecords().stream()
-                .filter(item -> !item.getAliveState().equals(2))
-                .flatMap(item -> appointments.stream().map(appointment -> {
-                    //直播状态为未开始 且 预约记录存在 设置状态为已预约
-                    if (item.getAliveState().equals(0) && appointment.getLiveId().equals(item.getId())) {
-                        item.setAppointmentState(1);
+                .filter(item -> !item.getAliveState().equals(2)) // 过滤直播状态为已结束的记录
+                .peek(item -> {
+                    // 查找对应的预约记录
+                    XiaoeLiveAppointment appointment = appointmentMap.get(item.getId());
+
+                    // 如果预约记录存在且直播状态为未开始,则设置状态为已预约
+                    if (item.getAliveState().equals(0) && appointment != null) {
+                        item.setAppointmentState(1); // 设置为已预约
                     }
-                    return item;
-                })).sorted(Comparator.comparing(XiaoeLiveVo::getAliveState).reversed())
+                })
+                .sorted(Comparator.comparing(XiaoeLiveVo::getAliveState).reversed()) // 按照直播状态排序
                 .collect(Collectors.toList());
+        //根据直播类型过滤平台和店铺直播
+        if (Objects.nonNull(dto.getLiveType())) {
+            List<XiaoeLiveRecord> liveRecordList = xiaoeLiveRecordService.lambdaQuery().eq(XiaoeLiveRecord::getType, dto.getLiveType()).list();
+            if (CollUtil.isEmpty(liveRecordList)) {
+                return new Page<>();
+            }
+            List<String> liveIdList = liveRecordList.stream().map(XiaoeLiveRecord::getLiveId).collect(Collectors.toList());
+            filteredRecords = filteredRecords.stream().filter(item -> liveIdList.contains(item.getId())).collect(Collectors.toList());
+        }
+
         livePageList.setRecords(filteredRecords);
         return livePageList;
     }
@@ -87,8 +103,8 @@
      * @param id
      * @return
      */
-    public XiaoeLiveVo getLiveDetail(String id) {
-        return xiaoeUtils.getLiveDetail(id);
+    public XiaoeLiveDetailVOV2 getLiveDetail(String id) {
+        return xiaoeUtils.getLiveDetailV2(id);
     }
     /**
      * 预约直播
@@ -114,11 +130,10 @@
         Date aliveStartAt = DateUtil.parse(liveDetail.getAliveStartAt(), DatePattern.NORM_DATETIME_PATTERN);
         xiaoeLiveAppointment.setAliveStartAt(aliveStartAt);
         xiaoeLiveAppointment.setCreateTime(DateUtils.getNowDate());
+        xiaoeLiveAppointment.setTitle(liveDetail.getTitle());
         xiaoeLiveAppointmentService.save(xiaoeLiveAppointment);
         /// 若为C端用户向 redis 添加预约记录
         if (sysUser.getUserType().equals("03")) {
-            // 如果活动在1小时内生成自动开始任务的延时任务
-            Date checkTime = DateUtils.addMinutes(new Date(), 61);
             // 获取当前时间
             Date nowTime = new Date();
 
@@ -126,28 +141,25 @@
             long startTimeDifference = aliveStartAt.getTime() - nowTime.getTime();
             startTimeDifference = Math.max(startTimeDifference, 3000L); // 确保差值至少为3秒
 
-            // 根据条件判断是否创建延时任务
-            if (checkTime.compareTo(aliveStartAt) > 0 || nowTime.compareTo(aliveStartAt) > 0) {
-                // 获取延时任务
-                DelayTask startDelayTask = remoteConfigService.getDelayTask(DelayTaskEnum.LIVE_APPOINTMENT_TASK.getCode() + "-" + xiaoeLiveAppointment.getId()).getData();
-                // 创建或者更新延时任务
-                if (startDelayTask == null || !startDelayTask.getEndTime().equals(aliveStartAt)) {
-                    // 删除旧的延时任务及缓存
-                    if (startDelayTask != null) {
-                        remoteConfigService.deleteDelayTask(DelayTaskEnum.LIVE_APPOINTMENT_TASK.getCode() + "-" + xiaoeLiveAppointment.getId());
-                        redisService.deleteObject(DelayTaskEnum.LIVE_APPOINTMENT_TASK.getCode() + "-" + xiaoeLiveAppointment.getId());
-                    }
-                    // 设置新的延时任务
-                    redisService.setCacheObject(DelayTaskEnum.LIVE_APPOINTMENT_TASK.getCode() + "-" + xiaoeLiveAppointment.getId(), aliveStartAt, startTimeDifference, TimeUnit.MILLISECONDS);
-                    startDelayTask = new DelayTask();
-                    startDelayTask.setDelFlag(0);
-                    startDelayTask.setCreateTime(new Date());
-                    startDelayTask.setEndTime(aliveStartAt);
-                    startDelayTask.setRedisKey(DelayTaskEnum.LIVE_APPOINTMENT_TASK.getCode() + "-" + xiaoeLiveAppointment.getId());
-
-                    // 添加新的延时任务
-                    remoteConfigService.addDelayTask(startDelayTask);
+            // 获取延时任务
+            DelayTask startDelayTask = remoteConfigService.getDelayTask(DelayTaskEnum.LIVE_APPOINTMENT_TASK.getCode() + "-" + xiaoeLiveAppointment.getId()).getData();
+            // 创建或者更新延时任务
+            if (startDelayTask == null || !startDelayTask.getEndTime().equals(aliveStartAt)) {
+                // 删除旧的延时任务及缓存
+                if (startDelayTask != null) {
+                    remoteConfigService.deleteDelayTask(DelayTaskEnum.LIVE_APPOINTMENT_TASK.getCode() + "-" + xiaoeLiveAppointment.getId());
+                    redisService.deleteObject(DelayTaskEnum.LIVE_APPOINTMENT_TASK.getCode() + "-" + xiaoeLiveAppointment.getId());
                 }
+                // 设置新的延时任务
+                redisService.setCacheObject(DelayTaskEnum.LIVE_APPOINTMENT_TASK.getCode() + "-" + xiaoeLiveAppointment.getId(), aliveStartAt, startTimeDifference, TimeUnit.MILLISECONDS);
+                startDelayTask = new DelayTask();
+                startDelayTask.setDelFlag(0);
+                startDelayTask.setCreateTime(new Date());
+                startDelayTask.setEndTime(aliveStartAt);
+                startDelayTask.setRedisKey(DelayTaskEnum.LIVE_APPOINTMENT_TASK.getCode() + "-" + xiaoeLiveAppointment.getId());
+
+                // 添加新的延时任务
+                remoteConfigService.addDelayTask(startDelayTask);
             }
         }
         return true;
@@ -176,7 +188,10 @@
         //当前商家创建的直播
         Set<String> liveIdSet = xiaoeLiveRecordList.stream().map(XiaoeLiveRecord::getLiveId).collect(Collectors.toSet());
         //过滤数据
-        List<XiaoeLiveVo> filteredRecords = livePageList.getRecords().stream().filter(item -> liveIdSet.contains(item.getId()) && !item.getAliveState().equals(2)).collect(Collectors.toList());
+        List<XiaoeLiveVo> filteredRecords = livePageList.getRecords().stream()
+                .filter(item -> liveIdSet.contains(item.getId()) && !item.getAliveState().equals(2))
+                // 按照直播状态排序
+                .sorted(Comparator.comparing(XiaoeLiveVo::getAliveState).reversed()).collect(Collectors.toList());
         livePageList.setRecords(filteredRecords);
         return livePageList;
     }
@@ -264,12 +279,21 @@
         Long shopId = dto.getShopId();
         if (Objects.nonNull(shopId)) {
             List<XiaoeLiveRecord> xiaoeLiveRecords = xiaoeLiveRecordService.getListByShopId(shopId);
-            if (CollUtil.isNotEmpty(xiaoeLiveRecords)) {
-                List<String> liveIdList = xiaoeLiveRecords.stream().map(XiaoeLiveRecord::getLiveId).collect(Collectors.toList());
-                List<XiaoeLiveVo> filteredList = livePageList.getRecords().stream().filter(item -> liveIdList.contains(item.getId())).collect(Collectors.toList());
-                livePageList.setRecords(filteredList);
+            if (CollUtil.isEmpty(xiaoeLiveRecords)) {
+                return new Page<>();
             }
+            List<String> liveIdList = xiaoeLiveRecords.stream().map(XiaoeLiveRecord::getLiveId).collect(Collectors.toList());
+            List<XiaoeLiveVo> filteredList = livePageList.getRecords().stream().filter(item -> liveIdList.contains(item.getId())).collect(Collectors.toList());
+            livePageList.setRecords(filteredList);
         }
+        List<XiaoeLiveRecord> shopRecordList = xiaoeLiveRecordService.lambdaQuery().eq(XiaoeLiveRecord::getType, 2).list();
+        Map<String, String> shopNameMap = shopRecordList.stream().collect(Collectors.toMap(XiaoeLiveRecord::getLiveId, XiaoeLiveRecord::getShopName));
+        livePageList.setRecords(livePageList.getRecords().stream().peek(item -> {
+            String name = shopNameMap.get(item.getId());
+            if (StringUtils.isNotBlank(name)) {
+                item.setShopName(name);
+            }
+        }).collect(Collectors.toList()));
         return livePageList;
     }
 
@@ -284,4 +308,27 @@
             xiaoeLiveRecordService.lambdaUpdate().eq(XiaoeLiveRecord::getLiveId, id).remove();
         }
     }
+
+    /**
+     * 员工端直播列表
+     * @param dto
+     * @return
+     */
+    public Page<XiaoeLiveVo> getStaffLivePage(XiaoeLiveQueryDto dto) {
+        Page<XiaoeLiveVo> page = new Page<>();
+        List<XiaoeLiveRecord> xiaoeLiveRecordList = xiaoeLiveRecordService.getMgtRecord();
+        if (CollectionUtil.isEmpty(xiaoeLiveRecordList)) {
+            return page;
+        }
+        Page<XiaoeLiveVo> livePageList = xiaoeUtils.getLivePageList(dto);
+        if (CollectionUtil.isEmpty(livePageList.getRecords())) {
+            return page;
+        }
+        //筛选平台创建的直播
+        Set<String> liveIdSet = xiaoeLiveRecordList.stream().map(XiaoeLiveRecord::getLiveId).collect(Collectors.toSet());
+        //过滤数据
+        List<XiaoeLiveVo> filteredRecords = livePageList.getRecords().stream().filter(item -> liveIdSet.contains(item.getId()) && !item.getAliveState().equals(2)).collect(Collectors.toList());
+        livePageList.setRecords(filteredRecords);
+        return livePageList;
+    }
 }

--
Gitblit v1.7.1