# 粉丝团功能开发说明 ## 功能概述 粉丝团是主播与粉丝之间建立更紧密联系的功能,粉丝可以加入主播的粉丝团,获得专属徽章,通过送礼物等方式增加亲密度和等级。 ## 数据库表结构 ### 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端实现 ### 新增文件 1. `MyFanGroupActivity.java` - 我的粉丝团页面(主播视角) 2. `activity_my_fan_group.xml` - 布局文件 3. `dialog_create_fan_group.xml` - 创建/编辑粉丝团对话框 4. `item_fan_group_member.xml` - 成员列表项布局 5. `bg_badge.xml` - 徽章背景 6. `bg_level_tag.xml` - 等级标签背景 ### 入口位置 - 主播中心页面 (StreamerCenterActivity) 添加"我的粉丝团"入口 ### ApiService新增接口 ```java // 粉丝团接口 @GET("api/front/fan-group/my") Call>> getMyFanGroup(); @GET("api/front/fan-group/streamer/{streamerId}") Call>> getStreamerFanGroup(@Path("streamerId") int streamerId); @POST("api/front/fan-group/create") Call>> createFanGroup(@Body Map request); @POST("api/front/fan-group/update") Call> updateFanGroup(@Body Map request); @POST("api/front/fan-group/join/{groupId}") Call> joinFanGroup(@Path("groupId") int groupId); @POST("api/front/fan-group/leave/{groupId}") Call> leaveFanGroup(@Path("groupId") int groupId); @GET("api/front/fan-group/joined") Call>>> getJoinedFanGroups(...); @GET("api/front/fan-group/{groupId}/members") Call>>> getFanGroupMembers(...); @GET("api/front/fan-group/{groupId}/check-joined") Call>> 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显示粉丝团菜单: ```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亲密度) ## 部署步骤 1. 执行SQL修复菜单显示 2. 重新编译后端项目 3. 重新编译Android项目 4. 重启后端服务 ## 后续优化 1. 粉丝团聊天功能(基于群组系统扩展) 2. 粉丝团专属礼物 3. 粉丝团排行榜 4. 粉丝团活动