完善:完善菜单相关代码逻辑,优化部分细节

This commit is contained in:
2023-03-20 21:56:20 +08:00
parent 6d3ba478e9
commit a09711c04e
5 changed files with 105 additions and 4 deletions

View File

@@ -20,10 +20,20 @@ import static top.charles7c.cnadmin.common.annotation.CrudRequestMapping.Api;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.ObjectUtil;
import top.charles7c.cnadmin.common.annotation.CrudRequestMapping;
import top.charles7c.cnadmin.common.base.BaseController;
import top.charles7c.cnadmin.common.base.BaseRequest;
import top.charles7c.cnadmin.common.model.vo.R;
import top.charles7c.cnadmin.common.util.URLUtils;
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
import top.charles7c.cnadmin.system.model.query.MenuQuery;
import top.charles7c.cnadmin.system.model.request.MenuRequest;
import top.charles7c.cnadmin.system.model.vo.MenuVO;
@@ -38,4 +48,32 @@ import top.charles7c.cnadmin.system.service.MenuService;
@Tag(name = "菜单管理 API")
@RestController
@CrudRequestMapping(value = "/system/menu", api = {Api.TREE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT})
public class MenuController extends BaseController<MenuService, MenuVO, MenuVO, MenuQuery, MenuRequest> {}
public class MenuController extends BaseController<MenuService, MenuVO, MenuVO, MenuQuery, MenuRequest> {
@Override
@SaCheckPermission("system:menu:add")
protected R<Long> add(@Validated(BaseRequest.Add.class) @RequestBody MenuRequest request) {
this.checkPath(request);
return super.add(request);
}
@Override
@SaCheckPermission("system:menu:update")
protected R update(@Validated(BaseRequest.Update.class) @RequestBody MenuRequest request, @PathVariable Long id) {
this.checkPath(request);
return super.update(request, id);
}
/**
* 检查路由地址格式
*
* @param request
* 创建或修改信息
*/
private void checkPath(MenuRequest request) {
Boolean isExternal = ObjectUtil.defaultIfNull(request.getIsExternal(), false);
String path = request.getPath();
ValidationUtils.throwIf(isExternal && !URLUtils.isHttpUrl(path), "路由地址格式错误,请以 http:// 或 https:// 开头");
ValidationUtils.throwIf(!isExternal && URLUtils.isHttpUrl(path), "路由地址格式错误");
}
}