修改角色管理中权限分配 新增登录日志表

修改 @Create 标识为 @since
This commit is contained in:
2024-01-24 17:03:32 +08:00
parent 39d46336f7
commit 0d2680a3a2
116 changed files with 339 additions and 197 deletions

View File

@@ -10,7 +10,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
* 权限管理模块启动类
*
* @author yovinchen
* @Create 2023/9/13 17:38
* @since 2023/9/13 17:38
*/
@SpringBootApplication
@EnableDiscoveryClient

View File

@@ -1,14 +1,14 @@
package com.yovinchen.xlcs.acl.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yovinchen.xlcs.acl.service.AdminService;
import com.yovinchen.xlcs.acl.service.RoleService;
import com.yovinchen.xlcs.common.result.Result;
import com.yovinchen.xlcs.common.utils.MD5;
import com.yovinchen.xlcs.model.acl.Admin;
import com.yovinchen.xlcs.vo.acl.AdminQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -25,7 +25,7 @@ import java.util.Map;
* 用户管理 前端控制器
*
* @author yovinchen
* @Create 2023/9/14 10:38
* @since 2023/9/14 10:38
*/
@RestController
@RequestMapping("/admin/acl/user")

View File

@@ -15,7 +15,7 @@ import java.util.Map;
* Package: com.yovinchen.xlcs.acl.controller
*
* @author yovinchen
* @Create 2023/9/13 18:00
* @since 2023/9/13 18:00
*/
@Api(tags = "登录接口")

View File

@@ -1,6 +1,7 @@
package com.yovinchen.xlcs.acl.controller;
import com.yovinchen.xlcs.acl.service.PermissionService;
import com.yovinchen.xlcs.acl.service.RoleService;
import com.yovinchen.xlcs.common.result.Result;
import com.yovinchen.xlcs.model.acl.Permission;
import io.swagger.annotations.Api;
@@ -10,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* ClassName: PermissionController
@@ -17,7 +19,7 @@ import java.util.List;
* 菜单服务
*
* @author yovinchen
* @Create 2023/9/14 14:03
* @since 2023/9/14 14:03
*/
@RestController
@RequestMapping("/admin/acl/permission")
@@ -28,6 +30,8 @@ public class PermissionController {
@Autowired
private PermissionService permissionService;
@Autowired
private RoleService roleService;
@ApiOperation(value = "获取菜单")
@GetMapping
public Result index() {
@@ -71,4 +75,29 @@ public class PermissionController {
throw new RuntimeException("递归删除菜单异常", e);
}
}
@ApiOperation(value = "根据角色获取菜单数据")
@GetMapping("/toAssign/{roleId}")
public Result toAssign(@PathVariable Long roleId) {
Map<String, Object> roleMap = permissionService.findPermissionByRoleId(roleId);
return Result.ok(roleMap);
}
@ApiOperation(value = "根据用户分配角色")
@PostMapping("/doAssign")
public Result doAssign(@RequestParam Long roleId, @RequestParam Long[] permissionId) {
permissionService.saveRolePermissionRealtionShip(roleId, permissionId);
return Result.ok(null);
}
// @ApiOperation(value = "获取一个角色的所有权限列表")
// @GetMapping("toAssign/{id}")
// public Result toAssign(@PathVariable Long id) {
// try {
// Map<String, Object> result = permissionService.getPermissionById(id);
// return Result.ok(result);
// } catch (Exception e) {
// // 处理异常,例如记录日志或者抛出自定义异常
// throw new RuntimeException("获取一个角色的所有权限列表异常", e);
// }
// }
}

View File

@@ -15,7 +15,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* ClassName: RoleController
@@ -23,7 +22,7 @@ import java.util.Map;
* 角色管理 前端控制器
*
* @author yovinchen
* @Create 2023/9/14 09:09
* @since 2023/9/14 09:09
*/
@RestController
@RequestMapping("/admin/acl/role")
@@ -111,16 +110,4 @@ public class RoleController {
throw new RuntimeException("根据id列表删除角色异常", e);
}
}
@ApiOperation(value = "获取一个角色的所有权限列表")
@GetMapping("toAssign/{id}")
public Result toAssign(@PathVariable Long id) {
try {
Map<String, Object> result = permissionService.getPermissionById(id);
return Result.ok(result);
} catch (Exception e) {
// 处理异常,例如记录日志或者抛出自定义异常
throw new RuntimeException("获取一个角色的所有权限列表异常", e);
}
}
}

View File

@@ -1,7 +1,7 @@
package com.yovinchen.xlcs.acl.mapper;
import com.yovinchen.xlcs.model.acl.Admin;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yovinchen.xlcs.model.acl.Admin;
import org.springframework.stereotype.Repository;
/**
@@ -10,7 +10,7 @@ import org.springframework.stereotype.Repository;
* 用户管理
*
* @author yovinchen
* @Create 2023/9/14 10:45
* @since 2023/9/14 10:45
*/
@Repository
public interface AdminMapper extends BaseMapper<Admin> {

View File

@@ -1,7 +1,7 @@
package com.yovinchen.xlcs.acl.mapper;
import com.yovinchen.xlcs.model.acl.AdminRole;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yovinchen.xlcs.model.acl.AdminRole;
import org.springframework.stereotype.Repository;
/**
@@ -9,7 +9,7 @@ import org.springframework.stereotype.Repository;
* Package: com.yovinchen.xlcs.acl.mapper
*
* @author yovinchen
* @Create 2023/9/14 11:15
* @since 2023/9/14 11:15
*/
@Repository
public interface AdminRoleMapper extends BaseMapper<AdminRole> {

View File

@@ -1,7 +1,7 @@
package com.yovinchen.xlcs.acl.mapper;
import com.yovinchen.xlcs.model.acl.Permission;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yovinchen.xlcs.model.acl.Permission;
import org.springframework.stereotype.Repository;
/**
@@ -10,7 +10,7 @@ import org.springframework.stereotype.Repository;
* 菜单Mapper接口
*
* @author yovinchen
* @Create 2023/9/14 13:59
* @since 2023/9/14 13:59
*/
@Repository
public interface PermissionMapper extends BaseMapper<Permission> {

View File

@@ -1,7 +1,7 @@
package com.yovinchen.xlcs.acl.mapper;
import com.yovinchen.xlcs.model.acl.Role;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yovinchen.xlcs.model.acl.Role;
import org.springframework.stereotype.Repository;
/**
@@ -10,7 +10,7 @@ import org.springframework.stereotype.Repository;
* 角色管理
*
* @author yovinchen
* @Create 2023/9/14 09:11
* @since 2023/9/14 09:11
*/
@Repository
public interface RoleMapper extends BaseMapper<Role> {

View File

@@ -1,14 +1,14 @@
package com.yovinchen.xlcs.acl.mapper;
import com.yovinchen.xlcs.model.acl.RolePermission;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yovinchen.xlcs.model.acl.RolePermission;
/**
* ClassName: RolePermissionMapper
* Package: com.yovinchen.xlcs.acl.mapper
*
* @author yovinchen
* @Create 2023/9/14 15:07
* @since 2023/9/14 15:07
*/
public interface RolePermissionMapper extends BaseMapper<RolePermission> {
}

View File

@@ -1,14 +1,14 @@
package com.yovinchen.xlcs.acl.service;
import com.yovinchen.xlcs.model.acl.AdminRole;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yovinchen.xlcs.model.acl.AdminRole;
/**
* ClassName: AdminRoleService
* Package: com.yovinchen.xlcs.acl.service
*
* @author yovinchen
* @Create 2023/9/14 11:15
* @since 2023/9/14 11:15
*/
public interface AdminRoleService extends IService<AdminRole> {
}

View File

@@ -1,10 +1,10 @@
package com.yovinchen.xlcs.acl.service;
import com.yovinchen.xlcs.model.acl.Admin;
import com.yovinchen.xlcs.vo.acl.AdminQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yovinchen.xlcs.model.acl.Admin;
import com.yovinchen.xlcs.vo.acl.AdminQueryVo;
/**
* ClassName: AdminService
@@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
* 用户管理
*
* @author yovinchen
* @Create 2023/9/14 10:44
* @since 2023/9/14 10:44
*/
public interface AdminService extends IService<Admin> {

View File

@@ -1,7 +1,7 @@
package com.yovinchen.xlcs.acl.service;
import com.yovinchen.xlcs.model.acl.Permission;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yovinchen.xlcs.model.acl.Permission;
import java.util.List;
import java.util.Map;
@@ -12,7 +12,7 @@ import java.util.Map;
* 权限服务
*
* @author yovinchen
* @Create 2023/9/14 14:01
* @since 2023/9/14 14:01
*/
public interface PermissionService extends IService<Permission> {
@@ -23,4 +23,8 @@ public interface PermissionService extends IService<Permission> {
boolean removeChildById(Long id);
Map<String, Object> getPermissionById(Long id);
void saveRolePermissionRealtionShip(Long roleId, Long[] permissionId);
Map<String, Object> findPermissionByRoleId(Long roleId);
}

View File

@@ -1,10 +1,10 @@
package com.yovinchen.xlcs.acl.service;
import com.yovinchen.xlcs.model.acl.Role;
import com.yovinchen.xlcs.vo.acl.RoleQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yovinchen.xlcs.model.acl.Role;
import com.yovinchen.xlcs.vo.acl.RoleQueryVo;
import java.util.Map;
@@ -14,7 +14,7 @@ import java.util.Map;
* 用户管理
*
* @author yovinchen
* @Create 2023/9/14 09:10
* @since 2023/9/14 09:10
*/
public interface RoleService extends IService<Role> {

View File

@@ -1,9 +1,9 @@
package com.yovinchen.xlcs.acl.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yovinchen.xlcs.acl.mapper.AdminRoleMapper;
import com.yovinchen.xlcs.acl.service.AdminRoleService;
import com.yovinchen.xlcs.model.acl.AdminRole;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
@@ -11,7 +11,7 @@ import org.springframework.stereotype.Service;
* Package: com.yovinchen.xlcs.acl.service.impl
*
* @author yovinchen
* @Create 2023/9/14 11:15
* @since 2023/9/14 11:15
*/
@Service
public class AdminRoleServiceImpl extends ServiceImpl<AdminRoleMapper, AdminRole>

View File

@@ -20,7 +20,7 @@ import org.springframework.util.StringUtils;
* 用户管理
*
* @author yovinchen
* @Create 2023/9/14 10:44
* @since 2023/9/14 10:44
*/
@Slf4j
@Service

View File

@@ -1,27 +1,38 @@
package com.yovinchen.xlcs.acl.service.impl;
import com.yovinchen.xlcs.acl.mapper.PermissionMapper;
import com.yovinchen.xlcs.acl.service.PermissionService;
import com.yovinchen.xlcs.acl.utils.PermissionHelper;
import com.yovinchen.xlcs.model.acl.Permission;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yovinchen.xlcs.acl.mapper.PermissionMapper;
import com.yovinchen.xlcs.acl.service.PermissionService;
import com.yovinchen.xlcs.acl.service.RolePermissionService;
import com.yovinchen.xlcs.acl.utils.PermissionHelper;
import com.yovinchen.xlcs.model.acl.Permission;
import com.yovinchen.xlcs.model.acl.RolePermission;
import com.yovinchen.xlcs.model.base.BaseEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* ClassName: PermissionServiceImpl
* Package: com.yovinchen.xlcs.acl.service.impl
*
* @author yovinchen
* @Create 2023/9/14 14:02
* @since 2023/9/14 14:02
*/
@Service
public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission> implements PermissionService {
@Autowired
private RolePermissionService rolePermissionService;
/**
* 获取所有菜单
@@ -57,6 +68,71 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
return null;
}
/**
* 分配菜单
*
* @param roleId
* @param permissionIds
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void saveRolePermissionRealtionShip(Long roleId, Long[] permissionIds) {
//删除用户分配的角色数据
rolePermissionService.remove(new LambdaQueryWrapper<RolePermission>().eq(RolePermission::getRoleId, roleId));
//分配新的角色
List<RolePermission> rolePermissionList = new ArrayList<>();
for (Long permissionId : permissionIds) {
if (StringUtils.isEmpty(roleId)) {
continue;
}
RolePermission rolePermission = new RolePermission();
rolePermission.setRoleId(roleId);
rolePermission.setPermissionId(permissionId);
rolePermissionList.add(rolePermission);
}
rolePermissionService.saveBatch(rolePermissionList);
}
/**
* 根据用户获取菜单数据
*
* @param roleId
* @return
*/
@Override
public Map<String, Object> findPermissionByRoleId(Long roleId) {
//查询所有的角色
List<Permission> allPermissionList = queryAllMenu();
List<Permission> assignPermission1 = baseMapper.selectList(null);
//拥有的角色id
List<RolePermission> existRolePermissionList = rolePermissionService.list(new LambdaQueryWrapper<RolePermission>().eq(RolePermission::getRoleId, roleId)
.select(RolePermission::getPermissionId));
List<Long> existPermissionList = existRolePermissionList.stream()
.map(RolePermission::getPermissionId)
.collect(Collectors.toList());
//对角色进行分类
List<Permission> assignPermission2 = new ArrayList<>();
for (Permission permission : assignPermission1) {
//已分配
if (existPermissionList.contains(permission.getId())) {
assignPermission2.add(permission);
}
}
List<Long> assignPermission = assignPermission2.stream()
.map(BaseEntity::getId)
.collect(Collectors.toList());
Map<String, Object> roleMap = new HashMap<>();
roleMap.put("assignPermission", assignPermission);
roleMap.put("allPermissionList", allPermissionList);
return roleMap;
}
/**
* 递归获取子节点
*
@@ -64,8 +140,7 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
* @param idList
*/
private void selectChildListById(Long id, List<Long> idList) {
List<Permission> childList = baseMapper.selectList(new QueryWrapper<Permission>()
.eq("pid", id)
List<Permission> childList = baseMapper.selectList(new QueryWrapper<Permission>().eq("pid", id)
.select("id"));
childList.forEach(item -> {
idList.add(item.getId());

View File

@@ -1,16 +1,16 @@
package com.yovinchen.xlcs.acl.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yovinchen.xlcs.acl.mapper.RoleMapper;
import com.yovinchen.xlcs.acl.service.AdminRoleService;
import com.yovinchen.xlcs.acl.service.RoleService;
import com.yovinchen.xlcs.model.acl.AdminRole;
import com.yovinchen.xlcs.model.acl.Role;
import com.yovinchen.xlcs.vo.acl.RoleQueryVo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -28,7 +28,7 @@ import java.util.stream.Collectors;
* 角色管理
*
* @author yovinchen
* @Create 2023/9/14 09:11
* @since 2023/9/14 09:11
*/
@Service
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {

View File

@@ -10,7 +10,7 @@ import java.util.List;
* Package: com.yovinchen.xlcs.acl.utils
*
* @author yovinchen
* @Create 2023/9/14 14:23
* @since 2023/9/14 14:23
*/
public class PermissionHelper {