mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【menu】定义删除菜单的业务关联规范
parent
edcdc9f996
commit
3cec6fc5ef
|
@ -0,0 +1,21 @@
|
||||||
|
package cn.stylefeng.roses.kernel.sys.api.callback;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除菜单的回调
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2023/6/15 10:27
|
||||||
|
*/
|
||||||
|
public interface RemoveMenuCallbackApi {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除菜单关联的业务绑定操作
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2023/6/15 10:27
|
||||||
|
*/
|
||||||
|
void removeMenuAction(Set<Long> beRemovedMenuIdList);
|
||||||
|
|
||||||
|
}
|
|
@ -3,9 +3,12 @@ package cn.stylefeng.roses.kernel.sys.modular.menu.service.impl;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
|
import cn.stylefeng.roses.kernel.db.api.DbOperatorApi;
|
||||||
import cn.stylefeng.roses.kernel.rule.constants.SymbolConstant;
|
import cn.stylefeng.roses.kernel.rule.constants.SymbolConstant;
|
||||||
import cn.stylefeng.roses.kernel.rule.constants.TreeConstants;
|
import cn.stylefeng.roses.kernel.rule.constants.TreeConstants;
|
||||||
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
|
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.api.callback.RemoveMenuCallbackApi;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService;
|
import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu;
|
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.menu.enums.SysMenuExceptionEnum;
|
import cn.stylefeng.roses.kernel.sys.modular.menu.enums.SysMenuExceptionEnum;
|
||||||
|
@ -18,10 +21,12 @@ import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@ -37,6 +42,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
@Resource
|
@Resource
|
||||||
private SysAppService sysAppService;
|
private SysAppService sysAppService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DbOperatorApi dbOperatorApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(SysMenuRequest sysMenuRequest) {
|
public void add(SysMenuRequest sysMenuRequest) {
|
||||||
|
|
||||||
|
@ -54,9 +62,23 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void del(SysMenuRequest sysMenuRequest) {
|
public void del(SysMenuRequest sysMenuRequest) {
|
||||||
SysMenu sysMenu = this.querySysMenu(sysMenuRequest);
|
|
||||||
this.removeById(sysMenu.getMenuId());
|
Long menuId = sysMenuRequest.getMenuId();
|
||||||
|
|
||||||
|
// 获取所有子级的菜单id
|
||||||
|
Set<Long> totalMenuIds = this.dbOperatorApi.findSubListByParentId("sys_menu", "menu_pids", "menu_id", menuId);
|
||||||
|
totalMenuIds.add(menuId);
|
||||||
|
|
||||||
|
// 删除菜单
|
||||||
|
this.removeByIds(totalMenuIds);
|
||||||
|
|
||||||
|
// 删除菜单下面关联的其他业务关联表
|
||||||
|
Map<String, RemoveMenuCallbackApi> removeMenuCallbackApiMap = SpringUtil.getBeansOfType(RemoveMenuCallbackApi.class);
|
||||||
|
for (RemoveMenuCallbackApi removeMenuCallbackApi : removeMenuCallbackApiMap.values()) {
|
||||||
|
removeMenuCallbackApi.removeMenuAction(totalMenuIds);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue