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