zhibo/粉丝团功能开发说明.md

147 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 粉丝团功能开发说明
## 功能概述
粉丝团是主播与粉丝之间建立更紧密联系的功能,粉丝可以加入主播的粉丝团,获得专属徽章,通过送礼物等方式增加亲密度和等级。
## 数据库表结构
### 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<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显示粉丝团菜单
```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. 粉丝团活动