fix: 菜单编辑页 获取父级菜单 为空问题

pull/29/head
Parker 3 years ago
parent 5b5654b56e
commit ec14677684

@ -100,6 +100,14 @@ public interface MenuApi {
ResultWrapper<List<MenuModel>> findList(); ResultWrapper<List<MenuModel>> findList();
/**
*
* @param parentId ID
* @return ResultWrapper
*/
@GetMapping("/getParent")
ResultWrapper<MenuModel> getParent(String parentId);
/** /**
* *
* @param model * @param model

@ -18,6 +18,7 @@ package org.opsli.api.web.system.role;
import org.opsli.api.base.result.ResultWrapper; import org.opsli.api.base.result.ResultWrapper;
import org.opsli.api.wrapper.system.role.RoleMenuRefModel; import org.opsli.api.wrapper.system.role.RoleMenuRefModel;
import org.opsli.api.wrapper.system.role.RoleModel; import org.opsli.api.wrapper.system.role.RoleModel;
import org.opsli.common.annotation.ApiVersion;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -54,6 +55,15 @@ public interface RoleMenuRefApi {
@GetMapping("/getPerms") @GetMapping("/getPerms")
ResultWrapper<?> getPerms(RoleMenuRefModel model); ResultWrapper<?> getPerms(RoleMenuRefModel model);
/**
*
* @param model Id
* @return ResultWrapper
*/
@ApiVersion(2)
@GetMapping("/getPerms")
ResultWrapper<?> getPermsV2(RoleMenuRefModel model);
/** /**
* *
* @param model roleId Id * @param model roleId Id
@ -63,4 +73,14 @@ public interface RoleMenuRefApi {
@PostMapping("/setPerms") @PostMapping("/setPerms")
ResultWrapper<?> setPerms(@RequestBody RoleMenuRefModel model); ResultWrapper<?> setPerms(@RequestBody RoleMenuRefModel model);
/**
*
* @param model roleId Id
* @param model permsIds Id
* @return ResultWrapper
*/
@PostMapping("/setPerms")
@ApiVersion(2)
ResultWrapper<?> setPermsV2(@RequestBody RoleMenuRefModel model);
} }

@ -17,9 +17,7 @@ package org.opsli.api.wrapper.system.user;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Builder; import lombok.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.opsli.common.annotation.validator.Validator; import org.opsli.common.annotation.validator.Validator;
import org.opsli.common.annotation.validator.ValidatorLenMax; import org.opsli.common.annotation.validator.ValidatorLenMax;
import org.opsli.common.enums.ValidatorType; import org.opsli.common.enums.ValidatorType;
@ -35,6 +33,8 @@ import java.io.Serializable;
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@AllArgsConstructor
@NoArgsConstructor
@Builder @Builder
public class UserRoleRefModel implements Serializable { public class UserRoleRefModel implements Serializable {

@ -287,6 +287,29 @@ public class MenuRestController extends BaseRestController<SysMenu, MenuModel, I
return ResultWrapper.getSuccessResultWrapper(model); return ResultWrapper.getSuccessResultWrapper(model);
} }
/**
*
* @param parentId ID
* @return ResultWrapper
*/
@ApiOperation(value = "获得单条菜单", notes = "获得单条菜单 - ID")
@PreAuthorize("hasAuthority('system_menu_select')")
@Override
public ResultWrapper<MenuModel> getParent(String parentId) {
if(StringUtils.isBlank(parentId)){
return ResultWrapper.getSuccessResultWrapper(null);
}
MenuModel model;
if(StringUtils.equals(MenuConstants.GEN_ID, parentId)){
// 生成根节点菜单
model = getGenMenuModel();
}else{
model = IService.get(parentId);
}
return ResultWrapper.getSuccessResultWrapper(model);
}
/** /**
* *
* @param pageNo * @param pageNo

@ -42,6 +42,14 @@ public interface IRoleMenuRefService {
*/ */
boolean setPerms(String roleId,String[] permsIds); boolean setPerms(String roleId,String[] permsIds);
/**
* Vue3
* @param roleId ID
* @param permsIds
* @return boolean
*/
boolean setPermsV2(String roleId,String[] permsIds);
/** /**
* ID * ID
* @param roleIds ID * @param roleIds ID

@ -88,6 +88,38 @@ public class RoleMenuRefServiceImpl extends ServiceImpl<RoleMenuRefMapper,SysRol
return true; return true;
} }
/**
* Vue3
* @param roleId ID
* @param permsIds
* @return boolean
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean setPermsV2(String roleId, String[] permsIds) {
if(StringUtils.isEmpty(roleId)){
throw new ServiceException(SystemMsg.EXCEPTION_ROLE_ID_NOT_NULL);
}
// 删除已有权限
this.delPermsByRoleIds(Convert.toList(String.class, roleId));
List<SysRoleMenuRef> list = Lists.newArrayListWithCapacity(permsIds.length);
for (String permsId : permsIds) {
SysRoleMenuRef entity = new SysRoleMenuRef();
entity.setRoleId(roleId);
entity.setMenuId(permsId);
list.add(entity);
}
boolean ret = super.saveBatch(list);
if(ret){
// 清除缓存
this.clearCache(roleId);
}
return ret;
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean delPermsByMenuIds(List<String> menuIds){ public boolean delPermsByMenuIds(List<String> menuIds){

@ -19,6 +19,7 @@ import com.google.common.collect.Lists;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.opsli.common.annotation.ApiVersion;
import org.opsli.core.log.annotation.OperateLogger; import org.opsli.core.log.annotation.OperateLogger;
import org.opsli.core.log.enums.ModuleEnum; import org.opsli.core.log.enums.ModuleEnum;
import org.opsli.core.log.enums.OperationTypeEnum; import org.opsli.core.log.enums.OperationTypeEnum;
@ -37,6 +38,7 @@ import org.opsli.modulars.system.SystemMsg;
import org.opsli.modulars.system.menu.entity.SysMenu; import org.opsli.modulars.system.menu.entity.SysMenu;
import org.opsli.modulars.system.role.service.IRoleMenuRefService; import org.opsli.modulars.system.role.service.IRoleMenuRefService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -93,6 +95,31 @@ public class RoleMenuRefRestController implements RoleMenuRefApi {
return ResultWrapper.getSuccessResultWrapper(permsIds); return ResultWrapper.getSuccessResultWrapper(permsIds);
} }
/**
* (Vue3 )
* @param model roleId Id
* @return ResultWrapper
*/
@PreAuthorize("hasAuthority('system_role_setMenuPerms')")
@Override
@ApiVersion(2)
public ResultWrapper<?> getPermsV2(RoleMenuRefModel model) {
if(model == null){
return ResultWrapper.getCustomResultWrapper(SystemMsg.EXCEPTION_ROLE_ID_NOT_NULL);
}
List<SysMenu> perms = iRoleMenuRefService.getPerms(model.getRoleId());
List<String> permsIds = Lists.newArrayListWithCapacity(perms.size());
if(!perms.isEmpty()){
for (SysMenu perm : perms) {
permsIds.add(perm.getId());
}
}
return ResultWrapper.getSuccessResultWrapper(permsIds);
}
/** /**
* *
* @param model * @param model
@ -120,6 +147,33 @@ public class RoleMenuRefRestController implements RoleMenuRefApi {
} }
/**
*
* @param model
* @return ResultWrapper
*/
@PreAuthorize("hasAuthority('system_role_setMenuPerms')")
@OperateLogger(description = "设置菜單权限",
module = ModuleEnum.MODULE_ROLE, operationType = OperationTypeEnum.UPDATE, db = true)
@Override
public ResultWrapper<?> setPermsV2(RoleMenuRefModel model) {
// 演示模式 不允许操作
this.demoError();
if(model == null){
return ResultWrapper.getErrorResultWrapper().setMsg("设置权限失败");
}
boolean ret = iRoleMenuRefService.setPermsV2(model.getRoleId(),
model.getPermsIds());
if(ret){
return ResultWrapper.getSuccessResultWrapper();
}
// 权限设置失败
return ResultWrapper.getCustomResultWrapper(SystemMsg.EXCEPTION_ROLE_PERMS_ERROR);
}
/** /**
* *
*/ */

Loading…
Cancel
Save