From 9a49aa0b254e3872124e2ff998cbb2ddfc461ec6 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期三, 24 四月 2024 15:35:07 +0800
Subject: [PATCH] 用户功能完成

---
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java |  113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 111 insertions(+), 2 deletions(-)

diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
index 943ff7d..18ee6a6 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
@@ -1,8 +1,23 @@
 package com.mes.role.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mes.role.entity.SysRole;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.utils.Result;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -15,6 +30,100 @@
 @RestController
 @RequestMapping("/role/sys-role")
 public class SysRoleController {
+    @PreAuthorize("hasAuthority('sys:role:list')")
+    @GetMapping("/info/{id}")
+    public Result info(@PathVariable("id") Long id) {
 
+        SysRole sysRole = sysRoleService.getById(id);
+
+        // 鑾峰彇瑙掕壊鐩稿叧鑱旂殑鑿滃崟id
+        List<SysRoleMenu> roleMenus = sysRoleMenuService.list(new QueryWrapper<SysRoleMenu>().eq("role_id", id));
+        List<Long> menuIds = roleMenus.stream().map(p -> p.getMenuId()).collect(Collectors.toList());
+
+        sysRole.setMenuIds(menuIds);
+        return Result.success(sysRole);
+    }
+
+    @PreAuthorize("hasAuthority('sys:role:list')")
+    @GetMapping("/list")
+    public Result list(String name) {
+
+        Page<SysRole> pageData = sysRoleService.page(getPage(),
+                new QueryWrapper<SysRole>()
+                        .like(StrUtil.isNotBlank(name), "name", name)
+        );
+
+        return Result.success(pageData);
+    }
+
+    @PostMapping("/save")
+    @PreAuthorize("hasAuthority('sys:role:save')")
+    public Result save(@Validated @RequestBody SysRole sysRole) {
+
+        sysRole.setCreated(LocalDateTime.now());
+        sysRole.setStatu(Const.STATUS_ON);
+
+        sysRoleService.save(sysRole);
+        return Result.success(sysRole);
+    }
+
+    @PostMapping("/update")
+    @PreAuthorize("hasAuthority('sys:role:update')")
+    public Result update(@Validated @RequestBody SysRole sysRole) {
+
+        sysRole.setUpdated(LocalDateTime.now());
+
+        sysRoleService.updateById(sysRole);
+
+        // 鏇存柊缂撳瓨
+        sysUserService.clearUserAuthorityInfoByRoleId(sysRole.getId());
+
+        return Result.success(sysRole);
+    }
+
+    @PostMapping("/delete")
+    @PreAuthorize("hasAuthority('sys:role:delete')")
+    @Transactional
+    public Result info(@RequestBody Long[] ids) {
+
+        sysRoleService.removeByIds(Arrays.asList(ids));
+
+        // 鍒犻櫎涓棿琛�
+        sysUserRoleService.remove(new QueryWrapper<SysUserRole>().in("role_id", ids));
+        sysRoleMenuService.remove(new QueryWrapper<SysRoleMenu>().in("role_id", ids));
+
+        // 缂撳瓨鍚屾鍒犻櫎
+        Arrays.stream(ids).forEach(id -> {
+            // 鏇存柊缂撳瓨
+            sysUserService.clearUserAuthorityInfoByRoleId(id);
+        });
+
+        return Result.success("");
+    }
+
+    @Transactional
+    @PostMapping("/perm/{roleId}")
+    @PreAuthorize("hasAuthority('sys:role:perm')")
+    public Result info(@PathVariable("roleId") Long roleId, @RequestBody Long[] menuIds) {
+
+        List<SysRoleMenu> sysRoleMenus = new ArrayList<>();
+
+        Arrays.stream(menuIds).forEach(menuId -> {
+            SysRoleMenu roleMenu = new SysRoleMenu();
+            roleMenu.setMenuId(menuId);
+            roleMenu.setRoleId(roleId);
+
+            sysRoleMenus.add(roleMenu);
+        });
+
+        // 鍏堝垹闄ゅ師鏉ョ殑璁板綍锛屽啀淇濆瓨鏂扮殑
+        sysRoleMenuService.remove(new QueryWrapper<SysRoleMenu>().eq("role_id", roleId));
+        sysRoleMenuService.saveBatch(sysRoleMenus);
+
+        // 鍒犻櫎缂撳瓨
+        sysUserService.clearUserAuthorityInfoByRoleId(roleId);
+
+        return Result.success(menuIds);
+    }
 }
 

--
Gitblit v1.8.0