班级文件管理接口文档

447 阅读13分钟

接口说明

  • 请求基地址:baseUrl= www.cfm.com(前端暂时先不加,因为可能没钱申请域名)
  • 服务器开启CORS跨域访问
  • 对于需要授权的操作,请前端提前主动调用授权接口(见后述)
  • 使用HTTP状态码作为响应标识
  • 返回数据为JSON字符串,且以ResultBean为容器
  • 对于接口里面的<a>格式的数据,表示它是一个占位符,a代表变量。

支持的请求方式

  • GET
  • POST

通用返回状态说明(仅包含用得上的)

详见

信息响应

100 Continue

这个临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它。

101 Switching Protocol

该代码是响应客户端的 Upgrade 标头发送的,并且指示服务器也正在切换的协议。

102 Processing

此代码表示服务器已收到并正在处理该请求,但没有响应可用。

103 Early Hints

此状态代码主要用于与Link 链接头一起使用,以允许用户代理在服务器仍在准备响应时开始预加载资源。

成功响应

200 OK

请求成功。成功的含义取决于HTTP方法:

GET:资源已被提取并在消息正文中传输。

HEAD:实体标头位于消息正文中。

POST:描述动作结果的资源在消息体中传输。

TRACE:消息正文包含服务器收到的请求消息。

重定向

300 Multiple Choice

被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向。

301 Moved Permanently

被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。

302 Found

请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。

303 See Other

对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。

304 Not Modified

如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304 响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。

305 Use Proxy

被请求的资源必须通过指定的代理才能被访问。Location 域中将给出指定的代理所在的 URI 信息,接收者需要重复发送一个单独的请求,通过这个代理才能访问相应资源。只有原始服务器才能建立305响应。

400 Bad Request

1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。

2、请求参数有误。

401 Unauthorized

当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。如果当前请求已经包含了 Authorization 证书,那么401响应代表着服务器验证已经拒绝了那些证书。如果401响应包含了与前一个响应相同的身份验证询问,且浏览器已经至少尝试了一次验证,那么浏览器应当向用户展示响应中包含的实体信息,因为这个实体信息中可能包含了相关诊断信息。

403 Forbidden

服务器已经理解请求,但是拒绝执行它。与 401 响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。如果这不是一个 HEAD 请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内描述拒绝的原因。当然服务器也可以返回一个 404 响应,假如它不希望让客户端获得任何信息。

404 Not Found

访问的资源不存在。

服务端响应

500 Internal Server Error

服务器遇到了不知道如何处理的情况。

1. 登录接口

1.1. 登录验证

URL = baseUrl+/login

METHOD = POST

请求参数:

参数名类型说明
usernameString非空
passwordString非空

响应参数:

参数名类型说明
tokenString唯一用户标识符

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":{
    	"token":iasvnjgviuevjnwebciouhsewiuveqvfe2w1v8v44,
    }
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

1.2. 登出

URL = baseUrl+/logout

METHOD = GET

请求参数:

参数名类型说明
<N/A><N/A><N/A>

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

2. 注册接口

2.1. 提交注册

URL = baseUrl+/sign

METHOD = POST

请求参数:

参数名类型说明
usernameString用户名
passwordString密码
nicknameString昵称
studentNumberLong学号
schoolString学校代号

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

3. 验证邮箱

3.1. 请求发送验证码

URL = baseUrl+/sign/sendVerificationCode/<username>

METHOD = GET

请求参数:

参数名类型说明
<N/A><N/A><N/A>

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

3.2. 验证验证码

URL = baseUrl+/sign/verityCode/<username>

METHOD = POST

请求参数:

参数名类型说明
verificationCodeString验证码

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

4. 用户信息请求

4.1. 用户到学生映射关系

URL = baseUrl+/user/toStudent

METHOD = GET

请求参数:

参数名类型说明
userIdString可为空

响应参数:

参数名类型说明
userIdLong用户ID
studentNumberString学号
nameString真实姓名
classroomInteger班级
institudeString学院
majorString专业
gradeInteger年级
schoolString学校

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":{
    	"userId":1L,
        "studentNumber":"1812001000",
        "name":"Somebody",
        "classroom":1,
        "institude":"Software",
        "major":"C.S.",
        "grade":"2018",
        "school":"JIT"
    }
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

4.2. 用户扩展信息

URL = baseUrl+/user/extension

METHOD = GET

请求参数:

参数名类型说明
userIdString可为空

响应参数:

参数名类型说明
userIdLong用户ID
iconString头像
qqLongQQ号码
wechatString微信ID
alipayString支付宝信息
phoneNumberLong手机号

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":{
    	"userId":1L,
        "icon":"https://q1.qlogo.cn/g?b=qq&nk=2508826394&s=640",
        "qq":2508826394L,
        "wechat":"d2508826394",
        "alipay":"MyALiPay",
        "phoneNumber":15651731700L
    }
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

4.3. 用户任务概览

URL = baseUrl+/user/userTasks

METHOD = GET

请求参数:

参数名类型说明
userIdString可为空

响应参数:

参数名类型说明
userIdLong用户ID
undoTasksList<String>未提交任务ID
doneTasksList<String>已提交任务ID
launchedTasksList<String>已发布任务ID

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":{
    	"userId":1L,
        "undoTasks":["1","2"],
        "doneTasks":["3","4"],
        "launchedTasks":["2","3"]
    }
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

4.4. 任务ID与任务映射

URL = baseUrl+/user/taskIdToTask

METHOD = POST

请求参数:

参数名类型说明
userIdString可为空
taskIdLong任务ID

响应参数:

参数名类型说明
taskIdLong任务ID
launcherIdLong发布者ID
taskBeginTimeString任务开始时间
taskEndTimeString任务结束时间
undoIdsList<Long>未完成的用户ID
doneIdsList<Long>已完成的用户ID
taskNameString任务名
taskFileDirectoryString任务文件保存路径(前端不应该用到这个)
taskFileTemplateString任务模板位置
taskFileSampleString任务示例文件位置
formatString提交格式

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":{
    	"taskId":1L,
        "launcherId":2L,
        "taskBeginTime":"2020_9_6_20_20",
        "taskEndTime":"2020_9_12_20_20",
        "undoIds":[],
        "doneIds":[],
        "taskName":"班级文档管理接口文档",
        "taskFileDirectory":"",
        "taskFileTemplate":"/home/file/template/qwer.txt",
        "taskFileSample":"/home/file/sample/asdf.txt",
        "format":""
	}
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

4.5. 更新用户个人扩展信息

URL = baseUrl+/userInfo/updateExtension

METHOD = POST

请求参数:

参数名类型说明
iconFile头像图片
qqStringQQ
wechatString微信号
alipayString支付宝账号
phoneNumberString手机号

上述参数均可为空,当某一项为空时,表示不进行修改。

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

4.6. 更新用户信息

URL = baseUrl+/userInfo/update

METHOD = POST

请求参数:

参数名类型说明
newUsernameString邮箱地址(如果更换邮箱前端首先要求输入密码并进行新的邮箱验证)
oldPasswordString旧密码
newPasswordString新密码(要求输入原密码或忘记密码时进行邮箱验证)
newNicknameString昵称

上述参数均可为空,当某一项为空时,表示不进行修改。暂不支持邮箱更新

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

4.7. 名称映射

URL = baseUrl+/base/nameMap

METHOD = GET

请求参数:

参数名类型说明
<N/A><N/A><N/A>

上述参数均可为空,当某一项为空时,表示不进行修改。

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

{
    "code": 200,
    "msg": "",
    "data": {
        "CS": "计算机科学与技术",
        "InformationSecurity(Embedded)": "信息安全嵌入式",
        "SoftWare(Z)": "软件工程(Z)",
        "JIT": "金陵科技学院",
        "InformationSecurity(Changed)": "信息安全(专转本)",
        "SoftWare": "软件工程",
        "IntelligentScienceAndTechnology": "智能科学与技术",
        "InformationSecurity": "信息安全",
        "SoftWare(Embedded)": "软件工程嵌入式"
    }
}

5. 文件接口

5.1. 任意文件下载接口(RFD API)

URL = baseUrl+/file/randomAccess

METHOD = POST

请求参数:

参数名类型说明
filepathString文件路径

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

5.2. 任务文件上传

URL = baseUrl+/file/upload

METHOD = POST

请求参数:

参数名类型说明
taskIdLong任务ID
file<N/A>上传的文件

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

5.3. 文件下载

URL = baseUrl+/file/download

METHOD = POST

参数名类型说明
userIdString可为空
taskIdLong任务ID

响应参数:

参数名类型说明
uuidString路径参数

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":"qhjvbswjhcdjnkbfhjkablmviseepauqnfcsdfngh"
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

5.4. 打包下载

URL = baseUrl+/file/package/download

METHOD = POST

参数名类型说明
taskIdLong任务ID

响应参数:

参数名类型说明
uuidString路径参数

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":"qhjvbswjhcdjnkbfhjkablmviseepauqnfcsdfngh"
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

5.5. A标签下载

URL = baseUrl+/file/a/download/<uuid>

METHOD = GET

参数名类型说明
<N/A><N/A><N/A>

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

文件

6. 任务接口

6.1. 发布任务

URL = baseUrl+/task/launch

METHOD = POST

请求参数:

参数名类型说明
taskNameString任务名
formatString命名格式
taskBeginTimeString起始时间(前端格式化为:YYYY_MM_DD_HH_MM的格式)
taskEndTimeString结束时间(前端格式化为:YYYY_MM_DD_HH_MM的格式)
taskFileTemplate<文件类型>模板文件(可为空)
taskFileSample<文件类型>示例文件(可为空)
scopeString此任务作用的范围(格式为:<school>_<major>_<institude>_<grade>_<classroom>如果某项有多个值,使用';'隔开。暂时不做)

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

6.2. 删除任务

此操作需要进行验证身份,前端记得重新调用身份检验接口进行判断(其实就是登录接口)

URL = baseUrl+/task/delete

METHOD = POST

请求参数:

参数名类型说明
taskIdLong任务ID

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

6.3. 更新任务

此操作需要验证身份

URL = baseUrl+/task/update

METHOD = POST

请求参数:

参数名类型说明
taskIdString任务ID
taskNameString任务名(可为空)
formatString命名格式(可为空)
taskBeginTimeString起始时间(前端格式化为:YYYY_MM_DD_HH_MM的格式,可为空)
taskEndTimeString结束时间(前端格式化为:YYYY_MM_DD_HH_MM的格式,可为空)
taskFileTemplate<文件类型>模板文件(可为空)
taskFileSample<文件类型>示例文件(可为空)
scopeString此任务作用的范围(格式为:<school>_<major>_<institude>_<grade>_<classroom>如果某项有多个值,使用';'隔开,可为空。暂时不做)

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

7. 用户身份变更(非管理员操作)

7.1. 添加班委

URL = baseUrl+/user/committee/appointment

METHOD = POST

参数名类型说明
schoolString学校
studentNumberString学号

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

7.2. 撤职班委

URL = baseUrl+/user/committee/dismiss

METHOD = POST

参数名类型说明
schoolString学校
studentNumberString学号

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

7.3. 添加教师

URL = baseUrl+/user/teacher/appointment

METHOD = POST

参数名类型说明
schoolString学校
studentNumberString学号

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

7.4. 撤职教师

URL = baseUrl+/user/teacher/dismiss

METHOD = POST

参数名类型说明
schoolString学校
studentNumberString学号

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

7.5. 判断是否为管理员

URL = baseUrl+/user/isAdmin

METHOD = GET

参数名类型说明

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":true/false
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

8. 后台接口

8.1. 导入用户学生信息

URL = baseUrl+/user/data/export

METHOD = POST

参数名类型说明
file文件包含用户信息的Excel表格

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 成功
{
	"code":200,
	"msg":"",
	"data":null
}

// 失败
{
	"code":XXX,
	"msg":"<失败原因>",
	"data":null
}

8.2. 新增用户/删除用户

先不写

9、权限管理

9.1、左侧菜单权限

URL = baseUrl+/menu

METHOD = GET

请求参数:

参数名类型说明
<N/A><N/A><N/A>

响应参数:

参数名类型说明
<N/A><N/A><N/A>

响应数据:

// 管理员
{
    "code": 200,
    "msg": '',
    "data": {
        {
          authname: "志愿服务",
          icon: "el-icon-s-order",
          id: 1,
          path: "tasks",
          children: [
            {
              authname: "添加",
              icon: "el-icon-circle-plus",
              id: 11,
              path: "tasklaunch",
            },
            {
              authname: "删除",
              icon: "el-icon-remove",
              id: 12,
              path: "taskdelete",
            },
            {
              authname: "已完成",
              icon: "el-icon-check",
              id: 13,
              path: "taskfinished",
            },
            {
              authname: "未完成",
              icon: "el-icon-close",
              id: 14,
              path: "taskunfinished",
            },
          ],
        },
        {
          authname: "个人信息",
          icon: "el-icon-user-solid",
          id: 2,
          path: "info",
          children: [
            {
              authname: "查看个人信息",
              icon: "el-icon-info",
              id: 20,
              path: "lookinfo",
            },
          ],
    }
}
// 普通用户
{
    "code": 200,
    "msg": '',
    "data": {
        {
          authname: "志愿服务",
          icon: "el-icon-s-order",
          id: 1,
          path: "tasks",
          children: [
            {
              authname: "已完成",
              icon: "el-icon-check",
              id: 13,
              path: "taskfinished",
            },
            {
              authname: "未完成",
              icon: "el-icon-close",
              id: 14,
              path: "taskunfinished",
            },
          ],
        },
        {
          authname: "个人信息",
          icon: "el-icon-user-solid",
          id: 2,
          path: "info",
          children: [
            {
              authname: "查看个人信息",
              icon: "el-icon-info",
              id: 20,
              path: "lookinfo",
            },
          ],
    }
}