@ResponseBody @PutMapping @ApiOperation("修改") @LogMethod( type = 1, voParamIndex = 0 ) public HttpResult<Boolean> update(@RequestBody @Validated({Update.class}) V e) { if (this.isPermitted("update")) { this.beforSave(e, false); this.baseService.updateById((BasePO)e); return HttpResult.success(true); } else { throw new NotPremissionException(); } } public boolean isPermitted(String permitName) { NotCheckPermission notCheckPermission = (NotCheckPermission)this.getClass().getAnnotation(NotCheckPermission.class); if (Objects.nonNull(notCheckPermission)) { return true; } else { String path = super.getRequest().getServletPath(); String namespace = path.split("/")[2]; boolean bool = StpUtil.hasPermission(namespace + ":" + permitName); if (!bool) { LogNamespace annotation = (LogNamespace)this.getClass().getAnnotation(LogNamespace.class); List<String> namespaces = Arrays.asList(annotation.permissions()); Iterator var8 = namespaces.iterator(); while(var8.hasNext()) { String ns = (String)var8.next(); if (StpUtil.hasPermission(ns + ":" + permitName)) { return true; } } } return bool; } }
时间: 2024-02-10 14:34:15 浏览: 36
这段代码是一个Controller的update方法,使用了注解来配置接口的行为。具体注解和对应功能如下:
1. @ResponseBody:用于将返回值转换为JSON格式并返回给客户端。
2. @PutMapping:将HTTP请求映射到更新资源的操作。
3. @ApiOperation:Swagger注解,用于描述接口的功能。
4. @LogMethod:自定义注解,用于记录接口的调用日志。type表示日志类型,voParamIndex表示VO对象在方法参数中的索引位置。
接口的主要逻辑如下:
1. 判断当前用户是否有更新权限,如果没有则抛出NotPremissionException异常。
2. 调用beforSave方法,用于在保存前对VO对象进行处理。
3. 调用baseService.updateById方法,更新数据库中对应的记录。
4. 返回HttpResult.success(true),表示更新成功。
isPermitted方法用于判断当前用户是否有指定权限,具体逻辑如下:
1. 判断当前Controller是否有NotCheckPermission注解,如果有则直接返回true。
2. 获取当前请求的路径,并从中提取出命名空间。
3. 判断当前用户是否有命名空间+权限名称的权限,如果有则返回true。
4. 如果没有,则从LogNamespace注解中获取所有权限名称,并循环判断是否有对应权限,如果有则返回true。
5. 如果以上都没有匹配到,则返回false。
相关问题
@RequestMapping(params={"method=updateZjptEbsCbzx"},method=RequestMethod.POST) @ResponseBody是什么意思
@RequestMapping(params={"method=updateZjptEbsCbzx"},method=RequestMethod.POST) @ResponseBody 是一个用于定义请求映射的注解。它可以应用在Controller的方法上,用于指定处理特定请求的URL和请求方法。在这个例子中,@RequestMapping(params={"method=updateZjptEbsCbzx"},method=RequestMethod.POST) 表示该方法将处理具有"method=updateZjptEbsCbzx"参数且请求方法为POST的请求,并使用@ResponseBody注解将方法返回的对象直接作为响应体返回给客户端。
@ResponseBody和@Controller
@RequestMapping是Spring MVC中常用的注解,用于处理HTTP请求。@ResponseBody注解和@Controller注解都与@RequestMapping注解一起使用,用于控制Controller方法的行为和返回值。
@Controller注解用于标识一个类是Controller类,它告诉Spring框架将该类作为请求处理器来处理用户请求,并将请求映射到对应的方法上。@Controller注解通常与@RequestMapping注解一起使用,用于指定请求的URL路径。
@ResponseBody注解用于将Controller方法的返回值直接作为HTTP响应的内容返回给客户端。它告诉Spring框架将方法的返回值以特定的格式(如JSON或XML)写入到HTTP响应体中,而不是将其解析为视图页面。使用@ResponseBody注解可以方便地返回JSON数据或其他格式的数据。
总结起来,@ResponseBody注解相当于在@Controller中使用@ResponseBody注解,用于将方法的返回值作为HTTP响应的内容返回给客户端。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)