From d29a5e005fa0d8ece56dcb609707547b82a6f7f6 Mon Sep 17 00:00:00 2001 From: chenjinlong <22208488@qq.com> Date: Wed, 27 Jan 2021 16:53:20 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90MenuButton=E3=80=91=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=B8=80=E9=94=AE=E6=B7=BB=E5=8A=A0=E7=B3=BB=E7=BB=9F=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E9=BB=98=E8=AE=A4=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/menu/SysMenuButtonRequest.java | 9 +- .../modular/constants/MenuButtonConstant.java | 51 ++++++++++ .../controller/SysMenuButtonController.java | 18 +++- .../kernel/menu/modular/entity/SysMenu.java | 3 +- .../menu/modular/entity/SysMenuButton.java | 3 +- .../modular/factory/MenuButtonFactory.java | 65 +++++++++++++ .../modular/service/SysMenuButtonService.java | 15 ++- .../impl/SysMenuButtonServiceImpl.java | 96 +++++++++---------- 8 files changed, 201 insertions(+), 59 deletions(-) create mode 100644 kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/constants/MenuButtonConstant.java create mode 100644 kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/factory/MenuButtonFactory.java diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/menu/SysMenuButtonRequest.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/menu/SysMenuButtonRequest.java index b21817420..e99ed9c44 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/menu/SysMenuButtonRequest.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/menu/SysMenuButtonRequest.java @@ -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 { + + } + } diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/constants/MenuButtonConstant.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/constants/MenuButtonConstant.java new file mode 100644 index 000000000..579a1571e --- /dev/null +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/constants/MenuButtonConstant.java @@ -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"; + +} diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/controller/SysMenuButtonController.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/controller/SysMenuButtonController.java index 2a7c17976..10573ef89 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/controller/SysMenuButtonController.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/controller/SysMenuButtonController.java @@ -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 pageResult = sysMenuButtonService.pageList(sysMenuButtonRequest); + PageResult pageResult = sysMenuButtonService.findPage(sysMenuButtonRequest); return new SuccessResponseData(pageResult); } diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenu.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenu.java index 3978c684a..e1a9e4223 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenu.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenu.java @@ -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; /** diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenuButton.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenuButton.java index baca896e3..7bdf1ccae 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenuButton.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/entity/SysMenuButton.java @@ -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; } diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/factory/MenuButtonFactory.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/factory/MenuButtonFactory.java new file mode 100644 index 000000000..e26e2998b --- /dev/null +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/factory/MenuButtonFactory.java @@ -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 createSystemDefaultButton(Long menuId) { + + List 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; + } +} diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/SysMenuButtonService.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/SysMenuButtonService.java index 370dfb00e..7a5bf2145 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/SysMenuButtonService.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/SysMenuButtonService.java @@ -48,7 +48,7 @@ public interface SysMenuButtonService extends IService { * @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 { * @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 { * @author luojie * @date 2021/1/9 12:53 */ - PageResult pageList(SysMenuButtonRequest sysMenuButtonRequest); + PageResult findPage(SysMenuButtonRequest sysMenuButtonRequest); /** * 根据菜单id删除该菜单下的所有按钮 @@ -78,4 +78,13 @@ public interface SysMenuButtonService extends IService { */ void deleteMenuButtonByMenuId(Long menuId); + /** + * 添加系统菜单按钮 + * + * @param sysMenuButtonRequest 菜单按钮请求参数 + * @author luojie + * @date 2021/1/9 11:28 + */ + void addSystemDefaultButton(SysMenuButtonRequest sysMenuButtonRequest); + } diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/impl/SysMenuButtonServiceImpl.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/impl/SysMenuButtonServiceImpl.java index 6b76ca855..75aeb8469 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/impl/SysMenuButtonServiceImpl.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/menu/modular/service/impl/SysMenuButtonServiceImpl.java @@ -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 buttonIds = sysMenuButtonRequest.getButtonIds(); if (ArrayUtil.isNotEmpty(buttonIds)) { // 查询条件 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(SysMenuButton::getButtonId, buttonIds); - lambdaQueryWrapper.eq(SysMenuButton::getDelFlag, YesOrNotEnum.N.getCode()); + LambdaQueryWrapper 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 pageList(SysMenuButtonRequest sysMenuButtonRequest) { - String buttonName = sysMenuButtonRequest.getButtonName(); - - // 构造查询条件 根据菜单id查询菜单按钮列表 - LambdaQueryWrapper 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 findPage(SysMenuButtonRequest sysMenuButtonRequest) { + LambdaQueryWrapper wrapper = this.createWrapper(sysMenuButtonRequest); Page 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 queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysMenuButton::getMenuId, menuId); @@ -146,31 +121,52 @@ public class SysMenuButtonServiceImpl extends ServiceImpl 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 createWrapper(SysMenuButtonRequest sysMenuButtonRequest) { + LambdaQueryWrapper 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; + } + + }