diff --git a/src/main/java/com/zh/project0512/aop/AdminLoginTokenInterceptor.java b/src/main/java/com/zh/project0512/aop/AdminLoginTokenInterceptor.java index 35534ff..e1d02fc 100644 --- a/src/main/java/com/zh/project0512/aop/AdminLoginTokenInterceptor.java +++ b/src/main/java/com/zh/project0512/aop/AdminLoginTokenInterceptor.java @@ -29,10 +29,16 @@ public class AdminLoginTokenInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - // 判断访问的方法上是否有@needToken注解 - HandlerMethod handlerMethod = (HandlerMethod) handler; - boolean tokenValid = handlerMethod.hasMethodAnnotation(AdminTokenValid.class); + boolean tokenValid =false; + try { + HandlerMethod handlerMethod = (HandlerMethod) handler; + tokenValid = handlerMethod.hasMethodAnnotation(AdminTokenValid.class); + }catch (Exception e){ + response.setStatus(500); + this.respUrlError(response); + return false; + } if (!tokenValid) { return true; } @@ -53,7 +59,7 @@ public class AdminLoginTokenInterceptor implements HandlerInterceptor { } /** - * 返回失败结果Json数据 + * 返回登录失败结果Json数据 */ private void respFail(ServletResponse response) throws IOException { Result err = Result.fail(HttpStatusEnum.LOGIN_FAILED); @@ -62,4 +68,14 @@ public class AdminLoginTokenInterceptor implements HandlerInterceptor { response.setContentType("application/json; charset=utf-8"); response.getOutputStream().write(s.getBytes()); } + /** + * 返回handler解析错误(路由地址错误) + */ + private void respUrlError(ServletResponse response) throws IOException { + Result err = Result.fail(HttpStatusEnum.NOT_FOUND); + String s = objectMapper.writeValueAsString(err); + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/json; charset=utf-8"); + response.getOutputStream().write(s.getBytes()); + } } diff --git a/src/main/java/com/zh/project0512/aop/LoginTokenInterceptor.java b/src/main/java/com/zh/project0512/aop/LoginTokenInterceptor.java index 3c13880..2c7e5e2 100644 --- a/src/main/java/com/zh/project0512/aop/LoginTokenInterceptor.java +++ b/src/main/java/com/zh/project0512/aop/LoginTokenInterceptor.java @@ -1,6 +1,7 @@ package com.zh.project0512.aop; import com.fasterxml.jackson.databind.ObjectMapper; +import com.zh.project0512.annotation.AdminTokenValid; import com.zh.project0512.annotation.TokenValid; import com.zh.project0512.utils.JwtUtil; import com.zh.project0512.utils.result.HttpStatusEnum; @@ -29,8 +30,15 @@ public class LoginTokenInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 判断访问的方法上是否有@needToken注解 - HandlerMethod handlerMethod = (HandlerMethod) handler; - boolean tokenValid = handlerMethod.hasMethodAnnotation(TokenValid.class); + boolean tokenValid =false; + try { + HandlerMethod handlerMethod = (HandlerMethod) handler; + tokenValid = handlerMethod.hasMethodAnnotation(AdminTokenValid.class); + }catch (Exception e){ + response.setStatus(500); + this.respUrlError(response); + return false; + } if (!tokenValid) { return true; } @@ -51,7 +59,7 @@ public class LoginTokenInterceptor implements HandlerInterceptor { } /** - * 返回失败结果Json数据 + * 返回登录失败结果Json数据 */ private void respFail(ServletResponse response) throws IOException { Result err = Result.fail(HttpStatusEnum.LOGIN_FAILED); @@ -60,4 +68,14 @@ public class LoginTokenInterceptor implements HandlerInterceptor { response.setContentType("application/json; charset=utf-8"); response.getOutputStream().write(s.getBytes()); } + /** + * 返回handler解析错误(路由地址错误) + */ + private void respUrlError(ServletResponse response) throws IOException { + Result err = Result.fail(HttpStatusEnum.NOT_FOUND); + String s = objectMapper.writeValueAsString(err); + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/json; charset=utf-8"); + response.getOutputStream().write(s.getBytes()); + } } diff --git a/src/main/java/com/zh/project0512/controller/manage/AdminController.java b/src/main/java/com/zh/project0512/controller/manage/AdminController.java index 9a838f0..e9b1213 100644 --- a/src/main/java/com/zh/project0512/controller/manage/AdminController.java +++ b/src/main/java/com/zh/project0512/controller/manage/AdminController.java @@ -74,17 +74,18 @@ public class AdminController { UpdateWrapper uw = new UpdateWrapper<>(); uw.eq("id", admin.getId()).set("token", token).set("lastLoginAt", LocalDateTime.now()); adminService.update(uw); + + JSONObject ad = (JSONObject) JSONObject.toJSON(admin); String roleIdsStr = admin.getRoleIds(); if (roleIdsStr != null && !roleIdsStr.trim().equals("")) { String[] roleIds = roleIdsStr.split(","); if (roleIds.length > 1) { - return Result.success(admin,"暂不支持多角色的用户菜单列表展示"); + return Result.success(ad,"暂不支持多角色的用户菜单列表展示"); } } AdminJurisdictionFBIDTO adminJurisdictionFBIDTO = new AdminJurisdictionFBIDTO(); adminJurisdictionFBIDTO.setRoleId(Integer.valueOf(roleIdsStr)); List byRoleId = userJurisdictionService.findByRoleId(adminJurisdictionFBIDTO); - JSONObject ad = (JSONObject) JSONObject.toJSON(admin); ad.put("role",byRoleId); return Result.success(ad); } diff --git a/src/main/java/com/zh/project0512/mapper/UserEffectRecordsMapper.java b/src/main/java/com/zh/project0512/mapper/UserEffectRecordsMapper.java index c63580a..67f39a8 100644 --- a/src/main/java/com/zh/project0512/mapper/UserEffectRecordsMapper.java +++ b/src/main/java/com/zh/project0512/mapper/UserEffectRecordsMapper.java @@ -35,7 +35,7 @@ public interface UserEffectRecordsMapper extends BaseMapper { "INNER JOIN (SELECT t1.openid,t2.createAt,IFNULL(sum(t2.effectResultTran),0) as effectValue from user t1 left join userEffectRecords t2 on t2.userId = t1.id GROUP BY openid) as t2 on t2.openid = t1.openid\n" + "${ew.customSqlSegment} " + "GROUP BY departmentId\n" + - "ORDER BY effectValue DESC") + "ORDER BY effectValue DESC,departmentId ASC") IPage rankByDepartment(IPage page, @Param("ew") Wrapper queryWrapper); @Select("SELECT t1.userId,t2.name as title,t2.avatar,t2.departmentId,t2.departmentName as subtitle,IFNULL(sum(t1.effectResultTran),0) as effectValue from userEffectRecords as t1\n" + diff --git a/src/main/java/com/zh/project0512/utils/RestExceptionHandler.java b/src/main/java/com/zh/project0512/utils/RestExceptionHandler.java index 15681db..521742d 100644 --- a/src/main/java/com/zh/project0512/utils/RestExceptionHandler.java +++ b/src/main/java/com/zh/project0512/utils/RestExceptionHandler.java @@ -10,6 +10,7 @@ import org.springframework.validation.ObjectError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.servlet.http.HttpServletRequest; @@ -61,6 +62,13 @@ public class RestExceptionHandler { return new ResponseEntity<>(result,HttpStatus.BAD_REQUEST); } + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(Exception.class) + @ResponseBody + public Result badRequestExceptionHandler(){ + return Result.fail(HttpStatusEnum.BAD_REQUEST); + } + /** * 处理自定义的业务异常 * @param req 请求