提交 c3e9deab 编写于 作者: 郝先瑞

refactor: 移除接口注解的 Authorization 参数声明

上级 3c51373c
...@@ -6,7 +6,7 @@ import cn.hutool.json.JSONUtil; ...@@ -6,7 +6,7 @@ import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.mall.pms.common.constant.ProductConstants; import com.youlai.mall.pms.constant.ProductConstants;
import com.youlai.mall.pms.converter.SkuConverter; import com.youlai.mall.pms.converter.SkuConverter;
import com.youlai.mall.pms.mapper.PmsSkuMapper; import com.youlai.mall.pms.mapper.PmsSkuMapper;
import com.youlai.mall.pms.model.dto.LockedSkuDTO; import com.youlai.mall.pms.model.dto.LockedSkuDTO;
......
...@@ -10,8 +10,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -10,8 +10,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.common.security.util.SecurityUtils; import com.youlai.common.security.util.SecurityUtils;
import com.youlai.mall.pms.common.constant.ProductConstants; import com.youlai.mall.pms.constant.ProductConstants;
import com.youlai.mall.pms.common.enums.AttributeTypeEnum; import com.youlai.mall.pms.enums.AttributeTypeEnum;
import com.youlai.mall.pms.converter.SpuAttributeConverter; import com.youlai.mall.pms.converter.SpuAttributeConverter;
import com.youlai.mall.pms.converter.SpuConverter; import com.youlai.mall.pms.converter.SpuConverter;
import com.youlai.mall.pms.mapper.PmsSpuMapper; import com.youlai.mall.pms.mapper.PmsSpuMapper;
......
...@@ -10,7 +10,7 @@ import lombok.RequiredArgsConstructor; ...@@ -10,7 +10,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@Tag(name = "文件接口") @Tag(name = "06.文件接口")
@RestController @RestController
@RequestMapping("/api/v1/files") @RequestMapping("/api/v1/files")
@RequiredArgsConstructor @RequiredArgsConstructor
......
package com.youlai.gateway.config; package com.youlai.gateway.config;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import lombok.Setter; import lombok.Setter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -16,9 +17,8 @@ import org.springframework.web.util.pattern.PathPatternParser; ...@@ -16,9 +17,8 @@ import org.springframework.web.util.pattern.PathPatternParser;
import java.util.List; import java.util.List;
/** /**
* OAuth Client Security 配置 * Spring Security 配置
* *
* @author haoxr * @author haoxr
* @since 2022/8/28 * @since 2022/8/28
...@@ -30,23 +30,31 @@ import java.util.List; ...@@ -30,23 +30,31 @@ import java.util.List;
public class SecurityConfig { public class SecurityConfig {
/** /**
* 禁止访问的URI集合(黑名单) * 黑名单请求路径列表
*/ */
@Setter @Setter
private List<String> forbiddenURIs; private List<String> blacklistPaths;
@Bean @Bean
public SecurityWebFilterChain securityFilterChain(ServerHttpSecurity http) { public SecurityWebFilterChain securityFilterChain(ServerHttpSecurity http) {
http http
.authorizeExchange(exchangeSpec -> .authorizeExchange(exchange ->
exchangeSpec {
.pathMatchers(Convert.toStrArray(forbiddenURIs)).denyAll() if (CollectionUtil.isNotEmpty(blacklistPaths)) {
.anyExchange().permitAll() exchange.pathMatchers(Convert.toStrArray(blacklistPaths)).authenticated();
}
exchange.anyExchange().permitAll();
}
) )
.csrf(ServerHttpSecurity.CsrfSpec::disable); .csrf(ServerHttpSecurity.CsrfSpec::disable);
return http.build(); return http.build();
} }
/**
* 跨域共享配置
*
* @return CorsConfigurationSource
*/
@Bean @Bean
public CorsConfigurationSource corsConfigurationSource() { public CorsConfigurationSource corsConfigurationSource() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser()); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
......
...@@ -18,15 +18,18 @@ import org.springframework.web.reactive.function.server.ServerResponse; ...@@ -18,15 +18,18 @@ import org.springframework.web.reactive.function.server.ServerResponse;
* @since 2022/7/24 * @since 2022/7/24
*/ */
@Configuration @Configuration
public class SentinelConfiguration { public class SentinelConfig {
@PostConstruct @PostConstruct
private void initBlockHandler() { private void initBlockHandler() {
BlockRequestHandler blockRequestHandler = (exchange, t) -> GatewayCallbackManager.setBlockHandler(
ServerResponse.status(HttpStatus.TOO_MANY_REQUESTS) (exchange, t) ->
.contentType(MediaType.APPLICATION_JSON) ServerResponse
.body(BodyInserters.fromValue(ResultCode.FLOW_LIMITING.toString()) .status(HttpStatus.TOO_MANY_REQUESTS)
); .contentType(MediaType.APPLICATION_JSON)
GatewayCallbackManager.setBlockHandler(blockRequestHandler); .body(
BodyInserters.fromValue(ResultCode.FLOW_LIMITING.toString())
)
);
} }
} }
...@@ -9,7 +9,6 @@ import com.youlai.common.web.model.Option; ...@@ -9,7 +9,6 @@ import com.youlai.common.web.model.Option;
import com.youlai.system.service.SysDeptService; import com.youlai.system.service.SysDeptService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; 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.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -25,13 +24,13 @@ import java.util.List; ...@@ -25,13 +24,13 @@ import java.util.List;
* @author haoxr * @author haoxr
* @since 2020/11/6 * @since 2020/11/6
*/ */
@Tag(name = "05.部门接口") @Tag(name = "04.部门接口")
@RestController @RestController
@RequestMapping("/api/v1/dept") @RequestMapping("/api/v1/dept")
@RequiredArgsConstructor @RequiredArgsConstructor
public class SysDeptController { public class SysDeptController {
private final SysDeptService deptService; private final SysDeptService deptService;
@Operation(summary = "获取部门列表", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "获取部门列表")
@GetMapping @GetMapping
public Result<List<DeptVO>> listDepartments( public Result<List<DeptVO>> listDepartments(
@ParameterObject DeptQuery queryParams @ParameterObject DeptQuery queryParams
...@@ -40,14 +39,14 @@ public class SysDeptController { ...@@ -40,14 +39,14 @@ public class SysDeptController {
return Result.success(list); return Result.success(list);
} }
@Operation(summary = "获取部门下拉选项", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "获取部门下拉选项")
@GetMapping("/options") @GetMapping("/options")
public Result<List<Option>> listDeptOptions() { public Result<List<Option>> listDeptOptions() {
List<Option> list = deptService.listDeptOptions(); List<Option> list = deptService.listDeptOptions();
return Result.success(list); return Result.success(list);
} }
@Operation(summary = "获取部门表单数据", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "获取部门表单数据")
@GetMapping("/{deptId}/form") @GetMapping("/{deptId}/form")
public Result<DeptForm> getDeptForm( public Result<DeptForm> getDeptForm(
@Parameter(description ="部门ID") @PathVariable Long deptId @Parameter(description ="部门ID") @PathVariable Long deptId
...@@ -56,7 +55,7 @@ public class SysDeptController { ...@@ -56,7 +55,7 @@ public class SysDeptController {
return Result.success(deptForm); return Result.success(deptForm);
} }
@Operation(summary = "新增部门", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "新增部门")
@PostMapping @PostMapping
@PreAuthorize("@ss.hasPerm('sys:dept:add')") @PreAuthorize("@ss.hasPerm('sys:dept:add')")
@PreventDuplicateResubmit @PreventDuplicateResubmit
...@@ -67,7 +66,7 @@ public class SysDeptController { ...@@ -67,7 +66,7 @@ public class SysDeptController {
return Result.success(id); return Result.success(id);
} }
@Operation(summary = "修改部门", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "修改部门")
@PutMapping(value = "/{deptId}") @PutMapping(value = "/{deptId}")
@PreAuthorize("@ss.hasPerm('sys:dept:edit')") @PreAuthorize("@ss.hasPerm('sys:dept:edit')")
public Result updateDept( public Result updateDept(
...@@ -78,7 +77,7 @@ public class SysDeptController { ...@@ -78,7 +77,7 @@ public class SysDeptController {
return Result.success(deptId); return Result.success(deptId);
} }
@Operation(summary = "删除部门", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "删除部门")
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
@PreAuthorize("@ss.hasPerm('sys:dept:delete')") @PreAuthorize("@ss.hasPerm('sys:dept:delete')")
public Result deleteDepartments( public Result deleteDepartments(
......
...@@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@Tag(name = "06.字典接口") @Tag(name = "05.字典接口")
@RestController @RestController
@RequestMapping("/api/v1/dict") @RequestMapping("/api/v1/dict")
@RequiredArgsConstructor @RequiredArgsConstructor
...@@ -34,7 +34,7 @@ public class SysDictController { ...@@ -34,7 +34,7 @@ public class SysDictController {
private final SysDictTypeService dictTypeService; private final SysDictTypeService dictTypeService;
@Operation(summary = "字典分页列表", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "字典分页列表")
@GetMapping("/page") @GetMapping("/page")
public PageResult<DictPageVO> getDictPage( public PageResult<DictPageVO> getDictPage(
@ParameterObject DictPageQuery queryParams @ParameterObject DictPageQuery queryParams
...@@ -43,7 +43,7 @@ public class SysDictController { ...@@ -43,7 +43,7 @@ public class SysDictController {
return PageResult.success(result); return PageResult.success(result);
} }
@Operation(summary = "字典数据表单数据", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "字典数据表单数据")
@GetMapping("/{id}/form") @GetMapping("/{id}/form")
public Result<DictForm> getDictForm( public Result<DictForm> getDictForm(
@Parameter(description ="字典ID") @PathVariable Long id @Parameter(description ="字典ID") @PathVariable Long id
...@@ -52,7 +52,7 @@ public class SysDictController { ...@@ -52,7 +52,7 @@ public class SysDictController {
return Result.success(formData); return Result.success(formData);
} }
@Operation(summary = "新增字典", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "新增字典")
@PostMapping @PostMapping
@PreAuthorize("@ss.hasPerm('sys:dict:add')") @PreAuthorize("@ss.hasPerm('sys:dict:add')")
@PreventDuplicateResubmit @PreventDuplicateResubmit
...@@ -63,7 +63,7 @@ public class SysDictController { ...@@ -63,7 +63,7 @@ public class SysDictController {
return Result.judge(result); return Result.judge(result);
} }
@Operation(summary = "修改字典", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "修改字典")
@PutMapping("/{id}") @PutMapping("/{id}")
@PreAuthorize("@ss.hasPerm('sys:dict:edit')") @PreAuthorize("@ss.hasPerm('sys:dict:edit')")
public Result updateDict( public Result updateDict(
...@@ -74,7 +74,7 @@ public class SysDictController { ...@@ -74,7 +74,7 @@ public class SysDictController {
return Result.judge(status); return Result.judge(status);
} }
@Operation(summary = "删除字典", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "删除字典")
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
@PreAuthorize("@ss.hasPerm('sys:dict:delete')") @PreAuthorize("@ss.hasPerm('sys:dict:delete')")
public Result deleteDict( public Result deleteDict(
...@@ -85,7 +85,7 @@ public class SysDictController { ...@@ -85,7 +85,7 @@ public class SysDictController {
} }
@Operation(summary = "字典下拉列表", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "字典下拉列表")
@GetMapping("/options") @GetMapping("/options")
public Result<List<Option>> listDictOptions( public Result<List<Option>> listDictOptions(
@Parameter(description ="字典类型编码") @RequestParam String typeCode @Parameter(description ="字典类型编码") @RequestParam String typeCode
...@@ -96,7 +96,7 @@ public class SysDictController { ...@@ -96,7 +96,7 @@ public class SysDictController {
/*----------------------------------------------------*/ /*----------------------------------------------------*/
@Operation(summary = "字典类型分页列表", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "字典类型分页列表")
@GetMapping("/types/page") @GetMapping("/types/page")
public PageResult<DictTypePageVO> getDictTypePage( public PageResult<DictTypePageVO> getDictTypePage(
@ParameterObject DictTypePageQuery queryParams @ParameterObject DictTypePageQuery queryParams
...@@ -105,7 +105,7 @@ public class SysDictController { ...@@ -105,7 +105,7 @@ public class SysDictController {
return PageResult.success(result); return PageResult.success(result);
} }
@Operation(summary = "字典类型表单数据", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "字典类型表单数据")
@GetMapping("/types/{id}/form") @GetMapping("/types/{id}/form")
public Result<DictTypeForm> getDictTypeForm( public Result<DictTypeForm> getDictTypeForm(
@Parameter(description ="字典ID") @PathVariable Long id @Parameter(description ="字典ID") @PathVariable Long id
...@@ -114,7 +114,7 @@ public class SysDictController { ...@@ -114,7 +114,7 @@ public class SysDictController {
return Result.success(dictTypeForm); return Result.success(dictTypeForm);
} }
@Operation(summary = "新增字典类型", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "新增字典类型")
@PostMapping("/types") @PostMapping("/types")
@PreAuthorize("@ss.hasPerm('sys:dict_type:add')") @PreAuthorize("@ss.hasPerm('sys:dict_type:add')")
@PreventDuplicateResubmit @PreventDuplicateResubmit
...@@ -123,7 +123,7 @@ public class SysDictController { ...@@ -123,7 +123,7 @@ public class SysDictController {
return Result.judge(result); return Result.judge(result);
} }
@Operation(summary = "修改字典类型", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "修改字典类型")
@PutMapping("/types/{id}") @PutMapping("/types/{id}")
@PreAuthorize("@ss.hasPerm('sys:dict_type:edit')") @PreAuthorize("@ss.hasPerm('sys:dict_type:edit')")
public Result updateDictType(@PathVariable Long id, @RequestBody DictTypeForm dictTypeForm) { public Result updateDictType(@PathVariable Long id, @RequestBody DictTypeForm dictTypeForm) {
...@@ -131,7 +131,7 @@ public class SysDictController { ...@@ -131,7 +131,7 @@ public class SysDictController {
return Result.judge(status); return Result.judge(status);
} }
@Operation(summary = "删除字典类型", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "删除字典类型")
@DeleteMapping("/types/{ids}") @DeleteMapping("/types/{ids}")
@PreAuthorize("@ss.hasPerm('sys:dict_type:delete')") @PreAuthorize("@ss.hasPerm('sys:dict_type:delete')")
public Result deleteDictTypes( public Result deleteDictTypes(
......
...@@ -27,7 +27,7 @@ import java.util.List; ...@@ -27,7 +27,7 @@ import java.util.List;
* @author haoxr * @author haoxr
* @since 2020/11/06 * @since 2020/11/06
*/ */
@Tag(name = "04.菜单接口") @Tag(name = "03.菜单接口")
@RestController @RestController
@RequestMapping("/api/v1/menus") @RequestMapping("/api/v1/menus")
@RequiredArgsConstructor @RequiredArgsConstructor
......
...@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@Tag(name = "03.角色接口") @Tag(name = "02.角色接口")
@RestController @RestController
@RequestMapping("/api/v1/roles") @RequestMapping("/api/v1/roles")
@RequiredArgsConstructor @RequiredArgsConstructor
......
...@@ -9,7 +9,6 @@ import com.youlai.common.result.PageResult; ...@@ -9,7 +9,6 @@ import com.youlai.common.result.PageResult;
import com.youlai.common.result.Result; import com.youlai.common.result.Result;
import com.youlai.common.web.annotation.PreventDuplicateResubmit; import com.youlai.common.web.annotation.PreventDuplicateResubmit;
import com.youlai.system.dto.UserAuthInfo; import com.youlai.system.dto.UserAuthInfo;
import com.youlai.system.listener.excel.MyAnalysisEventListener;
import com.youlai.system.listener.excel.UserImportListener; import com.youlai.system.listener.excel.UserImportListener;
import com.youlai.system.model.entity.SysUser; import com.youlai.system.model.entity.SysUser;
import com.youlai.system.model.form.UserForm; import com.youlai.system.model.form.UserForm;
...@@ -21,7 +20,6 @@ import com.youlai.system.model.vo.UserPageVO; ...@@ -21,7 +20,6 @@ import com.youlai.system.model.vo.UserPageVO;
import com.youlai.system.service.SysUserService; import com.youlai.system.service.SysUserService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; 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.tags.Tag;
import jakarta.servlet.ServletOutputStream; import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
...@@ -45,7 +43,7 @@ import java.util.List; ...@@ -45,7 +43,7 @@ import java.util.List;
* @author haoxr * @author haoxr
* @since 2022/10/16 * @since 2022/10/16
*/ */
@Tag(name = "02.用户接口") @Tag(name = "01.用户接口")
@RestController @RestController
@RequestMapping("/api/v1/users") @RequestMapping("/api/v1/users")
@RequiredArgsConstructor @RequiredArgsConstructor
...@@ -53,7 +51,7 @@ public class SysUserController { ...@@ -53,7 +51,7 @@ public class SysUserController {
private final SysUserService userService; private final SysUserService userService;
@Operation(summary = "用户分页列表", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "用户分页列表")
@GetMapping("/page") @GetMapping("/page")
public PageResult<UserPageVO> getUserPage( public PageResult<UserPageVO> getUserPage(
@ParameterObject UserPageQuery queryParams @ParameterObject UserPageQuery queryParams
...@@ -62,7 +60,7 @@ public class SysUserController { ...@@ -62,7 +60,7 @@ public class SysUserController {
return PageResult.success(result); return PageResult.success(result);
} }
@Operation(summary = "新增用户", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "新增用户")
@PostMapping @PostMapping
@PreAuthorize("@ss.hasPerm('sys:user:add')") @PreAuthorize("@ss.hasPerm('sys:user:add')")
@PreventDuplicateResubmit @PreventDuplicateResubmit
...@@ -73,7 +71,7 @@ public class SysUserController { ...@@ -73,7 +71,7 @@ public class SysUserController {
return Result.judge(result); return Result.judge(result);
} }
@Operation(summary = "用户表单数据", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "用户表单数据")
@GetMapping("/{userId}/form") @GetMapping("/{userId}/form")
public Result<UserForm> getUserForm( public Result<UserForm> getUserForm(
@Parameter(description = "用户ID") @PathVariable Long userId @Parameter(description = "用户ID") @PathVariable Long userId
...@@ -82,7 +80,7 @@ public class SysUserController { ...@@ -82,7 +80,7 @@ public class SysUserController {
return Result.success(formData); return Result.success(formData);
} }
@Operation(summary = "修改用户", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "修改用户")
@PutMapping(value = "/{userId}") @PutMapping(value = "/{userId}")
@PreAuthorize("@ss.hasPerm('sys:user:edit')") @PreAuthorize("@ss.hasPerm('sys:user:edit')")
public Result updateUser( public Result updateUser(
...@@ -92,7 +90,7 @@ public class SysUserController { ...@@ -92,7 +90,7 @@ public class SysUserController {
return Result.judge(result); return Result.judge(result);
} }
@Operation(summary = "删除用户", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "删除用户")
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
@PreAuthorize("@ss.hasPerm('sys:user:delete')") @PreAuthorize("@ss.hasPerm('sys:user:delete')")
public Result deleteUsers( public Result deleteUsers(
...@@ -102,7 +100,7 @@ public class SysUserController { ...@@ -102,7 +100,7 @@ public class SysUserController {
return Result.judge(result); return Result.judge(result);
} }
@Operation(summary = "修改用户密码", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "修改用户密码")
@PatchMapping(value = "/{userId}/password") @PatchMapping(value = "/{userId}/password")
@PreAuthorize("@ss.hasPerm('sys:user:reset_pwd')") @PreAuthorize("@ss.hasPerm('sys:user:reset_pwd')")
public Result updatePassword( public Result updatePassword(
...@@ -113,7 +111,7 @@ public class SysUserController { ...@@ -113,7 +111,7 @@ public class SysUserController {
return Result.judge(result); return Result.judge(result);
} }
@Operation(summary = "修改用户状态", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "修改用户状态")
@PatchMapping(value = "/{userId}/status") @PatchMapping(value = "/{userId}/status")
public Result updateUserStatus( public Result updateUserStatus(
@Parameter(description = "用户ID") @PathVariable Long userId, @Parameter(description = "用户ID") @PathVariable Long userId,
...@@ -135,14 +133,14 @@ public class SysUserController { ...@@ -135,14 +133,14 @@ public class SysUserController {
return Result.success(userAUthInfo); return Result.success(userAUthInfo);
} }
@Operation(summary = "获取当前登录用户信息", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "获取登录用户信息")
@GetMapping("/me") @GetMapping("/me")
public Result<UserInfoVO> getUserLoginInfo() { public Result<UserInfoVO> getUserLoginInfo() {
UserInfoVO userInfoVO = userService.getUserLoginInfo(); UserInfoVO userInfoVO = userService.getUserLoginInfo();
return Result.success(userInfoVO); return Result.success(userInfoVO);
} }
@Operation(summary = "注销登出", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "用户注销")
@DeleteMapping("/logout") @DeleteMapping("/logout")
public Result logout() { public Result logout() {
boolean result = userService.logout(); boolean result = userService.logout();
...@@ -150,7 +148,7 @@ public class SysUserController { ...@@ -150,7 +148,7 @@ public class SysUserController {
} }
@Operation(summary = "用户导入模板下载", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "用户导入模板下载")
@GetMapping("/template") @GetMapping("/template")
public void downloadTemplate(HttpServletResponse response) throws IOException { public void downloadTemplate(HttpServletResponse response) throws IOException {
String fileName = "用户导入模板.xlsx"; String fileName = "用户导入模板.xlsx";
...@@ -166,7 +164,7 @@ public class SysUserController { ...@@ -166,7 +164,7 @@ public class SysUserController {
excelWriter.finish(); excelWriter.finish();
} }
@Operation(summary = "导入用户", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "导入用户")
@PostMapping("/_import") @PostMapping("/_import")
public Result importUsers(@Parameter(description = "部门ID") Long deptId, MultipartFile file) throws IOException { public Result importUsers(@Parameter(description = "部门ID") Long deptId, MultipartFile file) throws IOException {
UserImportListener listener = new UserImportListener(deptId); UserImportListener listener = new UserImportListener(deptId);
...@@ -175,7 +173,7 @@ public class SysUserController { ...@@ -175,7 +173,7 @@ public class SysUserController {
return Result.success(msg); return Result.success(msg);
} }
@Operation(summary = "导出用户", security = {@SecurityRequirement(name = "Authorization")}) @Operation(summary = "导出用户")
@GetMapping("/_export") @GetMapping("/_export")
public void exportUsers(UserPageQuery queryParams, HttpServletResponse response) throws IOException { public void exportUsers(UserPageQuery queryParams, HttpServletResponse response) throws IOException {
String fileName = "用户列表.xlsx"; String fileName = "用户列表.xlsx";
......
...@@ -2,6 +2,7 @@ package com.youlai.system.service.impl; ...@@ -2,6 +2,7 @@ package com.youlai.system.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
...@@ -80,7 +81,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl ...@@ -80,7 +81,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
MenuTypeEnum menuType = menuForm.getType(); // 菜单类型 MenuTypeEnum menuType = menuForm.getType(); // 菜单类型
switch (menuType) { switch (menuType) {
case CATALOG -> { // 目录 case CATALOG -> { // 目录
if (NumberUtil.equals(menuForm.getParentId(), 0) && !path.startsWith("/")) { if (ObjectUtil.equal(menuForm.getParentId(), 0) && !path.startsWith("/")) {
menuForm.setPath("/" + path); // 一级目录需以 / 开头 menuForm.setPath("/" + path); // 一级目录需以 / 开头
} }
menuForm.setComponent("Layout"); menuForm.setComponent("Layout");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册