Commit 1e27a169 authored by 黎博's avatar 黎博

修改一些接口,新增异常处理

parent 438602f9
package cn.qg.holmes.aspect;
import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.exception.TokenInvalidException;
import cn.qg.holmes.exception.UnauthorizedException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
@ResponseBody
public class ExceptionHandlerAdvice {
@ExceptionHandler(UnauthorizedException.class)
public JsonResult handleException(UnauthorizedException e) {
e.printStackTrace();
return JsonResult.buildErrorStateResult("权限不足!", false);
}
@ExceptionHandler(TokenInvalidException.class)
public JsonResult handleException(TokenInvalidException e) {
e.printStackTrace();
return JsonResult.buildErrorStateResult("登录已失效,请重新登录!", false);
}
@ExceptionHandler(Exception.class)
public JsonResult handleException(Exception e) {
e.printStackTrace();
return JsonResult.buildErrorStateResult("系统异常!", false);
}
}
package cn.qg.holmes.aspect; package cn.qg.holmes.aspect;
import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.config.annotation.Logical; import cn.qg.holmes.config.annotation.Logical;
import cn.qg.holmes.config.annotation.RequiresPermissions; import cn.qg.holmes.config.annotation.RequiresPermissions;
import cn.qg.holmes.entity.auth.UserInfoVo; import cn.qg.holmes.entity.auth.UserInfoVo;
......
...@@ -2,6 +2,7 @@ package cn.qg.holmes.controller.auth; ...@@ -2,6 +2,7 @@ package cn.qg.holmes.controller.auth;
import cn.qg.holmes.common.JsonResult; import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.entity.auth.RolePermission; import cn.qg.holmes.entity.auth.RolePermission;
import cn.qg.holmes.entity.auth.RolePermissionVo;
import cn.qg.holmes.service.auth.RolePermissionService; import cn.qg.holmes.service.auth.RolePermissionService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -38,12 +39,27 @@ public class RolePermissionController { ...@@ -38,12 +39,27 @@ public class RolePermissionController {
/** /**
* 编辑角色权限 * 编辑角色权限
* @param rolePermissionList 角色权限列表
* @return * @return
*/ */
@PostMapping("/edit") @PostMapping("/edit")
public JsonResult editRolePermission(List<RolePermission> rolePermissionList) { public JsonResult editRolePermission(RolePermissionVo rolePermissionVo) {
// todo 角色权限编辑 Integer roleId = rolePermissionVo.getRoleId();
List<RolePermission> rolePermissionList = rolePermissionVo.getRolePermissionList();
QueryWrapper<RolePermission> rolePermissionQueryWrapper = new QueryWrapper<>();
rolePermissionQueryWrapper.eq("role_id", roleId);
List<RolePermission> rolePermissionListDb = rolePermissionService.list(rolePermissionQueryWrapper);
for (RolePermission rolePermissionDb: rolePermissionListDb) {
boolean flag = false;
for (RolePermission rolePermission: rolePermissionList) {
if (rolePermission.getId().equals(rolePermissionDb.getPermissionId())) {
flag = true;
break;
}
}
if (!flag) {
rolePermissionService.removeById(rolePermissionDb.getId());
}
}
return JsonResult.buildSuccessResult(rolePermissionService.saveOrUpdateBatch(rolePermissionList)); return JsonResult.buildSuccessResult(rolePermissionService.saveOrUpdateBatch(rolePermissionList));
} }
......
...@@ -67,7 +67,7 @@ public class UserController { ...@@ -67,7 +67,7 @@ public class UserController {
* @return * @return
*/ */
@PostMapping("/logout") @PostMapping("/logout")
public JsonResult logout(String token) { public JsonResult logout(@RequestHeader String token) {
tokenService.invalidateToken(token); tokenService.invalidateToken(token);
return JsonResult.buildSuccessResult("登出成功!", true); return JsonResult.buildSuccessResult("登出成功!", true);
} }
......
package cn.qg.holmes.controller.auto; package cn.qg.holmes.controller.auto;
import cn.qg.holmes.common.JsonResult; import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.config.annotation.RequiresPermissions;
import cn.qg.holmes.entity.auto.AutoModule; import cn.qg.holmes.entity.auto.AutoModule;
import cn.qg.holmes.service.auto.AutoModuleService; import cn.qg.holmes.service.auto.AutoModuleService;
import cn.qg.holmes.service.auto.AutoProjectService; import cn.qg.holmes.service.auto.AutoProjectService;
...@@ -48,6 +49,7 @@ public class AutoModuleController { ...@@ -48,6 +49,7 @@ public class AutoModuleController {
* @param autoModule AutoModule实体类 * @param autoModule AutoModule实体类
* @return * @return
*/ */
@RequiresPermissions("auto:module:add")
@PostMapping("/add") @PostMapping("/add")
public JsonResult addAutoModule(@RequestBody AutoModule autoModule) { public JsonResult addAutoModule(@RequestBody AutoModule autoModule) {
QueryWrapper<AutoModule> queryWrapper = new QueryWrapper<>(); QueryWrapper<AutoModule> queryWrapper = new QueryWrapper<>();
...@@ -66,6 +68,7 @@ public class AutoModuleController { ...@@ -66,6 +68,7 @@ public class AutoModuleController {
* @param autoModule AutoModule实体类 * @param autoModule AutoModule实体类
* @return * @return
*/ */
@RequiresPermissions("auto:module:edit")
@PostMapping("/modify") @PostMapping("/modify")
public JsonResult editAutoModule(@RequestBody AutoModule autoModule) { public JsonResult editAutoModule(@RequestBody AutoModule autoModule) {
QueryWrapper<AutoModule> queryWrapper = new QueryWrapper<>(); QueryWrapper<AutoModule> queryWrapper = new QueryWrapper<>();
...@@ -80,10 +83,11 @@ public class AutoModuleController { ...@@ -80,10 +83,11 @@ public class AutoModuleController {
} }
} }
/** /**`
* 删除模块 * 删除模块
* @param moduleId 模块id * @param moduleId 模块id
*/ */
@RequiresPermissions("auto:module:del")
@GetMapping("/delete") @GetMapping("/delete")
public JsonResult deleteAutoModule(@RequestParam Integer moduleId) { public JsonResult deleteAutoModule(@RequestParam Integer moduleId) {
if (autoModuleService.getById(moduleId) == null) { if (autoModuleService.getById(moduleId) == null) {
......
...@@ -46,7 +46,7 @@ public class AutoProjectController { ...@@ -46,7 +46,7 @@ public class AutoProjectController {
* @param autoProject 项目实体 * @param autoProject 项目实体
* @return * @return
*/ */
@RequiresPermissions("project:add") @RequiresPermissions("auto:project:add")
@PostMapping("/add") @PostMapping("/add")
public JsonResult autoProjectAdd(@RequestBody AutoProject autoProject) { public JsonResult autoProjectAdd(@RequestBody AutoProject autoProject) {
// 判断项目是否已存在 // 判断项目是否已存在
...@@ -64,7 +64,7 @@ public class AutoProjectController { ...@@ -64,7 +64,7 @@ public class AutoProjectController {
* @param autoProject 项目实体 * @param autoProject 项目实体
* @return * @return
*/ */
@RequiresPermissions("project:edit") @RequiresPermissions("auto:project:edit")
@PostMapping("/modify") @PostMapping("/modify")
public JsonResult autoProjectModify(@RequestBody AutoProject autoProject) { public JsonResult autoProjectModify(@RequestBody AutoProject autoProject) {
if (autoProjectService.getById(autoProject.getId()) == null) { if (autoProjectService.getById(autoProject.getId()) == null) {
...@@ -78,7 +78,7 @@ public class AutoProjectController { ...@@ -78,7 +78,7 @@ public class AutoProjectController {
* 删除项目 * 删除项目
* @param projectId 项目id * @param projectId 项目id
*/ */
@RequiresPermissions("project:del") @RequiresPermissions("auto:project:del")
@GetMapping("/delete") @GetMapping("/delete")
public JsonResult autoProjectDelete(@RequestParam Integer projectId) { public JsonResult autoProjectDelete(@RequestParam Integer projectId) {
if (autoProjectService.getById(projectId) == null) { if (autoProjectService.getById(projectId) == null) {
......
package cn.qg.holmes.entity.auth;
import lombok.Data;
import java.util.List;
@Data
public class RolePermissionVo {
private Integer roleId;
private List<RolePermission> rolePermissionList;
}
package cn.qg.holmes.exception;
public class TokenInvalidException extends RuntimeException{
public TokenInvalidException() {
super("Token已失效!");
}
}
...@@ -2,6 +2,7 @@ package cn.qg.holmes.service.auth.impl; ...@@ -2,6 +2,7 @@ package cn.qg.holmes.service.auth.impl;
import cn.qg.holmes.entity.auth.User; import cn.qg.holmes.entity.auth.User;
import cn.qg.holmes.entity.auth.UserInfoVo; import cn.qg.holmes.entity.auth.UserInfoVo;
import cn.qg.holmes.exception.TokenInvalidException;
import cn.qg.holmes.mapper.auth.UserMapper; import cn.qg.holmes.mapper.auth.UserMapper;
import cn.qg.holmes.service.auth.TokenService; import cn.qg.holmes.service.auth.TokenService;
import cn.qg.holmes.service.auth.UserService; import cn.qg.holmes.service.auth.UserService;
...@@ -53,7 +54,10 @@ public class TokenServiceImpl implements TokenService { ...@@ -53,7 +54,10 @@ public class TokenServiceImpl implements TokenService {
@Override @Override
public UserInfoVo getUserInfoFromCache(String token) { public UserInfoVo getUserInfoFromCache(String token) {
if (StringUtils.isEmpty(token)) { if (StringUtils.isEmpty(token)) {
return null; throw new TokenInvalidException();
}
if (!redisUtils.hasKey(TOKEN_PREFIX + token)) {
throw new TokenInvalidException();
} }
UserInfoVo userInfoVo = new UserInfoVo(); UserInfoVo userInfoVo = new UserInfoVo();
Map redisValue = (Map) redisUtils.get(TOKEN_PREFIX + token); Map redisValue = (Map) redisUtils.get(TOKEN_PREFIX + token);
...@@ -75,8 +79,15 @@ public class TokenServiceImpl implements TokenService { ...@@ -75,8 +79,15 @@ public class TokenServiceImpl implements TokenService {
return userInfoVo; return userInfoVo;
} }
/**
* 删除redis里保存的token
* @param token
*/
@Override @Override
public void invalidateToken(String token) { public void invalidateToken(String token) {
if (!redisUtils.hasKey(TOKEN_PREFIX + token)) {
throw new TokenInvalidException();
}
redisUtils.del(TOKEN_PREFIX + token); redisUtils.del(TOKEN_PREFIX + token);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment