refactor: 项目代码重构,优化管理系统代码细节

This commit is contained in:
haoxr
2023-03-11 10:57:24 +08:00
parent 6ab175871e
commit defbb6a93b
52 changed files with 739 additions and 776 deletions

View File

@@ -4,6 +4,7 @@ import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.vo.FileInfoVO;
import com.youlai.system.service.FileService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
@@ -11,7 +12,7 @@ import lombok.SneakyThrows;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@Tag(name = "文件接口")
@Tag(name = "08.文件接口")
@RestController
@RequestMapping("/api/v1/files")
@RequiredArgsConstructor
@@ -20,19 +21,19 @@ public class FileController {
private final FileService fileService;
@PostMapping
@Operation(summary = "文件上传")
@Operation(summary = "文件上传", security = {@SecurityRequirement(name = "Authorization")})
public Result<FileInfoVO> uploadFile(
@Parameter(name ="表单文件对象") @RequestParam(value = "file") MultipartFile file
@Parameter(description ="表单文件对象") @RequestParam(value = "file") MultipartFile file
) {
FileInfoVO fileInfoVO = fileService.uploadFile(file);
return Result.success(fileInfoVO);
}
@DeleteMapping
@Operation(summary = "文件删除")
@Operation(summary = "文件删除", security = {@SecurityRequirement(name = "Authorization")})
@SneakyThrows
public Result deleteFile(
@Parameter(name ="文件路径") @RequestParam String filePath
@Parameter(description ="文件路径") @RequestParam String filePath
) {
boolean result = fileService.deleteFile(filePath);
return Result.judge(result);

View File

@@ -7,6 +7,7 @@ import com.youlai.system.pojo.query.DeptQuery;
import com.youlai.system.pojo.vo.DeptVO;
import com.youlai.system.service.SysDeptService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
@@ -22,15 +23,13 @@ import java.util.List;
* @author haoxr
* @date 2020/11/6
*/
@Tag(name = "部门接口")
@Tag(name = "05.部门接口")
@RestController
@RequestMapping("/api/v1/dept")
@RequiredArgsConstructor
public class SysDeptController {
private final SysDeptService deptService;
@Operation(summary = "获取部门列表")
@Operation(summary = "获取部门列表", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping
public Result<List<DeptVO>> listDepartments(
@ParameterObject DeptQuery queryParams
@@ -39,23 +38,23 @@ public class SysDeptController {
return Result.success(list);
}
@Operation(summary = "获取部门下拉选项")
@Operation(summary = "获取部门下拉选项", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/options")
public Result<List<Option>> listDeptOptions() {
List<Option> list = deptService.listDeptOptions();
return Result.success(list);
}
@Operation(summary = "获取部门详情")
@Operation(summary = "获取部门详情", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/{deptId}/form")
public Result<DeptForm> getDeptForm(
@Parameter(name ="部门ID") @PathVariable Long deptId
@Parameter(description ="部门ID") @PathVariable Long deptId
) {
DeptForm deptForm = deptService.getDeptForm(deptId);
return Result.success(deptForm);
}
@Operation(summary = "新增部门")
@Operation(summary = "新增部门", security = {@SecurityRequirement(name = "Authorization")})
@PostMapping
public Result saveDept(
@Valid @RequestBody DeptForm formData
@@ -64,7 +63,7 @@ public class SysDeptController {
return Result.success(id);
}
@Operation(summary = "修改部门")
@Operation(summary = "修改部门", security = {@SecurityRequirement(name = "Authorization")})
@PutMapping(value = "/{deptId}")
public Result updateDept(
@PathVariable Long deptId,
@@ -74,10 +73,10 @@ public class SysDeptController {
return Result.success(deptId);
}
@Operation(summary = "删除部门")
@Operation(summary = "删除部门", security = {@SecurityRequirement(name = "Authorization")})
@DeleteMapping("/{ids}")
public Result deleteDepartments(
@Parameter(name ="部门ID多个以英文逗号(,)分割") @PathVariable("ids") String ids
@Parameter(description ="部门ID多个以英文逗号(,)分割") @PathVariable("ids") String ids
) {
boolean result = deptService.deleteByIds(ids);
return Result.judge(result);

View File

@@ -0,0 +1,134 @@
package com.youlai.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.form.DictForm;
import com.youlai.system.pojo.form.DictTypeForm;
import com.youlai.system.pojo.query.DictPageQuery;
import com.youlai.system.pojo.query.DictTypePageQuery;
import com.youlai.system.pojo.vo.DictPageVO;
import com.youlai.system.pojo.vo.DictTypePageVO;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.service.SysDictService;
import com.youlai.system.service.SysDictTypeService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Tag(name = "07.字典接口")
@RestController
@RequestMapping("/api/v1/dict")
@RequiredArgsConstructor
public class SysDictController {
private final SysDictService dictService;
private final SysDictTypeService dictTypeService;
@Operation(summary = "字典分页列表", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/page")
public PageResult<DictPageVO> getDictPage(
@ParameterObject DictPageQuery queryParams
) {
Page<DictPageVO> result = dictService.getDictPage(queryParams);
return PageResult.success(result);
}
@Operation(summary = "字典数据表单数据", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/{id}/form")
public Result<DictForm> getDictForm(
@Parameter(description ="字典ID") @PathVariable Long id
) {
DictForm formData = dictService.getDictForm(id);
return Result.success(formData);
}
@Operation(summary = "新增字典", security = {@SecurityRequirement(name = "Authorization")})
@PostMapping
public Result saveDict(
@RequestBody DictForm DictForm
) {
boolean result = dictService.saveDict(DictForm);
return Result.judge(result);
}
@Operation(summary = "修改字典", security = {@SecurityRequirement(name = "Authorization")})
@PutMapping("/{id}")
public Result updateDict(
@PathVariable Long id,
@RequestBody DictForm DictForm
) {
boolean status = dictService.updateDict(id, DictForm);
return Result.judge(status);
}
@Operation(summary = "删除字典", security = {@SecurityRequirement(name = "Authorization")})
@DeleteMapping("/{ids}")
public Result deleteDict(
@Parameter(description ="字典ID多个以英文逗号(,)拼接") @PathVariable String ids
) {
boolean result = dictService.deleteDict(ids);
return Result.judge(result);
}
@Operation(summary = "字典下拉列表", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/options")
public Result<List<Option>> listDictOptions(
@Parameter(description ="字典类型编码") @RequestParam String typeCode
) {
List<Option> list = dictService.listDictOptions(typeCode);
return Result.success(list);
}
/*----------------------------------------------------*/
@Operation(summary = "字典类型分页列表", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/types/page")
public PageResult<DictTypePageVO> getDictTypePage(
@ParameterObject DictTypePageQuery queryParams
) {
Page<DictTypePageVO> result = dictTypeService.getDictTypePage(queryParams);
return PageResult.success(result);
}
@Operation(summary = "字典类型表单数据", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/types/{id}/form")
public Result<DictTypeForm> getDictTypeForm(
@Parameter(description ="字典ID") @PathVariable Long id
) {
DictTypeForm dictTypeForm = dictTypeService.getDictTypeForm(id);
return Result.success(dictTypeForm);
}
@Operation(summary = "新增字典类型", security = {@SecurityRequirement(name = "Authorization")})
@PostMapping("/types")
public Result saveDictType(@RequestBody DictTypeForm dictTypeForm) {
boolean result = dictTypeService.saveDictType(dictTypeForm);
return Result.judge(result);
}
@Operation(summary = "修改字典类型", security = {@SecurityRequirement(name = "Authorization")})
@PutMapping("/types/{id}")
public Result updateDictType(@PathVariable Long id, @RequestBody DictTypeForm dictTypeForm) {
boolean status = dictTypeService.updateDictType(id, dictTypeForm);
return Result.judge(status);
}
@Operation(summary = "删除字典类型", security = {@SecurityRequirement(name = "Authorization")})
@DeleteMapping("/{ids}")
public Result deleteDictTypes(
@Parameter(description ="字典类型ID多个以英文逗号(,)分割") @PathVariable String ids
) {
boolean result = dictTypeService.deleteDictTypes(ids);
return Result.judge(result);
}
}

View File

@@ -1,71 +0,0 @@
package com.youlai.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.form.DictItemForm;
import com.youlai.system.pojo.query.DictItemPageQuery;
import com.youlai.system.pojo.vo.DictItemPageVO;
import com.youlai.system.service.SysDictItemService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.web.bind.annotation.*;
@Tag(name = "字典数据接口")
@RestController
@RequestMapping("/api/v1/dict/items")
@RequiredArgsConstructor
public class SysDictItemController {
private final SysDictItemService dictItemService;
@Operation(summary = "字典数据分页列表")
@GetMapping("/pages")
public PageResult<DictItemPageVO> listDictItemPages(
@ParameterObject DictItemPageQuery queryParams
) {
Page<DictItemPageVO> result = dictItemService.listDictItemPages(queryParams);
return PageResult.success(result);
}
@Operation(summary = "字典数据表单数据")
@GetMapping("/{id}/form")
public Result<DictItemForm> getDictItemForm(
@Parameter(name ="字典ID") @PathVariable Long id
) {
DictItemForm formData = dictItemService.getDictItemForm(id);
return Result.success(formData);
}
@Operation(summary = "新增字典数据")
@PostMapping
public Result saveDictItem(
@RequestBody DictItemForm DictItemForm
) {
boolean result = dictItemService.saveDictItem(DictItemForm);
return Result.judge(result);
}
@Operation(summary = "修改字典数据")
@PutMapping("/{id}")
public Result updateDictItem(
@PathVariable Long id,
@RequestBody DictItemForm DictItemForm
) {
boolean status = dictItemService.updateDictItem(id, DictItemForm);
return Result.judge(status);
}
@Operation(summary = "删除字典")
@DeleteMapping("/{ids}")
public Result deleteDictItems(
@Parameter(name ="字典ID多个以英文逗号(,)拼接") @PathVariable String ids
) {
boolean result = dictItemService.deleteDictItems(ids);
return Result.judge(result);
}
}

View File

@@ -1,77 +0,0 @@
package com.youlai.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.form.DictTypeForm;
import com.youlai.system.pojo.query.DictTypePageQuery;
import com.youlai.system.pojo.vo.DictTypePageVO;
import com.youlai.system.service.SysDictTypeService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Tag(name = "字典类型接口")
@RestController
@RequestMapping("/api/v1/dict/types")
@RequiredArgsConstructor
public class SysDictTypeController {
private final SysDictTypeService dictTypeService;
@Operation(summary = "字典类型分页列表")
@GetMapping("/pages")
public PageResult<DictTypePageVO> listDictTypePages(
@ParameterObject DictTypePageQuery queryParams
) {
Page<DictTypePageVO> result = dictTypeService.listDictTypePages(queryParams);
return PageResult.success(result);
}
@Operation(summary = "字典类型表单详情")
@GetMapping("/{id}/form")
public Result<DictTypeForm> getDictTypeFormData(
@Parameter(name ="字典ID") @PathVariable Long id
) {
DictTypeForm dictTypeForm = dictTypeService.getDictTypeFormData(id);
return Result.success(dictTypeForm);
}
@Operation(summary = "新增字典类型")
@PostMapping
public Result saveDictType(@RequestBody DictTypeForm dictTypeForm) {
boolean result = dictTypeService.saveDictType(dictTypeForm);
return Result.judge(result);
}
@Operation(summary = "修改字典类型")
@PutMapping("/{id}")
public Result updateDict(@PathVariable Long id, @RequestBody DictTypeForm dictTypeForm) {
boolean status = dictTypeService.updateDictType(id, dictTypeForm);
return Result.judge(status);
}
@Operation(summary = "删除字典类型")
@DeleteMapping("/{ids}")
public Result deleteDictTypes(
@Parameter(name ="字典类型ID多个以英文逗号(,)分割") @PathVariable String ids
) {
boolean result = dictTypeService.deleteDictTypes(ids);
return Result.judge(result);
}
@Operation(summary = "获取字典类型的数据项")
@GetMapping("/{typeCode}/items")
public Result<List<Option>> listDictItemsByTypeCode(
@Parameter(name ="字典类型编码") @PathVariable String typeCode
) {
List<Option> list = dictTypeService.listDictItemsByTypeCode(typeCode);
return Result.success(list);
}
}

View File

@@ -1,14 +1,15 @@
package com.youlai.system.controller;
import com.youlai.system.pojo.form.MenuForm;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.entity.SysMenu;
import com.youlai.system.pojo.query.MenuQuery;
import com.youlai.system.pojo.vo.MenuVO;
import com.youlai.system.pojo.vo.ResourceVO;
import com.youlai.system.pojo.vo.RouteVO;
import com.youlai.system.service.SysMenuService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
@@ -26,7 +27,7 @@ import java.util.List;
* @author haoxr
* @date 2020/11/06
*/
@Tag(name = "菜单接口")
@Tag(name = "04.菜单接口")
@RestController
@RequestMapping("/api/v1/menus")
@RequiredArgsConstructor
@@ -35,76 +36,69 @@ public class SysMenuController {
private final SysMenuService menuService;
@Operation(summary = "资源(菜单+权限)列表")
@GetMapping("/resources")
public Result<List<ResourceVO>> listResources() {
List<ResourceVO> resources = menuService.listResources();
return Result.success(resources);
}
@Operation(summary = "菜单列表")
@Operation(summary = "菜单列表",security = {@SecurityRequirement(name = "Authorization")})
@GetMapping
public Result listMenus( @ParameterObject MenuQuery queryParams) {
public Result<List<MenuVO>> listMenus( @ParameterObject MenuQuery queryParams) {
List<MenuVO> menuList = menuService.listMenus(queryParams);
return Result.success(menuList);
}
@Operation(summary = "菜单下拉列表")
@Operation(summary = "菜单下拉列表",security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/options")
public Result listMenuOptions() {
List<Option> menus = menuService.listMenuOptions();
return Result.success(menus);
}
@Operation(summary = "路由列表")
@Operation(summary = "路由列表",security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/routes")
public Result listRoutes() {
public Result<List<RouteVO>> listRoutes() {
List<RouteVO> routeList = menuService.listRoutes();
return Result.success(routeList);
}
@Operation(summary = "菜单详情")
@GetMapping("/{id}")
public Result detail(
@Parameter(name = "菜单ID") @PathVariable Long id
@Operation(summary = "菜单表单数据",security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/{id}/form")
public Result<MenuForm> getMenuForm(
@Parameter(description = "菜单ID") @PathVariable Long id
) {
SysMenu menu = menuService.getById(id);
MenuForm menu = menuService.getMenuForm(id);
return Result.success(menu);
}
@Operation(summary = "新增菜单")
@Operation(summary = "新增菜单",security = {@SecurityRequirement(name = "Authorization")})
@PostMapping
@CacheEvict(cacheNames = "system", key = "'routes'")
public Result addMenu(@RequestBody SysMenu menu) {
boolean result = menuService.saveMenu(menu);
public Result addMenu(@RequestBody MenuForm menuForm) {
boolean result = menuService.saveMenu(menuForm);
return Result.judge(result);
}
@Operation(summary = "修改菜单")
@Operation(summary = "修改菜单",security = {@SecurityRequirement(name = "Authorization")})
@PutMapping(value = "/{id}")
@CacheEvict(cacheNames = "system", key = "'routes'")
public Result updateMenu(
@RequestBody SysMenu menu
@RequestBody MenuForm menuForm
) {
boolean result = menuService.saveMenu(menu);
boolean result = menuService.saveMenu(menuForm);
return Result.judge(result);
}
@Operation(summary = "删除菜单")
@DeleteMapping("/{ids}")
@Operation(summary = "删除菜单",security = {@SecurityRequirement(name = "Authorization")})
@DeleteMapping("/{id}")
@CacheEvict(cacheNames = "system", key = "'routes'")
public Result deleteMenus(
@Parameter(name ="菜单ID多个以英文(,)分割") @PathVariable("ids") String ids
public Result deleteMenu(
@Parameter(description ="菜单ID多个以英文(,)分割") @PathVariable("id") Long id
) {
boolean result = menuService.removeByIds(Arrays.asList(ids.split(",")));
boolean result = menuService.deleteMenu(id);
return Result.judge(result);
}
@Operation(summary = "修改菜单显示状态")
@Operation(summary = "修改菜单显示状态",security = {@SecurityRequirement(name = "Authorization")})
@PatchMapping("/{menuId}")
public Result updateMenuVisible(
@Parameter(name = "菜单ID") @PathVariable Long menuId,
@Parameter(name = "显示状态(1:显示;0:隐藏)") Integer visible
@Parameter(description = "菜单ID") @PathVariable Long menuId,
@Parameter(description = "显示状态(1:显示;0:隐藏)") Integer visible
) {
boolean result =menuService.updateMenuVisible(menuId, visible);

View File

@@ -4,12 +4,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.entity.SysRole;
import com.youlai.system.pojo.form.RoleForm;
import com.youlai.system.pojo.query.RolePageQuery;
import com.youlai.system.pojo.vo.RolePageVO;
import com.youlai.system.service.SysRoleService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.*;
import jakarta.validation.Valid;
import java.util.List;
@Tag(name = "角色接口")
@Tag(name = "03.角色接口")
@RestController
@RequestMapping("/api/v1/roles")
@RequiredArgsConstructor
@@ -27,74 +27,74 @@ public class SysRoleController {
private final SysRoleService roleService;
@Operation(summary = "角色分页列表")
@GetMapping("/pages")
public PageResult<RolePageVO> listRolePages(
@Operation(summary = "角色分页列表",security = {@SecurityRequirement(name = "Authorization")} )
@GetMapping("/page")
public PageResult<RolePageVO> getRolePage(
@ParameterObject RolePageQuery queryParams
) {
Page<RolePageVO> result = roleService.listRolePages(queryParams);
Page<RolePageVO> result = roleService.getRolePage(queryParams);
return PageResult.success(result);
}
@Operation(summary = "角色下拉列表")
@Operation(summary = "角色下拉列表",security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/options")
public Result<List<Option>> listRoleOptions() {
List<Option> list = roleService.listRoleOptions();
return Result.success(list);
}
@Operation(summary = "角色详情")
@GetMapping("/{roleId}")
public Result getRoleDetail(
@Parameter(name ="角色ID") @PathVariable Long roleId
) {
SysRole role = roleService.getById(roleId);
return Result.success(role);
}
@Operation(summary = "新增角色")
@Operation(summary = "新增角色",security = {@SecurityRequirement(name = "Authorization")})
@PostMapping
public Result addRole(@Valid @RequestBody RoleForm roleForm) {
boolean result = roleService.saveRole(roleForm);
return Result.judge(result);
}
@Operation(summary = "修改角色")
@Operation(summary = "角色表单数据",security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/{roleId}/form")
public Result<RoleForm> getRoleForm(
@Parameter(description ="角色ID") @PathVariable Long roleId
) {
RoleForm roleForm = roleService.getRoleForm(roleId);
return Result.success(roleForm);
}
@Operation(summary = "修改角色",security = {@SecurityRequirement(name = "Authorization")})
@PutMapping(value = "/{id}")
public Result updateRole(@Valid @RequestBody RoleForm roleForm) {
boolean result = roleService.saveRole(roleForm);
return Result.judge(result);
}
@Operation(summary = "删除角色")
@Operation(summary = "删除角色",security = {@SecurityRequirement(name = "Authorization")})
@DeleteMapping("/{ids}")
public Result deleteRoles(
@Parameter(name ="删除角色,多个以英文逗号(,)分割") @PathVariable String ids
@Parameter(description ="删除角色,多个以英文逗号(,)分割") @PathVariable String ids
) {
boolean result = roleService.deleteRoles(ids);
return Result.judge(result);
}
@Operation(summary = "修改角色状态")
@Operation(summary = "修改角色状态",security = {@SecurityRequirement(name = "Authorization")})
@PutMapping(value = "/{roleId}/status")
public Result updateRoleStatus(
@Parameter(name ="角色ID") @PathVariable Long roleId,
@Parameter(name ="角色状态:1-启用0-禁用") @RequestParam Integer status
@Parameter(description ="角色ID") @PathVariable Long roleId,
@Parameter(description ="状态(1:启用;0:禁用)") @RequestParam Integer status
) {
boolean result = roleService.updateRoleStatus(roleId, status);
return Result.judge(result);
}
@Operation(summary = "获取角色的菜单ID集合")
@Operation(summary = "获取角色的菜单ID集合",security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/{roleId}/menuIds")
public Result<List<Long>> getRoleMenuIds(
@Parameter(name ="角色ID") @PathVariable Long roleId
@Parameter(description ="角色ID") @PathVariable Long roleId
) {
List<Long> resourceIds = roleService.getRoleMenuIds(roleId);
return Result.success(resourceIds);
List<Long> menuIds = roleService.getRoleMenuIds(roleId);
return Result.success(menuIds);
}
@Operation(summary = "分配角色的资源权限")
@Operation(summary = "分配菜单权限给角色",security = {@SecurityRequirement(name = "Authorization")})
@PutMapping("/{roleId}/menus")
public Result updateRoleMenus(
@PathVariable Long roleId,

View File

@@ -17,6 +17,7 @@ import com.youlai.system.pojo.vo.UserInfoVO;
import com.youlai.system.pojo.vo.UserPageVO;
import com.youlai.system.service.SysUserService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
@@ -42,7 +43,7 @@ import java.util.List;
* @author haoxr
* @date 2022/10/16
*/
@Tag(name = "用户接口")
@Tag(name = "02.用户接口")
@RestController
@RequestMapping("/api/v1/users")
@RequiredArgsConstructor
@@ -50,25 +51,16 @@ public class SysUserController {
private final SysUserService userService;
@Operation(summary = "用户分页列表")
@GetMapping("/pages")
public PageResult<UserPageVO> listUserPages(
@Operation(summary = "用户分页列表", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/page")
public PageResult<UserPageVO> getUserPage(
@ParameterObject UserPageQuery queryParams
) {
IPage<UserPageVO> result = userService.listUserPages(queryParams);
IPage<UserPageVO> result = userService.getUserPage(queryParams);
return PageResult.success(result);
}
@Operation(summary = "用户表单数据")
@GetMapping("/{userId}/form")
public Result<UserForm> getUserForm(
@Parameter(name = "用户ID") @PathVariable Long userId
) {
UserForm formData = userService.getUserFormData(userId);
return Result.success(formData);
}
@Operation(summary = "新增用户")
@Operation(summary = "新增用户", security = {@SecurityRequirement(name = "Authorization")})
@PostMapping
@PreAuthorize("@pms.hasPermission('sys:user:add')")
public Result saveUser(
@@ -78,41 +70,50 @@ public class SysUserController {
return Result.judge(result);
}
@Operation(summary = "修改用户")
@Operation(summary = "用户表单数据", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/{userId}/form")
public Result<UserForm> getUserForm(
@Parameter(description = "用户ID") @PathVariable Long userId
) {
UserForm formData = userService.getUserFormData(userId);
return Result.success(formData);
}
@Operation(summary = "修改用户", security = {@SecurityRequirement(name = "Authorization")})
@PutMapping(value = "/{userId}")
@PreAuthorize("@pms.hasPermission('sys:user:edit')")
public Result updateUser(
@Parameter(name = "用户ID") @PathVariable Long userId,
@Parameter(description = "用户ID") @PathVariable Long userId,
@RequestBody @Validated UserForm userForm) {
boolean result = userService.updateUser(userId, userForm);
return Result.judge(result);
}
@Operation(summary = "删除用户")
@Operation(summary = "删除用户", security = {@SecurityRequirement(name = "Authorization")})
@DeleteMapping("/{ids}")
@PreAuthorize("@pms.hasPermission('sys:user:delete')")
public Result deleteUsers(
@Parameter(name = "用户ID多个以英文逗号(,)分割") @PathVariable String ids
@Parameter(description = "用户ID多个以英文逗号(,)分割") @PathVariable String ids
) {
boolean result = userService.deleteUsers(ids);
return Result.judge(result);
}
@Operation(summary = "修改用户密码")
@Operation(summary = "修改用户密码", security = {@SecurityRequirement(name = "Authorization")})
@PatchMapping(value = "/{userId}/password")
public Result updatePassword(
@Parameter(name = "用户ID") @PathVariable Long userId,
@Parameter(description = "用户ID") @PathVariable Long userId,
@RequestParam String password
) {
boolean result = userService.updatePassword(userId, password);
return Result.judge(result);
}
@Operation(summary = "修改用户状态")
@Operation(summary = "修改用户状态", security = {@SecurityRequirement(name = "Authorization")})
@PatchMapping(value = "/{userId}/status")
public Result updatePassword(
@Parameter(name = "用户ID") @PathVariable Long userId,
@Parameter(name = "用户状态(1:启用;0:禁用)") @RequestParam Integer status
@Parameter(description = "用户ID") @PathVariable Long userId,
@Parameter(description = "用户状态(1:启用;0:禁用)") @RequestParam Integer status
) {
boolean result = userService.update(new LambdaUpdateWrapper<SysUser>()
.eq(SysUser::getId, userId)
@@ -121,14 +122,14 @@ public class SysUserController {
return Result.judge(result);
}
@Operation(summary = "获取当前登录用户信息")
@Operation(summary = "获取当前登录用户信息", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/me")
public Result<UserInfoVO> getUserLoginInfo() {
UserInfoVO userInfoVO = userService.getUserLoginInfo();
return Result.success(userInfoVO);
}
@Operation(summary = "用户导入模板下载")
@Operation(summary = "用户导入模板下载", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/template")
public void downloadTemplate(HttpServletResponse response) throws IOException {
String fileName = "用户导入模板.xlsx";
@@ -144,15 +145,15 @@ public class SysUserController {
excelWriter.finish();
}
@Operation(summary = "导入用户")
@Operation(summary = "导入用户", security = {@SecurityRequirement(name = "Authorization")})
@PostMapping("/_import")
public Result importUsers(@Parameter(name = "部门ID") Long deptId, MultipartFile file) throws IOException {
public Result importUsers(@Parameter(description = "部门ID") Long deptId, MultipartFile file) throws IOException {
UserImportListener listener = new UserImportListener(deptId);
String msg = ExcelUtils.importExcel(file.getInputStream(), UserImportVO.class, listener);
return Result.success(msg);
}
@Operation(summary = "导出用户")
@Operation(summary = "导出用户", security = {@SecurityRequirement(name = "Authorization")})
@GetMapping("/_export")
public void exportUsers(UserPageQuery queryParams, HttpServletResponse response) throws IOException {
String fileName = "用户列表.xlsx";