| | |
| | | import com.ruoyi.system.service.ISysConfigService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | @ApiOperation("根据参数编号获取详细信息") |
| | | @PreAuthorize("@ss.hasPermi('system:config:query')") |
| | | @GetMapping(value = "/{configId}") |
| | | public AjaxResult<SysConfig> getInfo(@PathVariable Long configId) { |
| | | public AjaxResult<SysConfig> getInfo(@ApiParam("参数ID") @PathVariable Long configId) { |
| | | return AjaxResult.success(configService.selectConfigById(configId)); |
| | | } |
| | | |
| | |
| | | */ |
| | | @ApiOperation("根据参数键名查询参数值") |
| | | @GetMapping(value = "/configKey/{configKey}") |
| | | public AjaxResult<Void> getConfigKey(@PathVariable String configKey) { |
| | | public AjaxResult<Void> getConfigKey(@ApiParam("参数Key") @PathVariable String configKey) { |
| | | return AjaxResult.success(configService.selectConfigByKey(configKey)); |
| | | } |
| | | |
| | |
| | | @PreAuthorize("@ss.hasPermi('system:config:remove')") |
| | | @Log(title = "参数管理", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{configIds}") |
| | | public AjaxResult<Void> remove(@PathVariable Long[] configIds) { |
| | | public AjaxResult<Void> remove(@ApiParam("参数ID串") @PathVariable Long[] configIds) { |
| | | configService.deleteConfigByIds(configIds); |
| | | return success(); |
| | | } |
| | |
| | | import com.ruoyi.system.service.ISysDeptService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | @ApiOperation("查询部门列表(排除节点)") |
| | | @PreAuthorize("@ss.hasPermi('system:dept:list')") |
| | | @GetMapping("/list/exclude/{deptId}") |
| | | public AjaxResult<List<SysDept>> excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) { |
| | | public AjaxResult<List<SysDept>> excludeChild(@ApiParam("部门ID") @PathVariable(value = "deptId", required = false) Long deptId) { |
| | | List<SysDept> depts = deptService.selectDeptList(new SysDept()); |
| | | depts.removeIf(d -> d.getDeptId().equals(deptId) |
| | | || ArrayUtil.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")); |
| | |
| | | @ApiOperation("根据部门编号获取详细信息") |
| | | @PreAuthorize("@ss.hasPermi('system:dept:query')") |
| | | @GetMapping(value = "/{deptId}") |
| | | public AjaxResult<SysDept> getInfo(@PathVariable Long deptId) { |
| | | public AjaxResult<SysDept> getInfo(@ApiParam("部门ID") @PathVariable Long deptId) { |
| | | deptService.checkDeptDataScope(deptId); |
| | | return AjaxResult.success(deptService.selectDeptById(deptId)); |
| | | } |
| | |
| | | */ |
| | | @ApiOperation("加载对应角色部门列表树") |
| | | @GetMapping(value = "/roleDeptTreeselect/{roleId}") |
| | | public AjaxResult<Map<String, Object>> roleDeptTreeselect(@PathVariable("roleId") Long roleId) { |
| | | public AjaxResult<Map<String, Object>> roleDeptTreeselect(@ApiParam("角色ID") @PathVariable("roleId") Long roleId) { |
| | | List<SysDept> depts = deptService.selectDeptList(new SysDept()); |
| | | Map<String, Object> ajax = new HashMap<>(); |
| | | ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); |
| | |
| | | @PreAuthorize("@ss.hasPermi('system:dept:remove')") |
| | | @Log(title = "部门管理", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{deptId}") |
| | | public AjaxResult<Void> remove(@PathVariable Long deptId) { |
| | | public AjaxResult<Void> remove(@ApiParam("部门ID串") @PathVariable Long deptId) { |
| | | if (deptService.hasChildByDeptId(deptId)) { |
| | | return AjaxResult.error("存在下级部门,不允许删除"); |
| | | } |
| | |
| | | import com.ruoyi.system.service.ISysDictTypeService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | @ApiOperation("查询字典数据详细") |
| | | @PreAuthorize("@ss.hasPermi('system:dict:query')") |
| | | @GetMapping(value = "/{dictCode}") |
| | | public AjaxResult<SysDictData> getInfo(@PathVariable Long dictCode) { |
| | | public AjaxResult<SysDictData> getInfo(@ApiParam("字典code") @PathVariable Long dictCode) { |
| | | return AjaxResult.success(dictDataService.selectDictDataById(dictCode)); |
| | | } |
| | | |
| | |
| | | */ |
| | | @ApiOperation("根据字典类型查询字典数据信息") |
| | | @GetMapping(value = "/type/{dictType}") |
| | | public AjaxResult<List<SysDictData>> dictType(@PathVariable String dictType) { |
| | | public AjaxResult<List<SysDictData>> dictType(@ApiParam("字典类型") @PathVariable String dictType) { |
| | | List<SysDictData> data = dictTypeService.selectDictDataByType(dictType); |
| | | if (StringUtils.isNull(data)) { |
| | | data = new ArrayList<>(); |
| | |
| | | @PreAuthorize("@ss.hasPermi('system:dict:remove')") |
| | | @Log(title = "字典类型", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{dictCodes}") |
| | | public AjaxResult<Void> remove(@PathVariable Long[] dictCodes) { |
| | | public AjaxResult<Void> remove(@ApiParam("字典code串") @PathVariable Long[] dictCodes) { |
| | | dictDataService.deleteDictDataByIds(dictCodes); |
| | | return success(); |
| | | } |
| | |
| | | import com.ruoyi.system.service.ISysDictTypeService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | @ApiOperation("查询字典类型详细") |
| | | @PreAuthorize("@ss.hasPermi('system:dict:query')") |
| | | @GetMapping(value = "/{dictId}") |
| | | public AjaxResult<SysDictType> getInfo(@PathVariable Long dictId) { |
| | | public AjaxResult<SysDictType> getInfo(@ApiParam("字典ID") @PathVariable Long dictId) { |
| | | return AjaxResult.success(dictTypeService.selectDictTypeById(dictId)); |
| | | } |
| | | |
| | |
| | | @PreAuthorize("@ss.hasPermi('system:dict:remove')") |
| | | @Log(title = "字典类型", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{dictIds}") |
| | | public AjaxResult<Void> remove(@PathVariable Long[] dictIds) { |
| | | public AjaxResult<Void> remove(@ApiParam("字典ID串") @PathVariable Long[] dictIds) { |
| | | dictTypeService.deleteDictTypeByIds(dictIds); |
| | | return success(); |
| | | } |
| | |
| | | import com.ruoyi.system.service.ISysMenuService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | @ApiOperation("根据菜单编号获取详细信息") |
| | | @PreAuthorize("@ss.hasPermi('system:menu:query')") |
| | | @GetMapping(value = "/{menuId}") |
| | | public AjaxResult<SysMenu> getInfo(@PathVariable Long menuId) { |
| | | public AjaxResult<SysMenu> getInfo(@ApiParam("菜单ID") @PathVariable Long menuId) { |
| | | return AjaxResult.success(menuService.selectMenuById(menuId)); |
| | | } |
| | | |
| | |
| | | */ |
| | | @ApiOperation("加载对应角色菜单列表树") |
| | | @GetMapping(value = "/roleMenuTreeselect/{roleId}") |
| | | public AjaxResult<Map<String, Object>> roleMenuTreeselect(@PathVariable("roleId") Long roleId) { |
| | | public AjaxResult<Map<String, Object>> roleMenuTreeselect(@ApiParam("角色ID") @PathVariable("roleId") Long roleId) { |
| | | List<SysMenu> menus = menuService.selectMenuList(getUserId()); |
| | | Map<String, Object> ajax = new HashMap<>(); |
| | | ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId)); |
| | |
| | | @PreAuthorize("@ss.hasPermi('system:menu:remove')") |
| | | @Log(title = "菜单管理", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{menuId}") |
| | | public AjaxResult<Void> remove(@PathVariable("menuId") Long menuId) { |
| | | public AjaxResult<Void> remove(@ApiParam("菜单ID") @PathVariable("menuId") Long menuId) { |
| | | if (menuService.hasChildByMenuId(menuId)) { |
| | | return AjaxResult.error("存在子菜单,不允许删除"); |
| | | } |
| | |
| | | import com.ruoyi.system.service.ISysNoticeService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | @ApiOperation("根据通知公告编号获取详细信息") |
| | | @PreAuthorize("@ss.hasPermi('system:notice:query')") |
| | | @GetMapping(value = "/{noticeId}") |
| | | public AjaxResult<SysNotice> getInfo(@PathVariable Long noticeId) { |
| | | public AjaxResult<SysNotice> getInfo(@ApiParam("公告ID") @PathVariable Long noticeId) { |
| | | return AjaxResult.success(noticeService.selectNoticeById(noticeId)); |
| | | } |
| | | |
| | |
| | | @PreAuthorize("@ss.hasPermi('system:notice:remove')") |
| | | @Log(title = "通知公告", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{noticeIds}") |
| | | public AjaxResult<Void> remove(@PathVariable Long[] noticeIds) { |
| | | public AjaxResult<Void> remove(@ApiParam("公告ID串") @PathVariable Long[] noticeIds) { |
| | | return toAjax(noticeService.deleteNoticeByIds(noticeIds)); |
| | | } |
| | | } |
| | |
| | | import com.ruoyi.system.service.ISysOssConfigService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | @ApiOperation("获取对象存储配置详细信息") |
| | | @PreAuthorize("@ss.hasPermi('system:oss:query')") |
| | | @GetMapping("/{ossConfigId}") |
| | | public AjaxResult<SysOssConfigVo> getInfo(@NotNull(message = "主键不能为空") |
| | | public AjaxResult<SysOssConfigVo> getInfo(@ApiParam("OSS配置ID") |
| | | @NotNull(message = "主键不能为空") |
| | | @PathVariable("ossConfigId") Integer ossConfigId) { |
| | | return AjaxResult.success(iSysOssConfigService.queryById(ossConfigId)); |
| | | } |
| | |
| | | @PreAuthorize("@ss.hasPermi('system:oss:remove')") |
| | | @Log(title = "对象存储配置", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{ossConfigIds}") |
| | | public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空") |
| | | public AjaxResult<Void> remove(@ApiParam("OSS配置ID串") |
| | | @NotEmpty(message = "主键不能为空") |
| | | @PathVariable Long[] ossConfigIds) { |
| | | return toAjax(iSysOssConfigService.deleteWithValidByIds(Arrays.asList(ossConfigIds), true) ? 1 : 0); |
| | | } |
| | |
| | | import com.ruoyi.system.domain.vo.SysOssVo; |
| | | import com.ruoyi.system.service.ISysConfigService; |
| | | import com.ruoyi.system.service.ISysOssService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.*; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.MediaType; |
| | |
| | | */ |
| | | @ApiOperation("上传OSS对象存储") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "file", value = "文件", dataType = "java.io.File", required = true), |
| | | @ApiImplicitParam(name = "file", value = "文件", dataType = "java.io.File", required = true), |
| | | }) |
| | | @PreAuthorize("@ss.hasPermi('system:oss:upload')") |
| | | @Log(title = "OSS对象存储", businessType = BusinessType.INSERT) |
| | |
| | | @ApiOperation("下载OSS对象存储") |
| | | @PreAuthorize("@ss.hasPermi('system:oss:download')") |
| | | @GetMapping("/download/{ossId}") |
| | | public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException { |
| | | public void download(@ApiParam("OSS对象ID") @PathVariable Long ossId, HttpServletResponse response) throws IOException { |
| | | SysOss sysOss = iSysOssService.getById(ossId); |
| | | if (ObjectUtil.isNull(sysOss)) { |
| | | throw new ServiceException("文件数据不存在!"); |
| | |
| | | @PreAuthorize("@ss.hasPermi('system:oss:remove')") |
| | | @Log(title = "OSS对象存储", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{ossIds}") |
| | | public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空") |
| | | public AjaxResult<Void> remove(@ApiParam("OSS对象ID串") |
| | | @NotEmpty(message = "主键不能为空") |
| | | @PathVariable Long[] ossIds) { |
| | | return toAjax(iSysOssService.deleteWithValidByIds(Arrays.asList(ossIds), true) ? 1 : 0); |
| | | } |
| | |
| | | public AjaxResult<Void> changePreviewListResource(@RequestBody String body) { |
| | | Map<String, Boolean> map = JsonUtils.parseMap(body); |
| | | SysConfig config = iSysConfigService.getOne(new LambdaQueryWrapper<SysConfig>() |
| | | .eq(SysConfig::getConfigKey, CloudConstant.PEREVIEW_LIST_RESOURCE_KEY)); |
| | | .eq(SysConfig::getConfigKey, CloudConstant.PEREVIEW_LIST_RESOURCE_KEY)); |
| | | config.setConfigValue(map.get("previewListResource").toString()); |
| | | return toAjax(iSysConfigService.updateConfig(config)); |
| | | } |
| | |
| | | import com.ruoyi.system.service.ISysPostService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | @ApiOperation("根据岗位编号获取详细信息") |
| | | @PreAuthorize("@ss.hasPermi('system:post:query')") |
| | | @GetMapping(value = "/{postId}") |
| | | public AjaxResult<SysPost> getInfo(@PathVariable Long postId) { |
| | | public AjaxResult<SysPost> getInfo(@ApiParam("岗位ID") @PathVariable Long postId) { |
| | | return AjaxResult.success(postService.selectPostById(postId)); |
| | | } |
| | | |
| | |
| | | @PreAuthorize("@ss.hasPermi('system:post:remove')") |
| | | @Log(title = "岗位管理", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{postIds}") |
| | | public AjaxResult<Void> remove(@PathVariable Long[] postIds) { |
| | | public AjaxResult<Void> remove(@ApiParam("岗位ID串") @PathVariable Long[] postIds) { |
| | | return toAjax(postService.deletePostByIds(postIds)); |
| | | } |
| | | |
| | |
| | | * 重置密码 |
| | | */ |
| | | @ApiOperation("重置密码") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "oldPassword", value = "旧密码", paramType = "query"), |
| | | @ApiImplicitParam(name = "newPassword", value = "新密码", paramType = "query") |
| | | }) |
| | | @Log(title = "个人信息", businessType = BusinessType.UPDATE) |
| | | @PutMapping("/updatePwd") |
| | | public AjaxResult<Void> updatePwd(String oldPassword, String newPassword) { |
| | |
| | | */ |
| | | @ApiOperation("头像上传") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "file", value = "用户头像", dataType = "java.io.File", required = true), |
| | | @ApiImplicitParam(name = "avatarfile", value = "用户头像", dataType = "java.io.File", required = true), |
| | | }) |
| | | @Log(title = "用户头像", businessType = BusinessType.UPDATE) |
| | | @PostMapping("/avatar") |
| | |
| | | import com.ruoyi.system.service.ISysRoleService; |
| | | import com.ruoyi.system.service.ISysUserService; |
| | | import com.ruoyi.system.service.SysPermissionService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.*; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | @ApiOperation("根据角色编号获取详细信息") |
| | | @PreAuthorize("@ss.hasPermi('system:role:query')") |
| | | @GetMapping(value = "/{roleId}") |
| | | public AjaxResult<SysRole> getInfo(@PathVariable Long roleId) { |
| | | public AjaxResult<SysRole> getInfo(@ApiParam("角色ID") @PathVariable Long roleId) { |
| | | roleService.checkRoleDataScope(roleId); |
| | | return AjaxResult.success(roleService.selectRoleById(roleId)); |
| | | } |
| | |
| | | @PreAuthorize("@ss.hasPermi('system:role:remove')") |
| | | @Log(title = "角色管理", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{roleIds}") |
| | | public AjaxResult<Void> remove(@PathVariable Long[] roleIds) { |
| | | public AjaxResult<Void> remove(@ApiParam("岗位ID串") @PathVariable Long[] roleIds) { |
| | | return toAjax(roleService.deleteRoleByIds(roleIds)); |
| | | } |
| | | |
| | |
| | | * 批量取消授权用户 |
| | | */ |
| | | @ApiOperation("批量取消授权用户") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "roleId", value = "角色ID", paramType = "query"), |
| | | @ApiImplicitParam(name = "userIds", value = "用户ID串", paramType = "query") |
| | | }) |
| | | @PreAuthorize("@ss.hasPermi('system:role:edit')") |
| | | @Log(title = "角色管理", businessType = BusinessType.GRANT) |
| | | @PutMapping("/authUser/cancelAll") |
| | |
| | | * 批量选择用户授权 |
| | | */ |
| | | @ApiOperation("批量选择用户授权") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "roleId", value = "角色ID", paramType = "query"), |
| | | @ApiImplicitParam(name = "userIds", value = "用户ID串", paramType = "query") |
| | | }) |
| | | @PreAuthorize("@ss.hasPermi('system:role:edit')") |
| | | @Log(title = "角色管理", businessType = BusinessType.GRANT) |
| | | @PutMapping("/authUser/selectAll") |
| | |
| | | import com.ruoyi.system.service.ISysPostService; |
| | | import com.ruoyi.system.service.ISysRoleService; |
| | | import com.ruoyi.system.service.ISysUserService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.*; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | @ApiOperation("根据用户编号获取详细信息") |
| | | @PreAuthorize("@ss.hasPermi('system:user:query')") |
| | | @GetMapping(value = {"/", "/{userId}"}) |
| | | public AjaxResult<Map<String, Object>> getInfo(@PathVariable(value = "userId", required = false) Long userId) { |
| | | public AjaxResult<Map<String, Object>> getInfo(@ApiParam("用户ID") @PathVariable(value = "userId", required = false) Long userId) { |
| | | userService.checkUserDataScope(userId); |
| | | Map<String, Object> ajax = new HashMap<>(); |
| | | List<SysRole> roles = roleService.selectRoleAll(); |
| | |
| | | @PreAuthorize("@ss.hasPermi('system:user:remove')") |
| | | @Log(title = "用户管理", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{userIds}") |
| | | public AjaxResult<Void> remove(@PathVariable Long[] userIds) { |
| | | public AjaxResult<Void> remove(@ApiParam("角色ID串") @PathVariable Long[] userIds) { |
| | | if (ArrayUtil.contains(userIds, getUserId())) { |
| | | return error("当前用户不能删除"); |
| | | } |
| | |
| | | @ApiOperation("根据用户编号获取授权角色") |
| | | @PreAuthorize("@ss.hasPermi('system:user:query')") |
| | | @GetMapping("/authRole/{userId}") |
| | | public AjaxResult<Map<String, Object>> authRole(@PathVariable("userId") Long userId) { |
| | | public AjaxResult<Map<String, Object>> authRole(@ApiParam("用户ID") @PathVariable("userId") Long userId) { |
| | | SysUser user = userService.selectUserById(userId); |
| | | List<SysRole> roles = roleService.selectRolesByUserId(userId); |
| | | Map<String, Object> ajax = new HashMap<>(); |
| | |
| | | * 用户授权角色 |
| | | */ |
| | | @ApiOperation("用户授权角色") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "userId", value = "用户Id", paramType = "query"), |
| | | @ApiImplicitParam(name = "roleIds", value = "角色ID串", paramType = "query") |
| | | }) |
| | | @PreAuthorize("@ss.hasPermi('system:user:edit')") |
| | | @Log(title = "用户管理", businessType = BusinessType.GRANT) |
| | | @PutMapping("/authRole") |
| | |
| | | @RequestMapping("/demo/cache") |
| | | public class RedisCacheController { |
| | | |
| | | /** |
| | | * 测试 @Cacheable |
| | | * |
| | | * 表示这个方法有了缓存的功能,方法的返回值会被缓存下来 |
| | | * 下一次调用该方法前,会去检查是否缓存中已经有值 |
| | | * 如果有就直接返回,不调用方法 |
| | | * 如果没有,就调用方法,然后把结果缓存起来 |
| | | * 这个注解「一般用在查询方法上」 |
| | | * |
| | | * 重点说明: 缓存注解严谨与其他筛选数据功能一起使用 |
| | | * 例如: 数据权限注解 会造成 缓存击穿 与 数据不一致问题 |
| | | * |
| | | * cacheNames 为配置文件内 groupId |
| | | */ |
| | | @ApiOperation("测试 @Cacheable") |
| | | @Cacheable(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null") |
| | | @GetMapping("/test1") |
| | | public AjaxResult<String> test1(String key, String value){ |
| | | return AjaxResult.success("操作成功", value); |
| | | } |
| | | /** |
| | | * 测试 @Cacheable |
| | | * <p> |
| | | * 表示这个方法有了缓存的功能,方法的返回值会被缓存下来 |
| | | * 下一次调用该方法前,会去检查是否缓存中已经有值 |
| | | * 如果有就直接返回,不调用方法 |
| | | * 如果没有,就调用方法,然后把结果缓存起来 |
| | | * 这个注解「一般用在查询方法上」 |
| | | * <p> |
| | | * 重点说明: 缓存注解严谨与其他筛选数据功能一起使用 |
| | | * 例如: 数据权限注解 会造成 缓存击穿 与 数据不一致问题 |
| | | * <p> |
| | | * cacheNames 为配置文件内 groupId |
| | | */ |
| | | @ApiOperation("测试 @Cacheable") |
| | | @Cacheable(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null") |
| | | @GetMapping("/test1") |
| | | public AjaxResult<String> test1(String key, String value) { |
| | | return AjaxResult.success("操作成功", value); |
| | | } |
| | | |
| | | /** |
| | | * 测试 @CachePut |
| | | * |
| | | * 加了@CachePut注解的方法,会把方法的返回值put到缓存里面缓存起来,供其它地方使用 |
| | | * 它「通常用在新增方法上」 |
| | | * |
| | | * cacheNames 为 配置文件内 groupId |
| | | */ |
| | | @ApiOperation("测试 @CachePut") |
| | | @CachePut(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null") |
| | | @GetMapping("/test2") |
| | | public AjaxResult<String> test2(String key, String value){ |
| | | return AjaxResult.success("操作成功", value); |
| | | } |
| | | /** |
| | | * 测试 @CachePut |
| | | * <p> |
| | | * 加了@CachePut注解的方法,会把方法的返回值put到缓存里面缓存起来,供其它地方使用 |
| | | * 它「通常用在新增方法上」 |
| | | * <p> |
| | | * cacheNames 为 配置文件内 groupId |
| | | */ |
| | | @ApiOperation("测试 @CachePut") |
| | | @CachePut(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null") |
| | | @GetMapping("/test2") |
| | | public AjaxResult<String> test2(String key, String value) { |
| | | return AjaxResult.success("操作成功", value); |
| | | } |
| | | |
| | | /** |
| | | * 测试 @CacheEvict |
| | | * |
| | | * 使用了CacheEvict注解的方法,会清空指定缓存 |
| | | * 「一般用在更新或者删除的方法上」 |
| | | * |
| | | * cacheNames 为 配置文件内 groupId |
| | | */ |
| | | @ApiOperation("测试 @CacheEvict") |
| | | @CacheEvict(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null") |
| | | @GetMapping("/test3") |
| | | public AjaxResult<String> test3(String key, String value){ |
| | | return AjaxResult.success("操作成功", value); |
| | | } |
| | | /** |
| | | * 测试 @CacheEvict |
| | | * <p> |
| | | * 使用了CacheEvict注解的方法,会清空指定缓存 |
| | | * 「一般用在更新或者删除的方法上」 |
| | | * <p> |
| | | * cacheNames 为 配置文件内 groupId |
| | | */ |
| | | @ApiOperation("测试 @CacheEvict") |
| | | @CacheEvict(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null") |
| | | @GetMapping("/test3") |
| | | public AjaxResult<String> test3(String key, String value) { |
| | | return AjaxResult.success("操作成功", value); |
| | | } |
| | | |
| | | /** |
| | | * 测试设置过期时间 |
| | | * 手动设置过期时间10秒 |
| | | * 11秒后获取 判断是否相等 |
| | | */ |
| | | @ApiOperation("测试设置过期时间") |
| | | @GetMapping("/test6") |
| | | public AjaxResult<Boolean> test6(String key, String value){ |
| | | RedisUtils.setCacheObject(key, value); |
| | | boolean flag = RedisUtils.expire(key, 10, TimeUnit.SECONDS); |
| | | System.out.println("***********" + flag); |
| | | try { |
| | | Thread.sleep(11 * 1000); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | Object obj = RedisUtils.getCacheObject(key); |
| | | return AjaxResult.success("操作成功", value.equals(obj)); |
| | | } |
| | | /** |
| | | * 测试设置过期时间 |
| | | * 手动设置过期时间10秒 |
| | | * 11秒后获取 判断是否相等 |
| | | */ |
| | | @ApiOperation("测试设置过期时间") |
| | | @GetMapping("/test6") |
| | | public AjaxResult<Boolean> test6(String key, String value) { |
| | | RedisUtils.setCacheObject(key, value); |
| | | boolean flag = RedisUtils.expire(key, 10, TimeUnit.SECONDS); |
| | | System.out.println("***********" + flag); |
| | | try { |
| | | Thread.sleep(11 * 1000); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | Object obj = RedisUtils.getCacheObject(key); |
| | | return AjaxResult.success("操作成功", value.equals(obj)); |
| | | } |
| | | |
| | | } |
| | |
| | | @RequestMapping("/demo/redisLock") |
| | | public class RedisLockController { |
| | | |
| | | @Autowired |
| | | private LockTemplate lockTemplate; |
| | | @Autowired |
| | | private LockTemplate lockTemplate; |
| | | |
| | | /** |
| | | * 测试lock4j 注解 |
| | | */ |
| | | @ApiOperation("测试lock4j 注解") |
| | | @Lock4j(keys = {"#key"}) |
| | | @GetMapping("/testLock4j") |
| | | public AjaxResult<String> testLock4j(String key,String value){ |
| | | System.out.println("start:"+key+",time:"+ LocalTime.now().toString()); |
| | | try { |
| | | Thread.sleep(10000); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | System.out.println("end :"+key+",time:"+LocalTime.now().toString()); |
| | | return AjaxResult.success("操作成功",value); |
| | | } |
| | | /** |
| | | * 测试lock4j 注解 |
| | | */ |
| | | @ApiOperation("测试lock4j 注解") |
| | | @Lock4j(keys = {"#key"}) |
| | | @GetMapping("/testLock4j") |
| | | public AjaxResult<String> testLock4j(String key, String value) { |
| | | System.out.println("start:" + key + ",time:" + LocalTime.now().toString()); |
| | | try { |
| | | Thread.sleep(10000); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | System.out.println("end :" + key + ",time:" + LocalTime.now().toString()); |
| | | return AjaxResult.success("操作成功", value); |
| | | } |
| | | |
| | | /** |
| | | * 测试lock4j 工具 |
| | | */ |
| | | @ApiOperation("测试lock4j 工具") |
| | | @GetMapping("/testLock4jLockTemaplate") |
| | | public AjaxResult<String> testLock4jLockTemaplate(String key,String value){ |
| | | final LockInfo lockInfo = lockTemplate.lock(key, 30000L, 5000L, RedissonLockExecutor.class); |
| | | if (null == lockInfo) { |
| | | throw new RuntimeException("业务处理中,请稍后再试"); |
| | | } |
| | | // 获取锁成功,处理业务 |
| | | try { |
| | | try { |
| | | Thread.sleep(8000); |
| | | } catch (InterruptedException e) { |
| | | // |
| | | } |
| | | System.out.println("执行简单方法1 , 当前线程:" + Thread.currentThread().getName()); |
| | | } finally { |
| | | //释放锁 |
| | | lockTemplate.releaseLock(lockInfo); |
| | | } |
| | | //结束 |
| | | return AjaxResult.success("操作成功",value); |
| | | } |
| | | /** |
| | | * 测试lock4j 工具 |
| | | */ |
| | | @ApiOperation("测试lock4j 工具") |
| | | @GetMapping("/testLock4jLockTemaplate") |
| | | public AjaxResult<String> testLock4jLockTemaplate(String key, String value) { |
| | | final LockInfo lockInfo = lockTemplate.lock(key, 30000L, 5000L, RedissonLockExecutor.class); |
| | | if (null == lockInfo) { |
| | | throw new RuntimeException("业务处理中,请稍后再试"); |
| | | } |
| | | // 获取锁成功,处理业务 |
| | | try { |
| | | try { |
| | | Thread.sleep(8000); |
| | | } catch (InterruptedException e) { |
| | | // |
| | | } |
| | | System.out.println("执行简单方法1 , 当前线程:" + Thread.currentThread().getName()); |
| | | } finally { |
| | | //释放锁 |
| | | lockTemplate.releaseLock(lockInfo); |
| | | } |
| | | //结束 |
| | | return AjaxResult.success("操作成功", value); |
| | | } |
| | | |
| | | /** |
| | | * 测试spring-cache注解 |
| | | */ |
| | | @ApiOperation("测试spring-cache注解") |
| | | @Cacheable(value = "test", key = "#key") |
| | | @GetMapping("/testCache") |
| | | public AjaxResult<String> testCache(String key) { |
| | | return AjaxResult.success("操作成功", key); |
| | | } |
| | | /** |
| | | * 测试spring-cache注解 |
| | | */ |
| | | @ApiOperation("测试spring-cache注解") |
| | | @Cacheable(value = "test", key = "#key") |
| | | @GetMapping("/testCache") |
| | | public AjaxResult<String> testCache(String key) { |
| | | return AjaxResult.success("操作成功", key); |
| | | } |
| | | } |
| | |
| | | import com.ruoyi.common.utils.RedisUtils; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | |
| | | @RequestMapping("/demo/redis/pubsub") |
| | | public class RedisPubSubController { |
| | | |
| | | @ApiOperation("发布消息") |
| | | @GetMapping("/pub") |
| | | public AjaxResult<Void> pub(String key, String value){ |
| | | RedisUtils.publish(key, value, consumer -> { |
| | | System.out.println("发布通道 => " + key + ", 发送值 => " + value); |
| | | }); |
| | | return AjaxResult.success("操作成功"); |
| | | } |
| | | @ApiOperation("发布消息") |
| | | @GetMapping("/pub") |
| | | public AjaxResult<Void> pub(@ApiParam("通道Key") String key, @ApiParam("发送内容") String value) { |
| | | RedisUtils.publish(key, value, consumer -> { |
| | | System.out.println("发布通道 => " + key + ", 发送值 => " + value); |
| | | }); |
| | | return AjaxResult.success("操作成功"); |
| | | } |
| | | |
| | | @ApiOperation("订阅消息") |
| | | @GetMapping("/sub") |
| | | public AjaxResult<Void> sub(String key){ |
| | | RedisUtils.subscribe(key, String.class, msg -> { |
| | | System.out.println("订阅通道 => " + key + ", 接收值 => " + msg); |
| | | }); |
| | | return AjaxResult.success("操作成功"); |
| | | } |
| | | @ApiOperation("订阅消息") |
| | | @GetMapping("/sub") |
| | | public AjaxResult<Void> sub(@ApiParam("通道Key") String key) { |
| | | RedisUtils.subscribe(key, String.class, msg -> { |
| | | System.out.println("订阅通道 => " + key + ", 接收值 => " + msg); |
| | | }); |
| | | return AjaxResult.success("操作成功"); |
| | | } |
| | | |
| | | } |
| | |
| | | @RequestMapping("/demo/rateLimiter") |
| | | public class RedisRateLimiterController { |
| | | |
| | | /** |
| | | * 测试全局限流 |
| | | * 全局影响 |
| | | */ |
| | | @ApiOperation("测试全局限流") |
| | | @RateLimiter(count = 2, time = 10) |
| | | @GetMapping("/test") |
| | | public AjaxResult<String> test(String value){ |
| | | return AjaxResult.success("操作成功",value); |
| | | } |
| | | /** |
| | | * 测试全局限流 |
| | | * 全局影响 |
| | | */ |
| | | @ApiOperation("测试全局限流") |
| | | @RateLimiter(count = 2, time = 10) |
| | | @GetMapping("/test") |
| | | public AjaxResult<String> test(String value) { |
| | | return AjaxResult.success("操作成功", value); |
| | | } |
| | | |
| | | /** |
| | | * 测试请求IP限流 |
| | | * 同一IP请求受影响 |
| | | */ |
| | | @ApiOperation("测试请求IP限流") |
| | | @RateLimiter(count = 2, time = 10, limitType = LimitType.IP) |
| | | @GetMapping("/testip") |
| | | public AjaxResult<String> testip(String value){ |
| | | return AjaxResult.success("操作成功",value); |
| | | } |
| | | /** |
| | | * 测试请求IP限流 |
| | | * 同一IP请求受影响 |
| | | */ |
| | | @ApiOperation("测试请求IP限流") |
| | | @RateLimiter(count = 2, time = 10, limitType = LimitType.IP) |
| | | @GetMapping("/testip") |
| | | public AjaxResult<String> testip(String value) { |
| | | return AjaxResult.success("操作成功", value); |
| | | } |
| | | |
| | | /** |
| | | * 测试集群实例限流 |
| | | * 启动两个后端服务互不影响 |
| | | */ |
| | | @ApiOperation("测试集群实例限流") |
| | | @RateLimiter(count = 2, time = 10, limitType = LimitType.CLUSTER) |
| | | @GetMapping("/testcluster") |
| | | public AjaxResult<String> testcluster(String value){ |
| | | return AjaxResult.success("操作成功",value); |
| | | } |
| | | /** |
| | | * 测试集群实例限流 |
| | | * 启动两个后端服务互不影响 |
| | | */ |
| | | @ApiOperation("测试集群实例限流") |
| | | @RateLimiter(count = 2, time = 10, limitType = LimitType.CLUSTER) |
| | | @GetMapping("/testcluster") |
| | | public AjaxResult<String> testcluster(String value) { |
| | | return AjaxResult.success("操作成功", value); |
| | | } |
| | | |
| | | } |
| | |
| | | @RequestMapping("/swagger/demo") |
| | | public class Swagger3DemoController { |
| | | |
| | | /** |
| | | * 上传请求 |
| | | * 必须使用 @RequestPart 注解标注为文件 |
| | | * dataType 必须为 "java.io.File" |
| | | */ |
| | | @ApiOperation(value = "通用上传请求") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "file", value = "文件", dataType = "java.io.File", required = true), |
| | | }) |
| | | @PostMapping(value = "/upload") |
| | | public AjaxResult<String> upload(@RequestPart("file") MultipartFile file) { |
| | | return AjaxResult.success("操作成功", file.getOriginalFilename()); |
| | | } |
| | | /** |
| | | * 上传请求 |
| | | * 必须使用 @RequestPart 注解标注为文件 |
| | | * dataType 必须为 "java.io.File" |
| | | */ |
| | | @ApiOperation(value = "通用上传请求") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "file", value = "文件", dataType = "java.io.File", required = true), |
| | | }) |
| | | @PostMapping(value = "/upload") |
| | | public AjaxResult<String> upload(@RequestPart("file") MultipartFile file) { |
| | | return AjaxResult.success("操作成功", file.getOriginalFilename()); |
| | | } |
| | | |
| | | } |
| | |
| | | /** |
| | | * 新增批量方法 可完美替代 saveBatch 秒级插入上万数据 (对mysql负荷较大) |
| | | */ |
| | | @ApiOperation(value = "新增批量方法") |
| | | @ApiOperation(value = "新增批量方法") |
| | | @PostMapping("/add") |
| | | // @DataSource(DataSourceType.SLAVE) |
| | | public AjaxResult<Void> add() { |
| | | List<TestDemo> list = new ArrayList<>(); |
| | | for (int i = 0; i < 1000; i++) { |
| | | list.add(new TestDemo().setOrderNum(-1L).setTestKey("批量新增").setValue("测试新增")); |
| | | } |
| | | List<TestDemo> list = new ArrayList<>(); |
| | | for (int i = 0; i < 1000; i++) { |
| | | list.add(new TestDemo().setOrderNum(-1L).setTestKey("批量新增").setValue("测试新增")); |
| | | } |
| | | return toAjax(iTestDemoService.saveAll(list) ? 1 : 0); |
| | | } |
| | | |
| | | /** |
| | | * 新增或更新 可完美替代 saveOrUpdateBatch 高性能 |
| | | */ |
| | | @ApiOperation(value = "新增或更新批量方法") |
| | | @PostMapping("/addOrUpdate") |
| | | /** |
| | | * 新增或更新 可完美替代 saveOrUpdateBatch 高性能 |
| | | */ |
| | | @ApiOperation(value = "新增或更新批量方法") |
| | | @PostMapping("/addOrUpdate") |
| | | // @DataSource(DataSourceType.SLAVE) |
| | | public AjaxResult<Void> addOrUpdate() { |
| | | List<TestDemo> list = new ArrayList<>(); |
| | | for (int i = 0; i < 1000; i++) { |
| | | list.add(new TestDemo().setOrderNum(-1L).setTestKey("批量新增").setValue("测试新增")); |
| | | } |
| | | iTestDemoService.saveAll(list); |
| | | for (int i = 0; i < list.size(); i++) { |
| | | TestDemo testDemo = list.get(i); |
| | | testDemo.setTestKey("批量新增或修改").setValue("批量新增或修改"); |
| | | if (i % 2 == 0) { |
| | | testDemo.setId(null); |
| | | } |
| | | } |
| | | return toAjax(iTestDemoService.saveOrUpdateAll(list) ? 1 : 0); |
| | | } |
| | | public AjaxResult<Void> addOrUpdate() { |
| | | List<TestDemo> list = new ArrayList<>(); |
| | | for (int i = 0; i < 1000; i++) { |
| | | list.add(new TestDemo().setOrderNum(-1L).setTestKey("批量新增").setValue("测试新增")); |
| | | } |
| | | iTestDemoService.saveAll(list); |
| | | for (int i = 0; i < list.size(); i++) { |
| | | TestDemo testDemo = list.get(i); |
| | | testDemo.setTestKey("批量新增或修改").setValue("批量新增或修改"); |
| | | if (i % 2 == 0) { |
| | | testDemo.setId(null); |
| | | } |
| | | } |
| | | return toAjax(iTestDemoService.saveOrUpdateAll(list) ? 1 : 0); |
| | | } |
| | | |
| | | /** |
| | | * 删除批量方法 |
| | | */ |
| | | @ApiOperation(value = "删除批量方法") |
| | | @ApiOperation(value = "删除批量方法") |
| | | @DeleteMapping() |
| | | // @DataSource(DataSourceType.SLAVE) |
| | | public AjaxResult<Void> remove() { |
| | | return toAjax(iTestDemoService.remove(new LambdaQueryWrapper<TestDemo>() |
| | | .eq(TestDemo::getOrderNum, -1L)) ? 1 : 0); |
| | | .eq(TestDemo::getOrderNum, -1L)) ? 1 : 0); |
| | | } |
| | | |
| | | } |
| | |
| | | import com.ruoyi.demo.service.ITestDemoService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | return iTestDemoService.queryPageList(bo); |
| | | } |
| | | |
| | | /** |
| | | * 自定义分页查询 |
| | | */ |
| | | @ApiOperation("自定义分页查询") |
| | | @PreAuthorize("@ss.hasPermi('demo:demo:list')") |
| | | @GetMapping("/page") |
| | | public TableDataInfo<TestDemoVo> page(@Validated(QueryGroup.class) TestDemoBo bo) { |
| | | return iTestDemoService.customPageList(bo); |
| | | } |
| | | /** |
| | | * 自定义分页查询 |
| | | */ |
| | | @ApiOperation("自定义分页查询") |
| | | @PreAuthorize("@ss.hasPermi('demo:demo:list')") |
| | | @GetMapping("/page") |
| | | public TableDataInfo<TestDemoVo> page(@Validated(QueryGroup.class) TestDemoBo bo) { |
| | | return iTestDemoService.customPageList(bo); |
| | | } |
| | | |
| | | /** |
| | | /** |
| | | * 导出测试单表列表 |
| | | */ |
| | | @ApiOperation("导出测试单表列表") |
| | |
| | | @PostMapping("/export") |
| | | public void export(@Validated TestDemoBo bo, HttpServletResponse response) { |
| | | List<TestDemoVo> list = iTestDemoService.queryList(bo); |
| | | // 测试雪花id导出 |
| | | // 测试雪花id导出 |
| | | // for (TestDemoVo vo : list) { |
| | | // vo.setId(1234567891234567893L); |
| | | // } |
| | | ExcelUtil.exportExcel(list, "测试单表", TestDemoVo.class, response); |
| | | ExcelUtil.exportExcel(list, "测试单表", TestDemoVo.class, response); |
| | | } |
| | | |
| | | /** |
| | |
| | | @ApiOperation("获取测试单表详细信息") |
| | | @PreAuthorize("@ss.hasPermi('demo:demo:query')") |
| | | @GetMapping("/{id}") |
| | | public AjaxResult<TestDemoVo> getInfo(@NotNull(message = "主键不能为空") |
| | | @PathVariable("id") Long id) { |
| | | public AjaxResult<TestDemoVo> getInfo(@ApiParam("测试ID") |
| | | @NotNull(message = "主键不能为空") |
| | | @PathVariable("id") Long id) { |
| | | return AjaxResult.success(iTestDemoService.queryById(id)); |
| | | } |
| | | |
| | |
| | | */ |
| | | @ApiOperation("删除测试单表") |
| | | @PreAuthorize("@ss.hasPermi('demo:demo:remove')") |
| | | @Log(title = "测试单表" , businessType = BusinessType.DELETE) |
| | | @Log(title = "测试单表", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{ids}") |
| | | public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空") |
| | | @PathVariable Long[] ids) { |
| | | public AjaxResult<Void> remove(@ApiParam("测试ID串") |
| | | @NotEmpty(message = "主键不能为空") |
| | | @PathVariable Long[] ids) { |
| | | return toAjax(iTestDemoService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); |
| | | } |
| | | } |
| | |
| | | import com.ruoyi.common.utils.MessageUtils; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | |
| | | */ |
| | | @ApiOperation("通过code获取国际化内容") |
| | | @GetMapping() |
| | | public AjaxResult<Void> get(String code) { |
| | | public AjaxResult<Void> get(@ApiParam("国际化code") String code) { |
| | | return AjaxResult.success(MessageUtils.message(code)); |
| | | } |
| | | } |
| | |
| | | import com.ruoyi.demo.service.ITestTreeService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | |
| | | @GetMapping("/export") |
| | | public void export(@Validated TestTreeBo bo, HttpServletResponse response) { |
| | | List<TestTreeVo> list = iTestTreeService.queryList(bo); |
| | | ExcelUtil.exportExcel(list, "测试树表", TestTreeVo.class, response); |
| | | ExcelUtil.exportExcel(list, "测试树表", TestTreeVo.class, response); |
| | | } |
| | | |
| | | /** |
| | |
| | | @ApiOperation("获取测试树表详细信息") |
| | | @PreAuthorize("@ss.hasPermi('demo:tree:query')") |
| | | @GetMapping("/{id}") |
| | | public AjaxResult<TestTreeVo> getInfo(@NotNull(message = "主键不能为空") |
| | | @PathVariable("id") Long id) { |
| | | public AjaxResult<TestTreeVo> getInfo(@ApiParam("测试树ID") |
| | | @NotNull(message = "主键不能为空") |
| | | @PathVariable("id") Long id) { |
| | | return AjaxResult.success(iTestTreeService.queryById(id)); |
| | | } |
| | | |
| | |
| | | */ |
| | | @ApiOperation("删除测试树表") |
| | | @PreAuthorize("@ss.hasPermi('demo:tree:remove')") |
| | | @Log(title = "测试树表" , businessType = BusinessType.DELETE) |
| | | @Log(title = "测试树表", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{ids}") |
| | | public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空") |
| | | @PathVariable Long[] ids) { |
| | | public AjaxResult<Void> remove(@ApiParam("测试树ID串") |
| | | @NotEmpty(message = "主键不能为空") |
| | | @PathVariable Long[] ids) { |
| | | return toAjax(iTestTreeService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); |
| | | } |
| | | } |
| | |
| | | #elseif($table.tree) |
| | | #end |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiParam; |
| | | import io.swagger.annotations.ApiOperation; |
| | | |
| | | /** |
| | |
| | | @ApiOperation("获取${functionName}详细信息") |
| | | @PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')") |
| | | @GetMapping("/{${pkColumn.javaField}}") |
| | | public AjaxResult<${ClassName}Vo> getInfo(@NotNull(message = "主键不能为空") |
| | | public AjaxResult<${ClassName}Vo> getInfo(@ApiParam("主键") |
| | | @NotNull(message = "主键不能为空") |
| | | @PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) { |
| | | return AjaxResult.success(i${ClassName}Service.queryById(${pkColumn.javaField})); |
| | | } |
| | |
| | | @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')") |
| | | @Log(title = "${functionName}" , businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{${pkColumn.javaField}s}") |
| | | public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空") |
| | | public AjaxResult<Void> remove(@ApiParam("主键串") |
| | | @NotEmpty(message = "主键不能为空") |
| | | @PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) { |
| | | return toAjax(i${ClassName}Service.deleteWithValidByIds(Arrays.asList(${pkColumn.javaField}s), true) ? 1 : 0); |
| | | } |