From 508c33e2a1652aba452464476957778b3d244597 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 15 一月 2025 22:58:21 +0800
Subject: [PATCH] bug修改

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/live/XiaoeLiveRecordServiceImpl.java |    9 +++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/staff/StaffLiveController.java         |   39 +++++++++++++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/XiaoeCourseVO.java                      |    8 ++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/XiaoeLiveDto.java                      |    2 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/biz/XiaoeLiveService.java                 |   59 ++++++++++++++++---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/live/IXiaoeLiveRecordService.java         |    2 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/WeChatSubscribeMessageSender.java           |   21 ++++--
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLiveController.java      |    4 
 8 files changed, 123 insertions(+), 21 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLiveController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLiveController.java
index 17bc223..07530dd 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLiveController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLiveController.java
@@ -5,7 +5,7 @@
 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.XiaoeLiveVoV2;
+import com.ruoyi.goods.domain.vo.XiaoeLiveVo;
 import com.ruoyi.goods.service.biz.XiaoeLiveService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -40,7 +40,7 @@
      */
     @ApiOperation("直播分页列表")
     @PostMapping("/page")
-    public R<Page<XiaoeLiveVoV2>> page(@Valid @RequestBody XiaoeLiveQueryDto dto) {
+    public R<Page<XiaoeLiveVo>> page(@Valid @RequestBody XiaoeLiveQueryDto dto) {
         return R.ok(xiaoeLiveService.getMgtLivePage(dto));
     }
     /**
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/staff/StaffLiveController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/staff/StaffLiveController.java
new file mode 100644
index 0000000..ad947c4
--- /dev/null
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/staff/StaffLiveController.java
@@ -0,0 +1,39 @@
+package com.ruoyi.goods.controller.staff;
+
+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.service.biz.XiaoeLiveService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+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 javax.validation.Valid;
+
+/**
+ * @author mitao
+ * @date 2025/1/15
+ */
+@Api(tags = {"员工端直播相关接口"})
+@RestController
+@RequestMapping("/staff/live")
+@RequiredArgsConstructor
+public class StaffLiveController {
+    private final XiaoeLiveService xiaoeLiveService;
+
+    /**
+     * 员工端直播列表
+     * @param dto
+     * @return
+     */
+    @ApiOperation("直播列表")
+    @PostMapping("/page")
+    public R<Page<XiaoeLiveVo>> minePage(@Valid @RequestBody XiaoeLiveQueryDto dto) {
+        return R.ok(xiaoeLiveService.getStaffLivePage(dto));
+    }
+}
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/XiaoeLiveDto.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/XiaoeLiveDto.java
index 70b255d..adf0891 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/XiaoeLiveDto.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/XiaoeLiveDto.java
@@ -53,7 +53,7 @@
     private String userId;
 
     @ApiModelProperty(value = "支付类型:1-免费,3-加密,仅当goods_info.sale_type=2时才可用", example = "1")
-    @NotNull(message = "支付类型不能为空")
+    @NotNull(message = "直播类型不能为空")
     @JSONField(name = "payment_type")
     private Integer paymentType;
 
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/XiaoeCourseVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/XiaoeCourseVO.java
index fd6f8ba..cdb4edd 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/XiaoeCourseVO.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/XiaoeCourseVO.java
@@ -18,6 +18,10 @@
     @JSONField(name = "resource_id")
     private String resourceId;
 
+    @ApiModelProperty("课程id")
+    @JSONField(name = "resource_type")
+    private Integer resourceType;
+
     @ApiModelProperty("课程名称")
     @JSONField(name = "title")
     private String title;
@@ -38,6 +42,10 @@
     @JSONField(name = "curriculum_time")
     private Date curriculumTime;
 
+    @ApiModelProperty("更新时间")
+    @JSONField(name = "last_updated_at")
+    private Date lastUpdatedAt;
+
     @ApiModelProperty("开课结束时间")
     @JSONField(name = "curriculum_end_time")
     private Date curriculumEndTime;
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 bb1426b..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
@@ -16,7 +16,6 @@
 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;
@@ -88,11 +87,13 @@
         //根据直播类型过滤平台和店铺直播
         if (Objects.nonNull(dto.getLiveType())) {
             List<XiaoeLiveRecord> liveRecordList = xiaoeLiveRecordService.lambdaQuery().eq(XiaoeLiveRecord::getType, dto.getLiveType()).list();
-            if (CollUtil.isNotEmpty(liveRecordList)) {
-                List<String> liveIdList = liveRecordList.stream().map(XiaoeLiveRecord::getLiveId).collect(Collectors.toList());
-                filteredRecords = filteredRecords.stream().filter(item -> liveIdList.contains(item.getId())).collect(Collectors.toList());
+            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;
     }
@@ -129,6 +130,7 @@
         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")) {
@@ -186,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;
     }
@@ -269,17 +274,26 @@
      * @param dto
      * @return
      */
-    public Page<XiaoeLiveVoV2> getMgtLivePage(XiaoeLiveQueryDto dto) {
-        Page<XiaoeLiveVoV2> livePageList = xiaoeUtils.getLivePageListV2(dto);
+    public Page<XiaoeLiveVo> getMgtLivePage(XiaoeLiveQueryDto dto) {
+        Page<XiaoeLiveVo> livePageList = xiaoeUtils.getLivePageList(dto);
         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<XiaoeLiveVoV2> 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;
     }
 
@@ -294,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;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/live/XiaoeLiveRecordServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/live/XiaoeLiveRecordServiceImpl.java
index 8f4454d..cfa6fd9 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/live/XiaoeLiveRecordServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/live/XiaoeLiveRecordServiceImpl.java
@@ -58,4 +58,13 @@
         xiaoeLiveRecord.setCreateTime(DateUtils.getNowDate());
         save(xiaoeLiveRecord);
     }
+
+    /**
+     * 平台直播哦添加记录
+     * @return
+     */
+    @Override
+    public List<XiaoeLiveRecord> getMgtRecord() {
+        return lambdaQuery().eq(XiaoeLiveRecord::getType, 1).list();
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/live/IXiaoeLiveRecordService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/live/IXiaoeLiveRecordService.java
index 32e5c0f..44b79ac 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/live/IXiaoeLiveRecordService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/live/IXiaoeLiveRecordService.java
@@ -36,4 +36,6 @@
      * @param liveId
      */
     void add(Long shopId, Integer type, String shopName, String liveId);
+
+    List<XiaoeLiveRecord> getMgtRecord();
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/WeChatSubscribeMessageSender.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/WeChatSubscribeMessageSender.java
index d1d858b..66986e1 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/WeChatSubscribeMessageSender.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/WeChatSubscribeMessageSender.java
@@ -16,6 +16,7 @@
 @Slf4j
 public class WeChatSubscribeMessageSender {
     private static final String ACCESS_TOKEN_HOST = "https://api.weixin.qq.com/cgi-bin/token";
+    private static final String STABLE_ACCESS_TOKEN_HOST = "https://api.weixin.qq.com/cgi-bin/stable_token";
     private static final String API_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send";
 
     private static final String WX_APPID = "wxb7f0ea286fc4e535";
@@ -41,13 +42,14 @@
         params.put("touser", touser);
         // 构建订阅消息内容的JSON对象
         JSONObject messageData = new JSONObject();
-        messageData.put("thing1", createDataItem("直播主题", title));
-        messageData.put("thing4", createDataItem("直播间名称", shopName));
         messageData.put("time5", createDataItem("直播时间", DateUtil.format(aliveStartAt, "MM-dd HH:mm:ss")));
-        params.put("data", messageData.toJSONString());
+        messageData.put("thing4", createDataItem("直播间名称", shopName));
+        messageData.put("thing1", createDataItem("直播主题", title));
+        params.put("data", messageData);
         params.put("miniprogram_state", "trial");
         params.put("lang", "zh_CN");
         try {
+            log.info("发送消息参数:{}", JSONObject.toJSONString(params));
             String post = HttpUtil.post(url, JSONObject.toJSONString(params));
             log.info("发送消息返回结果:{}", post);
         } catch (Exception e) {
@@ -59,10 +61,15 @@
      * 获取access_token
      * @return
      */
-    public static String getAccessTokenByWX() {
-        String host = ACCESS_TOKEN_HOST + "?appid=" + WX_APPID + "&secret=" + WX_SECRET + "&grant_type=client_credential";
-        log.info("host:{}", host);
-        return HttpUtil.get(host);
+    private static String getAccessTokenByWX() {
+        Map<String, Object> params = new HashMap<>();
+        params.put("appid", WX_APPID);
+        params.put("secret", WX_SECRET);
+        params.put("grant_type", "client_credential");
+        String token = HttpUtil.post(STABLE_ACCESS_TOKEN_HOST,JSONObject.toJSONString(params));
+        log.info("token:{}", token);
+        JSONObject jsonObject = JSONObject.parseObject(token);
+        return jsonObject.getString("access_token");
     }
     private static Map<String, Object> createDataItem(String name, String value) {
         Map<String, Object> item = new HashMap<>();

--
Gitblit v1.7.1