mirror of
https://gitee.com/EMF/solon-manager.git
synced 2025-12-06 08:48:33 +08:00
149 lines
5.9 KiB
Java
149 lines
5.9 KiB
Java
package vip.fuck.sm.controller;
|
|
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
import cn.dev33.satoken.annotation.SaMode;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import vip.fuck.sm.common.aop.annotation.LogAnnotation;
|
|
import vip.fuck.sm.common.exception.BusinessException;
|
|
import vip.fuck.sm.common.exception.code.BaseResponseCode;
|
|
import vip.fuck.sm.common.utils.AssertUtil;
|
|
import vip.fuck.sm.entity.SysPermission;
|
|
import vip.fuck.sm.service.PermissionService;
|
|
import vip.fuck.sm.vo.resp.PermissionRespNode;
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.ApiOperation;
|
|
import org.noear.solon.annotation.*;
|
|
import org.noear.solon.validation.annotation.Valid;
|
|
import org.noear.solon.validation.annotation.Validated;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 菜单权限管理
|
|
*
|
|
* @author xian.zi.ming@qq.com fuck.vip
|
|
* @version V1.0
|
|
* @date 2020年3月18日
|
|
*/
|
|
@Mapping("/sys")
|
|
@Controller
|
|
@Api(tags = "组织模块-菜单权限管理")
|
|
@Valid
|
|
public class PermissionController {
|
|
|
|
@Inject
|
|
private PermissionService permissionService;
|
|
|
|
@Post @Mapping ("/permission")
|
|
@ApiOperation(value = "新增菜单权限接口")
|
|
@LogAnnotation(title = "菜单权限管理", action = "新增菜单权限")
|
|
@SaCheckPermission("sys:permission:add")
|
|
public void addPermission( @Validated SysPermission vo) {
|
|
verifyFormPid(vo);
|
|
permissionService.save(vo);
|
|
}
|
|
|
|
@Delete @Mapping ("/permission/{id}")
|
|
@ApiOperation(value = "删除菜单权限接口")
|
|
@LogAnnotation(title = "菜单权限管理", action = "删除菜单权限")
|
|
@SaCheckPermission("sys:permission:deleted")
|
|
public void deleted(@Path("id") String id) {
|
|
permissionService.deleted(id);
|
|
}
|
|
|
|
@Put
|
|
@Mapping ("/permission")
|
|
@ApiOperation(value = "更新菜单权限接口")
|
|
@LogAnnotation(title = "菜单权限管理", action = "更新菜单权限")
|
|
@SaCheckPermission("sys:permission:update")
|
|
public void updatePermission( @Validated SysPermission vo) {
|
|
AssertUtil.isStringNotBlank(vo.getId(), "id不能为空");
|
|
SysPermission sysPermission = permissionService.getById(vo.getId());
|
|
if (null == sysPermission) {
|
|
throw new BusinessException(BaseResponseCode.DATA_ERROR);
|
|
}
|
|
// 只有类型变更或者所属菜单变更
|
|
if (sysPermission.getType().equals(vo.getType()) || !sysPermission.getPid().equals(vo.getPid())) {
|
|
verifyFormPid(vo);
|
|
}
|
|
permissionService.updatePermission(vo);
|
|
}
|
|
|
|
@Get
|
|
@Mapping ("/permission/{id}")
|
|
@ApiOperation(value = "查询菜单权限接口")
|
|
@LogAnnotation(title = "菜单权限管理", action = "查询菜单权限")
|
|
@SaCheckPermission("sys:permission:detail")
|
|
public SysPermission detailInfo(@Path("id") String id) {
|
|
return permissionService.getById(id);
|
|
|
|
}
|
|
|
|
@Get @Mapping ("/permissions")
|
|
@ApiOperation(value = "获取所有菜单权限接口")
|
|
@LogAnnotation(title = "菜单权限管理", action = "获取所有菜单权限")
|
|
@SaCheckPermission("sys:permission:list")
|
|
public List<SysPermission> getAllMenusPermission() {
|
|
return permissionService.selectAll(null);
|
|
}
|
|
|
|
@Get @Mapping ("/permission/tree")
|
|
@ApiOperation(value = "获取所有目录菜单树接口")
|
|
@LogAnnotation(title = "菜单权限管理", action = "获取所有目录菜单树")
|
|
@SaCheckPermission(value = {"sys:permission:update", "sys:permission:add"}, mode = SaMode.OR)
|
|
public List<PermissionRespNode> getAllMenusPermissionTree( String permissionId) {
|
|
return permissionService.selectAllMenuByTree(permissionId);
|
|
}
|
|
|
|
@Get @Mapping ("/permission/tree/all")
|
|
@ApiOperation(value = "获取所有目录菜单树接口")
|
|
@LogAnnotation(title = "菜单权限管理", action = "获取所有目录菜单树")
|
|
@SaCheckPermission(value = {"sys:role:update", "sys:role:add"}, mode = SaMode.OR)
|
|
public List<PermissionRespNode> getAllPermissionTree() {
|
|
return permissionService.selectAllByTree(1);
|
|
}
|
|
|
|
/**
|
|
* 操作后的菜单类型是目录的时候 父级必须为目录
|
|
* 操作后的菜单类型是菜单的时候,父类必须为目录类型
|
|
* 操作后的菜单类型是按钮的时候 父类必须为菜单类型
|
|
*/
|
|
private void verifyFormPid(SysPermission sysPermission) {
|
|
SysPermission parent;
|
|
parent = permissionService.getById(sysPermission.getPid());
|
|
switch (sysPermission.getType()) {
|
|
case 1:
|
|
if (parent != null) {
|
|
if (parent.getType() != 1) {
|
|
throw new BusinessException(BaseResponseCode.OPERATION_MENU_PERMISSION_CATALOG_ERROR);
|
|
}
|
|
} else if (!"0".equals(sysPermission.getPid())) {
|
|
throw new BusinessException(BaseResponseCode.OPERATION_MENU_PERMISSION_CATALOG_ERROR);
|
|
}
|
|
break;
|
|
case 2:
|
|
if (parent == null || parent.getType() != 1) {
|
|
throw new BusinessException(BaseResponseCode.OPERATION_MENU_PERMISSION_MENU_ERROR);
|
|
}
|
|
if (StrUtil.isEmpty(sysPermission.getUrl())) {
|
|
throw new BusinessException(BaseResponseCode.OPERATION_MENU_PERMISSION_URL_NOT_NULL);
|
|
}
|
|
|
|
break;
|
|
case 3:
|
|
if (parent == null || parent.getType() != 2) {
|
|
throw new BusinessException(BaseResponseCode.OPERATION_MENU_PERMISSION_BTN_ERROR);
|
|
}
|
|
if (StrUtil.isEmpty(sysPermission.getPerms())) {
|
|
throw new BusinessException(BaseResponseCode.OPERATION_MENU_PERMISSION_URL_PERMS_NULL);
|
|
}
|
|
if (StrUtil.isEmpty(sysPermission.getUrl())) {
|
|
throw new BusinessException(BaseResponseCode.OPERATION_MENU_PERMISSION_URL_NOT_NULL);
|
|
}
|
|
break;
|
|
default:
|
|
}
|
|
}
|
|
}
|