【MenuButton】新增一键添加系统菜单默认按钮

pull/3/head
chenjinlong 2021-01-27 16:53:20 +08:00
parent b15fba5fa3
commit d29a5e005f
8 changed files with 201 additions and 59 deletions

View File

@ -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 {
}
}

View File

@ -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";
}

View File

@ -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);
}

View File

@ -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;
/**

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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;
}
}