Pu Zhibing
昨天 52df64e39ef939628b5defa61f4ab65df99db423
修改直播列表
7个文件已修改
120 ■■■■ 已修改文件
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLiveController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLiveController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppLiveController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/staff/StaffLiveController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/XiaoeLiveQueryDto.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/biz/XiaoeLiveService.java 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/XiaoeUtils.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLiveController.java
@@ -5,19 +5,14 @@
import com.ruoyi.goods.domain.dto.XiaoeLiveDto;
import com.ruoyi.goods.domain.dto.XiaoeLiveQueryDto;
import com.ruoyi.goods.domain.vo.XiaoeLiveDetailVOV2;
import com.ruoyi.goods.domain.vo.XiaoeLiveVo;
import com.ruoyi.goods.domain.vo.XiaoeLiveVoV2;
import com.ruoyi.goods.service.biz.XiaoeLiveService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@@ -36,12 +31,13 @@
    /**
     * 直播首页分页列表
     *
     * @param dto
     * @return
     */
    @ApiOperation("直播首页分页列表")
    @PostMapping("/page")
    public R<Page<XiaoeLiveVo>> page(@Valid @RequestBody XiaoeLiveQueryDto dto) {
    public R<Page<XiaoeLiveVoV2>> page(@Valid @RequestBody XiaoeLiveQueryDto dto) {
        return R.ok(xiaoeLiveService.getLivePage(dto));
    }
@@ -69,12 +65,13 @@
    /**
     * 我的直播
     *
     * @param dto
     * @return
     */
    @ApiOperation("我的直播")
    @PostMapping("/mine")
    public R<Page<XiaoeLiveVo>> minePage(@Valid @RequestBody XiaoeLiveQueryDto dto) {
    public R<Page<XiaoeLiveVoV2>> minePage(@Valid @RequestBody XiaoeLiveQueryDto dto) {
        return R.ok(xiaoeLiveService.getMineLivePage(dto));
    }
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLiveController.java
@@ -5,20 +5,13 @@
import com.ruoyi.goods.domain.dto.XiaoeLiveDto;
import com.ruoyi.goods.domain.dto.XiaoeLiveQueryDto;
import com.ruoyi.goods.domain.vo.XiaoeLiveDetailVOV2;
import com.ruoyi.goods.domain.vo.XiaoeLiveVo;
import com.ruoyi.goods.domain.vo.XiaoeLiveVoV2;
import com.ruoyi.goods.service.biz.XiaoeLiveService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -35,16 +28,19 @@
    /**
     * 直播分页列表
     *
     * @param dto
     * @return
     */
    @ApiOperation("直播分页列表")
    @PostMapping("/page")
    public R<Page<XiaoeLiveVo>> page(@Valid @RequestBody XiaoeLiveQueryDto dto) {
    public R<Page<XiaoeLiveVoV2>> page(@Valid @RequestBody XiaoeLiveQueryDto dto) {
        return R.ok(xiaoeLiveService.getMgtLivePage(dto));
    }
    /**
     * 直播详情
     *
     * @param id
     * @return
     */
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppLiveController.java
@@ -3,19 +3,14 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.goods.domain.dto.XiaoeLiveQueryDto;
import com.ruoyi.goods.domain.vo.XiaoeLiveVo;
import com.ruoyi.goods.domain.vo.XiaoeLiveVoV2;
import com.ruoyi.goods.service.biz.XiaoeLiveService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -30,14 +25,16 @@
@RequestMapping("/app/live")
public class AppLiveController {
    private final XiaoeLiveService xiaoeLiveService;
    /**
     * 直播首页分页列表
     *
     * @param dto
     * @return
     */
    @ApiOperation("直播首页分页列表")
    @PostMapping("/page")
    public R<Page<XiaoeLiveVo>> page(@Valid @RequestBody XiaoeLiveQueryDto dto) {
    public R<Page<XiaoeLiveVoV2>> page(@Valid @RequestBody XiaoeLiveQueryDto dto) {
        return R.ok(xiaoeLiveService.getLivePage(dto));
    }
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/staff/StaffLiveController.java
@@ -3,7 +3,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.goods.domain.dto.XiaoeLiveQueryDto;
import com.ruoyi.goods.domain.vo.XiaoeLiveVo;
import com.ruoyi.goods.domain.vo.XiaoeLiveVoV2;
import com.ruoyi.goods.service.biz.XiaoeLiveService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -28,12 +28,13 @@
    /**
     * 员工端直播列表
     *
     * @param dto
     * @return
     */
    @ApiOperation("直播列表")
    @PostMapping("/page")
    public R<Page<XiaoeLiveVo>> minePage(@Valid @RequestBody XiaoeLiveQueryDto dto) {
    public R<Page<XiaoeLiveVoV2>> minePage(@Valid @RequestBody XiaoeLiveQueryDto dto) {
        return R.ok(xiaoeLiveService.getStaffLivePage(dto));
    }
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/XiaoeLiveQueryDto.java
@@ -1,8 +1,11 @@
package com.ruoyi.goods.domain.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author mitao
@@ -38,4 +41,8 @@
    @ApiModelProperty("直播类型 1:平台直播 2:商家直播")
    private Integer liveType;
    @ApiModelProperty("课程分组id数组")
    @JSONField(name = "tags")
    private List<String> tags;
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/biz/XiaoeLiveService.java
@@ -16,6 +16,7 @@
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.domain.vo.XiaoeLiveVoV2;
import com.ruoyi.goods.service.live.IXiaoeLiveAppointmentService;
import com.ruoyi.goods.service.live.IXiaoeLiveRecordService;
import com.ruoyi.goods.utils.XiaoeUtils;
@@ -29,13 +30,7 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Arrays;
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.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -56,13 +51,15 @@
    /**
     * 直播首页分页列表
     *
     * @param dto
     * @return
     */
    public Page<XiaoeLiveVo> getLivePage(XiaoeLiveQueryDto dto) {
    public Page<XiaoeLiveVoV2> getLivePage(XiaoeLiveQueryDto dto) {
        //当前登录用户id
        Long userId = SecurityUtils.getUserId();
        Page<XiaoeLiveVo> livePageList = xiaoeUtils.getLivePageList(dto);
        dto.setTags(Arrays.asList("20275808", "20275805", "20275707", "20249173", "2406002"));
        Page<XiaoeLiveVoV2> livePageList = xiaoeUtils.getLivePageListV2(dto);
        if (CollectionUtil.isEmpty(livePageList.getRecords())) {
            return new Page<>();
        }
@@ -71,7 +68,7 @@
                .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()
        List<XiaoeLiveVoV2> filteredRecords = livePageList.getRecords().stream()
                .filter(item -> !item.getAliveState().equals(2)) // 过滤直播状态为已结束的记录
                .peek(item -> {
                    // 查找对应的预约记录
@@ -82,7 +79,7 @@
                        item.setAppointmentState(1); // 设置为已预约
                    }
                })
                .sorted(Comparator.comparing(XiaoeLiveVo::getAliveState).reversed()) // 按照直播状态排序
                .sorted(Comparator.comparing(XiaoeLiveVoV2::getAliveState).reversed()) // 按照直播状态排序
                .collect(Collectors.toList());
        //根据直播类型过滤平台和店铺直播
        if (Objects.nonNull(dto.getLiveType())) {
@@ -167,12 +164,13 @@
    /**
     * 我的直播
     *
     * @param dto
     * @return
     */
    public Page<XiaoeLiveVo> getMineLivePage(XiaoeLiveQueryDto dto) {
    public Page<XiaoeLiveVoV2> getMineLivePage(XiaoeLiveQueryDto dto) {
        Long userId = SecurityUtils.getUserId();
        Page<XiaoeLiveVo> page = new Page<>();
        Page<XiaoeLiveVoV2> page = new Page<>();
        ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(userId).getData();
        if (Objects.isNull(shopRelUserVo)) {
            return page;
@@ -181,17 +179,19 @@
        if (CollectionUtil.isEmpty(xiaoeLiveRecordList)) {
            return page;
        }
        Page<XiaoeLiveVo> livePageList = xiaoeUtils.getLivePageList(dto);
        dto.setTags(Arrays.asList("20275808", "20275805", "20275707", "20249173", "2406002"));
        Page<XiaoeLiveVoV2> livePageList = xiaoeUtils.getLivePageListV2(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()
        List<XiaoeLiveVoV2> filteredRecords = livePageList.getRecords().stream()
                .filter(item -> liveIdSet.contains(item.getId()) && !item.getAliveState().equals(2))
                // 按照直播状态排序
                .sorted(Comparator.comparing(XiaoeLiveVo::getAliveState).reversed()).collect(Collectors.toList());
                .sorted(Comparator.comparing(XiaoeLiveVoV2::getAliveState).reversed()).collect(Collectors.toList());
        livePageList.setRecords(filteredRecords);
        return livePageList;
    }
@@ -271,11 +271,13 @@
    /**
     * 管理后台直播分页列表
     *
     * @param dto
     * @return
     */
    public Page<XiaoeLiveVo> getMgtLivePage(XiaoeLiveQueryDto dto) {
        Page<XiaoeLiveVo> livePageList = xiaoeUtils.getLivePageList(dto);
    public Page<XiaoeLiveVoV2> getMgtLivePage(XiaoeLiveQueryDto dto) {
        dto.setTags(Arrays.asList("20275808", "20275805", "20275707", "20249173", "2406002"));
        Page<XiaoeLiveVoV2> livePageList = xiaoeUtils.getLivePageListV2(dto);
        Long shopId = dto.getShopId();
        if (Objects.nonNull(shopId)) {
            List<XiaoeLiveRecord> xiaoeLiveRecords = xiaoeLiveRecordService.getListByShopId(shopId);
@@ -283,7 +285,7 @@
                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());
            List<XiaoeLiveVoV2> 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();
@@ -311,23 +313,25 @@
    /**
     * 员工端直播列表
     *
     * @param dto
     * @return
     */
    public Page<XiaoeLiveVo> getStaffLivePage(XiaoeLiveQueryDto dto) {
        Page<XiaoeLiveVo> page = new Page<>();
    public Page<XiaoeLiveVoV2> getStaffLivePage(XiaoeLiveQueryDto dto) {
        Page<XiaoeLiveVoV2> page = new Page<>();
        List<XiaoeLiveRecord> xiaoeLiveRecordList = xiaoeLiveRecordService.getMgtRecord();
        if (CollectionUtil.isEmpty(xiaoeLiveRecordList)) {
            return page;
        }
        Page<XiaoeLiveVo> livePageList = xiaoeUtils.getLivePageList(dto);
        dto.setTags(Arrays.asList("20275808", "20275805", "20275707", "20249173", "2406002"));
        Page<XiaoeLiveVoV2> livePageList = xiaoeUtils.getLivePageListV2(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());
        List<XiaoeLiveVoV2> filteredRecords = livePageList.getRecords().stream().filter(item -> liveIdSet.contains(item.getId()) && !item.getAliveState().equals(2)).collect(Collectors.toList());
        livePageList.setRecords(filteredRecords);
        return livePageList;
    }
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/XiaoeUtils.java
@@ -13,12 +13,7 @@
import com.ruoyi.goods.domain.dto.XiaoeCourseQueryDto;
import com.ruoyi.goods.domain.dto.XiaoeLiveDto;
import com.ruoyi.goods.domain.dto.XiaoeLiveQueryDto;
import com.ruoyi.goods.domain.vo.XiaoeCourseChapterVO;
import com.ruoyi.goods.domain.vo.XiaoeCourseGroupVO;
import com.ruoyi.goods.domain.vo.XiaoeCourseVO;
import com.ruoyi.goods.domain.vo.XiaoeLiveDetailVOV2;
import com.ruoyi.goods.domain.vo.XiaoeLiveVo;
import com.ruoyi.goods.domain.vo.XiaoeLiveVoV2;
import com.ruoyi.goods.domain.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -28,11 +23,7 @@
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
@@ -187,6 +178,7 @@
        postParams.put("page_size", dto.getPageSize());
        postParams.put("access_token", getAccessToken());
        postParams.put("zb_start_at_min", DateUtil.format(DateUtils.getTodayStartTime(), DatePattern.NORM_DATETIME_PATTERN));
        postParams.put("tag_ids", dto.getTags());
        String post = HttpUtil.post(LIVE_PAGE_LIST_V2, JSONObject.toJSONString(postParams));
        Page<XiaoeLiveVoV2> xiaoeLiveVOPage = new Page<>();
        if (StringUtils.isNotBlank(post)) {