代码库包含:Flutter 客户端(多端)、Go 后端服务、Vue3 管理后台
更详细的源码结构说明见:PROJECT_STRUCTURE.md
>=3.2.0 <4.0.0(见 pubspec.yaml)flutter_riverpod + riverpod_annotation)lib/core/router/app_router.dart)lib/core/services/api/api_client.dart、lib/core/services/api/websocket_service.dart)lib/core/services/storage/models/)lib/core/services/call_service.dart)backend/cmd/server/main.go)backend/internal/ws/)backend/internal/mq/)backend/internal/services/push_service.go)admin/src/main.ts)admin/src/utils/http/).env*(见 admin/.env*)备注:如执行 flutter pub get提示缺少flutter_riverpod,请检查pubspec.yaml中该依赖是否被注释并取消注释后重试。
/api/v1/admin/* 管理接口(管理员 Bearer Token).
|-- lib/ # Flutter 客户端核心源码(feature-first)
|-- assets/ # Flutter 资源(images/icons/emoji/sounds/fonts)
|-- backend/ # Go 后端(Gin + GORM + Mongo + Redis + WS + MQ)
|-- admin/ # Vue3 管理后台(Vite + ElementPlus + Pinia)
|-- android/ ios/ macos/ ... # Flutter 各平台宿主工程
|-- test/ # Flutter 测试
|-- pubspec.yaml # Flutter 依赖与资源清单
`-- PROJECT_STRUCTURE.md # 源码结构与功能说明书lib/core/:路由、主题、API/WS、通话、后台保活、离线队列、本地存储等基础能力lib/features/:auth/chat/contacts/moments/wallet/call/settings 等业务模块backend/internal/handlers/:HTTP API 入口(参数校验/权限校验/调用服务)backend/internal/services/:业务服务层(消息入库/同步、推送、钱包定时任务、Agora token 等)backend/internal/ws/:WebSocket Hub(连接管理、订阅、广播)admin/src/views/:管理后台业务页面(用户/会话/动态/钱包/通话/统计){SERVER}/api/v1Authorization: Bearer <token>Authorization: Bearer <admin_token>code: 0 表示成功,非 0 为错误message: 错误/提示信息data: 业务数据(可能是对象/数组)backend/cmd/server/main.go。若需要“全量接口清单”,建议基于该文件生成 OpenAPI/Swagger。| 接口名称 | Method | Endpoint | 关键参数 | 功能描述 |
|---|---|---|---|---|
| 用户登录 | POST | /auth/login | username,password,device_id,device_type,device_name | 登录并返回 token + 用户信息 |
| 用户注册 | POST | /auth/register | username,password,nickname,device_id,... | 注册并返回 token + 用户信息 |
| 检查用户名 | POST | /auth/check-username | username | 校验用户名是否可用 |
| 刷新 Token | POST | /auth/refresh | Header Bearer | 刷新访问 token(需登录) |
| 退出登录 | POST | /auth/logout | - | 退出当前登录态(服务端侧清理/失效处理) |
| 修改密码 | POST | /auth/change-password | old_password,new_password | 修改登录密码(需登录) |
| 接口名称 | Method | Endpoint | 关键参数 | 功能描述 |
|---|---|---|---|---|
| 获取当前用户 | GET | /user/me | - | 获取本人资料 |
| 更新当前用户 | PUT | /user/me | nickname,username,avatar,bio... | 更新本人资料 |
| 检查用户名(登录后) | POST | /user/check-username | username | 登录态下校验用户名是否可用 |
| 搜索用户 | GET | /user/search | keyword | 搜索用户 |
| 搜索用户+公开群/频道 | GET | /user/search-all | keyword | 聚合搜索 |
| 隐私设置-获取/更新 | GET/PUT | /user/privacy | - / payload | 管理隐私配置 |
| 黑名单列表/拉黑/移除 | GET/POST/DELETE | /user/blocked /user/blocked/:blocked_id | blocked_id | 用户拉黑与管理 |
| 设备列表/踢设备/踢其它设备 | GET/DELETE/POST | /user/devices /user/devices/:device_id /user/devices/terminate-others | device_id | 设备管理 |
| 会话列表/终止会话/终止其它会话 | GET/DELETE/POST | /user/sessions /user/sessions/:session_id /user/sessions/terminate-others | session_id | 登录会话管理 |
| 推送 token 设置 | POST/DELETE | /user/push-token | token | 绑定/移除推送 token |
| 推送设置 | GET/PUT | /user/push-settings | show_preview,... | 消息预览等设置 |
| 删除账号 | DELETE | /user/account | - | 删除当前账号(需登录) |
| 获取用户资料 | GET | /user/:id | path id | 获 取用户公开资料 |
| 共同群/频道 | GET | /user/:id/common-groups | path id | 查询共同群/频道 |
| 接口名称 | Method | Endpoint | 关键参数 | 功能描述 |
|---|---|---|---|---|
| 会话列表 | GET | /chat/list | page,page_size | 获取会话列表(含置顶/未读等) |
| 创建会话 | POST | /chat/create | type,name,member_ids,is_public... | 创建私聊/群/频道 |
| 获取/更新/删除会话 | GET/PUT/DELETE | /chat/:id | path id | 会话详情与维护 |
| 成员列表 | GET | /chat/:id/members | - | 获取成员信息 |
| 加/移成员 | POST/DELETE | /chat/:id/members /chat/:id/members/:user_id | user_ids / path user_id | 成员管理 |
| 设置成员角色 | PUT | /chat/:id/members/:user_id/role | role | 角色变更(成员/管理员/群主) |
| 退群/隐藏/加入 | POST | /chat/:id/leave /chat/:id/hide /chat/:id/join | - | 会话操作 |
| 入群申请列表/审核 | GET/POST | /chat/:id/join-requests /chat/:id/join-requests/:request_id/review | approve | 入群审批流 |
| 禁言/解禁/查询禁言 | POST/POST/GET | /chat/:id/mute /chat/:id/unmute /chat/:id/mute-status | user_id,duration | 群禁言能力 |
| 置顶/免打扰/切换未读 | POST | /chat/:id/pin /chat/:id/mute-chat /chat/:id/toggle-unread | - | 会话状态开关 |
| 清空聊天记录 | POST | /chat/:id/clear | - | 清空聊天内容(逻辑) |
| 搜索聊天消息 | GET | /chat/:id/search | keyword | 服务端消息搜索 |
| 接口名称 | Method | Endpoint | 关键参数 | 功能描述 |
|---|---|---|---|---|
| 发送消息 | POST | /message/send | chat_id,type,content,reply_to,mentions | 发送文本/媒体/文件/语音等 |
| 拉取消息列表 | GET | /message/list | chat_id,before_seq,limit | 分页拉取历史消息 |
| 增量同步消息 | POST | /message/sync | chat_id,last_seq | 断线重连后的增量同步 |
| 撤回/删除消息 | POST | /message/revoke /message/delete | chat_id,msg_id | 撤回(对方可见)/仅对自己删除 |
| 标记已读 | POST | /message/read | chat_id,msg_seq | 清未读并广播已读回执 |
| 表情回应 | POST | /message/reaction/add /message/reaction/remove | chat_id,msg_id,emoji | 添加/移除回应 |
| 转发/编辑 | POST | /message/forward /message/edit | source_chat_id,source_msg_id,target_chat_id / content | 转发与编辑文本消息 |
| 媒体/文件/链接列表 | GET | /message/media | chat_id,type,page,limit | 获取会话媒体归档 |
| 媒体统计 | GET | /message/media/count | chat_id | 统计 media/file/link/voice 数量 |
| 接口名称 | Method | Endpoint | 关键参数 | 功能描述 |
|---|---|---|---|---|
| 联系人列表 | GET | /contact/list | - | 获取联系人/好友列表 |
| 添加联系人 | POST | /contact/add | user_id | 添加联系人(双向/单向关系以服务端规则为准) |
| 删除联系人 | DELETE | /contact/:id | path id | 删除联系人 |
| 设置备注 | PUT | /contact/:id/remark | remark | 修改联系人备注 |
| 接口名称 | Method | Endpoint | 关键参数 | 功能描述 |
|---|---|---|---|---|
| 提交举报 | POST | /report | target_type,target_id,reason,description? | 举报用户/群/频道/消息等内容 |
| 接口名称 | Method | Endpoint | 关键参数 | 功能描述 |
|---|---|---|---|---|
| 动态列表 | GET | /moment/list | page | 获取动态流 |
| 动态详情 | GET | /moment/:id/detail | id | 获取单条动态 |
| 发布/更新/删除动态 | POST/PUT/DELETE | /moment/publish /moment/:id | content,images... | 动态管理 |
| 点赞/取消点赞 | POST | /moment/:id/like /moment/:id/unlike | - | 点赞能力 |
| 评论列表/发表评论 | GET/POST | /moment/:id/comments /moment/:id/comment | content | 评论能力 |
| 热门话题 | GET | /moment/topics/hot | - | 话题榜 |
| 我的动态相关 | GET | /moment/my/moments /moment/my/likes /moment/my/comments /moment/my/received-likes | page | 我的动态、点赞、评论与收到的点赞 |
| 搜索动态 | GET | /moment/search | keyword,page | 动态搜索 |
| 屏蔽动态/屏蔽用户动态 | POST | /moment/:id/block /moment/block-user/:userId | - | 内容屏蔽 |
| 接口名称 | Method | Endpoint | 关键参数 | 功能描述 |
|---|---|---|---|---|
| 获取钱包 | GET | /wallet | - | 余额、冻结金额、是否设置支付密码 |
| 钱包设置 | GET | /wallet/settings | - | 币种/过期时间/公告等 |
| 交易流水 | GET | /wallet/transactions | page,page_size,type | 交易记录查询 |
| 设置/修改支付密码 | POST | /wallet/pay-password | password(6位),old_password? | 支付密码设置 |
| 验证支付密码 | POST | /wallet/verify-password | password | 风控校验 |
| 充值方式/提交订单 | GET/POST | /wallet/recharge-methods /wallet/recharge-order | method_id,amount,proof_image | 充值申请 |
| 查询充值订单 | GET | /wallet/recharge-orders | - | 充值订单列表 |
| 充值(模拟) | POST | /wallet/recharge | amount | 模拟充值(仅开发/演示用途,生产通常应关闭) |
| 红包-发送/领取/详情 | POST/POST/GET | /wallet/red-packet/send /wallet/red-packet/:id/claim /wallet/red-packet/:id | type,total_amount,total_count,pay_password | 红包流程 |
| 转账-发送/接收/拒收/详情 | POST/POST/POST/GET | /wallet/transfer/send /wallet/transfer/:id/accept /wallet/transfer/:id/reject /wallet/transfer/:id | amount,receiver_id,pay_password | 转账流程 |
| 提现方式/发起提现 | GET/POST | /wallet/withdraw/methods /wallet/withdraw | method_id,amount,form_data,pay_password | 提现流程 |
| 接口名称 | Method | Endpoint | 关键参数 | 功能描述 |
|---|---|---|---|---|
| 获取 Agora 配置 | GET | /call/config | - | 是否启用、AppID 等 |
| 获取 Token | GET | /call/token | channel_name,uid | 获取 RTC token |
| 创建通话 | POST | /call/create | target_user_id,call_type | 发起语音/视频 |
| 接听/拒绝/结束 | POST | /call/accept /call/reject /call/end | call_id,reason? | 通话状态流转 |
| 取消通话 | DELETE | /call/:call_id | path call_id | 主叫取消 |
| 通话记录 | GET | /call/history | page | 通话历史 |
| 接口名称 | Method | Endpoint | 关键参数 | 功能描述 |
|---|---|---|---|---|
| 上传图片/多图 | POST | /upload/image /upload/images | multipart | 上传图片资源 |
| 上传视频/语音/文件 | POST | /upload/video /upload/voice /upload/file | multipart | 上传媒体/文件 |
| 上传头像 | POST | /upload/avatar | multipart | 用户头像上传 |
GET /ws(实际连接:ws(s)://{SERVER}/api/v1/ws?device_type=xxx&token=xxx)token、device_typelib/core/services/api/websocket_service.dart):new_message、message_revoked、message_editedtyping、read/read_receipt、online_statusreactionincoming_call、call_accepted、call_rejected、call_ended、call_cancelled| 接口名称 | Method | Endpoint | 关键参数 | 功能描述 |
|---|---|---|---|---|
| 管理员登录 | POST | /admin/login | username,password | 获取 admin_token |
| 当前管理员 | GET | /admin/me | - | 获取当前管理员信息 |
| 修改管理员密码 | PUT | /admin/password | old_password,new_password | 修改密码 |
| 仪表盘统计 | GET | /admin/stats/dashboard | - | 获取总览统计 |
| 用户列表 | GET | /admin/users/list | page,page_size,keyword? | 用户管理列表 |
| 会话列表 | GET | /admin/chats/list | page,page_size,type? | 会话/群/频道管理列表 |
| 动态列表 | GET | /admin/moments/list | page,page_size,status? | 动态内容管理 |
| 举报列表 | GET | /admin/reports/list | page,page_size,status?,target_type? | 举报处理与跟踪 |
| 系统设置(获取/更新) | GET/PUT | /admin/settings | payload | 系统开关、公告、官方账号等配置 |
说明:管理端还有更细的写操作(封禁/解封/踢人/重置密码/删除内容等),以 backend/cmd/server/main.go的/api/v1/admin路由组为准。
安装依赖教程.txt、backend/baota/README.md>=3.2.0 <4.0.0backend/go.mod 为准(包含 toolchain 声明)>=20.19.0(见 admin/package.json)>=8.8.0backend/config.yaml(生产务必修改 jwt.secret)http://localhost:8080/api/v1GET http://localhost:8080/healthadmin123456生产环境务必修改默认管理员密码,并 按需关闭/移除演示接口(例如 /wallet/recharge模拟充值)。
lib/core/services/api/api_client.dart 中 ApiConfig.serverUrl 与 ApiConfig.wsUrl./build_apk.sh./install_ios.shadmin/.env.development 的 VITE_API_PROXY_URLadmin/.env.production 的 VITE_API_URL