From f3169b2eba033a53269d75993797f91c44d20ec3 Mon Sep 17 00:00:00 2001
From: xiao12feng8 <16507319+xiao12feng8@user.noreply.gitee.com>
Date: Sat, 3 Jan 2026 12:24:05 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=9A=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E7=94=A8=E6=88=B7=E5=92=8C=E4=B8=BB=E6=92=AD=E5=88=87=E6=8D=A2?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Zhibo/admin/src/api/room.js | 37 +
Zhibo/admin/src/router/modules/liveManage.js | 14 +-
Zhibo/admin/src/views/room/list/index.vue | 418 +++++++---
.../zbkj/admin/controller/RoomController.java | 158 +++-
.../common/model/live/LiveRoomCategory.java | 48 ++
.../common/token/FrontTokenComponent.java | 23 +-
.../front/controller/LiveRoomController.java | 8 +-
.../front/controller/StreamerController.java | 240 +++++-
.../zbkj/service/dao/LiveRoomCategoryDao.java | 10 +
.../service/LiveRoomCategoryService.java | 17 +
.../impl/LiveRoomCategoryServiceImpl.java | 26 +
android-app/app/build.gradle.kts | 3 +
android-app/app/src/main/AndroidManifest.xml | 13 +
.../livestreaming/BroadcastActivity.java | 777 ++++++++++++++++++
.../example/livestreaming/LoginActivity.java | 31 +-
.../example/livestreaming/MainActivity.java | 83 +-
.../example/livestreaming/PlayerActivity.java | 141 +++-
.../livestreaming/ProfileActivity.java | 81 +-
.../livestreaming/RoomDetailActivity.java | 131 ++-
.../livestreaming/SettingsPageActivity.java | 43 +
.../livestreaming/StreamerCenterActivity.java | 226 +++++
.../example/livestreaming/net/ApiService.java | 20 +
.../example/livestreaming/net/AuthStore.java | 56 ++
.../livestreaming/net/CreateRoomRequest.java | 89 +-
.../src/main/res/drawable/bg_circle_red.xml | 1 -
.../drawable/bg_circle_semi_transparent.xml | 5 +
.../main/res/drawable/bg_gradient_bottom.xml | 7 +
.../src/main/res/drawable/bg_gradient_top.xml | 7 +
.../main/res/drawable/bg_purple_button.xml | 6 +
.../drawable/bg_rounded_semi_transparent.xml | 5 +
.../app/src/main/res/drawable/ic_close_24.xml | 3 +-
.../app/src/main/res/drawable/ic_live_24.xml | 16 +
.../src/main/res/drawable/ic_person_24.xml | 4 +-
.../src/main/res/drawable/ic_settings_24.xml | 10 +
.../main/res/drawable/ic_switch_camera_24.xml | 10 +
.../main/res/layout/activity_broadcast.xml | 183 +++++
.../src/main/res/layout/activity_profile.xml | 21 +-
.../res/layout/activity_streamer_center.xml | 362 ++++++++
delete_room_menus.sql | 11 +
live-streaming/docker/srs/srs.conf | 21 +-
live-streaming/docker启动配置文件.md | 54 ++
room_category_table.sql | 22 +
服务管理指南.md | 228 +++++
43 files changed, 3425 insertions(+), 244 deletions(-)
create mode 100644 Zhibo/zhibo-h/crmeb-common/src/main/java/com/zbkj/common/model/live/LiveRoomCategory.java
create mode 100644 Zhibo/zhibo-h/crmeb-service/src/main/java/com/zbkj/service/dao/LiveRoomCategoryDao.java
create mode 100644 Zhibo/zhibo-h/crmeb-service/src/main/java/com/zbkj/service/service/LiveRoomCategoryService.java
create mode 100644 Zhibo/zhibo-h/crmeb-service/src/main/java/com/zbkj/service/service/impl/LiveRoomCategoryServiceImpl.java
create mode 100644 android-app/app/src/main/java/com/example/livestreaming/BroadcastActivity.java
create mode 100644 android-app/app/src/main/java/com/example/livestreaming/StreamerCenterActivity.java
create mode 100644 android-app/app/src/main/res/drawable/bg_circle_semi_transparent.xml
create mode 100644 android-app/app/src/main/res/drawable/bg_gradient_bottom.xml
create mode 100644 android-app/app/src/main/res/drawable/bg_gradient_top.xml
create mode 100644 android-app/app/src/main/res/drawable/bg_purple_button.xml
create mode 100644 android-app/app/src/main/res/drawable/bg_rounded_semi_transparent.xml
create mode 100644 android-app/app/src/main/res/drawable/ic_live_24.xml
create mode 100644 android-app/app/src/main/res/drawable/ic_settings_24.xml
create mode 100644 android-app/app/src/main/res/drawable/ic_switch_camera_24.xml
create mode 100644 android-app/app/src/main/res/layout/activity_broadcast.xml
create mode 100644 android-app/app/src/main/res/layout/activity_streamer_center.xml
create mode 100644 delete_room_menus.sql
create mode 100644 live-streaming/docker启动配置文件.md
create mode 100644 room_category_table.sql
create mode 100644 服务管理指南.md
diff --git a/Zhibo/admin/src/api/room.js b/Zhibo/admin/src/api/room.js
index afd84d9d..cbd6998a 100644
--- a/Zhibo/admin/src/api/room.js
+++ b/Zhibo/admin/src/api/room.js
@@ -147,3 +147,40 @@ export function roomUpdateApi(data) {
data
})
}
+
+// ========== 房间分类管理 ==========
+
+// 分类列表
+export function roomCategoryListApi(params) {
+ return request({
+ url: '/admin/room/category/list',
+ method: 'get',
+ params
+ })
+}
+
+// 保存分类(新增/编辑)
+export function roomCategorySaveApi(data) {
+ return request({
+ url: '/admin/room/category/save',
+ method: 'post',
+ data
+ })
+}
+
+// 删除分类
+export function roomCategoryDeleteApi(id) {
+ return request({
+ url: `/admin/room/category/delete/${id}`,
+ method: 'post'
+ })
+}
+
+// 更新分类状态
+export function roomCategoryUpdateStatusApi(id, status) {
+ return request({
+ url: '/admin/room/category/updateStatus',
+ method: 'post',
+ params: { id, status }
+ })
+}
diff --git a/Zhibo/admin/src/router/modules/liveManage.js b/Zhibo/admin/src/router/modules/liveManage.js
index f646be0d..5547477f 100644
--- a/Zhibo/admin/src/router/modules/liveManage.js
+++ b/Zhibo/admin/src/router/modules/liveManage.js
@@ -15,25 +15,13 @@ const liveManageRouter = {
icon: 'el-icon-video-camera',
},
children: [
- // 房间管理
+ // 房间管理(包含分类管理)
{
path: 'room/list',
component: () => import('@/views/room/list/index'),
name: 'RoomList',
meta: { title: '房间列表', icon: '' },
},
- {
- path: 'room/type',
- component: () => import('@/views/room/type/index'),
- name: 'RoomType',
- meta: { title: '房间类型', icon: '' },
- },
- {
- path: 'room/background',
- component: () => import('@/views/room/background/index'),
- name: 'RoomBackground',
- meta: { title: '房间背景', icon: '' },
- },
// 家族管理
{
path: 'family/list',
diff --git a/Zhibo/admin/src/views/room/list/index.vue b/Zhibo/admin/src/views/room/list/index.vue
index 722d1fdf..6dbfc3d2 100644
--- a/Zhibo/admin/src/views/room/list/index.vue
+++ b/Zhibo/admin/src/views/room/list/index.vue
@@ -2,100 +2,141 @@
-
-
-
-
- 批量删除
- 新增直播间
-
-
刷新
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 查询
-
-
-
-
-
-
-
-
-
-
-
-
- {{ scope.row.isLive ? '直播中' : '未开播' }}
-
-
-
-
-
- {{ scope.row.streamUrls && scope.row.streamUrls.flv }}
-
-
-
-
- {{ scope.row.streamUrls && scope.row.streamUrls.hls }}
-
-
-
-
-
-
{{ scope.row.isLive ? '停播' : '开播' }}
-
编辑
-
详情
-
- 删除
-
+
+
+
+
+
+
+
+
+ 批量删除
+ 新增直播间
-
-
-
-
-
-
-
+
刷新
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.categoryName }}
+ 未分类
+
+
+
+
+
+
+ {{ scope.row.isLive ? '直播中' : '未开播' }}
+
+
+
+
+
+
+ {{ scope.row.isLive ? '停播' : '开播' }}
+ 编辑
+ 详情
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新增分类
+ 刷新
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.roomCount || 0 }}
+
+
+
+
+
+ 编辑
+
+ 删除
+
+
+
+
+
+
+
-
-
+
+
{{ detailData.id }}
{{ detailData.title }}
+ {{ detailData.categoryName || '未分类' }}
{{ detailData.streamerName }}
{{ detailData.streamKey }}
{{ detailData.isLive ? '直播中' : '未开播' }}
{{ detailData.createTime }}
- {{ detailData.streamUrls && detailData.streamUrls.rtmp }}
- {{ detailData.streamUrls && detailData.streamUrls.flv }}
- {{ detailData.streamUrls && detailData.streamUrls.hls }}
+ {{ detailData.streamUrls && detailData.streamUrls.rtmp }}
+ {{ detailData.streamUrls && detailData.streamUrls.flv }}
+ {{ detailData.streamUrls && detailData.streamUrls.hls }}
@@ -117,34 +158,42 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
-
-
+
+
-
+
+
+
+
+
+
@@ -161,23 +210,52 @@
创建
+
+
+
+
+
+
+
+
+
+
+
+ 图标
+
+
+ 支持 Element UI 图标类名(如 el-icon-video-camera)或图片URL
+
+
+
+
+
+
+
+
+
+
diff --git a/Zhibo/zhibo-h/crmeb-admin/src/main/java/com/zbkj/admin/controller/RoomController.java b/Zhibo/zhibo-h/crmeb-admin/src/main/java/com/zbkj/admin/controller/RoomController.java
index 6db7353b..c0af23eb 100644
--- a/Zhibo/zhibo-h/crmeb-admin/src/main/java/com/zbkj/admin/controller/RoomController.java
+++ b/Zhibo/zhibo-h/crmeb-admin/src/main/java/com/zbkj/admin/controller/RoomController.java
@@ -5,6 +5,7 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zbkj.common.model.live.LiveChat;
import com.zbkj.common.model.live.LiveRoom;
+import com.zbkj.common.model.live.LiveRoomCategory;
import com.zbkj.common.model.room.Room;
import com.zbkj.common.page.CommonPage;
import com.zbkj.common.request.PageParamRequest;
@@ -14,6 +15,7 @@ import com.zbkj.common.result.CommonResult;
import com.zbkj.service.service.RoomService;
import com.zbkj.service.service.LiveRoomService;
import com.zbkj.service.service.LiveChatService;
+import com.zbkj.service.service.LiveRoomCategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
@@ -48,6 +50,9 @@ public class RoomController {
@Autowired
private LiveChatService liveChatService;
+ @Autowired(required = false)
+ private LiveRoomCategoryService liveRoomCategoryService;
+
@Value("${LIVE_PUBLIC_SRS_HOST:}")
private String publicHost;
@@ -111,7 +116,17 @@ public class RoomController {
public CommonResult createLiveRoom(@RequestBody @Validated LiveRoomCreateRequest body,
HttpServletRequest request) {
Integer uid = body.getUid() == null ? 0 : body.getUid();
- LiveRoom room = liveRoomService.createRoom(uid, body.getTitle(), body.getStreamerName());
+ LiveRoom room = liveRoomService.createRoom(
+ uid,
+ body.getTitle(),
+ body.getStreamerName(),
+ null,
+ body.getCategoryId(),
+ null,
+ null,
+ null,
+ null
+ );
String host = resolveHost(request);
int rtmpPort = parsePort(publicRtmpPort, 25002);
int httpPort = parsePort(publicHttpPort, 25003);
@@ -126,6 +141,7 @@ public class RoomController {
if (room == null) return CommonResult.failed("房间不存在");
room.setTitle(body.getTitle());
room.setStreamerName(body.getStreamerName());
+ room.setCategoryId(body.getCategoryId());
if (!liveRoomService.updateById(room)) {
return CommonResult.failed("保存失败");
}
@@ -199,7 +215,16 @@ public class RoomController {
resp.setStreamerName(room.getStreamerName());
resp.setStreamKey(room.getStreamKey());
resp.setIsLive(room.getIsLive() != null && room.getIsLive() == 1);
+ resp.setCategoryId(room.getCategoryId());
resp.setCreateTime(room.getCreateTime());
+
+ // 获取分类名称
+ if (room.getCategoryId() != null && liveRoomCategoryService != null) {
+ LiveRoomCategory category = liveRoomCategoryService.getById(room.getCategoryId());
+ if (category != null) {
+ resp.setCategoryName(category.getName());
+ }
+ }
LiveRoomStreamUrlsResponse urls = new LiveRoomStreamUrlsResponse();
urls.setRtmp(String.format("rtmp://%s:%d/live/%s", host, rtmpPort, room.getStreamKey()));
@@ -248,6 +273,8 @@ public class RoomController {
private String streamerName;
private String streamKey;
private Boolean isLive;
+ private Integer categoryId;
+ private String categoryName;
private Date createTime;
private LiveRoomStreamUrlsResponse streamUrls;
}
@@ -261,6 +288,8 @@ public class RoomController {
@javax.validation.constraints.NotBlank
private String streamerName;
+
+ private Integer categoryId;
}
@Data
@@ -273,6 +302,8 @@ public class RoomController {
@javax.validation.constraints.NotBlank
private String streamerName;
+
+ private Integer categoryId;
}
@Data
@@ -281,4 +312,129 @@ public class RoomController {
private String flv;
private String hls;
}
+
+ // ==================== 房间分类管理 ====================
+
+ @ApiOperation(value = "分类列表")
+ @RequestMapping(value = "/category/list", method = RequestMethod.GET)
+ public CommonResult> getCategoryList() {
+ if (liveRoomCategoryService == null) {
+ return CommonResult.success(new java.util.ArrayList());
+ }
+ List list = liveRoomCategoryService.list(
+ new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper()
+ .orderByAsc(LiveRoomCategory::getSort)
+ .orderByDesc(LiveRoomCategory::getId)
+ );
+ List respList = list.stream().map(cat -> {
+ LiveRoomCategoryResponse resp = new LiveRoomCategoryResponse();
+ resp.setId(cat.getId());
+ resp.setName(cat.getName());
+ resp.setIcon(cat.getIcon());
+ resp.setSort(cat.getSort());
+ resp.setStatus(cat.getStatus());
+ resp.setCreateTime(cat.getCreateTime());
+ // 统计该分类下的房间数
+ long count = liveRoomService.count(
+ new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper()
+ .eq(LiveRoom::getCategoryId, cat.getId())
+ );
+ resp.setRoomCount((int) count);
+ return resp;
+ }).collect(Collectors.toList());
+ return CommonResult.success(respList);
+ }
+
+ @ApiOperation(value = "保存分类")
+ @RequestMapping(value = "/category/save", method = RequestMethod.POST)
+ public CommonResult saveCategory(@RequestBody LiveRoomCategorySaveRequest body) {
+ if (liveRoomCategoryService == null) {
+ return CommonResult.failed("分类服务未启用");
+ }
+ if (StrUtil.isBlank(body.getName())) {
+ return CommonResult.failed("分类名称不能为空");
+ }
+ LiveRoomCategory category;
+ if (body.getId() != null && body.getId() > 0) {
+ category = liveRoomCategoryService.getById(body.getId());
+ if (category == null) {
+ return CommonResult.failed("分类不存在");
+ }
+ } else {
+ category = new LiveRoomCategory();
+ category.setCreateTime(new Date());
+ }
+ category.setName(body.getName());
+ category.setIcon(body.getIcon());
+ category.setSort(body.getSort() != null ? body.getSort() : 0);
+ category.setStatus(body.getStatus() != null ? body.getStatus() : 1);
+ category.setUpdateTime(new Date());
+
+ if (body.getId() != null && body.getId() > 0) {
+ liveRoomCategoryService.updateById(category);
+ } else {
+ liveRoomCategoryService.save(category);
+ }
+ return CommonResult.success("保存成功");
+ }
+
+ @ApiOperation(value = "删除分类")
+ @RequestMapping(value = "/category/delete/{id}", method = RequestMethod.POST)
+ public CommonResult deleteCategory(@PathVariable Integer id) {
+ if (liveRoomCategoryService == null) {
+ return CommonResult.failed("分类服务未启用");
+ }
+ if (id == null) {
+ return CommonResult.failed("参数错误");
+ }
+ // 检查是否有房间使用该分类
+ long count = liveRoomService.count(
+ new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper()
+ .eq(LiveRoom::getCategoryId, id)
+ );
+ if (count > 0) {
+ return CommonResult.failed("该分类下有 " + count + " 个房间,无法删除");
+ }
+ liveRoomCategoryService.removeById(id);
+ return CommonResult.success("删除成功");
+ }
+
+ @ApiOperation(value = "更新分类状态")
+ @RequestMapping(value = "/category/updateStatus", method = RequestMethod.POST)
+ public CommonResult updateCategoryStatus(@RequestParam Integer id, @RequestParam Integer status) {
+ if (liveRoomCategoryService == null) {
+ return CommonResult.failed("分类服务未启用");
+ }
+ if (id == null) {
+ return CommonResult.failed("参数错误");
+ }
+ LiveRoomCategory category = liveRoomCategoryService.getById(id);
+ if (category == null) {
+ return CommonResult.failed("分类不存在");
+ }
+ category.setStatus(status);
+ category.setUpdateTime(new Date());
+ liveRoomCategoryService.updateById(category);
+ return CommonResult.success("更新成功");
+ }
+
+ @Data
+ public static class LiveRoomCategoryResponse {
+ private Integer id;
+ private String name;
+ private String icon;
+ private Integer sort;
+ private Integer status;
+ private Integer roomCount;
+ private Date createTime;
+ }
+
+ @Data
+ public static class LiveRoomCategorySaveRequest {
+ private Integer id;
+ private String name;
+ private String icon;
+ private Integer sort;
+ private Integer status;
+ }
}
diff --git a/Zhibo/zhibo-h/crmeb-common/src/main/java/com/zbkj/common/model/live/LiveRoomCategory.java b/Zhibo/zhibo-h/crmeb-common/src/main/java/com/zbkj/common/model/live/LiveRoomCategory.java
new file mode 100644
index 00000000..164515af
--- /dev/null
+++ b/Zhibo/zhibo-h/crmeb-common/src/main/java/com/zbkj/common/model/live/LiveRoomCategory.java
@@ -0,0 +1,48 @@
+package com.zbkj.common.model.live;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 直播间分类
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("eb_live_room_category")
+@ApiModel(value = "LiveRoomCategory", description = "直播间分类")
+public class LiveRoomCategory implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "分类ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty(value = "分类名称")
+ private String name;
+
+ @ApiModelProperty(value = "图标")
+ private String icon;
+
+ @ApiModelProperty(value = "排序")
+ private Integer sort;
+
+ @ApiModelProperty(value = "状态:0-禁用,1-启用")
+ private Integer status;
+
+ @ApiModelProperty(value = "创建时间")
+ private Date createTime;
+
+ @ApiModelProperty(value = "更新时间")
+ private Date updateTime;
+}
diff --git a/Zhibo/zhibo-h/crmeb-common/src/main/java/com/zbkj/common/token/FrontTokenComponent.java b/Zhibo/zhibo-h/crmeb-common/src/main/java/com/zbkj/common/token/FrontTokenComponent.java
index 22a61cdd..795c6783 100644
--- a/Zhibo/zhibo-h/crmeb-common/src/main/java/com/zbkj/common/token/FrontTokenComponent.java
+++ b/Zhibo/zhibo-h/crmeb-common/src/main/java/com/zbkj/common/token/FrontTokenComponent.java
@@ -183,10 +183,29 @@ public class FrontTokenComponent {
"api/front/bargain/header",
"api/front/bargain/detail",
"api/front/seckill/header",
- "api/front/seckill/detail"
+ "api/front/seckill/detail",
+ // 缘池/社区相关接口放行
+ "api/front/community/categories",
+ "api/front/community/messages",
+ "api/front/community/nearby-users",
+ "api/front/community/user-count",
+ // 直播间公开接口
+ "api/front/live/public"
};
- return ArrayUtils.contains(routerList, uri);
+ // 检查精确匹配
+ if (ArrayUtils.contains(routerList, uri)) {
+ return true;
+ }
+
+ // 检查前缀匹配(支持子路径)
+ for (String route : routerList) {
+ if (uri.startsWith(route)) {
+ return true;
+ }
+ }
+
+ return false;
}
public Boolean check(String token, HttpServletRequest request){
diff --git a/Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/LiveRoomController.java b/Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/LiveRoomController.java
index 4b8eb863..2bdea000 100644
--- a/Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/LiveRoomController.java
+++ b/Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/LiveRoomController.java
@@ -51,10 +51,10 @@ public class LiveRoomController {
@Value("${LIVE_PUBLIC_SRS_HOST:}")
private String publicHost;
- @Value("${LIVE_PUBLIC_SRS_RTMP_PORT:}")
+ @Value("${LIVE_PUBLIC_SRS_RTMP_PORT:1935}")
private String publicRtmpPort;
- @Value("${LIVE_PUBLIC_SRS_HTTP_PORT:}")
+ @Value("${LIVE_PUBLIC_SRS_HTTP_PORT:8080}")
private String publicHttpPort;
@ApiOperation(value = "公开:直播间列表(只返回直播中的房间)")
@@ -464,8 +464,8 @@ public class LiveRoomController {
}
String host = (publicHost != null && !publicHost.trim().isEmpty()) ? publicHost.trim() : requestHost;
- int rtmpPort = parsePort(publicRtmpPort, 25002);
- int httpPort = parsePort(publicHttpPort, 25003);
+ int rtmpPort = parsePort(publicRtmpPort, 1935);
+ int httpPort = parsePort(publicHttpPort, 8080);
StreamUrlsResponse urls = new StreamUrlsResponse();
urls.setRtmp(String.format("rtmp://%s:%d/live/%s", host, rtmpPort, room.getStreamKey()));
diff --git a/Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/StreamerController.java b/Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/StreamerController.java
index c237784d..ac7c1e01 100644
--- a/Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/StreamerController.java
+++ b/Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/StreamerController.java
@@ -33,6 +33,7 @@ public class StreamerController {
/**
* 检查当前用户是否是认证主播
+ * 直接从 eb_user 表读取 is_streamer 字段
*/
@ApiOperation(value = "检查主播资格")
@GetMapping("/check")
@@ -42,55 +43,97 @@ public class StreamerController {
return CommonResult.failed("请先登录");
}
+ log.info("=== 检查主播资格开始 === userId={}", userId);
+ Map result = new HashMap<>();
+ result.put("userId", userId);
+
try {
- String sql = "SELECT is_streamer, streamer_level, streamer_intro, streamer_certified_time FROM eb_user WHERE uid = ?";
+ // 直接查询用户的主播状态
+ String sql = "SELECT uid, nickname, is_streamer, streamer_level, streamer_intro, streamer_certified_time FROM eb_user WHERE uid = ?";
List