Shadow Editor Pro 3D 资源接口
场景管理
场景管理提供3D场景的完整生命周期管理,包括创建、编辑、保存、加载、发布等功能。
数据类型
Scene
interface Scene {
// 场景ID
id?: string
// 场景名称
name?: string
// 类别ID
categoryId?: string
// 类别名称
categoryName?: string
// 场景数据(JSON)
data?: string
// 缩略图
thumbnail?: string
// 创建时间
createTime?: string
// 更新时间
updateTime?: string
}
API 接口
1. 获取场景列表
接口: GET /api/scene/list
描述: 获取所有场景列表
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| categoryId | string | 否 | 按类别筛选 |
响应示例:
{
"success": true,
"data": [
{
"id": "1",
"name": "示例场景",
"categoryId": "1",
"categoryName": "默认分类",
"thumbnail": "/thumbnails/scene_1.jpg",
"createTime": "2024-10-19 10:00:00",
"updateTime": "2024-10-19 10:00:00"
}
]
}
2. 添加场景
接口: POST /api/scene/add
描述: 创建新场景
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 场景名称 |
| categoryId | string | 否 | 类别ID |
| data | string | 否 | 场景数据(JSON字符串) |
| thumbnail | string | 否 | 缩略图Base64数据 |
响应示例:
{
"success": true,
"message": "场景创建成功"
}
3. 更新场景
接口: POST /api/scene/update
描述: 更新场景信息
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 场景ID |
| name | string | 否 | 场景名称 |
| categoryId | string | 否 | 类别ID |
| data | string | 否 | 场景数据 |
| thumbnail | string | 否 | 缩略图 |
响应示例:
{
"success": true,
"message": "场景更新成功"
}
4. 删除场景
接口: POST /api/scene/remove
描述: 删除场景
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 场景ID |
响应示例:
{
"success": true,
"message": "场景删除成功"
}
5. 获取场景历史版本
接口: GET /api/scene/history
描述: 获取场景的历史版本列表
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 场景ID |
响应示例:
{
"success": true,
"data": [
{
"version": "v1",
"createTime": "2024-10-19 10:00:00",
"description": "初始版本"
},
{
"version": "v2",
"createTime": "2024-10-19 10:30:00",
"description": "添加模型"
}
]
}
6. 加载场景
接口: GET /api/scene/load
描述: 加载指定场景
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 场景ID |
| version | string | 否 | 版本号(不指定则加载最新版本) |
响应示例:
{
"success": true,
"data": {
"scene": {
"type": "Scene",
"uuid": "scene-uuid",
"background": null,
"fog": null,
"children": []
},
"metadata": {
"version": "0.0.1",
"type": "Object",
"generator": "ShadowEditorPro"
}
}
}
7. 发布场景
接口: POST /api/scene/publish
描述: 发布场景为独立HTML应用
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 场景ID |
| options | string | 否 | 发布选项(JSON字符串) |
发布选项示例:
{
"includeResources": true,
"minify": true,
"offline": false
}
响应示例:
{
"success": true,
"data": {
"url": "/published/scene_1.html",
"size": 2048576
}
}
8. 导出场景为模型
接口: POST /api/scene/export
描述: 将场景导出为3D模型文件
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 场景ID |
| format | string | 是 | 导出格式(gltf/glb/obj/ply/stl/dae) |
响应示例:
{
"success": true,
"data": {
"url": "/exports/scene_1.glb",
"size": 1048576
}
}
模型管理
模型管理提供3D模型文件的完整管理功能,支持多种模型格式。
数据类型
Mesh
interface Mesh {
// 模型ID
id?: string
// 模型名称
name?: string
// 类别ID
categoryId?: string
// 类别名称
categoryName?: string
// 模型类型
type?: MeshType
// 文件名
filename?: string
// 文件大小
size?: number
// 下载地址
url?: string
// 缩略图
thumbnail?: string
// 创建时间
createTime?: string
// 更新时间
updateTime?: string
}
MeshType
type MeshType =
| 'unknown'
| '3ds'
| '3mf'
| 'amf'
| 'assimp'
| 'awd'
| 'babylon'
| 'babylonmeshdata'
| 'bvh'
| 'ctm'
| 'dae'
| 'drc'
| 'fbx'
| 'gcode'
| 'glb'
| 'gltf'
| 'js'
| 'json'
| 'kmz'
| 'md2'
| 'nrrd'
| 'obj'
| 'pcd'
| 'pdb'
| 'playcanvas'
| 'ply'
| 'pmd'
| 'pmx'
| 'prwm'
| 'sea3d'
| 'stl'
| 'vrm'
| 'vrml'
| 'vtk'
| 'wrl'
| 'x'
API 接口
1. 获取模型列表
接口: GET /api/mesh/list
描述: 获取所有模型列表
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| categoryId | string | 否 | 按类别筛选 |
| type | MeshType | 否 | 按类型筛选 |
响应示例:
{
"success": true,
"data": [
{
"id": "1",
"name": "立方体",
"type": "gltf",
"filename": "cube.gltf",
"size": 1024,
"categoryId": "1",
"categoryName": "几何体",
"url": "/meshes/cube.gltf",
"thumbnail": "/thumbnails/mesh_1.jpg",
"createTime": "2024-10-19 10:00:00"
}
]
}
2. 上传模型
接口: POST /api/mesh/add
描述: 上传模型文件
请求参数:
- Content-Type:
multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 模型文件(支持多文件上传) |
| name | string | 否 | 模型名称 |
| categoryId | string | 否 | 类别ID |
响应示例:
{
"success": true,
"message": "模型上传成功",
"data": {
"id": "1",
"url": "/meshes/new_model.glb"
}
}
3. 更新模型
接口: POST /api/mesh/update
描述: 更新模型信息
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 模型ID |
| name | string | 否 | 模型名称 |
| categoryId | string | 否 | 类别ID |
| thumbnail | string | 否 | 缩略图Base64数据 |
响应示例:
{
"success": true,
"message": "模型更新成功"
}
4. 删除模型
接口: POST /api/mesh/remove
描述: 删除模型
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 模型ID |
响应示例:
{
"success": true,
"message": "模型删除成功"
}
材质管理
材质管理提供材质资源的保存和加载功能。
数据类型
Material
interface Material {
// 材质ID
id?: string
// 材质名称
name?: string
// 类别ID
categoryId?: string
// 类别名称
categoryName?: string
// 材质数据(JSON字符串)
data?: string
// 缩略图
thumbnail?: string
// 创建时间
createTime?: string
// 更新时间
updateTime?: string
}
API 接口
1. 获取材质列表
接口: GET /api/material/list
描述: 获取所有材质列表
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 否 | 材质ID(指定则返回单个材质) |
| categoryId | string | 否 | 按类别筛选 |
响应示例:
{
"success": true,
"data": [
{
"id": "1",
"name": "红色材质",
"categoryId": "1",
"categoryName": "默认分类",
"data": "{\"type\":\"MeshStandardMaterial\",\"color\":16711680}",
"thumbnail": "/thumbnails/material_1.jpg",
"createTime": "2024-10-19 10:00:00"
}
]
}
2. 保存材质
接口: POST /api/material/add
描述: 保存材质到材质库
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 材质名称 |
| data | string | 是 | 材质数据(JSON字符串) |
| categoryId | string | 否 | 类别ID |
| thumbnail | string | 否 | 缩略图 |
响应示例:
{
"success": true,
"message": "材质保存成功"
}
3. 更新材质
接口: POST /api/material/update
描述: 更新材质信息
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 材质ID |
| name | string | 否 | 材质名称 |
| categoryId | string | 否 | 类别ID |
| thumbnail | string | 否 | 缩略图 |
响应示例:
{
"success": true,
"message": "材质更新成功"
}
4. 删除材质
接口: POST /api/material/remove
描述: 删除材质
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 材质ID |
响应示例:
{
"success": true,
"message": "材质删除成功"
}
动画管理
动画管理提供MikuMikuDance动画文件的管理功能。
数据类型
Animation
interface Animation {
// 动画ID
id?: string
// 动画名称
name?: string
// 类别ID
categoryId?: string
// 类别名称
categoryName?: string
// 动画类型
type?: AnimationType
// 文件名
filename?: string
// 文件大小
size?: number
// 下载地址
url?: string
// 缩略图
thumbnail?: string
// 创建时间
createTime?: string
// 更新时间
updateTime?: string
}
AnimationType
type AnimationType = 'unknown' | 'vmd' | 'vpd'
API 接口
1. 获取动画列表
接口: GET /api/animation/list
描述: 获取所有动画列表
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| categoryId | string | 否 | 按类别筛选 |
| type | AnimationType | 否 | 按类型筛选 |
响应示例:
{
"success": true,
"data": [
{
"id": "1",
"name": "舞蹈动画",
"type": "vmd",
"filename": "dance.vmd",
"size": 204800,
"categoryId": "1",
"categoryName": "默认分类",
"url": "/animations/dance.vmd",
"thumbnail": "/thumbnails/animation_1.jpg",
"createTime": "2024-10-19 10:00:00"
}
]
}
2. 上传动画
接口: POST /api/animation/add
描述: 上传动画文件
请求参数:
- Content-Type:
multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 动画文件 |
| name | string | 否 | 动画名称 |
| categoryId | string | 否 | 类别ID |
响应示例:
{
"success": true,
"message": "动画上传成功"
}
3. 更新动画
接口: POST /api/animation/update
描述: 更新动画信息
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 动画ID |
| name | string | 否 | 动画名称 |
| categoryId | string | 否 | 类别ID |
| thumbnail | string | 否 | 缩略图 |
响应示例:
{
"success": true,
"message": "动画更新成功"
}
4. 删除动画
接口: POST /api/animation/remove
描述: 删除动画
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 动画ID |
响应示例:
{
"success": true,
"message": "动画删除成功"
}
音频管理
音频管理提供音频资源的管理功能,支持为场景添加背景音乐。
数据类型
Audio
interface Audio {
// 音频ID
id?: string
// 音频名称
name?: string
// 类别ID
categoryId?: string
// 类别名称
categoryName?: string
// 文件名
filename?: string
// 文件大小
size?: number
// 下载地址
url?: string
// 缩略图
thumbnail?: string
// 创建时间
createTime?: string
// 更新时间
updateTime?: string
}
API 接口
1. 获取音频列表
接口: GET /api/audio/list
描述: 获取所有音频列表
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| categoryId | string | 否 | 按类别筛选 |
响应示例:
{
"success": true,
"data": [
{
"id": "1",
"name": "背景音乐",
"filename": "bgm.mp3",
"size": 5242880,
"categoryId": "1",
"categoryName": "默认分类",
"url": "/audios/bgm.mp3",
"thumbnail": "/thumbnails/audio_1.jpg",
"createTime": "2024-10-19 10:00:00"
}
]
}
2. 上传音频
接口: POST /api/audio/add
描述: 上传音频文件
请求参数:
- Content-Type:
multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 音频文件(mp3/wav/ogg) |
| name | string | 否 | 音频名称 |
| categoryId | string | 否 | 类别ID |
响应示例:
{
"success": true,
"message": "音频上传成功"
}
3. 更新音频
接口: POST /api/audio/update
描述: 更新音频信息
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 音频ID |
| name | string | 否 | 音频名称 |
| categoryId | string | 否 | 类别ID |
| thumbnail | string | 否 | 缩略图 |
响应示例:
{
"success": true,
"message": "音频更新成功"
}
4. 删除音频
接口: POST /api/audio/remove
描述: 删除音频
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 音频ID |
响应示例:
{
"success": true,
"message": "音频删除成功"
}
视频管理
视频管理提供视频贴图资源的管理功能。
数据类型
Video
interface Video {
// 视频ID
id?: string
// 视频名称
name?: string
// 类别ID
categoryId?: string
// 类别名称
categoryName?: string
// 文件名
filename?: string
// 文件大小
size?: number
// 下载地址
url?: string
// 缩略图
thumbnail?: string
// 创建时间
createTime?: string
// 更新时间
updateTime?: string
}
API 接口
1. 获取视频列表
接口: GET /api/video/list
描述: 获取所有视频列表
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| categoryId | string | 否 | 按类别筛选 |
响应示例:
{
"success": true,
"data": [
{
"id": "1",
"name": "天空视频",
"filename": "sky.mp4",
"size": 10485760,
"categoryId": "1",
"categoryName": "默认分类",
"url": "/videos/sky.mp4",
"thumbnail": "/thumbnails/video_1.jpg",
"createTime": "2024-10-19 10:00:00"
}
]
}
2. 上传视频
接口: POST /api/video/add
描述: 上传视频文件
请求参数:
- Content-Type:
multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 视频文件(mp4/webm) |
| name | string | 否 | 视频名称 |
| categoryId | string | 否 | 类别ID |
响应示例:
{
"success": true,
"message": "视频上传成功"
}
3. 更新视频
接口: POST /api/video/update
描述: 更新视频信息
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 视频ID |
| name | string | 否 | 视频名称 |
| categoryId | string | 否 | 类别ID |
| thumbnail | string | 否 | 缩略图 |
响应示例:
{
"success": true,
"message": "视频更新成功"
}
4. 删除视频
接口: POST /api/video/remove
描述: 删除视频
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 视频ID |
响应示例:
{
"success": true,
"message": "视频删除成功"
}
贴图管理
贴图管理提供贴图、天空盒、HDR等资源的管理功能。
数据类型
Map
interface Map {
// 贴图ID
id?: string
// 贴图名称
name?: string
// 类别ID
categoryId?: string
// 类别名称
categoryName?: string
// 文件名
filename?: string
// 文件大小
size?: number
// 下载地址
url?: string
// 缩略图
thumbnail?: string
// 创建时间
createTime?: string
// 更新时间
updateTime?: string
}
API 接口
1. 获取贴图列表
接口: GET /api/map/list
描述: 获取所有贴图列表
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| categoryId | string | 否 | 按类别筛选 |
响应示例:
{
"success": true,
"data": [
{
"id": "1",
"name": "木纹贴图",
"filename": "wood.jpg",
"size": 262144,
"categoryId": "1",
"categoryName": "默认分类",
"url": "/maps/wood.jpg",
"thumbnail": "/thumbnails/map_1.jpg",
"createTime": "2024-10-19 10:00:00"
}
]
}
2. 上传贴图
接口: POST /api/map/add
描述: 上传贴图文件
请求参数:
- Content-Type:
multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 贴图文件(支持多文件上传) |
| name | string | 否 | 贴图名称 |
| categoryId | string | 否 | 类别ID |
| type | string | 否 | 类型(image/skybox/skybox_sphere/hdr/video) |
响应示例:
{
"success": true,
"message": "贴图上传成功"
}
3. 更新贴图
接口: POST /api/map/update
描述: 更新贴图信息
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 贴图ID |
| name | string | 否 | 贴图名称 |
| categoryId | string | 否 | 类别ID |
| thumbnail | string | 否 | 缩略图 |
响应示例:
{
"success": true,
"message": "贴图更新成功"
}
4. 删除贴图
接口: POST /api/map/remove
描述: 删除贴图
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 贴图ID |
响应示例:
{
"success": true,
"message": "贴图删除成功"
}
字体管理
字体管理提供字体文件的管理功能,用于创建3D文字。
数据类型
Typeface
interface Typeface {
// 字体ID
id?: string
// 字体名称
name?: string
// 类别ID
categoryId?: string
// 类别名称
categoryName?: string
// 文件名
filename?: string
// 文件大小
size?: number
// 下载地址
url?: string
// 缩略图
thumbnail?: string
// 创建时间
createTime?: string
// 更新时间
updateTime?: string
}
API 接口
1. 获取字体列表
接口: GET /api/typeface/list
描述: 获取所有字体列表
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| categoryId | string | 否 | 按类别筛选 |
响应示例:
{
"success": true,
"data": [
{
"id": "1",
"name": "黑体",
"filename": "helvetiker_regular.typeface.json",
"size": 1048576,
"categoryId": "1",
"categoryName": "默认分类",
"url": "/typefaces/helvetiker_regular.typeface.json",
"createTime": "2024-10-19 10:00:00"
}
]
}
2. 上传字体
接口: POST /api/typeface/add
描述: 上传字体文件
请求参数:
- Content-Type:
multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 字体文件(ttf/otf/json) |
| name | string | 否 | 字体名称 |
| categoryId | string | 否 | 类别ID |
响应示例:
{
"success": true,
"message": "字体上传成功"
}
3. 更新字体
接口: POST /api/typeface/update
描述: 更新字体信息
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 字体ID |
| name | string | 否 | 字体名称 |
| categoryId | string | 否 | 类别ID |
响应示例:
{
"success": true,
"message": "字体更新成功"
}
4. 删除字体
接口: POST /api/typeface/remove
描述: 删除字体
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 字体ID |
响应示例:
{
"success": true,
"message": "字体删除成功"
}
截图管理
截图管理提供场景截图的保存和管理功能。
数据类型
Screenshot
interface Screenshot {
// 截图ID
id?: string
// 截图名称
name?: string
// 文件名
filename?: string
// 文件大小
size?: number
// 下载地址
url?: string
// 缩略图
thumbnail?: string
// 创建时间
createTime?: string
}
API 接口
1. 获取截图列表
接口: GET /api/screenshot/list
描述: 获取所有截图列表
响应示例:
{
"success": true,
"data": [
{
"id": "1",
"name": "场景截图",
"filename": "screenshot_001.jpg",
"size": 262144,
"url": "/screenshots/screenshot_001.jpg",
"thumbnail": "/thumbnails/screenshot_001.jpg",
"createTime": "2024-10-19 10:00:00"
}
]
}
2. 保存截图
接口: POST /api/screenshot/add
描述: 保存截图
请求参数:
- Content-Type:
multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 截图文件 |
| name | string | 否 | 截图名称 |
响应示例:
{
"success": true,
"message": "截图保存成功"
}
3. 删除截图
接口: POST /api/screenshot/remove
描述: 删除截图
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 截图ID |
响应示例:
{
"success": true,
"message": "截图删除成功"
}
缩略图管理
缩略图管理提供缩略图生成和管理功能。
API 接口
1. 上传缩略图
接口: POST /api/thumbnail/add
描述: 上传缩略图或图片并生成缩略图
请求参数:
- Content-Type:
multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 图片文件 |
响应示例:
{
"success": true,
"data": [
{
"id": "1",
"filename": "thumbnail.jpg",
"url": "/thumbnails/thumbnail.jpg",
"size": 16384
}
]
}
分类管理
分类管理提供资源分类的管理功能,用于组织和管理各类资源。
数据类型
Category
interface Category {
// 分类ID
id?: string
// 分类名称
name?: string
// 父分类ID
parentId?: string
// 创建时间
createTime?: string
// 更新时间
updateTime?: string
}
API 接口
1. 获取分类列表
接口: GET /api/category/list
描述: 获取所有分类列表
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 否 | 资源类型(scene/mesh/material等) |
| parentId | string | 否 | 父分类ID |
响应示例:
{
"success": true,
"data": [
{
"id": "1",
"name": "默认分类",
"parentId": null,
"createTime": "2024-10-19 10:00:00"
},
{
"id": "2",
"name": "几何体",
"parentId": "1",
"createTime": "2024-10-19 10:00:00"
}
]
}
2. 添加分类
接口: POST /api/category/add
描述: 创建新分类
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 分类名称 |
| parentId | string | 否 | 父分类ID |
| type | string | 否 | 资源类型 |
响应示例:
{
"success": true,
"message": "分类创建成功"
}
3. 更新分类
接口: POST /api/category/update
描述: 更新分类信息
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 分类ID |
| name | string | 否 | 分类名称 |
| parentId | string | 否 | 父分类ID |
响应示例:
{
"success": true,
"message": "分类更新成功"
}
4. 删除分类
接口: POST /api/category/remove
描述: 删除分类
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 分类ID |
响应示例:
{
"success": true,
"message": "分类删除成功"
}
摘要统计
API 接口
1. 获取资源摘要
接口: GET /api/summary/all
描述: 获取所有资源的统计摘要
响应示例:
{
"success": true,
"data": {
"sceneCount": 10,
"meshCount": 50,
"materialCount": 20,
"animationCount": 5,
"audioCount": 8,
"videoCount": 3,
"mapCount": 30,
"typefaceCount": 5,
"screenshotCount": 15
}
}
推荐阅读
评论 (0)
发表评论
暂无评论,快来发表第一条评论吧!