前台部分
QQ授权登陆部分
QQ授权登陆流程后台人员看,前台人员感兴趣看一下,我写的比较渣
- 用户点击登陆按钮发起的请求
Request Address:
(WebRoot)/user/signIn
Request Method:
GET
Request Param:
(NULL)
- 之后回重定向到?地址(这里UI还没给),前端会收到这样一个响应
ResponseParam:
{
"state":(string) //授权成功为"success",失败初定为"fail",或考虑情况返回各种状态
}
(授权成功以后,后台会设置user_id和openID加密以后的cookie)
- 之后前端向后台发起关于用户信息的请求(仅限用户本人)
(这个接口用在需要后台刷新用户信息时,其中授权成功以后必须使用,但是因为这个接口中,后台会调用腾讯的API,而这个API可能每天有调用次数上限,所以尽可能不要频繁使用)
Request Address:
(WebRoot)/user/getUserInfoRefresh
Request Method:
GET
Request Param:
(NULL)
Response Param:
{
"state":(string) //成功为"success",失败为"failed",并且以下的参数全部没有
"nickname":(string) //用户在QQ空间的昵称,如"Peter"
"avantarUrl":(string) //大小为40×40像素的QQ头像URL,如"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/30"
}
用户信息部分
用户信息请求接口(仅对访问用户本人可用)
(这个接口只会取出后台数据库中对用户信息的缓存,可以经常调用。前端如果需要的话,也可以做本地的数据缓存)
Request Address:
(WebRoot)/user/getUserInfo
Request Method:
GET
Request Param:
(NULL)
Response Param:
{
"state":(string) //成功为"success",失败为"failed",并且以下的参数全部没有
"nickname":(string) //用户在QQ空间的昵称,如"Peter"
"avantarUrl":(string) //大小为40×40像素的QQ头像URL,如"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/30"
}
用户头像请求接口(对于任何用户,评论处的头像也从这里获取)
//尚待商议,是不是换成直接图片下载比较好
Request Address:
(WebRoot)/user/avantar
Request Method:
GET
Request Param:
{
"userId":(int) //用户的Id
}
Response Param:
{
"avantarUrl":(string) //大小为40×40像素的QQ头像URL如"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/30"
}
文章部分(统一)
(一样的部分我打算使用同一个接口,技术分享到时另外再添加补充接口,比如外链网址)
文章预览列表页
Request Address:
(WebRoot)/article/preview
Request Method:
GET
Request Param:
{
"type":(string)//"report"活动报道;"repairSkill"维修技巧;"collection"作品集锦;"share"技术分享(?)
"page":(int) //页码,默认为1(首页)
"num":(int)//单页条数
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败,并且以下的参数不会出现
"totalPage" : (int) //总的页数
"report": //这个数组里的对象数量为num个(分页)
[{
"id" : (string), //文章的id
"title" : (string), //标题
"abstract" : (string), //简介
"updateTime" : (int), //更新时间戳
}]
}
文章预览列表页中的标题图请求接口(已取消,换由前端直接调用public名下的文件)
文件名约定:
public/img/filename
filename : type-id.ext
type 为 report / repairSkill / collection / share
id 为 文章索引在数据库中的 主键
ext 为文件拓展名,当前有jpg,png,gif三种形式
例如:report-2.jpg
//取消了,这个没用
Request Address:
(WebRoot)/article/surfacePlot
Request Method:
GET
Request Param:
{
"type":(string)//"report"活动报道;"repairSkill"维修技巧;"collection"作品集锦;"share"技术分享(?)
"id":(int) //文章的Id
}
Response Param:
(图片文件)
富文本html代码请求接口
Request Address:
(WebRoot)/article/getHtml
Request Method:
GET
Request Param:
{
"type":(string)//"report"活动报道;"repairSkill"维修技巧;"share"技术分享
"id":(int) //文章的Id,会在预览页给出
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;
"content":(string) //转义后的html字符串,如"<div id=\"a\">"
}
评论翻页
Request Address:
(WebRoot)/article/comment
Request Method:
GET
Request Param:
{
"type":(string)//"report"活动报道;"repairSkill"维修技巧;"share"技术分享
"id":(int) //文章的Id,会在预览页给出
"page" : (string) //评论的页码
"num":(int)//单页条数
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败,并且以下的参数不会出现
"totalPage" : (int) //总的页数
"comment": //这个数组里的对象数量为num个(分页)
[{
"id":(int) //评论id
"user" : (string), //评论人nickname
"createTime" : (int), //提交时间戳
"content" : (string), //评论内容
"thumbUpNum":(int) , //点赞数量
"isThumbUp":(int) , //用户本人是否已点赞,是为1,否为0
}]//评论人头像的获取见用户信息部分
}
提交评论
Request Address:
(WebRoot)/article/comment/submit
Request Method:
POST
Request:
{
"type":(string)//"report"活动报道;"repairSkill"维修技巧;"share"技术分享
"id":(int) //文章的Id
"content" : (string) //评论的内容
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"notSigned"未登录,前台帮忙引导至登录页面
}
给某评论点赞/取消点赞
切换点赞的状态用的
Request Address:
(WebRoot)/article/comment/thumbUp
Request Method:
POST
Request:
{
"type":(string)//"report"活动报道;"repairSkill"维修技巧;"share"技术分享
"id":(int) //评论的Id
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"
"isThumbUp":(int) , //(执行后数据库内的情况)用户本人是否已点赞,是为1,否为0
}
近期活动预览页
Request Address:
(WebRoot)/activity/preview
Request Method:
GET
Request Param:
{
"page":(int) //页码,默认为1,即第一条(应用分页组件的原因)(首页)
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败,并且以下的参数不会出现
"totalPage" : (int) //总的页数
"id":(int)//活动id号
"title" : (string), //活动标题,无限杯电子设计大赛
"content" : (string), //活动简介
"schedule":
[{
"stage" : (string), //阶段
"beginTime" : (int), //时间戳,开始时间
"endTime" : (int), //时间戳,结束时间
"place" : (string), //地点
}],
"signUpLink" : (string) //报名表单外链,这个在为false的情况下,说明报名未开始或者已经截止
}
对应每个活动的海报图片请求接口(已取消,换由前端直接调用public名下的文件)
文件名约定:
public/img/poster/filename
filename : id.ext
id 为 活动在数据库中的主键
ext 为文件拓展名,当前有jpg,png,gif三种形式
例如:3.jpg
//接口已取消
//尚且值得商议,看要不要换成post,要不要加上token
Request Address:
(WebRoot)/activity/poster
Request Method:
GET
Request Param:
{
"activityId":(int) //报名活动的Id
}
Response Param:
(图片文件)
维修预约部分
(忆麟说可能这个要搞外链,我姑且还是写一下)
一、获得预约信息
Request Address:
(WebRoot)/appointment/getInfo
Request Method:
GET
Request Param:
(NULL)
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"notSigned"未登录,前台帮忙引导至登录页面
"isOrder" : (int), //是否该用户有预约维修
"underExam" : (int), //在有预约的时候显示预约审核进度,0为未审核,1为通过,2为不通过
//在没有预约的时候一定为0
}
二、进行预约
//这个接口只有在这个用户没有预约过的时候开放
//如果该用户当前有预约,那么这个接口一定会返回失败信息
Request Address:
(WebRoot)/appointment/sign
Request Method:
POST
Request Param:
{
"name" : (string), //预约人的名字
"phoneNumber" : (string), //手机号,默认11位,格式非法的电话号码无法通过预约
"campus" : (int), //校区信息,南校为0,北校为1
"dormitory" : (string), //宿舍的信息,最长30
"itemName" : (string), //修理物品的名字,最长80
"description" : (string), //修理物品损坏情况的具体描述
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"notSigned"未登录,前台帮忙引导至登录页面
}
意见反馈部分
查看反馈
说听说前端点一下刷30条就好,至于刷了几次前端记录吧
Request Address:
(WebRoot)/feedback/get
Request Method:
GET
Request Param:
{
"index":(int)//第几个30条反馈
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"notSigned"未登录,前台帮忙引导至登录页面
"feedback": //这个数组里的对象数量为个30(分页),即默认每次获取30条数据
[{
"feedbackCreateTime" : (int), //反馈的创建时间戳
"feedbackContent" : (string), //反馈的内容
"responseAdmin":(string)//回复的后台管理员名
"respondCreateTime" : (int), //回应的创建时间戳
"respondContent" : (string), //回应的内容
}]
}
提交反馈
Request Address:
(WebRoot)/feedback/submit
Request Method:
POST
Request Param:
{
"content" : (string), //反馈的内容
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"notSigned"未登录,前台帮忙引导至登录页面
}
后台部分(管理员,记得注册Admin中间件)
近期活动部分
海报上传接口
上传图片后响应中会得到一个图片标识,这个图片标识在后面的近期活动信息上传接口中要用到
会采用Intervention作为图片压缩的包,考虑宣传的需要,图片大小限制到比较大的5MB
还没实现
Request Address:
(WebRoot)/activity/uploadPoster
Request Method:
POST
Request Param:
{
"picture":(file)图片文件
}
限定格式:jpeg,png,gif
限定大小:暂定5MB
长宽:??我要问一下前端
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"invalid"不是管理员
"poster":(string) //图片标识
}
近期活动详情信息提交接口
要求在上传海报图片之后执行。图片上传之后得到的图片标识响应"surfacePlot"
需要在这里拿去请求。
Request Address:
(WebRoot)/activity/release
Request Method:
POST
Request Param:
{
"title" : (string), //活动标题,e.g"无限杯电子设计大赛"
"content" : (string), //活动简介
"schedule"://其中,数组内的对象的个数为活动阶段的数目
[{
"stage" : (string), //阶段
"beginTime" : (int), //时间戳,开始时间
"endTime" : (int), //时间戳,结束时间
"place" : (string), //地点
}],
"signUpLink" : (string) //报名表单外链,这个在为false的情况下,说明没有
"poster":(string) //图片标识
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"invalid"不是管理员
}
近期活动详情信息修改接口
Request Address:
(WebRoot)/article/modify
Request Method:
POST
Request Param:
{
"id":(int), //待修改活动的id
"title" : (string), //活动标题,e.g"无限杯电子设计大赛"
"content" : (string), //活动简介
"schedule"://其中,数组内的对象的个数为活动阶段的数目
[{
"stage" : (string), //阶段
"beginTime" : (int), //时间戳,开始时间
"endTime" : (int), //时间戳,结束时间
"place" : (string), //地点
}],
"signUpLink" : (string) //报名表单外链,这个在为false的情况下,说明没有
"poster":(string) //图片标识,可以没有该参数,没有则保留原样
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"invalid"不是管理员
}
文章部分
预览页中标题图片上传接口
上传图片后响应中会得到一个图片标识,这个图片标识在后面的富文本html上传接口中要用到
会采用Intervention作为图片压缩的包,所以大小限制会大一点
Request Address:
(WebRoot)/article/uploadSurfacePlot
Request Method:
POST
Request Param:
{
"picture":(file)图片文件
}
限定格式:jpeg,png,gif
限定大小:暂定2MB,我还在考虑,需要测试
长宽:我们会将上传后的标题图强行压缩至195*128,上传的图片就保持在这个长宽比附近就好。
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"invalid"不是管理员
"surfacePlot":(string) //图片标识
}
富文本html上传接口
要求在上传封面图片之后执行。图片上传之后得到的图片标识响应"surfacePlot"
需要在这里拿去请求。
Request Address:
(WebRoot)/article/uploadHtml
Request Method:
POST
Request Param:
{
"type":(string)//"report"活动报道;"repairSkill"维修技巧;"share"技术分享
"content":(string)//(html文件原始字符串)
"title":(string,60)//标题,限60字节
"abstract":(string,150)//简介,限150字节,type="share"时则不需要
"surfacePlot":(string) //图片标识
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"invalid"不是管理员
}
富文本html修改接口
Request Address:
(WebRoot)/article/updateHtml
Request Method:
POST
Request Param:
{
"type":(string) // "report"活动报道;"repairSkill"维修技巧;"share"技术分享
"id":(int)//待修改文章的id
"content":(string)//(html文件原始字符串)
"title":(string,60)//标题,限60字节
"abstract":(string,150)//简介,限150字节,type="share"时则不需要
"surfacePlot":(string) //图片标识,可以没有该参数,没有则保留原样
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"invalid"不是管理员
}
维修预约部分
(业务不熟,我的话先放着)
意见反馈部分
反馈列表
Request Address:
(WebRoot)/feedback/getList
Request Method:
GET
Request Param:
{
"page":(int) //页码,默认为1(首页)
"num":(int)//单页条数
"userId":(string)//反馈的用户的id,不带这个参数则默认为所有用户
}
Response Param:
{
"state":(string) //"success"为成功;"fail"为失败;"invalid"不是管理员
"totalPage" : (int) //评论的总页数
"feedback"://这个数组里的对象数量为num个(分页)
[{
"feedbackUser":(string),//反馈的用户的nickname
"feedbackUserId":(int),//反馈的用户的id
"feedbackCreateTime" : (int), //反馈的创建时间戳
"feedbackContent" : (string), //反馈的内容
"responseAdmin":(string)//回复的后台管理员名
"respondCreateTime" : (int), //回应的创建时间戳
"respondContent" : (string), //回应的内容
}]//头像从用户信息里找
}