Files
sundynix-micro-be/docs/API_DOCS.md
T
2026-04-27 00:02:18 +08:00

403 lines
11 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.
# Sundynix 微服务 API 文档
> Base URL 约定: 各服务独立部署,通过 Nginx 统一代理
---
## 一、用户服务 (user-api) — 端口 9001
### 1.1 公开接口(无需鉴权)
#### POST /api/user/miniLogin — 微信小程序登录
**请求体:**
```json
{
"code": "微信wx.login获取的code",
"clientId": "客户端标识(plant/radio"
}
```
**响应:**
```json
{
"code": 200,
"msg": "success",
"data": {
"token": "eyJhbGciOiJIUzI1NiIs...",
"userInfo": {
"id": "uuid",
"name": "用户u278bb",
"nickName": "",
"phone": "",
"openId": "oXxx...",
"avatarId": "",
"gender": 0,
"isVip": 0
}
}
}
```
---
#### POST /api/user/loginByPhone — 手机号登录
**请求体:**
```json
{
"code": "微信getPhoneNumber获取的code",
"openId": "用户openId",
"clientId": "客户端标识"
}
```
**响应:** 同 miniLogin
---
#### POST /api/user/login — 账号密码登录
**请求体:**
```json
{
"account": "账号",
"password": "密码"
}
```
**响应:** 同 miniLogin
---
### 1.2 鉴权接口(Header: Authorization: Bearer {token}
#### GET /api/user/info — 获取当前用户信息
**响应:**
```json
{
"code": 200,
"msg": "success",
"data": {
"userInfo": { /* */ }
}
}
```
---
#### PUT /api/user/update — 更新用户信息
**请求体:**
```json
{
"name": "新名字",
"account": "新账号",
"phone": "13800138000",
"avatarId": "文件ID",
"nickName": "昵称"
}
```
---
#### PUT /api/user/changePassword — 修改密码
```json
{ "oldPassword": "旧密码", "newPassword": "新密码" }
```
---
#### POST /api/user/list — 用户列表(管理后台)
```json
{ "current": 1, "pageSize": 10, "account": "", "phone": "" }
```
**响应:**
```json
{
"code": 200,
"data": { "list": [], "total": 0, "current": 1, "size": 10 }
}
```
---
#### DELETE /api/user/delete — 删除用户
```json
{ "ids": ["id1", "id2"] }
```
---
#### GET /api/user/location?longitude=116.40&latitude=39.90 — 获取位置
#### GET /api/user/weather?adcode=110000 — 获取天气
---
## 二、文件服务 (file-api) — 端口 9002
> 所有接口需要鉴权
#### POST /api/file/upload — 上传文件
**请求:** `multipart/form-data`,字段名 `file`
**响应:**
```json
{
"code": 200,
"data": {
"id": "文件ID",
"name": "filename.jpg",
"url": "https://res.sundynix.cn/...",
"suffix": "jpg",
"md5": "abc123..."
}
}
```
---
#### DELETE /api/file/delete — 删除文件
```json
{ "ids": ["fileId1", "fileId2"] }
```
---
#### POST /api/file/list — 文件列表
```json
{ "current": 1, "pageSize": 10, "name": "" }
```
---
#### GET /api/file/:id — 获取文件详情
---
## 三、系统服务 (system-api) — 端口 9003
> 所有接口需要鉴权
### 3.1 客户端管理
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/sys/client/create | 创建客户端 |
| PUT | /api/sys/client/update | 更新客户端 |
| DELETE | /api/sys/client/delete | 删除客户端 |
| POST | /api/sys/client/list | 客户端列表 |
### 3.2 角色管理
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/sys/role/create | 创建角色 |
| PUT | /api/sys/role/update | 更新角色 |
| DELETE | /api/sys/role/delete | 删除角色 |
| POST | /api/sys/role/list | 角色列表 |
### 3.3 菜单管理
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/sys/menu/create | 创建菜单 |
| PUT | /api/sys/menu/update | 更新菜单 |
| DELETE | /api/sys/menu/delete | 删除菜单 |
| GET | /api/sys/menu/list | 菜单树形列表 |
| POST | /api/sys/menu/byRole | 根据角色获取菜单 |
### 3.4 操作日志
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/sys/log/list | 操作日志列表 |
| DELETE | /api/sys/log/delete | 删除日志 |
### 3.5 字典管理
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/sys/dict/create | 创建字典 |
| PUT | /api/sys/dict/update | 更新字典 |
| DELETE | /api/sys/dict/delete | 删除字典 |
| POST | /api/sys/dict/list | 字典列表 |
---
## 四、植物服务 (plant-api) — 端口 9004
### 4.1 公开接口
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/plant/callback/wechatpay | 微信支付回调 |
### 4.2 我的植物(需鉴权)
| 方法 | 路径 | 说明 | 请求体示例 |
|------|------|------|-----------|
| POST | /api/plant/my/create | 创建植物 | `{name, plantTime, placement, imgIds[]}` |
| PUT | /api/plant/my/update | 更新植物 | `{id, name, status, ...}` |
| DELETE | /api/plant/my/delete | 删除植物 | `{ids[]}` |
| POST | /api/plant/my/list | 植物列表 | `{current, pageSize, name}` |
| GET | /api/plant/my/:id | 植物详情 | — |
| POST | /api/plant/my/carePlan | 添加养护计划 | `{plantId, name, targetAction, period}` |
| POST | /api/plant/my/careRecord | 添加养护记录 | `{plantId, planId, action}` |
| POST | /api/plant/my/growthRecord | 添加成长记录 | `{plantId, content, imgIds[]}` |
### 4.3 百科
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/plant/wiki/list | 百科列表 |
| GET | /api/plant/wiki/:id | 百科详情 |
| GET | /api/plant/wiki/class/list | 分类列表 |
| POST | /api/plant/wiki/class/create | 创建分类 |
| POST | /api/plant/wiki/star | 收藏/取消百科 |
### 4.4 社区帖子
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/plant/post/create | 发布帖子 |
| POST | /api/plant/post/list | 帖子列表 |
| GET | /api/plant/post/:id | 帖子详情 |
| DELETE | /api/plant/post/delete | 删除帖子 |
| POST | /api/plant/post/comment | 评论帖子 |
| POST | /api/plant/post/like | 点赞帖子 |
### 4.5 其他
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/plant/topic/list | 话题列表 |
| POST | /api/plant/topic/create | 创建话题 |
| POST | /api/plant/ocr/classify | OCR植物识别 |
| POST | /api/plant/exchange/list | 兑换商品列表 |
| POST | /api/plant/exchange/order | 兑换商品 |
| POST | /api/plant/ai/chat | AI问答 |
| GET | /api/plant/ai/history | 聊天历史 |
| GET | /api/plant/profile/info | 获取用户资料 |
| PUT | /api/plant/profile/update | 更新用户资料 |
| POST | /api/plant/config/level/list | 等级配置列表 |
| POST | /api/plant/config/badge/list | 徽章配置列表 |
---
## 五、电台服务 (radio-api) — 端口 9005
### 5.1 公开接口
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/radio/callback/wechatpay | 微信支付回调 |
### 5.2 分类管理(需鉴权)
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/radio/category/create | 创建分类 |
| PUT | /api/radio/category/update | 更新分类 |
| DELETE | /api/radio/category/delete | 删除分类 |
| POST | /api/radio/category/list | 分类列表 |
### 5.3 频道管理
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/radio/channel/create | 创建频道 |
| PUT | /api/radio/channel/update | 更新频道 |
| DELETE | /api/radio/channel/delete | 删除频道 |
| POST | /api/radio/channel/list | 频道列表 |
| GET | /api/radio/channel/:id | 频道详情 |
### 5.4 节目管理
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/radio/program/create | 创建节目 |
| PUT | /api/radio/program/update | 更新节目 |
| DELETE | /api/radio/program/delete | 删除节目 |
| POST | /api/radio/program/list | 节目列表 |
| GET | /api/radio/program/:id | 节目详情 |
| POST | /api/radio/program/tts | TTS生成音频 |
### 5.5 音色管理
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/radio/voice/create | 创建音色 |
| PUT | /api/radio/voice/update | 更新音色 |
| DELETE | /api/radio/voice/delete | 删除音色 |
| POST | /api/radio/voice/list | 音色列表 |
### 5.6 用户互动
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/radio/interaction/like | 点赞/取消 |
| POST | /api/radio/interaction/favorite | 收藏/取消 |
| POST | /api/radio/interaction/comment | 评论节目 |
| POST | /api/radio/interaction/history | 记录播放历史 |
| POST | /api/radio/interaction/history/list | 播放历史 |
| POST | /api/radio/interaction/favorite/list | 收藏列表 |
### 5.7 订阅/支付/VIP
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/radio/subscription/list | 我的订阅 |
| POST | /api/radio/pay/create | 创建支付订单 |
| POST | /api/radio/vip/list | VIP配置列表 |
| GET | /api/radio/vip/info | 我的VIP信息 |
### 5.8 数据分析
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/radio/analytics/overview | 数据概览 |
| POST | /api/radio/analytics/channel | 频道数据 |
| POST | /api/radio/analytics/user | 用户数据 |
---
## 六、统一规约
### 6.1 鉴权方式
所有需要鉴权的接口,请在请求头中携带:
```
Authorization: Bearer {token}
```
### 6.2 统一响应格式
```json
{
"code": 200, // 200成功,400失败,401未授权
"msg": "success",
"data": {} // 具体数据
}
```
### 6.3 分页请求格式
```json
{ "current": 1, "pageSize": 10 }
```
### 6.4 分页响应格式
```json
{
"list": [],
"total": 100,
"current": 1,
"size": 10
}
```
### 6.5 删除请求格式
```json
{ "ids": ["id1", "id2"] }
```
---
## 七、数据库设计说明
### 7.1 用户扩展表设计
基础用户表 `sundynix_user` 只存储**认证和通用信息**(账号、密码、OpenID、手机号等),各业务服务通过扩展表存储业务特有的用户数据:
```
sundynix_user (基础)
├── sundynix_plant_user_profile (植物服务扩展:等级、阳光值、养护统计)
└── sundynix_radio_user_profile (电台服务扩展:VIP状态、VIP到期时间)
```
**设计原则:** 新增业务产品时,只需创建新的扩展表,无需修改基础用户表。
### 7.2 数据库拆分
| 数据库 | 包含的表 |
|--------|---------|
| sundynix_user | sundynix_user, sundynix_user_role |
| sundynix_file | sundynix_oss |
| sundynix_system | sundynix_client, sundynix_role, sundynix_menu, sundynix_role_menu, sundynix_user_role, sundynix_dict, sundynix_operation_record |
| sundynix_plant | sundynix_plant_user_profile, sundynix_my_plant, sundynix_care_plan, sundynix_care_record, sundynix_care_task, sundynix_growth_record, sundynix_wiki, sundynix_wiki_class, sundynix_post, sundynix_post_comment, sundynix_post_like, sundynix_post_topic, sundynix_user_star, sundynix_exchange_item, sundynix_exchange_order, sundynix_level_config, sundynix_badge_config, sundynix_user_badge, sundynix_ai_chat_history |
| sundynix_radio | sundynix_radio_user_profile, sundynix_radio_category, sundynix_radio_channel, sundynix_radio_program, sundynix_radio_voice, sundynix_radio_like, sundynix_radio_favorite, sundynix_radio_comment, sundynix_radio_history, sundynix_radio_subscription, sundynix_radio_subscription_order, sundynix_radio_pay_notify, sundynix_radio_vip_config, sundynix_radio_listen_log |