api接口
领域模型
一、实体
在详细介绍各controller中的接口前,有必要先介绍蓝眼云盘中的各实体,所有的实体基类均为Base
Base
Base定义如下,所有会在数据库中持久化的实体均会继承Base,Controller在返回实体给前端时,会将字段和值序列化成json字符串,其中键就和每个实体字段后面的json标签一致,下文也会有详细例子介绍
type Base struct {
    //唯一标识
	Uuid       string    `gorm:"primary_key" json:"uuid"`
	//排序用的字段,一般是时间戳来表示序号先后
	Sort       int64     `json:"sort"`
	//修改时间
	UpdateTime time.Time `json:"updateTime"`
	//创建时间
	CreateTime time.Time `json:"createTime"`
}
 2
3
4
5
6
7
8
9
10
Pager
在前端请求一个列表时,通常返回的都是一个Pager,Pager中就是装的各个实体的列表
type Pager struct {
    //当前页数,0基
	Page       int         `json:"page"`
	//每页的大小
	PageSize   int         `json:"pageSize"`
	//总的条目数
	TotalItems int         `json:"totalItems"`
	//总的页数
	TotalPages int         `json:"totalPages"`
	//实体的数组
	Data       interface{} `json:"data"`
}
 2
3
4
5
6
7
8
9
10
11
12
Matter
Matter是代表文件(文件夹是一种特殊的文件),为了避免和系统的file重复,这里使用matter,这个实体是蓝眼云盘最重要也是最基本的实体:
type Matter struct {
    //继承Base,也就是说Base中的Uuid,Sort,ModifyTime,CreateTime这里也会有
	Base
	//所在的文件夹的uuid,如果在根目录下,这个字段为 root
	Puuid    string  `json:"puuid"`
	//创建这个文件的用户uuid
	UserUuid string  `json:"userUuid"`
	//创建这个文件的用户名
    Username string  `json:"username"`
	//该文件是否是文件夹
	Dir      bool    `json:"dir"`
	//文件名,带后缀名。例如:avatar.jpg
	Name     string  `json:"name"`
    //文件的md5值,目前该功能尚未实现,作为保留字段
	Md5      string  `json:"md5"`
	//文件大小,单位 byte。比如某个文件1M大,那么这里就为: 1048576
	Size     int64   `json:"size"`
	//文件是否为私有,如果true则该文件只能作者或超级管理员可以下载,如果false所有人均可以通过下载链接下载
	Privacy  bool    `json:"privacy"`
	//文件在磁盘中的路径,前端无需关心这个字段。但是后端在寻找文件时这个字段非常关键
	Path     string  `json:"path"`
	//文件下载次数
    Times    int64   `json:"times"`
	//该文件的父级matter,该字段不会持久化到数据集,属于获取matter详情时临时组装出来的
	Parent   *Matter `gorm:"-" json:"parent"`
	//该文件的子级matter数组,该字段不会持久化到数据集,属于获取matter详情时临时组装出来的
    Children *Matter `gorm:"-" json:"-"`
}
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
User
User是代表用户:
type User struct {
    //继承Base,功能同上
	Base
	//角色,有以下枚举值:GUEST(游客,不会持久化到数据库),USER(普通用户),ADMINISTRATOR(超级管理员)
	Role      string    `json:"role"`
	//用户名,在Matter的path字段中很有用
	Username  string    `json:"username"`
	//密码,默认不会返回给前端
	Password  string    `json:"-"`
	//头像Url
	AvatarUrl string    `json:"avatarUrl"`
	//上次登录时的ip
	LastIp    string    `json:"lastIp"`
	//上次登录的时间
	LastTime  time.Time `json:"lastTime"`
	//该用户允许上传的单文件最大大小
	SizeLimit int64     `json:"sizeLimit"`
	//该用户允许上传的文件总量最大大小
    TotalSizeLimit int64     `json:"totalSizeLimit"`
    //该用户已上传的文件总量大小
    TotalSize int64     `json:"totalSize"`
	//状态,有以下枚举值:OK(正常),DISABLED(被禁用)
	Status    string    `json:"status"`
}
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Preference
Preference是整个网站的偏好设置,网站的名称,logo,favicon,版权,备案号等信息均由这个实体负责。定义如下:
type Preference struct {
    //继承Base,功能同上
	Base
	//网站名称
	Name        string `json:"name"`
	//网站的logo url
	LogoUrl     string `json:"logoUrl"`
	//版权信息
	Copyright   string `json:"copyright"`
	Record      string `json:"record"`
    //大小限制
    DownloadDirMaxSize    int64 `json:"downloadDirMaxSize"`
    //文件数量
    DownloadDirMaxNum     int64 `json:"downloadDirMaxNum"` 
    //用户默认总大小限制
    DefaultTotalSizeLimit int64 `json:"defaultTotalSizeLimit"`
    //是否允许自主注册
    AllowRegister bool `json:"allowRegister"`  
	//当前运行的蓝眼博客版本,这个字段不可修改,每次发版时硬编码
	Version     string `json:"version"`
}
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
UploadToken
用于给陌生人上传的token
type UploadToken struct {
    //继承Base,功能同上
	Base
	//颁发该token的用户,系统中任何用户都能颁发token
	UserUuid   string    `json:"userUuid"`
	//使用这个token上传文件就必须上传在这个文件夹下
	FolderUuid string    `json:"folderUuid"`
	//陌生人上传好了的文件uuid
	MatterUuid string    `json:"matterUuid"`
	//过期时间
	ExpireTime time.Time `json:"expireTime"`
	//使用这个token上传文件就必须是这个文件名
	Filename   string    `json:"filename"`
	//使用这个token上传文件就必须是这个公私有性
	Privacy    bool      `json:"privacy"`
	//使用这个token上传文件就必须这个大小
	Size       int64     `json:"size"`
	//使用这个token上传文件陌生人的ip
	Ip         string    `json:"ip"`
}
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DownloadToken
用于给陌生人下载的token,一个matter如果Privacy=true,那么就意味着只有自己或者超级管理员可以下载,如果让某些自己信任的用户也能下载,那么就需要生成DownloadToken给这些用户来下载
type DownloadToken struct {
    //继承Base,功能同上
	Base
	//颁发该token的用户
	UserUuid   string    `json:"userUuid"`
	//该token只能下载这个文件
	MatterUuid string    `json:"matterUuid"`
	//有效期截止
	ExpireTime time.Time `json:"expireTime"`
	//下载者的ip
	Ip         string    `json:"ip"`
}
 2
3
4
5
6
7
8
9
10
11
12
13
Dashboard
蓝眼云盘的控制面板,显示云盘的统计数据:PV/UV、'活跃'文件、活跃IP
type Dashboard struct {
    //继承Base,功能同上
	Base
	//环比,表示连续2个单位周期(比如连续两周)内的量的变化比。
	InvokeNum      int64  `json:"invokeNum"`
	//总环比
	TotalInvokeNum int64  `json:"totalInvokeNum"`
	//当日UV
	Uv             int64  `json:"uv"`  
	//总UV           
	TotalUv        int64  `json:"totalUv"`    
	//当日文件总数
	MatterNum      int64  `json:"matterNum"`    
	//总文件总数
	TotalMatterNum int64  `json:"totalMatterNum"`
	//当日文件总大小
	FileSize       int64  `json:"fileSize"`    
	//文件总大小
	TotalFileSize  int64  `json:"totalFileSize"` 
	//平均耗时,反映了服务器整体的响应速度 
	AvgCost        int64  `json:"avgCost"`
	//日期
	Dt             string `json:"dt"`
}
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Share
文件分享记录
type Share struct {
    //继承Base,功能同上
	Base
	//分享该记录的名称
	Name           string    `json:"name"`
	//分享类型,文件/文件夹/混合类型
	ShareType      string    `json:"shareType"`
	//分享该记录的用户
	Username       string    `json:"username"`
	//分享该记录的用户标识
	UserUuid       string    `json:"userUuid"`
	//下载次数
	DownloadTimes  int64     `json:"downloadTimes"`
	//提取码
	Code           string    `json:"code"`
	//是否过期失效
	ExpireInfinity bool      `json:"expireInfinity"`
	//过期时间
	ExpireTime     time.Time `json:"expireTime"`
	//文件夹文件
	DirMatter      *Matter   `json:"dirMatter"`
	//文件集合
	Matters        []*Matter `json:"matters"`
}
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
WebResult
WebResult并不是会持久化到数据库中实体,WebResult是在controller返回数据给前端时包装的一层,有了WebResult后每个接口返回的数据会更加统一,方便了前端的统一处理
type WebResult struct {
    //状态码,具体每个码的意义参考下文
	Code int       `json:"code"`
	//一句话描述请求结果,通常会是出错时指明出错原因,或者修改权限等小操作时提示的`操作成功`
	Msg  string      `json:"msg"`
	//内容可能是一个实体,也可能是一个 Pager.
	Data interface{} `json:"data"`
}
 2
3
4
5
6
7
8
9
状态码对应关系如下:
const (
	//正常
	RESULT_CODE_OK = 200
	//未登录
	RESULT_CODE_LOGIN = -400
	//没有权限
	RESULT_CODE_UNAUTHORIZED = -401
	//请求错误
	RESULT_CODE_BAD_REQUEST = -402
	//没有找到
	RESULT_CODE_NOT_FOUND = -404
	//登录过期
	RESULT_CODE_LOGIN_EXPIRED = -405
	//该登录用户不是有效用户
	RESULT_CODE_LOGIN_INVALID = -406
	//提交的表单验证不通过
	RESULT_CODE_FORM_INVALID = -410
	//请求太频繁
	RESULT_CODE_FREQUENCY = -420
	//服务器出错
	RESULT_CODE_SERVER_ERROR = -500
	//远程服务不可用
	RESULT_CODE_NOT_AVAILABLE = -501
	//并发异常
	RESULT_CODE_CONCURRENCY = -511
	//远程微服务没有找到
	RESULT_CODE_SERVICE_NOT_FOUND = -600
	//远程微服务连接超时
	RESULT_CODE_SERVICE_TIME_OUT = -610
	//通用的异常
	RESULT_CODE_UTIL_EXCEPTION = -700
)
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
二、返回规范
蓝眼云盘采用前后端分离的模式,前端调用后端接口时,url均以/api开头,返回均是json字符串
返回的json字符串的key均为小写开头的驼峰法,具体参考实体类中
json标签返回的时间格式均为
YYYY-MM-dd HH:mm:ss(例如:2018-01-06 17:57:00)
返回内容均是由WebResult进行包装,因此具有高度的统一性,在这里我们约定一些说法,后面介绍Controller时便不再赘述
返回一个
XX实体指的是
WebResult的Code=200,Data=一个XX实体对象例:返回一个User,则前端会收到以下json字符串:
{ "code": 200, "msg": "", "data": { "uuid": "eed2c66d-1de6-47ff-645e-b67beaa10365", "sort": 1514803034507, "modifyTime": "2018-01-06 18:00:58", "createTime": "2018-01-01 18:37:15", "role": "USER", "username": "demo", "avatarUrl": "/api/alien/download/ea490cb6-368e-436d-71c0-fcfb08854c80/1180472.png", "lastIp": "124.78.220.82", "lastTime": "2018-01-06 18:00:58", "sizeLimit": 1048576, "totalSizeLimit": 104857600, "totalSize": 10485760, "status": "OK" } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19返回
XX的Pager指的是
WebResult的Code=200,Data=XX的Pager例:返回
User的Pager,则前端会收到以下json字符串:{ "code": 200, "msg": "", "data": { "page": 0, "pageSize": 10, "totalItems": 2, "totalPages": 1, "data": [ { "uuid": "6a661938-8289-4957-4096-5a1b584bf371", "sort": 1515057859613, "modifyTime": "2018-01-04 17:26:01", "createTime": "2018-01-04 17:24:20", "role": "ADMINISTRATOR", "username": "simba", "avatarUrl": "/api/alien/download/d1e453cb-3170-4bdb-73f2-fa0372ee017b/1180480.png", "lastIp": "180.173.103.207", "lastTime": "2018-01-04 17:26:01", "sizeLimit": -1, "totalSizeLimit": 104857600, "totalSize": 10485760, "status": "OK" }, { "uuid": "e59be6a3-f806-463e-553a-4c5892eedf78", "sort": 1514881002975, "modifyTime": "2018-01-02 16:16:43", "createTime": "2018-01-02 16:16:43", "role": "USER", "username": "blog_dev", "avatarUrl": "/api/alien/download/fdca6eee-d009-4eb3-5ad4-15ba3701cb2e/jump.jpg", "lastIp": "", "lastTime": "2018-01-02 16:16:43", "sizeLimit": 1048576, "totalSizeLimit": 104857600, "totalSize": 10485760, "status": "OK" } ] } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42返回错误信息:yyy
指的是
WebResult的Code=-400,Msg=yyy(这里的Code具体值参考上文的code表)例:返回错误信息:"【新建文件夹】已经存在了,请使用其他名称。",则前端会收到以下json字符串:
{ "code": -700, "msg": "【新建文件夹】已经存在了,请使用其他名称。", "data": null }1
2
3
4
5返回成功信息:zzz
指的是
WebResult的Code=200,Msg=zzz(这里的Code具体值参考上文的code表)例:返回成功信息:"删除成功。",则前端会收到以下json字符串:
{ "code": 200, "msg": "删除成功。", "data": null }1
2
3
4
5
三、接口
蓝眼云盘所有的接口均定义在controller中,总共定义了以下controller:
| 名称 | 所在文件 | 描述 | 
|---|---|---|
| PreferenceController | preference_controller.go |  网站标题,logo,版权说明等信息的增删改查 | 
| MatterController | matter_controller.go |  站内创建文件夹,上传文件,删除文件,修改权限等 | 
| UserController | user_controller.go |  登录,管理操作站内用户 | 
| AlienController | alien_controller.go |  第三方授权上传,下载,预处理 | 
| DashboardController | dashboard_controller.go |  云盘控制面板,查看整体数据,PU/PV访问情况 | 
| ShareController | share_controller.go |  分享,操作、获取、下载分享文件/文件夹 | 
每个接口都有不同的访问级别,系统中定义了三种访问级别,分别是:
游客 < 注册用户 < 管理员
PreferenceController
该Controller负责网站中的偏好设置,主要操作Preference实体
/api/preference/fetch
功能:读取网站偏好设置,网站名称,logo,版权,备案信息,zip下载大小限制,zip下载数量限制,用户默认总大小限制,是否允许自主注册均从此接口读取
访问级别:游客,注册用户,管理员
请求参数:无
返回: 一个Preference实体
/api/preference/edit
功能:编辑网站偏好设置,修改网站名称,logo,版权,备案信息,zip下载大小限制,zip下载数量限制,用户默认总大小限制,是否允许自主注册
访问级别:管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| name | string |  必填 | 网站名称 | 
| logoUrl | string |  选填 | 网站logoUrl,如果不填默认使用蓝眼云盘logo | 
| faviconUrl | string |  选填 | 网站faviconUrl,如果不填默认使用蓝眼云盘favicon.ico | 
| copyright | string |  选填 | 网站版权所有信息 | 
| record | string |  选填 | 网站备案信息 | 
| downloadDirMaxSizeStr | int |  选填 | zip下载大小限制 | 
| downloadDirMaxNumStr | int |  选填 | zip下载数量限制 | 
| defaultTotalSizeLimitStr | int |  选填 | 用户默认总大小限制 | 
| allowRegisterStr | bool |  选填 | 是否允许自主注册 | 
返回: 一个Preference实体
/api/preference/system/cleanup
功能:重置系统,谨慎操作
访问级别:管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| password | string |  必填 | 管理员用户密码 | 
返回: 成功信息“重置成功”
MatterController
该Controller负责站内创建文件夹,上传文件,修改文件路径,删除文件,修改文件访问权限等,主要操作Matter实体
/api/matter/create/directory
功能:创建文件夹
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| userUuid | string |  必填 | 用户的唯一标识,文件存放在该用户名下 | 
| puuid | string |  必填 | 准备创建的目录所在的目录,如果在根目录下创建传root | 
| name | string |  必填 | 文件夹名称, 不能包含以下特殊符号:< > \| * ? / \ | 
返回: 新建的这个文件夹的Matter实体
/api/matter/upload
功能:上传文件
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| userUuid | string |  必填 | 用户的唯一标识,文件存放在该用户名下 | 
| puuid | string |  必填 | 文件上传到哪个目录下 | 
| file | file |  必填 | 二进制文件,在浏览器中是通过<input type="file" name="file"/>来选择的 | 
| alien | bool |  选填 | 是否为第三方文件,默认false | 
| privacy | bool |  选填 | 文件的私有性,默认true | 
返回: 刚上传的这个文件的Matter实体
/api/matter/crawl(命令行工具)
功能:通过url获取文件
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| url | string |  选填 | 文件url路径 | 
| destPath | string |  选填 | 目的路径 | 
| filename | string |  必填 | 文件名称 | 
返回: 刚上传的这个文件的Matter实体
/api/matter/delete
功能:删除文件或者文件夹
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuid | string |  必填 | 待删除的文件或文件夹的uuid | 
返回: 成功信息“删除成功”
/api/matter/delete/batch
功能:批量删除文件或文件夹
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuids | string |  必填 | 待删除的文件或文件夹的uuids,用逗号(,)分隔 | 
返回: 成功信息“删除成功”
/api/matter/rename
功能:重命名文件或文件夹
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuid | string |  必填 | 文件的uuid | 
| name | string |  必填 | 新名字,不能包含以下特殊符号:< > \| * ? / \ | 
返回: 刚重命名的这个文件的Matter实体
/api/matter/change/privacy
功能:改变文件的公私有属性
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuid | string |  必填 | 文件的uuid | 
| privacy | bool |  选填 | 文件的私有性,默认false | 
返回: 成功信息“设置成功”
/api/matter/move
功能:将一个文件夹或者文件移入到另一个文件夹下
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| srcUuids | string |  必填 | 待移动的文件或文件夹的uuids,用逗号(,)分隔 | 
| destUuid | string |  必填 | 目标文件夹,根目录用root | 
返回: 成功信息“设置成功”
/api/matter/detail
功能:产看文件详情
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuid | string |  必填 | 该文件的uuid | 
返回: 这个文件的Matter实体
/api/matter/page
功能:按照分页的方式获取某个文件夹下文件和子文件夹的列表
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| puuid | string |  选填 | 文件夹uuid,如果根目录填root | 
| page | int |  选填 | 当前页数,0基,默认0 | 
| pageSize | int |  选填 | 每页条目数,默认200 | 
| userUuid | string |  选填 | 筛选文件拥有者,对于普通用户使用当前登录的用户uuid. | 
| name | string |  选填 | 模糊筛选文件名 | 
| dir | bool |  选填 | 筛选是否为文件夹 | 
| orderDir | DESC或ASC |  选填 | 按文件夹排序,DESC降序排,ASC升序排 | 
| orderCreateTime | DESC或ASC |  选填 | 按创建时间排序,DESC降序排,ASC升序排 | 
| orderUpdateTime | DESC或ASC |  选填 | 按最近修改时间排序,DESC降序排,ASC升序排 | 
| orderSort | DESC或ASC |  选填 | 默认排序,DESC降序排,ASC升序排 | 
| orderTimes | DESC或ASC |  选填 | 按下载次数排序,DESC降序排,ASC升序排 | 
| orderSize | DESC或ASC |  选填 | 按文件大小排序,DESC降序排,ASC升序排 | 
| orderName | DESC或ASC |  选填 | 按名称排序,DESC降序排,ASC升序排 | 
| extensions | string |  选填 | 按文件后缀名筛选,逗号(,)分隔。例:jpg,png,pdf | 
| shareUuid | string |  选填 | 分享的uuid,如果为空的话则puuid则为必填项 | 
| shareCode | string |  选填 | 提取码 | 
| shareRootUuid | string |  选填 | 分享根目录uuid | 
返回: Matter的Pager
/api/matter/mirror
功能:把本地文件映射到蓝眼云盘中(命令行工具)
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| srcPath | string |  必填 | 原文件路径 | 
| destPath | string |  选填 | 目标路径 | 
| overwrite | bool |  选填 | 是否覆盖,默认false | 
/api/matter/zip
功能:把文件批量打包下载
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuids | string |  必填 | 待下载的文件或文件夹的uuids,用逗号(,)分隔 | 
UserController
该Controller负责站内创建文件夹,上传文件,删除文件,修改权限等,主要操作Matter实体
/api/user/login
功能:登录
访问级别:游客,注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| username | string |  必填 | 用户名 | 
| password | string |  必填 | 密码 | 
返回: 当前登录的User实体
/api/user/authentication/login
功能:授权变身登录
访问级别:游客,注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| authentication | string |  必填 | 授权验证信息 | 
返回: 当前登录的User实体
/api/user/register
功能:自助注册
访问级别:游客,注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| username | string |  必填 | 用户名 | 
| password | string |  必填 | 密码 | 
返回: 当前登录的User实体
/api/user/edit
功能:编辑用户
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuid | string |  必填 | 待编辑的用户uuid | 
| avatarUrl | string |  选填 | 头像 | 
| sizeLimit | int |  必填 | 用户上传单文件限制,单位byte. 如果负数表示无限制 | 
| totalSizeLimit | string |  必填 | 该用户允许上传的总文件最大大小,单位byte | 
| role | string |  选填 | 角色 | 
返回: 编辑的User实体
/api/user/detail
功能:查看用户详情
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuid | string |  必填 | 待查看的用户uuid | 
返回: User实体
/api/user/logout
功能:退出登录
访问级别:游客,注册用户,管理员
请求参数:无
返回: 成功信息"退出成功!"
/api/user/page
功能:查看用户列表
访问级别:管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| page | int |  选填 | 当前页数,0基,默认0 | 
| pageSize | int |  选填 | 每页条目数,默认200 | 
| username | string |  选填 | 模糊筛选用户名 | 
| status | string |  选填 | 用户状态,枚举类型 | 
| orderSort | DESC或ASC |  选填 | 默认排序,DESC降序排,ASC升序排 | 
| orderLastTime | DESC或ASC |  选填 | 按上次登录时间排序,DESC降序排,ASC升序排 | 
| orderCreateTime | DESC或ASC |  选填 | 按创建时间排序,DESC降序排,ASC升序排 | 
| orderUpdateTime | DESC或ASC |  选填 | 按创建时间排序,DESC降序排,ASC升序排 | 
返回: User实体的Pager
/api/user/change/password
功能:蓝眼云盘用户修改用户密码
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| oldPassword | string |  必填 | 旧密码 | 
| newPassword | string |  必填 | 新密码 | 
返回: 修改密码的User实体
/api/user/reset/password
功能:管理员重置用户密码
访问级别:管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| userUuid | string |  必填 | 待重置密码的用户uuid | 
| password | string |  必填 | 新密码 | 
返回: 修改密码的User实体
/api/user/toggle/status
功能:管理员修改用户状态
访问级别:管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuid | string |  必填 | 待操作的用户 | 
返回: 修改状态的User实体
/api/user/transfiguration
功能:管理员变身
访问级别:管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuid | string |  必填 | 用户id | 
返回: 变身用户的uuid
DashboardController
该Controller为蓝眼云盘的控制面板,帮助了解云盘的统计数据:PV/UV、'活跃'文件、活跃IP
/api/dashboard/page
功能:获取近一段时间统计数据
访问级别:管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| page | int |  选填 | 当前页数,0基,默认0 | 
| pageSize | int |  选填 | 每页条目数,默认200 | 
| orderSort | DESC或ASC |  选填 | 默认排序,DESC降序排,ASC升序排 | 
| orderDt | DESC或ASC |  选填 | 按日期排序,DESC降序排,ASC升序排 | 
| orderCreateTime | DESC或ASC |  选填 | 按创建时间排序,DESC降序排,ASC升序排 | 
| orderUpdateTime | DESC或ASC |  选填 | 按创建时间排序,DESC降序排,ASC升序排 | 
返回: Dashboard实体的Pager
/api/dashboard/active/ip/top10
功能:获取Top10活跃IP
访问级别:管理员
请求参数:无
返回: 由ip和times组成的List
ShareController
该Controller为蓝眼云盘的提供分享功能,可以用来分享一切你想要分享的东西(文件/文件夹)
/api/share/create
功能:创建文件分享
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| matterUuids | string |  必填 | 文件uuid,要想分享的文件uuid,分享多个文件uuid用逗号隔开 | 
| expireInfinity | bool |  必填 | 分享是否过期失效,默认false | 
| expireTime | string |  必填 | 过期日期,如果expireInfinity为true则默认为当天 | 
返回: 被分享的Share实体
/api/share/delete
功能:在我的分享里删除文件分享
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuid | string |  必填 | 文件uuid,要想删除分享的文件uuid | 
返回: 成功信息“操作成功”
/api/share/delete/batch
功能:在我的分享里批量删除文件分享
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| uuids | string |  必填 | 文件uuid,要想删除分享的文件uuid,删除多个文件分享uuid用逗号隔开 | 
返回: 成功信息“操作成功”
/api/share/page
功能:获取我的文件分享列表
访问级别:注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| page | int |  选填 | 当前页数,0基,默认0 | 
| pageSize | int |  选填 | 每页条目数,默认200 | 
| orderCreateTime | DESC或ASC |  选填 | 按创建时间排序,DESC降序排,ASC升序排 | 
返回: Share实体的Pager
/api/share/browse
功能:被分享者打开文件分享
访问级别:游客,注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| shareUuid | string |  必填 | 当前分享实体的uuid | 
| code | string |  选填 | 提取码,如果不是自己的分享则为必填项 | 
| puuid | string |  选填 | 文件uuid | 
| rootUuid | string |  选填 | 当前分享正在查看的根目录uuid,前端辅助字段 | 
返回: 被分享的Share实体
/api/share/zip
功能:被分享者下载文件分享
访问级别:游客,注册用户,管理员
请求参数:
| 名称 | 类型 | 必填性 | 描述 | 
|---|---|---|---|
| shareUuid | string |  必填 | 当前分享实体的uuid | 
| code | string |  选填 | 提取码,如果不是自己的分享则为必填项 | 
| puuid | string |  选填 | 文件uuid | 
| rootUuid | string |  选填 | 当前分享正在查看的根目录uuid,前端辅助字段 | 
返回: 无