【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 * 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; 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(); 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") @PostResource(name = "删除单个系统菜单按钮", path = "/sysMenuButton/delete")
public ResponseData delete(@RequestBody @Validated(SysMenuButtonRequest.delete.class) SysMenuButtonRequest sysMenuButtonRequest) { public ResponseData delete(@RequestBody @Validated(SysMenuButtonRequest.delete.class) SysMenuButtonRequest sysMenuButtonRequest) {
sysMenuButtonService.delete(sysMenuButtonRequest); sysMenuButtonService.del(sysMenuButtonRequest);
return new SuccessResponseData(); return new SuccessResponseData();
} }
@ -89,7 +101,7 @@ public class SysMenuButtonController {
*/ */
@PostResource(name = "批量删除多个系统菜单按钮", path = "/sysMenuButton/batchDelete") @PostResource(name = "批量删除多个系统菜单按钮", path = "/sysMenuButton/batchDelete")
public ResponseData batchDelete(@RequestBody @Validated(SysMenuButtonRequest.batchDelete.class) SysMenuButtonRequest sysMenuButtonRequest) { public ResponseData batchDelete(@RequestBody @Validated(SysMenuButtonRequest.batchDelete.class) SysMenuButtonRequest sysMenuButtonRequest) {
sysMenuButtonService.batchDelete(sysMenuButtonRequest); sysMenuButtonService.batchDel(sysMenuButtonRequest);
return new SuccessResponseData(); return new SuccessResponseData();
} }
@ -102,7 +114,7 @@ public class SysMenuButtonController {
*/ */
@GetResource(name = "获取菜单按钮列表", path = "/sysMenuButton/pageList") @GetResource(name = "获取菜单按钮列表", path = "/sysMenuButton/pageList")
public ResponseData pageList(@Validated(SysMenuButtonRequest.list.class) SysMenuButtonRequest sysMenuButtonRequest) { 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); 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.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.rule.abstracts.AbstractTreeNode; 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.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
@ -127,7 +128,7 @@ public class SysMenu extends BaseEntity implements AbstractTreeNode {
/** /**
* Y-N- * Y-N-
*/ */
@TableField("del_flag") @TableField(value = "del_flag", fill = FieldFill.INSERT)
private String delFlag; private String delFlag;
/** /**

View File

@ -1,6 +1,7 @@
package cn.stylefeng.roses.kernel.menu.modular.entity; package cn.stylefeng.roses.kernel.menu.modular.entity;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; 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.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
@ -47,7 +48,7 @@ public class SysMenuButton extends BaseEntity implements Serializable {
/** /**
* Y-N- * Y-N-
*/ */
@TableField(value = "del_flag") @TableField(value = "del_flag", fill = FieldFill.INSERT)
private String delFlag; 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 * @author luojie
* @date 2021/1/9 12:14 * @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 * @author luojie
* @date 2021/1/9 12:27 * @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 * @author luojie
* @date 2021/1/9 12:53 * @date 2021/1/9 12:53
*/ */
PageResult<SysMenuButton> pageList(SysMenuButtonRequest sysMenuButtonRequest); PageResult<SysMenuButton> findPage(SysMenuButtonRequest sysMenuButtonRequest);
/** /**
* id * id
@ -78,4 +78,13 @@ public interface SysMenuButtonService extends IService<SysMenuButton> {
*/ */
void deleteMenuButtonByMenuId(Long menuId); 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.bean.BeanUtil;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil; 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.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; 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.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.mapper.SysMenuButtonMapper;
import cn.stylefeng.roses.kernel.menu.modular.service.SysMenuButtonService; import cn.stylefeng.roses.kernel.menu.modular.service.SysMenuButtonService;
import cn.stylefeng.roses.kernel.menu.modular.service.SysMenuService; 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.SystemModularException;
import cn.stylefeng.roses.kernel.system.exception.enums.SysMenuButtonExceptionEnum; 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.SysMenuButtonRequest;
import cn.stylefeng.roses.kernel.system.pojo.menu.SysMenuRequest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -23,6 +22,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
import java.util.Set; import java.util.Set;
/** /**
@ -40,18 +40,9 @@ public class SysMenuButtonServiceImpl extends ServiceImpl<SysMenuButtonMapper, S
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void add(SysMenuButtonRequest sysMenuButtonRequest) { public void add(SysMenuButtonRequest sysMenuButtonRequest) {
// 判断菜单是否存在
findMenuExist(sysMenuButtonRequest.getMenuId());
SysMenuButton sysMenuButton = new SysMenuButton(); SysMenuButton sysMenuButton = new SysMenuButton();
BeanUtil.copyProperties(sysMenuButtonRequest, sysMenuButton); BeanUtil.copyProperties(sysMenuButtonRequest, sysMenuButton);
// 设置未删除
sysMenuButton.setDelFlag(YesOrNotEnum.N.getCode());
this.save(sysMenuButton); this.save(sysMenuButton);
} }
@Override @Override
@ -63,9 +54,6 @@ public class SysMenuButtonServiceImpl extends ServiceImpl<SysMenuButtonMapper, S
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void edit(SysMenuButtonRequest sysMenuButtonRequest) { public void edit(SysMenuButtonRequest sysMenuButtonRequest) {
// 查询按钮所属菜单是否存在
findMenuExist(sysMenuButtonRequest.getMenuId());
SysMenuButton button = this.queryButton(sysMenuButtonRequest); SysMenuButton button = this.queryButton(sysMenuButtonRequest);
BeanUtil.copyProperties(sysMenuButtonRequest, button); BeanUtil.copyProperties(sysMenuButtonRequest, button);
@ -82,8 +70,7 @@ public class SysMenuButtonServiceImpl extends ServiceImpl<SysMenuButtonMapper, S
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) public void del(SysMenuButtonRequest sysMenuButtonRequest) {
public void delete(SysMenuButtonRequest sysMenuButtonRequest) {
// 查询按钮 // 查询按钮
SysMenuButton button = this.queryButton(sysMenuButtonRequest); SysMenuButton button = this.queryButton(sysMenuButtonRequest);
@ -95,44 +82,32 @@ public class SysMenuButtonServiceImpl extends ServiceImpl<SysMenuButtonMapper, S
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) public void batchDel(SysMenuButtonRequest sysMenuButtonRequest) {
public void batchDelete(SysMenuButtonRequest sysMenuButtonRequest) {
Set<Long> buttonIds = sysMenuButtonRequest.getButtonIds(); Set<Long> buttonIds = sysMenuButtonRequest.getButtonIds();
if (ArrayUtil.isNotEmpty(buttonIds)) { if (ArrayUtil.isNotEmpty(buttonIds)) {
// 查询条件 // 查询条件
LambdaQueryWrapper<SysMenuButton> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysMenuButton> queryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(SysMenuButton::getButtonId, buttonIds); queryWrapper.in(SysMenuButton::getButtonId, buttonIds);
lambdaQueryWrapper.eq(SysMenuButton::getDelFlag, YesOrNotEnum.N.getCode()); queryWrapper.eq(SysMenuButton::getDelFlag, YesOrNotEnum.N.getCode());
// 设置为删除状态 // 设置为删除状态
SysMenuButton entity = new SysMenuButton(); SysMenuButton entity = new SysMenuButton();
entity.setDelFlag(YesOrNotEnum.Y.getCode()); entity.setDelFlag(YesOrNotEnum.Y.getCode());
this.update(entity, lambdaQueryWrapper); this.update(entity, queryWrapper);
} }
} }
@Override @Override
public PageResult<SysMenuButton> pageList(SysMenuButtonRequest sysMenuButtonRequest) { public PageResult<SysMenuButton> findPage(SysMenuButtonRequest sysMenuButtonRequest) {
String buttonName = sysMenuButtonRequest.getButtonName(); LambdaQueryWrapper<SysMenuButton> wrapper = this.createWrapper(sysMenuButtonRequest);
// 构造查询条件 根据菜单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());
Page<SysMenuButton> page = this.page(PageFactory.defaultPage(), wrapper); Page<SysMenuButton> page = this.page(PageFactory.defaultPage(), wrapper);
return PageResultFactory.createPageResult(page); return PageResultFactory.createPageResult(page);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void deleteMenuButtonByMenuId(Long menuId) { public void deleteMenuButtonByMenuId(Long menuId) {
if (ObjectUtil.isNotEmpty(menuId)) { if (ObjectUtil.isNotEmpty(menuId)) {
// 构建查询条件 // 构建查询条件
LambdaQueryWrapper<SysMenuButton> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysMenuButton> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysMenuButton::getMenuId, menuId); queryWrapper.eq(SysMenuButton::getMenuId, menuId);
@ -146,31 +121,52 @@ public class SysMenuButtonServiceImpl extends ServiceImpl<SysMenuButtonMapper, S
} }
} }
/** @Override
* public void addSystemDefaultButton(SysMenuButtonRequest sysMenuButtonRequest) {
* Long menuId = sysMenuButtonRequest.getMenuId();
* @param menuId id // 构建菜单的系统默认按钮
* @author luojie List<SysMenuButton> sysMenuButtonList = MenuButtonFactory.createSystemDefaultButton(menuId);
* @date 2021/1/9 12:10 this.saveBatch(sysMenuButtonList);
*/
private void findMenuExist(Long menuId) {
SysMenuRequest sysMenuRequest = new SysMenuRequest();
sysMenuRequest.setMenuId(menuId);
sysMenuService.detail(sysMenuRequest);
} }
/** /**
* * id
* *
* @author fengshuonan * @author chenjinlong
* @date 2020/3/27 9:13 * @date 2021/1/26 13:28
*/ */
private SysMenuButton queryButton(SysMenuButtonRequest sysMenuButtonRequest) { private SysMenuButton queryButton(SysMenuButtonRequest sysMenuButtonRequest) {
SysMenuButton button = this.getById(sysMenuButtonRequest.getButtonId()); 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); throw new SystemModularException(SysMenuButtonExceptionEnum.MENU_BUTTON_NOT_EXIST);
} }
return button; 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;
}
} }