4.5 KiB
4.5 KiB
粉丝团功能开发说明
功能概述
粉丝团是主播与粉丝之间建立更紧密联系的功能,粉丝可以加入主播的粉丝团,获得专属徽章,通过送礼物等方式增加亲密度和等级。
数据库表结构
eb_fan_group(粉丝团表)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | int | 主键ID |
| anchor_id | int | 主播ID |
| anchor_name | varchar | 主播昵称 |
| name | varchar | 粉丝团名称 |
| badge | varchar | 粉丝徽章 |
| badge_color | varchar | 徽章颜色 |
| member_count | int | 成员数量 |
| status | tinyint | 状态(1正常 0解散) |
| create_time | datetime | 创建时间 |
eb_fan_group_member(粉丝团成员表)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | int | 主键ID |
| group_id | int | 粉丝团ID |
| uid | int | 用户ID |
| nickname | varchar | 用户昵称 |
| level | int | 粉丝等级(1-10) |
| intimacy | int | 亲密度 |
| status | tinyint | 状态(1正常 0退出) |
| join_time | datetime | 加入时间 |
后端API
APP端接口 (FanGroupController)
路径前缀: /api/front/fan-group
| 接口 | 方法 | 说明 |
|---|---|---|
| /my | GET | 获取我的粉丝团(主播) |
| /streamer/{streamerId} | GET | 获取主播的粉丝团 |
| /create | POST | 创建粉丝团 |
| /update | POST | 更新粉丝团信息 |
| /join/{groupId} | POST | 加入粉丝团 |
| /leave/{groupId} | POST | 退出粉丝团 |
| /joined | GET | 获取我加入的粉丝团列表 |
| /{groupId}/members | GET | 获取粉丝团成员列表 |
| /{groupId}/check-joined | GET | 检查是否已加入 |
| /{groupId}/add-intimacy | POST | 增加亲密度 |
后台管理接口 (FanGroupController - admin)
路径前缀: /api/admin/fan/group
| 接口 | 方法 | 说明 |
|---|---|---|
| /list | GET | 粉丝团列表 |
| /delete/{id} | POST | 删除粉丝团 |
| /batch-delete | POST | 批量删除 |
| /member/list | GET | 成员列表 |
| /member/delete/{id} | POST | 移除成员 |
Android端实现
新增文件
MyFanGroupActivity.java- 我的粉丝团页面(主播视角)activity_my_fan_group.xml- 布局文件dialog_create_fan_group.xml- 创建/编辑粉丝团对话框item_fan_group_member.xml- 成员列表项布局bg_badge.xml- 徽章背景bg_level_tag.xml- 等级标签背景
入口位置
- 主播中心页面 (StreamerCenterActivity) 添加"我的粉丝团"入口
ApiService新增接口
// 粉丝团接口
@GET("api/front/fan-group/my")
Call<ApiResponse<Map<String, Object>>> getMyFanGroup();
@GET("api/front/fan-group/streamer/{streamerId}")
Call<ApiResponse<Map<String, Object>>> getStreamerFanGroup(@Path("streamerId") int streamerId);
@POST("api/front/fan-group/create")
Call<ApiResponse<Map<String, Object>>> createFanGroup(@Body Map<String, Object> request);
@POST("api/front/fan-group/update")
Call<ApiResponse<String>> updateFanGroup(@Body Map<String, Object> request);
@POST("api/front/fan-group/join/{groupId}")
Call<ApiResponse<String>> joinFanGroup(@Path("groupId") int groupId);
@POST("api/front/fan-group/leave/{groupId}")
Call<ApiResponse<String>> leaveFanGroup(@Path("groupId") int groupId);
@GET("api/front/fan-group/joined")
Call<ApiResponse<PageResponse<Map<String, Object>>>> getJoinedFanGroups(...);
@GET("api/front/fan-group/{groupId}/members")
Call<ApiResponse<PageResponse<Map<String, Object>>>> getFanGroupMembers(...);
@GET("api/front/fan-group/{groupId}/check-joined")
Call<ApiResponse<Map<String, Object>>> checkFanGroupJoined(@Path("groupId") int groupId);
后台管理前端
已有文件
Zhibo/admin/src/views/fanGroup/list/index.vue- 粉丝团列表页面Zhibo/admin/src/api/fanGroup.js- API接口定义Zhibo/admin/src/router/modules/fanGroup.js- 路由配置
菜单配置
执行以下SQL显示粉丝团菜单:
UPDATE eb_system_menu SET is_show = 1 WHERE id = 663;
等级规则
粉丝等级根据亲密度自动升级:
- Lv.1: 0-999 亲密度
- Lv.2: 1000-1999 亲密度
- Lv.3: 2000-2999 亲密度
- ...
- Lv.10: 9000+ 亲密度
亲密度获取方式:
- 送礼物(礼物价值 = 亲密度增加值)
- 每日签到(+10亲密度)
- 观看直播(每分钟+1亲密度)
部署步骤
- 执行SQL修复菜单显示
- 重新编译后端项目
- 重新编译Android项目
- 重启后端服务
后续优化
- 粉丝团聊天功能(基于群组系统扩展)
- 粉丝团专属礼物
- 粉丝团排行榜
- 粉丝团活动