mirror of https://gitee.com/stylefeng/roses
【MenuButton】新增一键添加系统菜单默认按钮
parent
b15fba5fa3
commit
d29a5e005f
|
@ -35,7 +35,7 @@ public class SysMenuButtonRequest extends BaseRequest {
|
|||
/**
|
||||
* 菜单id,按钮需要挂在菜单下
|
||||
*/
|
||||
@NotNull(message = "菜单id不能为空", groups = {add.class, edit.class, list.class})
|
||||
@NotNull(message = "菜单id不能为空", groups = {add.class, edit.class, list.class, def.class})
|
||||
private Long menuId;
|
||||
|
||||
/**
|
||||
|
@ -64,4 +64,11 @@ public class SysMenuButtonRequest extends BaseRequest {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键添加系统默认按钮
|
||||
*/
|
||||
public @interface def {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
package cn.stylefeng.roses.kernel.menu.modular.constants;
|
||||
|
||||
/**
|
||||
* 系统菜单按钮常量
|
||||
*
|
||||
* @author chenjinlong
|
||||
* @date 2021/1/27 15:08
|
||||
*/
|
||||
public interface MenuButtonConstant {
|
||||
|
||||
/**
|
||||
* 默认添加按钮名称
|
||||
*/
|
||||
String DEFAULT_ADD_BUTTON_NAME = "添加";
|
||||
|
||||
/**
|
||||
* 默认添加按钮CODE
|
||||
*/
|
||||
String DEFAULT_ADD_BUTTON_CODE = "ADD_BUTTON";
|
||||
|
||||
/**
|
||||
* 默认删除按钮名称
|
||||
*/
|
||||
String DEFAULT_DEL_BUTTON_NAME = "删除";
|
||||
|
||||
/**
|
||||
* 默认删除按钮CODE
|
||||
*/
|
||||
String DEFAULT_DEL_BUTTON_CODE = "DEL_BUTTON";
|
||||
|
||||
/**
|
||||
* 默认修改按钮名称
|
||||
*/
|
||||
String DEFAULT_UPDATE_BUTTON_NAME = "修改";
|
||||
|
||||
/**
|
||||
* 默认修改按钮CODE
|
||||
*/
|
||||
String DEFAULT_UPDATE_BUTTON_CODE = "UPDATE_BUTTON";
|
||||
|
||||
/**
|
||||
* 默认查询按钮名称
|
||||
*/
|
||||
String DEFAULT_SEARCH_BUTTON_NAME = "查询";
|
||||
|
||||
/**
|
||||
* 默认查询按钮CODE
|
||||
*/
|
||||
String DEFAULT_SEARCH_BUTTON_CODE = "SEARCH_BUTTON";
|
||||
|
||||
}
|
|
@ -41,6 +41,18 @@ public class SysMenuButtonController {
|
|||
return new SuccessResponseData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加系统菜单按钮-默认按钮
|
||||
*
|
||||
* @author chenjinlong
|
||||
* @date 2021/1/9 11:28
|
||||
*/
|
||||
@PostResource(name = "添加系统默认菜单按钮", path = "/sysMenuButton/addSystemDefaultButton")
|
||||
public ResponseData addSystemDefaultButton(@RequestBody @Validated(SysMenuButtonRequest.def.class) SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
sysMenuButtonService.addSystemDefaultButton(sysMenuButtonRequest);
|
||||
return new SuccessResponseData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取菜单按钮详情
|
||||
*
|
||||
|
@ -76,7 +88,7 @@ public class SysMenuButtonController {
|
|||
*/
|
||||
@PostResource(name = "删除单个系统菜单按钮", path = "/sysMenuButton/delete")
|
||||
public ResponseData delete(@RequestBody @Validated(SysMenuButtonRequest.delete.class) SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
sysMenuButtonService.delete(sysMenuButtonRequest);
|
||||
sysMenuButtonService.del(sysMenuButtonRequest);
|
||||
return new SuccessResponseData();
|
||||
}
|
||||
|
||||
|
@ -89,7 +101,7 @@ public class SysMenuButtonController {
|
|||
*/
|
||||
@PostResource(name = "批量删除多个系统菜单按钮", path = "/sysMenuButton/batchDelete")
|
||||
public ResponseData batchDelete(@RequestBody @Validated(SysMenuButtonRequest.batchDelete.class) SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
sysMenuButtonService.batchDelete(sysMenuButtonRequest);
|
||||
sysMenuButtonService.batchDel(sysMenuButtonRequest);
|
||||
return new SuccessResponseData();
|
||||
}
|
||||
|
||||
|
@ -102,7 +114,7 @@ public class SysMenuButtonController {
|
|||
*/
|
||||
@GetResource(name = "获取菜单按钮列表", path = "/sysMenuButton/pageList")
|
||||
public ResponseData pageList(@Validated(SysMenuButtonRequest.list.class) SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
PageResult<SysMenuButton> pageResult = sysMenuButtonService.pageList(sysMenuButtonRequest);
|
||||
PageResult<SysMenuButton> pageResult = sysMenuButtonService.findPage(sysMenuButtonRequest);
|
||||
return new SuccessResponseData(pageResult);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package cn.stylefeng.roses.kernel.menu.modular.entity;
|
|||
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
|
||||
import cn.stylefeng.roses.kernel.rule.abstracts.AbstractTreeNode;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
@ -127,7 +128,7 @@ public class SysMenu extends BaseEntity implements AbstractTreeNode {
|
|||
/**
|
||||
* 是否删除:Y-被删除,N-未删除
|
||||
*/
|
||||
@TableField("del_flag")
|
||||
@TableField(value = "del_flag", fill = FieldFill.INSERT)
|
||||
private String delFlag;
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package cn.stylefeng.roses.kernel.menu.modular.entity;
|
||||
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
@ -47,7 +48,7 @@ public class SysMenuButton extends BaseEntity implements Serializable {
|
|||
/**
|
||||
* 是否删除:Y-被删除,N-未删除
|
||||
*/
|
||||
@TableField(value = "del_flag")
|
||||
@TableField(value = "del_flag", fill = FieldFill.INSERT)
|
||||
private String delFlag;
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
package cn.stylefeng.roses.kernel.menu.modular.factory;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.stylefeng.roses.kernel.menu.modular.constants.MenuButtonConstant;
|
||||
import cn.stylefeng.roses.kernel.menu.modular.entity.SysMenuButton;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 组装菜单按钮
|
||||
*
|
||||
* @author chenjinlong
|
||||
* @date 2021/1/27 16:22
|
||||
*/
|
||||
public class MenuButtonFactory {
|
||||
|
||||
/**
|
||||
* 生成系统默认菜单按钮
|
||||
*
|
||||
* @param menuId 菜单id
|
||||
* @return 系统默认菜单按钮集合
|
||||
* @author chenjinlong
|
||||
* @date 2021/1/27 15:36
|
||||
*/
|
||||
public static List<SysMenuButton> createSystemDefaultButton(Long menuId) {
|
||||
|
||||
List<SysMenuButton> sysMenuButtonList = CollUtil.newArrayList();
|
||||
|
||||
// 新增按钮
|
||||
SysMenuButton addButton = new SysMenuButton();
|
||||
addButton.setMenuId(menuId);
|
||||
addButton.setButtonCode(MenuButtonConstant.DEFAULT_ADD_BUTTON_CODE);
|
||||
addButton.setButtonName(MenuButtonConstant.DEFAULT_ADD_BUTTON_NAME);
|
||||
addButton.setDelFlag(YesOrNotEnum.N.getCode());
|
||||
sysMenuButtonList.add(addButton);
|
||||
|
||||
// 删除按钮
|
||||
SysMenuButton delButton = new SysMenuButton();
|
||||
delButton.setMenuId(menuId);
|
||||
delButton.setButtonCode(MenuButtonConstant.DEFAULT_DEL_BUTTON_CODE);
|
||||
delButton.setButtonName(MenuButtonConstant.DEFAULT_DEL_BUTTON_NAME);
|
||||
delButton.setDelFlag(YesOrNotEnum.N.getCode());
|
||||
sysMenuButtonList.add(delButton);
|
||||
|
||||
// 修改按钮
|
||||
SysMenuButton updateButton = new SysMenuButton();
|
||||
updateButton.setMenuId(menuId);
|
||||
updateButton.setButtonCode(MenuButtonConstant.DEFAULT_UPDATE_BUTTON_CODE);
|
||||
updateButton.setButtonName(MenuButtonConstant.DEFAULT_UPDATE_BUTTON_NAME);
|
||||
updateButton.setDelFlag(YesOrNotEnum.N.getCode());
|
||||
sysMenuButtonList.add(updateButton);
|
||||
|
||||
|
||||
// 查询按钮
|
||||
SysMenuButton searchButton = new SysMenuButton();
|
||||
searchButton.setMenuId(menuId);
|
||||
searchButton.setButtonCode(MenuButtonConstant.DEFAULT_SEARCH_BUTTON_CODE);
|
||||
searchButton.setButtonName(MenuButtonConstant.DEFAULT_SEARCH_BUTTON_NAME);
|
||||
searchButton.setDelFlag(YesOrNotEnum.N.getCode());
|
||||
sysMenuButtonList.add(searchButton);
|
||||
|
||||
return sysMenuButtonList;
|
||||
}
|
||||
}
|
|
@ -48,7 +48,7 @@ public interface SysMenuButtonService extends IService<SysMenuButton> {
|
|||
* @author luojie
|
||||
* @date 2021/1/9 12:14
|
||||
*/
|
||||
void delete(SysMenuButtonRequest sysMenuButtonRequest);
|
||||
void del(SysMenuButtonRequest sysMenuButtonRequest);
|
||||
|
||||
/**
|
||||
* 批量删除多个系统菜单按钮
|
||||
|
@ -57,7 +57,7 @@ public interface SysMenuButtonService extends IService<SysMenuButton> {
|
|||
* @author luojie
|
||||
* @date 2021/1/9 12:27
|
||||
*/
|
||||
void batchDelete(SysMenuButtonRequest sysMenuButtonRequest);
|
||||
void batchDel(SysMenuButtonRequest sysMenuButtonRequest);
|
||||
|
||||
/**
|
||||
* 分页获取菜单按钮列表
|
||||
|
@ -67,7 +67,7 @@ public interface SysMenuButtonService extends IService<SysMenuButton> {
|
|||
* @author luojie
|
||||
* @date 2021/1/9 12:53
|
||||
*/
|
||||
PageResult<SysMenuButton> pageList(SysMenuButtonRequest sysMenuButtonRequest);
|
||||
PageResult<SysMenuButton> findPage(SysMenuButtonRequest sysMenuButtonRequest);
|
||||
|
||||
/**
|
||||
* 根据菜单id删除该菜单下的所有按钮
|
||||
|
@ -78,4 +78,13 @@ public interface SysMenuButtonService extends IService<SysMenuButton> {
|
|||
*/
|
||||
void deleteMenuButtonByMenuId(Long menuId);
|
||||
|
||||
/**
|
||||
* 添加系统菜单按钮
|
||||
*
|
||||
* @param sysMenuButtonRequest 菜单按钮请求参数
|
||||
* @author luojie
|
||||
* @date 2021/1/9 11:28
|
||||
*/
|
||||
void addSystemDefaultButton(SysMenuButtonRequest sysMenuButtonRequest);
|
||||
|
||||
}
|
||||
|
|
|
@ -3,11 +3,11 @@ package cn.stylefeng.roses.kernel.menu.modular.service.impl;
|
|||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
|
||||
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||
import cn.stylefeng.roses.kernel.menu.modular.entity.SysMenuButton;
|
||||
import cn.stylefeng.roses.kernel.menu.modular.factory.MenuButtonFactory;
|
||||
import cn.stylefeng.roses.kernel.menu.modular.mapper.SysMenuButtonMapper;
|
||||
import cn.stylefeng.roses.kernel.menu.modular.service.SysMenuButtonService;
|
||||
import cn.stylefeng.roses.kernel.menu.modular.service.SysMenuService;
|
||||
|
@ -15,7 +15,6 @@ import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
|
|||
import cn.stylefeng.roses.kernel.system.exception.SystemModularException;
|
||||
import cn.stylefeng.roses.kernel.system.exception.enums.SysMenuButtonExceptionEnum;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.SysMenuButtonRequest;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.SysMenuRequest;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
@ -23,6 +22,7 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
|
@ -40,18 +40,9 @@ public class SysMenuButtonServiceImpl extends ServiceImpl<SysMenuButtonMapper, S
|
|||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void add(SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
|
||||
// 判断菜单是否存在
|
||||
findMenuExist(sysMenuButtonRequest.getMenuId());
|
||||
|
||||
SysMenuButton sysMenuButton = new SysMenuButton();
|
||||
BeanUtil.copyProperties(sysMenuButtonRequest, sysMenuButton);
|
||||
|
||||
// 设置未删除
|
||||
sysMenuButton.setDelFlag(YesOrNotEnum.N.getCode());
|
||||
|
||||
this.save(sysMenuButton);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -63,9 +54,6 @@ public class SysMenuButtonServiceImpl extends ServiceImpl<SysMenuButtonMapper, S
|
|||
@Transactional(rollbackFor = Exception.class)
|
||||
public void edit(SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
|
||||
// 查询按钮所属菜单是否存在
|
||||
findMenuExist(sysMenuButtonRequest.getMenuId());
|
||||
|
||||
SysMenuButton button = this.queryButton(sysMenuButtonRequest);
|
||||
BeanUtil.copyProperties(sysMenuButtonRequest, button);
|
||||
|
||||
|
@ -82,8 +70,7 @@ public class SysMenuButtonServiceImpl extends ServiceImpl<SysMenuButtonMapper, S
|
|||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void delete(SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
public void del(SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
|
||||
// 查询按钮
|
||||
SysMenuButton button = this.queryButton(sysMenuButtonRequest);
|
||||
|
@ -95,44 +82,32 @@ public class SysMenuButtonServiceImpl extends ServiceImpl<SysMenuButtonMapper, S
|
|||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void batchDelete(SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
public void batchDel(SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
Set<Long> buttonIds = sysMenuButtonRequest.getButtonIds();
|
||||
if (ArrayUtil.isNotEmpty(buttonIds)) {
|
||||
// 查询条件
|
||||
LambdaQueryWrapper<SysMenuButton> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.in(SysMenuButton::getButtonId, buttonIds);
|
||||
lambdaQueryWrapper.eq(SysMenuButton::getDelFlag, YesOrNotEnum.N.getCode());
|
||||
LambdaQueryWrapper<SysMenuButton> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.in(SysMenuButton::getButtonId, buttonIds);
|
||||
queryWrapper.eq(SysMenuButton::getDelFlag, YesOrNotEnum.N.getCode());
|
||||
|
||||
// 设置为删除状态
|
||||
SysMenuButton entity = new SysMenuButton();
|
||||
entity.setDelFlag(YesOrNotEnum.Y.getCode());
|
||||
|
||||
this.update(entity, lambdaQueryWrapper);
|
||||
this.update(entity, queryWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<SysMenuButton> pageList(SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
String buttonName = sysMenuButtonRequest.getButtonName();
|
||||
|
||||
// 构造查询条件 根据菜单id查询菜单按钮列表
|
||||
LambdaQueryWrapper<SysMenuButton> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(SysMenuButton::getMenuId, sysMenuButtonRequest.getMenuId());
|
||||
if (StrUtil.isNotBlank(buttonName)) {
|
||||
wrapper.like(SysMenuButton::getButtonName, buttonName);
|
||||
}
|
||||
wrapper.eq(SysMenuButton::getDelFlag, YesOrNotEnum.N.getCode());
|
||||
public PageResult<SysMenuButton> findPage(SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
LambdaQueryWrapper<SysMenuButton> wrapper = this.createWrapper(sysMenuButtonRequest);
|
||||
Page<SysMenuButton> page = this.page(PageFactory.defaultPage(), wrapper);
|
||||
|
||||
return PageResultFactory.createPageResult(page);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteMenuButtonByMenuId(Long menuId) {
|
||||
if (ObjectUtil.isNotEmpty(menuId)) {
|
||||
|
||||
// 构建查询条件
|
||||
LambdaQueryWrapper<SysMenuButton> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(SysMenuButton::getMenuId, menuId);
|
||||
|
@ -146,31 +121,52 @@ public class SysMenuButtonServiceImpl extends ServiceImpl<SysMenuButtonMapper, S
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询菜单是否存在,为空会抛出异常
|
||||
*
|
||||
* @param menuId 菜单id
|
||||
* @author luojie
|
||||
* @date 2021/1/9 12:10
|
||||
*/
|
||||
private void findMenuExist(Long menuId) {
|
||||
SysMenuRequest sysMenuRequest = new SysMenuRequest();
|
||||
sysMenuRequest.setMenuId(menuId);
|
||||
sysMenuService.detail(sysMenuRequest);
|
||||
@Override
|
||||
public void addSystemDefaultButton(SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
Long menuId = sysMenuButtonRequest.getMenuId();
|
||||
// 构建菜单的系统默认按钮
|
||||
List<SysMenuButton> sysMenuButtonList = MenuButtonFactory.createSystemDefaultButton(menuId);
|
||||
this.saveBatch(sysMenuButtonList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取按钮
|
||||
* 根据主键id获取对象
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/3/27 9:13
|
||||
* @author chenjinlong
|
||||
* @date 2021/1/26 13:28
|
||||
*/
|
||||
private SysMenuButton queryButton(SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
SysMenuButton button = this.getById(sysMenuButtonRequest.getButtonId());
|
||||
if (ObjectUtil.isNull(button) || YesOrNotEnum.Y.getCode().equals(button.getDelFlag())) {
|
||||
if (ObjectUtil.isNull(button)) {
|
||||
throw new SystemModularException(SysMenuButtonExceptionEnum.MENU_BUTTON_NOT_EXIST);
|
||||
}
|
||||
return button;
|
||||
}
|
||||
|
||||
/**
|
||||
* 实体构建queryWrapper
|
||||
*
|
||||
* @author chenjinlong
|
||||
* @date 2021/1/24 22:03
|
||||
*/
|
||||
private LambdaQueryWrapper<SysMenuButton> createWrapper(SysMenuButtonRequest sysMenuButtonRequest) {
|
||||
LambdaQueryWrapper<SysMenuButton> queryWrapper = new LambdaQueryWrapper<>();
|
||||
Long buttonId = sysMenuButtonRequest.getButtonId();
|
||||
Long menuId = sysMenuButtonRequest.getMenuId();
|
||||
String buttonName = sysMenuButtonRequest.getButtonName();
|
||||
String buttonCode = sysMenuButtonRequest.getButtonCode();
|
||||
|
||||
// SQL条件拼接
|
||||
queryWrapper.eq(ObjectUtil.isNotNull(buttonId), SysMenuButton::getButtonId, buttonId);
|
||||
queryWrapper.eq(ObjectUtil.isNotNull(menuId), SysMenuButton::getMenuId, menuId);
|
||||
queryWrapper.like(ObjectUtil.isNotNull(buttonName), SysMenuButton::getButtonName, buttonName);
|
||||
queryWrapper.like(ObjectUtil.isNotNull(buttonCode), SysMenuButton::getButtonCode, buttonCode);
|
||||
|
||||
// 逻辑删除
|
||||
queryWrapper.eq(SysMenuButton::getDelFlag, YesOrNotEnum.N.getCode());
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue