From 9fd983ec5c41e04385f10cfa5dd74ed6d5e7f41a Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 23 Apr 2024 21:56:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(TODO):=20=E2=9C=A8=20=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E8=8E=B7=E5=8F=96=E8=8F=9C=E5=8D=95;?= =?UTF-8?q?=E7=BB=99=E8=A7=92=E8=89=B2=E5=88=86=E9=85=8D=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/common-util/pom.xml | 6 ++ .../com/atguigu/common/utlis/MenuHelper.java | 44 ++++++++++ .../src/main/java/com/atguigu/CodeGet.java | 2 +- .../com/atguigu/constant/MessageConstant.java | 4 +- .../target/classes/com/atguigu/CodeGet.class | Bin 4104 -> 4085 bytes logs/service-oa/spring.log | 14 ++++ .../auth/controller/SysMenuController.java | 72 ++++++++++++++++ .../controller/SysRoleMenuController.java | 21 +++++ .../atguigu/auth/mapper/SysMenuMapper.java | 16 ++++ .../auth/mapper/SysRoleMenuMapper.java | 16 ++++ .../atguigu/auth/service/SysMenuService.java | 47 +++++++++++ .../auth/service/SysRoleMenuService.java | 16 ++++ .../auth/service/impl/SysMenuServiceImpl.java | 78 ++++++++++++++++++ .../service/impl/SysRoleMenuServiceImpl.java | 20 +++++ .../main/resources/mapper/SysMenuMapper.xml | 5 ++ .../resources/mapper/SysRoleMenuMapper.xml | 5 ++ 16 files changed, 362 insertions(+), 4 deletions(-) create mode 100644 common/common-util/src/main/java/com/atguigu/common/utlis/MenuHelper.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/controller/SysMenuController.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/controller/SysRoleMenuController.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/mapper/SysMenuMapper.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMenuMapper.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/service/SysMenuService.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/service/SysRoleMenuService.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java create mode 100644 service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleMenuServiceImpl.java create mode 100644 service-oa/src/main/resources/mapper/SysMenuMapper.xml create mode 100644 service-oa/src/main/resources/mapper/SysRoleMenuMapper.xml diff --git a/common/common-util/pom.xml b/common/common-util/pom.xml index 998d960..9d7061a 100644 --- a/common/common-util/pom.xml +++ b/common/common-util/pom.xml @@ -34,5 +34,11 @@ com.alibaba fastjson + + com.atguigu + model + 1.0-SNAPSHOT + compile + diff --git a/common/common-util/src/main/java/com/atguigu/common/utlis/MenuHelper.java b/common/common-util/src/main/java/com/atguigu/common/utlis/MenuHelper.java new file mode 100644 index 0000000..dcd49de --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/common/utlis/MenuHelper.java @@ -0,0 +1,44 @@ +package com.atguigu.common.utlis; + +import com.atguigu.model.system.SysMenu; + +import java.util.ArrayList; +import java.util.List; + +public class MenuHelper { + /** + * 构建树型结构 + * + * @param sysMenuList 系统菜单列表 + * @return 菜单结构列表 + */ + public static List buildTree(List sysMenuList) { + ArrayList tress = new ArrayList<>(); + // 把菜单数据进行遍历 + sysMenuList.forEach(sysMenu -> { + if (sysMenu.getParentId() == 0) tress.add(getChildren(sysMenu, sysMenuList)); + }); + return tress; + } + + /** + * 构建递归循环 + * + * @param sysMenu 当前菜单对象 + * @param sysMenuList 全部菜单列表 + * @return 菜单 + */ + private static SysMenu getChildren(SysMenu sysMenu, List sysMenuList) { + // 遍历所有菜单数据,判断id和parentID对应关系 + sysMenu.setChildren(new ArrayList<>()); + + sysMenuList.forEach(menu -> { + if (menu.getChildren() == null) menu.setChildren(new ArrayList<>()); + if (sysMenu.getId().equals(menu.getParentId())) { + sysMenu.getChildren().add(getChildren(menu, sysMenuList)); + } + }); + + return sysMenu; + } +} diff --git a/common/service-util/src/main/java/com/atguigu/CodeGet.java b/common/service-util/src/main/java/com/atguigu/CodeGet.java index ac05953..c4cbcc8 100644 --- a/common/service-util/src/main/java/com/atguigu/CodeGet.java +++ b/common/service-util/src/main/java/com/atguigu/CodeGet.java @@ -55,7 +55,7 @@ public class CodeGet { private static StrategyConfig getStrategyConfig() { StrategyConfig strategy = new StrategyConfig(); // TODO 要生成的表 - strategy.setInclude("sys_user", "sys_role","sys_user_role"); + strategy.setInclude("sys_menu", "sys_role_menu"); strategy.setNaming(NamingStrategy.underline_to_camel);// 数据库表映射到实体的命名策略 strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 数据库表字段映射到实体的命名策略 strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 diff --git a/common/service-util/src/main/java/com/atguigu/constant/MessageConstant.java b/common/service-util/src/main/java/com/atguigu/constant/MessageConstant.java index 67b1720..b949152 100644 --- a/common/service-util/src/main/java/com/atguigu/constant/MessageConstant.java +++ b/common/service-util/src/main/java/com/atguigu/constant/MessageConstant.java @@ -32,7 +32,5 @@ public class MessageConstant { public static final String LOGIN_DTO_IS_EMPTY = "登录参数不能为空"; public static final String TOKEN_IS_EMPTY = "token为空"; public static final String DATA_IS_EMPTY = "数据为空"; - public static final String STOCK_LESS = "库存不足"; - public static final String SKU_NUM_CANNOT_BE_LESS = "商品数量不能再少了"; - public static final String CART_IS_EMPTY = "购物车为空"; + public static final String DELETE_MENU_ERROR_HAS_MENUS = "有下级菜单"; } diff --git a/common/service-util/target/classes/com/atguigu/CodeGet.class b/common/service-util/target/classes/com/atguigu/CodeGet.class index 49d78bb04570ccadaddb8df0d809d7ea02c242be..ab67a02ed7f433b4000b54af541dfb4719ec6fbd 100644 GIT binary patch delta 902 zcmXw1*-{fx5Ir}`%*}YAC?2I;3d)zD5D*PJ?i(&>#26P4FiIpOm`PCFA}RuI7)M+| zabHoEs!*kcA7J_7ANU78`KV=gD5h%8>Ausa=XBQ{So&v4^83Fp-vE?h+CVvcI`$f{ zF*h1;z$dYf*)Or5IUsR>`5?m~t~{)x$v`$&HZvcQXkl)ZXk$Jq5oA8*!f~{76k^#4 z9UTVpkR)B0gHDMEb5x>>`J_aQ*_4PgCs@^Oz>8BHoo49KamGL)yFDv$PU1Xg7hFi< zB1gRpml!THTw&kpIU+SOV6@~?cGHK7!+_VGkw8W zcc?9>aE%X~t%*paN8vgK6>i|B!YvF5RFc$fRmdF6boASABW3+{EGoN$lz<}^jm8x$ zj-{uxq?BKUyGZF6R=9`z3J>s5;SnASc&%Q;YxOyE8b>fn;+90bUEvAGMq4xzk43}b zU`*jDpXlbiw=qt&&X%q&{`d@|3eWLEVHX+{UgDL)Yo4$?WAleC+sfA#R(1v>34tuL z$84sy!Dh}C-r%i{cM9+ELE$6D6+SV1#)QHo!xSc_d$q-SgO~0LKXwSv0tu@qD<&4i zPWKGNBn3896Ka{m1*oA|%@v>)b(FcV25YIR%KDu(E2^#W?2aT?)shC}U>(*IOB!PX zHj*+2BiMw^q^N+2E!av1!qj6M>gi67QTOfG0Vj5n$|*<=7`zCQvcEq1#Qy5OqA)On z<@IjoELH^UxkbK!Be&R>hQ}XvPoX4@QvV#U^t&Btlx1*L23Pyt6VzjFw0trL+J&SY h0CMKpRORZ3#pdz^8f)=fHtEE<`l(uwQ6t}vAprVeu zBDjkyi*& zXK{|B^9&alE;3wV=u^?J;<5s(Co=ITm}ja%tr0Mdl@4G~fo+NI4JUgdp|HdiPFUK~ zu~@IfRSZg8!;r*v+)z+sD5AzlnEOmOVHm&73thKhC@?4E@sz}Ejzzh%!pX119T+O^ zO5DSJi3fNn@d(2Ts;G&>7}g5H3i3nouF_ztJsoLJOFYI1H4COw9TKA)YoT~7m5fKD z;iSY9&ZzpF&!>E}b_Ej&{`d?d63_8Mq6OO}UgDL+Yt$-m8$UI-QDmLplqMhfZb0 z3bDm84P}CYJk$|dbIE+vQ!Hl-unMc`WWyRXP?g8{Q81&_86$y?(R3% + * 菜单表 前端控制器 + *

+ * + * @author bunny + * @since 2024-04-23 + */ +@Tag(name = "菜单管理") +@RestController +@RequestMapping("/admin/system/sysMenu") +public class SysMenuController { + @Autowired + private SysMenuService sysMenuService; + + @Operation(summary = "获取菜单", description = "获取菜单") + @GetMapping("findNodes") + public Result> findNodes() { + List list = sysMenuService.findNodes(); + return Result.success(list); + } + + @Operation(summary = "新增菜单", description = "新增菜单") + @PostMapping("save") + public Result save(@RequestBody SysMenu permission) { + sysMenuService.save(permission); + return Result.success(); + } + + @Operation(summary = "修改菜单", description = "修改菜单") + @PutMapping("update") + public Result updateById(@RequestBody SysMenu permission) { + sysMenuService.updateById(permission); + return Result.success(); + } + + @Operation(summary = "删除菜单", description = "删除菜单") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + sysMenuService.removeMenuById(id); + return Result.success(); + } + + @Operation(summary = "根据角色获取菜单", description = "根据角色获取菜单") + @GetMapping("toAssign/{roleId}") + public Result> toAssign(@PathVariable Long roleId) { + List sysMenuList = sysMenuService.findSysMenuByRoleId(roleId); + return Result.success(sysMenuList); + } + + @Operation(summary = "给角色分配权限", description = "给角色分配权限") + @PostMapping("doAssign") + public Result doAssign(@RequestBody AssginMenuVo assginMenuVo) { + sysMenuService.doAssign(assginMenuVo); + return Result.success(); + } +} + diff --git a/service-oa/src/main/java/com/atguigu/auth/controller/SysRoleMenuController.java b/service-oa/src/main/java/com/atguigu/auth/controller/SysRoleMenuController.java new file mode 100644 index 0000000..90f9602 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/controller/SysRoleMenuController.java @@ -0,0 +1,21 @@ +package com.atguigu.auth.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 角色菜单 前端控制器 + *

+ * + * @author bunny + * @since 2024-04-23 + */ +@RestController +@RequestMapping("/auth/sys-role-menu") +public class SysRoleMenuController { + +} + diff --git a/service-oa/src/main/java/com/atguigu/auth/mapper/SysMenuMapper.java b/service-oa/src/main/java/com/atguigu/auth/mapper/SysMenuMapper.java new file mode 100644 index 0000000..86a3a4e --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/mapper/SysMenuMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.auth.mapper; + +import com.atguigu.model.system.SysMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 菜单表 Mapper 接口 + *

+ * + * @author bunny + * @since 2024-04-23 + */ +public interface SysMenuMapper extends BaseMapper { + +} diff --git a/service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMenuMapper.java b/service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMenuMapper.java new file mode 100644 index 0000000..2dfbe6c --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMenuMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.auth.mapper; + +import com.atguigu.model.system.SysRoleMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 角色菜单 Mapper 接口 + *

+ * + * @author bunny + * @since 2024-04-23 + */ +public interface SysRoleMenuMapper extends BaseMapper { + +} diff --git a/service-oa/src/main/java/com/atguigu/auth/service/SysMenuService.java b/service-oa/src/main/java/com/atguigu/auth/service/SysMenuService.java new file mode 100644 index 0000000..d330ca9 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/service/SysMenuService.java @@ -0,0 +1,47 @@ +package com.atguigu.auth.service; + +import com.atguigu.model.system.SysMenu; +import com.atguigu.vo.system.AssginMenuVo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 菜单表 服务类 + *

+ * + * @author bunny + * @since 2024-04-23 + */ +public interface SysMenuService extends IService { + + /** + * 获取菜单 + * + * @return 菜单列表 + */ + List findNodes(); + + /** + * 删除菜单 + * + * @param id 菜单id + */ + void removeMenuById(Long id); + + /** + * 根据角色获取菜单 + * + * @param roleId 角色id + * @return 菜单列表 + */ + List findSysMenuByRoleId(Long roleId); + + /** + * 给角色分配权限 + * + * @param assginMenuVo 分配条件 + */ + void doAssign(AssginMenuVo assginMenuVo); +} diff --git a/service-oa/src/main/java/com/atguigu/auth/service/SysRoleMenuService.java b/service-oa/src/main/java/com/atguigu/auth/service/SysRoleMenuService.java new file mode 100644 index 0000000..46c1204 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/service/SysRoleMenuService.java @@ -0,0 +1,16 @@ +package com.atguigu.auth.service; + +import com.atguigu.model.system.SysRoleMenu; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 角色菜单 服务类 + *

+ * + * @author bunny + * @since 2024-04-23 + */ +public interface SysRoleMenuService extends IService { + +} diff --git a/service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java new file mode 100644 index 0000000..68d7cef --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java @@ -0,0 +1,78 @@ +package com.atguigu.auth.service.impl; + +import com.atguigu.auth.mapper.SysMenuMapper; +import com.atguigu.auth.service.SysMenuService; +import com.atguigu.common.utlis.MenuHelper; +import com.atguigu.constant.MessageConstant; +import com.atguigu.exception.BunnyException; +import com.atguigu.model.system.SysMenu; +import com.atguigu.vo.system.AssginMenuVo; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 菜单表 服务实现类 + *

+ * + * @author bunny + * @since 2024-04-23 + */ +@Service +public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService { + + /** + * 获取菜单 + * + * @return 菜单列表 + */ + @Override + public List findNodes() { + return MenuHelper.buildTree(list()); + } + + /** + * 删除菜单 + * + * @param id 菜单id + */ + @Override + public void removeMenuById(Long id) { + // 判断当前菜单是否有下级菜单 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysMenu::getParentId, id); + + // 查询菜单列表 + List sysMenuList = list(wrapper); + + // 为空时可以删除 + if (sysMenuList == null) removeById(id); + + // 如果不为空抛出异常 + throw new BunnyException(MessageConstant.DELETE_MENU_ERROR_HAS_MENUS); + } + + /** + * 根据角色获取菜单 + * + * @param roleId 角色id + * @return 菜单列表 + */ + @Override + public List findSysMenuByRoleId(Long roleId) { + return null; + } + + /** + * 给角色分配权限 + * + * @param assginMenuVo 分配条件 + */ + @Override + public void doAssign(AssginMenuVo assginMenuVo) { + + } +} diff --git a/service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleMenuServiceImpl.java b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleMenuServiceImpl.java new file mode 100644 index 0000000..a53fda7 --- /dev/null +++ b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysRoleMenuServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.auth.service.impl; + +import com.atguigu.auth.mapper.SysRoleMenuMapper; +import com.atguigu.auth.service.SysRoleMenuService; +import com.atguigu.model.system.SysRoleMenu; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 角色菜单 服务实现类 + *

+ * + * @author bunny + * @since 2024-04-23 + */ +@Service +public class SysRoleMenuServiceImpl extends ServiceImpl implements SysRoleMenuService { + +} diff --git a/service-oa/src/main/resources/mapper/SysMenuMapper.xml b/service-oa/src/main/resources/mapper/SysMenuMapper.xml new file mode 100644 index 0000000..31098d7 --- /dev/null +++ b/service-oa/src/main/resources/mapper/SysMenuMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service-oa/src/main/resources/mapper/SysRoleMenuMapper.xml b/service-oa/src/main/resources/mapper/SysRoleMenuMapper.xml new file mode 100644 index 0000000..a1d08db --- /dev/null +++ b/service-oa/src/main/resources/mapper/SysRoleMenuMapper.xml @@ -0,0 +1,5 @@ + + + + +