From 546be8a1bafdfc804575a8d07a5d9f2306c29c42 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期四, 19 六月 2025 11:20:58 +0800 Subject: [PATCH] 修改直播列表 --- ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/XiaoeUtils.java | 131 +++++++++++++++++++++++++++++++++---------- 1 files changed, 101 insertions(+), 30 deletions(-) diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/XiaoeUtils.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/XiaoeUtils.java index d409416..acdb193 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/XiaoeUtils.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/utils/XiaoeUtils.java @@ -1,5 +1,6 @@ package com.ruoyi.goods.utils; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; @@ -9,10 +10,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.XiaoeLiveVo; +import com.ruoyi.goods.domain.vo.*; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -22,11 +20,8 @@ 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; /** * 小鹅通工具类 @@ -48,9 +43,11 @@ //固定填写client_credential private String grant_type = "client_credential"; //获取直播列表 - private static final String LIVE_PAGE_LIST = "https://api.xiaoe-tech.com/xe.alive.list.get/2.0.0"; + private static final String LIVE_PAGE_LIST = "https://api.xiaoe-tech.com/xe.alive.list.get/1.0.0"; + private static final String LIVE_PAGE_LIST_V2 = "https://api.xiaoe-tech.com/xe.alive.list.get/2.0.0"; //获取直播详情 private static final String LIVE_DETAIL = "https://api.xiaoe-tech.com/xe.alive.detail.get/1.0.0"; + private static final String LIVE_DETAIL_V2 = "https://api.xiaoe-tech.com/xe.alive.detail.get/2.0.0"; //创建直播 private static final String LIVE_ADD = "https://api.xiaoe-tech.com/xe.alive.live.create/1.0.0"; //编辑直播 @@ -63,6 +60,7 @@ private static final String COURSE_CHAPTER = "https://api.xiaoe-tech.com/xe.course.course.chapter.get/1.0.0"; //获取店铺商品分组列表 private static final String COURSE_GROUP_LIST = "https://api.xiaoe-tech.com/xe.resource_tags.list/1.0.0"; + /** * 获取小鹅通access_token @@ -97,8 +95,11 @@ e.printStackTrace(); } JSONObject jsonObject = JSONObject.parseObject(result); + log.info("获取access_token返回结果:{}", result); Map data = (Map) jsonObject.get("data"); - accessToken = (String) data.get("access_token"); + accessToken = (String)data.get("access_token"); + Integer expiresIn = (int) data.get("expires_in"); + redisService.setCacheObject("xiaoe:access_token", accessToken,Long.parseLong(expiresIn.toString()), TimeUnit.SECONDS); } return accessToken; } @@ -112,7 +113,7 @@ Map<String,Object> postParams = new HashMap<>(); postParams.put("search_content", dto.getSearchContent()); postParams.put("create_mode", dto.getCreateMode()); - postParams.put("state", dto.getState()); + postParams.put("state", 0); postParams.put("search_alive_type", dto.getSearchAliveType()); postParams.put("alive_play_state", dto.getAlivePlayState()); postParams.put("page", dto.getPage()); @@ -121,15 +122,17 @@ String post = HttpUtil.post(LIVE_PAGE_LIST, JSONObject.toJSONString(postParams)); Page<XiaoeLiveVo> xiaoeLiveVOPage = new Page<>(); if (StringUtils.isNotBlank(post)) { + log.info("获取直播列表返回结果:{}", post); JSONObject jsonObject = JSONObject.parseObject(post); - if (jsonObject.get("code").equals(0)) { + if (jsonObject.get("code").equals(0) ) { JSONObject data = jsonObject.getJSONObject("data"); JSONArray list = data.getJSONArray("list"); - List<XiaoeLiveVo> xiaoeLiveVos = JSONArray.parseArray(list.toJSONString(), XiaoeLiveVo.class); - xiaoeLiveVOPage.setRecords(xiaoeLiveVos); - xiaoeLiveVOPage.setCurrent(data.getLong("page")); - xiaoeLiveVOPage.setTotal(data.getLong("total")); - xiaoeLiveVOPage.setPages(data.getLong("page_count")); + if (CollectionUtil.isNotEmpty(list)) { + List<XiaoeLiveVo> xiaoeLiveVos = JSONArray.parseArray(list.toJSONString(), XiaoeLiveVo.class); + xiaoeLiveVOPage.setRecords(xiaoeLiveVos); + xiaoeLiveVOPage.setCurrent(dto.getPage()); + xiaoeLiveVOPage.setPages(data.getLong("page_count")); + } } } return xiaoeLiveVOPage; @@ -157,6 +160,61 @@ } /** + * 获取直播列表2.0 + * @param dto + * @return + */ + public Page<XiaoeLiveVoV2> getLivePageListV2(XiaoeLiveQueryDto dto) { + Map<String,Object> postParams = new HashMap<>(); + postParams.put("create_mode", dto.getCreateMode()); + postParams.put("state", 0); + postParams.put("search_alive_type", -1); + postParams.put("alive_play_state", dto.getAlivePlayState()); + postParams.put("page", dto.getPage()); + postParams.put("page_size", dto.getPageSize()); + postParams.put("access_token", getAccessToken()); + postParams.put("tag_ids", dto.getTags()); + log.info("获取直播详情2.0请求参数:{}", JSONObject.toJSONString(postParams)); + String post = HttpUtil.post(LIVE_PAGE_LIST_V2, JSONObject.toJSONString(postParams)); + Page<XiaoeLiveVoV2> xiaoeLiveVOPage = new Page<>(); + if (StringUtils.isNotBlank(post)) { + log.info("获取直播详情2.0返回结果:{}", post); + JSONObject jsonObject = JSONObject.parseObject(post); + if (jsonObject.get("code").equals(0)) { + JSONObject data = jsonObject.getJSONObject("data"); + JSONArray list = data.getJSONArray("live_list"); + if (!list.isEmpty()){ + List<XiaoeLiveVoV2> xiaoeLiveVos = JSONArray.parseArray(list.toJSONString(), XiaoeLiveVoV2.class); + xiaoeLiveVOPage.setRecords(xiaoeLiveVos); + xiaoeLiveVOPage.setCurrent(dto.getPage()); + xiaoeLiveVOPage.setTotal(data.getLong("total_count")); + } + } + } + return xiaoeLiveVOPage; + } + + /** + *获取直播详情 + * @param id 直播ID + * @return + */ + public XiaoeLiveDetailVOV2 getLiveDetailV2(String id) { + Map<String, Object> postParams = new HashMap<>(); + postParams.put("id", id); + postParams.put("access_token", getAccessToken()); + String post = HttpUtil.post(LIVE_DETAIL_V2, JSONObject.toJSONString(postParams)); + XiaoeLiveDetailVOV2 vo = null; + if (StringUtils.isNotBlank(post)) { + JSONObject jsonObject = JSONObject.parseObject(post); + if (jsonObject.get("code").equals(0)) { + JSONObject data = jsonObject.getJSONObject("data"); + vo = JSONObject.parseObject(data.toJSONString(), XiaoeLiveDetailVOV2.class); + } + } + return vo; + } + /** * 创建直播 * @param dto * @return @@ -176,18 +234,22 @@ moudleInfoMap.put("alive_mode", dto.getAliveMode()); requestParams.put("module_info", moudleInfoMap); //讲师信息 + List<Map<String, Object>> roleList = new ArrayList<>(); Map<String, Object> roleInfoMap = new HashMap<>(); + roleInfoMap.put("role_name", "讲师"); roleInfoMap.put("user_id", dto.getUserId()); - requestParams.put("role_info", roleInfoMap); + roleList.add(roleInfoMap); + requestParams.put("role_info", roleList); //商品信息 Map<String, Object> goodsInfoMap = new HashMap<>(); - goodsInfoMap.put("sale_type", 2);//售卖类型:1-单独售卖、2-关联售卖 + goodsInfoMap.put("sale_type", 1);//售卖类型:1-单独售卖、2-关联售卖 goodsInfoMap.put("payment_type", dto.getPaymentType()); if (dto.getPaymentType().equals(3)) { goodsInfoMap.put("resource_password", dto.getResourcePassword()); } requestParams.put("goods_info", goodsInfoMap); requestParams.put("access_token", getAccessToken()); + log.info("创建直播参数:{}" ,JSONObject.toJSONString(requestParams)); String post = HttpUtil.post(LIVE_ADD, JSONObject.toJSONString(requestParams)); if (StringUtils.isNotBlank(post)) { JSONObject jsonObject = JSONObject.parseObject(post); @@ -200,7 +262,7 @@ return null; } /** - * 创建直播 + * 编辑直播 * @param dto * @return */ @@ -221,18 +283,22 @@ moudleInfoMap.put("alive_mode", dto.getAliveMode()); requestParams.put("module_info", moudleInfoMap); //讲师信息 + List<Map<String, Object>> roleList = new ArrayList<>(); Map<String, Object> roleInfoMap = new HashMap<>(); + roleInfoMap.put("role_name", "讲师"); roleInfoMap.put("user_id", dto.getUserId()); - requestParams.put("role_info", roleInfoMap); + roleList.add(roleInfoMap); + requestParams.put("role_info", roleList); //商品信息 Map<String, Object> goodsInfoMap = new HashMap<>(); - goodsInfoMap.put("sale_type", 2);//售卖类型:1-单独售卖、2-关联售卖 + goodsInfoMap.put("sale_type", 1);//售卖类型:1-单独售卖、2-关联售卖 goodsInfoMap.put("payment_type", dto.getPaymentType()); if (dto.getPaymentType().equals(3)) { goodsInfoMap.put("resource_password", dto.getResourcePassword()); } requestParams.put("goods_info", goodsInfoMap); requestParams.put("access_token", getAccessToken()); + log.info("编辑直播参数:{}" ,JSONObject.toJSONString(requestParams)); String post = HttpUtil.post(LIVE_EDIT, JSONObject.toJSONString(requestParams)); if (StringUtils.isNotBlank(post)) { JSONObject jsonObject = JSONObject.parseObject(post); @@ -294,15 +360,20 @@ * @return */ public Page<XiaoeCourseVO> getCoursePageList(XiaoeCourseQueryDto dto) { - JSONObject requestParams = JSONObject.parseObject(JSONObject.toJSONString(dto)); + Map<String, Object> requestParams = new HashMap<>(); + requestParams.put("search_content", dto.getSearchContent()); + requestParams.put("page_index", dto.getPageNo()); + requestParams.put("page_size", dto.getPageSize()); + requestParams.put("created_source", dto.getCreatedSource()); + requestParams.put("tags", dto.getTags()); if (dto.getSortBy().equals(1)) { requestParams.put("order_by", "modify");//根据创建时间排序 - requestParams.put("order_type", "降序"); + requestParams.put("order_type",1); } requestParams.put("sale_status", 1); requestParams.put("access_token", getAccessToken()); - String post = HttpUtil.post(COURSE_PAGE_LIST, requestParams.toJSONString()); + String post = HttpUtil.post(COURSE_PAGE_LIST, JSONObject.toJSONString(requestParams)); Page<XiaoeCourseVO> page = new Page<>(); if (StringUtils.isNotBlank(post)) { log.info("获取课程列表返回结果:{}" ,post); @@ -331,16 +402,16 @@ requestParams.put("course_id", id); requestParams.put("access_token", getAccessToken()); String post = HttpUtil.post(COURSE_CHAPTER, JSONObject.toJSONString(requestParams)); - List<XiaoeCourseChapterVO> xiaoeCourseChapterVO = new ArrayList<>(); + List<XiaoeCourseChapterVO> courseChapterVOList = new ArrayList<>(); if (StringUtils.isNotBlank(post)) { log.info("查询课程目录小节返回结果:{}" ,post); JSONObject jsonObject = JSONObject.parseObject(post); if (jsonObject.get("code").equals(0)) { - String data = jsonObject.getString("data"); - xiaoeCourseChapterVO = JSONArray.parseArray(data, XiaoeCourseChapterVO.class); + JSONObject data = jsonObject.getJSONObject("data"); + courseChapterVOList = JSONArray.parseArray(data.getString("list"), XiaoeCourseChapterVO.class); } } - return xiaoeCourseChapterVO; + return courseChapterVOList; } public static void main(String[] args) { String urlString = BASE_URL + -- Gitblit v1.7.1