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