/* * Copyright [2020-2030] [https://www.stylefeng.cn] * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: * * 1.请不要删除和修改根目录下的LICENSE文件。 * 2.请不要删除和修改Guns源码头部的版权声明。 * 3.请保留源码和相关描述文件的项目出处,作者声明等。 * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns * 6.若您的项目无法满足以上几点,可申请商业授权 */ package cn.stylefeng.roses.kernel.system.modular.menu.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; 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.rule.enums.YesOrNotEnum; import cn.stylefeng.roses.kernel.system.api.exception.SystemModularException; import cn.stylefeng.roses.kernel.system.api.exception.enums.menu.SysMenuButtonExceptionEnum; import cn.stylefeng.roses.kernel.system.api.pojo.menu.SysMenuButtonRequest; import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenu; import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenuButton; import cn.stylefeng.roses.kernel.system.modular.menu.factory.MenuButtonFactory; import cn.stylefeng.roses.kernel.system.modular.menu.mapper.SysMenuButtonMapper; import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuButtonService; import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Set; /** * 系统菜单按钮service接口实现类 * * @author luojie * @date 2021/1/9 11:05 */ @Service public class SysMenuButtonServiceImpl extends ServiceImpl implements SysMenuButtonService { @Resource private SysMenuService sysMenuService; @Override public void add(SysMenuButtonRequest sysMenuButtonRequest) { SysMenuButton sysMenuButton = new SysMenuButton(); BeanUtil.copyProperties(sysMenuButtonRequest, sysMenuButton); this.save(sysMenuButton); } @Override public void addDefaultButtons(SysMenuButtonRequest sysMenuButtonRequest) { Long menuId = sysMenuButtonRequest.getMenuId(); // 获取菜单的编码 SysMenu sysMenu = this.sysMenuService.getById(menuId); // 构建菜单的系统默认按钮 List sysMenuButtonList = MenuButtonFactory.createSystemDefaultButton(menuId, sysMenu.getMenuName(), sysMenu.getMenuCode()); this.saveBatch(sysMenuButtonList); } @Override public void del(SysMenuButtonRequest sysMenuButtonRequest) { SysMenuButton button = this.queryButtonById(sysMenuButtonRequest); // 设置为删除状态 button.setDelFlag(YesOrNotEnum.Y.getCode()); this.updateById(button); } @Override public void delBatch(SysMenuButtonRequest sysMenuButtonRequest) { Set buttonIds = sysMenuButtonRequest.getButtonIds(); if (ArrayUtil.isNotEmpty(buttonIds)) { // 查询条件 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, queryWrapper); } } @Override public void edit(SysMenuButtonRequest sysMenuButtonRequest) { SysMenuButton button = this.queryButtonById(sysMenuButtonRequest); BeanUtil.copyProperties(sysMenuButtonRequest, button); // 不更新删除状态 button.setDelFlag(null); // 不更新所属菜单id button.setMenuId(null); // 不更新菜单code button.setButtonCode(null); this.updateById(button); } @Override public SysMenuButton detail(SysMenuButtonRequest sysMenuButtonRequest) { LambdaQueryWrapper queryWrapper = this.createWrapper(sysMenuButtonRequest); return this.getOne(queryWrapper, false); } @Override public PageResult findPage(SysMenuButtonRequest sysMenuButtonRequest) { LambdaQueryWrapper wrapper = this.createWrapper(sysMenuButtonRequest); Page page = this.page(PageFactory.defaultPage(), wrapper); return PageResultFactory.createPageResult(page); } @Override public void deleteMenuButtonByMenuId(Long menuId) { if (ObjectUtil.isNotEmpty(menuId)) { // 构建查询条件 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysMenuButton::getMenuId, menuId); queryWrapper.eq(SysMenuButton::getDelFlag, YesOrNotEnum.N.getCode()); // 设置假删除 SysMenuButton sysMenuButton = new SysMenuButton(); sysMenuButton.setDelFlag(YesOrNotEnum.Y.getCode()); this.update(sysMenuButton, queryWrapper); } } /** * 根据主键id获取对象 * * @author chenjinlong * @date 2021/1/26 13:28 */ private SysMenuButton queryButtonById(SysMenuButtonRequest sysMenuButtonRequest) { SysMenuButton button = this.getById(sysMenuButtonRequest.getButtonId()); 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<>(); // 逻辑删除 queryWrapper.eq(SysMenuButton::getDelFlag, YesOrNotEnum.N.getCode()); if (ObjectUtil.isEmpty(sysMenuButtonRequest)) { return queryWrapper; } 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); return queryWrapper; } }