From 04559a57b21a3965f6b5e98c612da17f1321386f Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Sun, 24 Mar 2024 23:17:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E5=88=86=E9=85=8D?= =?UTF-8?q?=E8=8F=9C=E5=8D=95-=E6=9C=AA=E5=AE=8C=E6=88=90(=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E6=9C=AA=E5=86=99)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SysRoleMenuController.java | 31 +++++++++++ .../spzx/manger/mapper/SysRoleMenuMapper.java | 15 +++++ .../manger/service/SysRoleMenuService.java | 11 ++++ .../service/impl/SysRoleMenuServiceImpl.java | 55 +++++++++++++++++++ .../resources/mapper/SysRoleMenuMapper.xml | 29 ++++++++++ 5 files changed, 141 insertions(+) create mode 100644 spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/SysRoleMenuController.java create mode 100644 spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysRoleMenuMapper.java create mode 100644 spzx-manager/src/main/java/com/atguigu/spzx/manger/service/SysRoleMenuService.java create mode 100644 spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/SysRoleMenuServiceImpl.java create mode 100644 spzx-manager/src/main/resources/mapper/SysRoleMenuMapper.xml diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/SysRoleMenuController.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/SysRoleMenuController.java new file mode 100644 index 0000000..b7e3d0d --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/SysRoleMenuController.java @@ -0,0 +1,31 @@ +package com.atguigu.spzx.manger.controller; + +import com.atguigu.spzx.manger.service.SysRoleMenuService; +import com.atguigu.spzx.model.dto.system.AssginMenuDto; +import com.atguigu.spzx.model.vo.result.Result; +import com.atguigu.spzx.model.vo.result.ResultCodeEnum; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@Tag(name = "分配菜单") +@RestController +@RequestMapping(value = "/admin/system/sysRoleMenu") +public class SysRoleMenuController { + @Autowired + private SysRoleMenuService sysRoleMenuService; + + @GetMapping(value = "/findSysRoleMenuByRoleId/{roleId}") + public Result> findSysRoleMenuByRoleId(@PathVariable(value = "roleId") Long roleId) { + Map sysRoleMenuList = sysRoleMenuService.findSysRoleMenuByRoleId(roleId); + return Result.build(sysRoleMenuList, ResultCodeEnum.SUCCESS); + } + + @PostMapping("/doAssign") + public Result doAssign(@RequestBody AssginMenuDto assginMenuDto) { + sysRoleMenuService.doAssign(assginMenuDto); + return Result.build(null, ResultCodeEnum.SUCCESS); + } +} \ No newline at end of file diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysRoleMenuMapper.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysRoleMenuMapper.java new file mode 100644 index 0000000..9fb5940 --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysRoleMenuMapper.java @@ -0,0 +1,15 @@ +package com.atguigu.spzx.manger.mapper; + +import com.atguigu.spzx.model.dto.system.AssginMenuDto; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface SysRoleMenuMapper { + List findSysRoleMenuByRoleId(Long roleId); + + void doAssign(AssginMenuDto assginMenuDto); + + void deleteByRoleId(Long roleId); +} diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/SysRoleMenuService.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/SysRoleMenuService.java new file mode 100644 index 0000000..1329e8d --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/SysRoleMenuService.java @@ -0,0 +1,11 @@ +package com.atguigu.spzx.manger.service; + +import com.atguigu.spzx.model.dto.system.AssginMenuDto; + +import java.util.Map; + +public interface SysRoleMenuService { + Map findSysRoleMenuByRoleId(Long roleId); + + void doAssign(AssginMenuDto assginMenuDto); +} diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/SysRoleMenuServiceImpl.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/SysRoleMenuServiceImpl.java new file mode 100644 index 0000000..3767e38 --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/SysRoleMenuServiceImpl.java @@ -0,0 +1,55 @@ +package com.atguigu.spzx.manger.service.impl; + +import com.atguigu.spzx.manger.mapper.SysRoleMenuMapper; +import com.atguigu.spzx.manger.service.SysMenuService; +import com.atguigu.spzx.manger.service.SysRoleMenuService; +import com.atguigu.spzx.model.dto.system.AssginMenuDto; +import com.atguigu.spzx.model.entity.system.SysMenu; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class SysRoleMenuServiceImpl implements SysRoleMenuService { + @Autowired + private SysMenuService sysMenuService; + + @Autowired + private SysRoleMenuMapper sysRoleMenuMapper; + + @Override + public Map findSysRoleMenuByRoleId(Long roleId) { + + // 查询所有的菜单数据 + List sysMenuList = sysMenuService.findNodes(); + + // 查询当前角色的菜单数据 + List roleMenuIds = sysRoleMenuMapper.findSysRoleMenuByRoleId(roleId); + + // 将数据存储到Map中进行返回 + Map result = new HashMap<>(); + result.put("sysMenuList", sysMenuList); + result.put("roleMenuIds", roleMenuIds); + + // 返回 + return result; + } + + @Transactional + @Override + public void doAssign(AssginMenuDto assginMenuDto) { + + // 根据角色的id删除其所对应的菜单数据 + sysRoleMenuMapper.deleteByRoleId(assginMenuDto.getRoleId()); + + // 获取菜单的id + List> menuInfo = assginMenuDto.getMenuIdList(); + if (menuInfo != null && !menuInfo.isEmpty()) { + sysRoleMenuMapper.doAssign(assginMenuDto); + } + } +} diff --git a/spzx-manager/src/main/resources/mapper/SysRoleMenuMapper.xml b/spzx-manager/src/main/resources/mapper/SysRoleMenuMapper.xml new file mode 100644 index 0000000..4ed45ec --- /dev/null +++ b/spzx-manager/src/main/resources/mapper/SysRoleMenuMapper.xml @@ -0,0 +1,29 @@ + + + + + + delete + from sys_role_menu + where role_id = #{roleId} + + + + + + insert into sys_role_menu ( + role_id, + menu_id, + create_time , update_time , is_deleted , is_half + ) values + + (#{roleId} , #{menuInfo.id} , now() , now() , 0 , #{menuInfo.isHalf}) + + +