url 地址:user/checkLogin
请求方式:get
请求参数: 无
请求头: token: 用户 token
响应数据:
{
"code":"200",
"message":"success",
"data":{}
}
{
"code":"504",
"message":"loginExpired",
"data":{}
}
@GetMapping("checkLogin")
public Result checkLogin(@RequestHeader String token){
if (StringUtils.isEmpty(token) || jwtHelper.isExpiration(token)){
//没有传或者过期 未登录
return Result.build(null, ResultCodeEnum.NOTLOGIN);
}
return Result.ok(null);
}
@Component
public class LoginProtectInterceptor implements HandlerInterceptor {
@Autowired
private JwtHelper jwtHelper;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader("token");
if (StringUtils.isEmpty(token) || jwtHelper.isExpiration(token)){
Result result = Result.build(null, ResultCodeEnum.NOTLOGIN);
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(result);
response.getWriter().print(json);
//拦截
return false;
}else{
//放行
return true;
}
}
}
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private LoginProtectInterceptor loginProtectInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginProtectInterceptor).addPathPatterns("/headline/**");
}
}
token: ... ...
{
"title":"小帽课堂宣布 ... ...", // 文章标题
"article":"... ...", // 文章内容
"type":"1" // 文章类别
}
响应数据:
{
"code":"504",
"message":"loginExpired",
"data":{}
}
成功
{
"code":"200",
"message":"success",
"data":{}
}
/**
* 实现步骤:
* 1. token获取userId [无需校验,拦截器会校验]
* 2. 封装headline数据
* 3. 插入数据即可
*/
@PostMapping("publish")
public Result publish(@RequestBody Headline headline,@RequestHeader String token){
int userId = jwtHelper.getUserId(token).intValue();
headline.setPublisher(userId);
Result result = headlineService.publish(headline);
return result;
}
/**
* 发布数据
* @param headline
* @return
*/
@Override
public Result publish(Headline headline) {
headline.setCreateTime(new Date());
headline.setUpdateTime(new Date());
headline.setPageViews(0);
headlineMapper.insert(headline);
return Result.ok(null);
}
url 地址:headline/findHeadlineByHid
请求方式:post
请求参数:
hid=1 param形成参数
响应数据:
{
"code":"200",
"message":"success",
"data":{
"headline":{
"hid":"1",
"title":"马斯克宣布",
"article":"... ... ",
"type":"2"
}
}
}
@PostMapping("findHeadlineByHid")
public Result findHeadlineByHid(Integer hid){
Result result = headlineService.findHeadlineByHid(hid);
return result;
}
/**
* 根据id查询详情
* @param hid
* @return
*/
@Override
public Result findHeadlineByHid(Integer hid) {
Headline headline = headlineMapper.selectById(hid);
Map<String,Object> pageInfoMap=new HashMap<>();
pageInfoMap.put("headline",headline);
return Result.ok(pageInfoMap);
}
url 地址:headline/update
请求方式:post
请求参数:
{
"hid":"1",
"title":"小帽课堂宣布 ... ...",
"article":"... ...",
"type":"2"
}
响应数据:
{
"code":"200",
"message":"success",
"data":{}
}
@PostMapping("update")
public Result update(@RequestBody Headline headline){
Result result = headlineService.updateHeadLine(headline);
return result;
}
/**
* 修改业务
* 1.查询version版本
* 2.补全属性,修改时间 , 版本!
*
* @param headline
* @return
*/
@Override
public Result updateHeadLine(Headline headline) {
//读取版本
Integer version = headlineMapper.selectById(headline.getHid()).getVersion();
headline.setVersion(version);
headline.setUpdateTime(new Date());
headlineMapper.updateById(headline);
return Result.ok(null);
}
url 地址:headline/removeByHid
请求方式:post
请求参数:
hid=1 param形成参数
响应数据:
{
"code":"200",
"message":"success",
"data":{}
}
@PostMapping("removeByHid")
public Result removeById(Integer hid){
headlineService.removeById(hid);
return Result.ok(null);
}