修正项目
This commit is contained in:
5
xlcs-parent/service/service-acl/Dockerfile
Normal file
5
xlcs-parent/service/service-acl/Dockerfile
Normal file
@@ -0,0 +1,5 @@
|
||||
FROM openjdk:8-jdk-alpine
|
||||
LABEL authors="yovinchen"
|
||||
VOLUME /tmp
|
||||
ADD ./target/service-acl.jar service-acl.jar
|
||||
ENTRYPOINT ["java","-jar","/service-acl.jar", "&"]
|
20
xlcs-parent/service/service-acl/pom.xml
Normal file
20
xlcs-parent/service/service-acl/pom.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.yovinchen</groupId>
|
||||
<artifactId>service</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>service-acl</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
</project>
|
@@ -0,0 +1,23 @@
|
||||
package com.yovinchen.xlcs;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
|
||||
/**
|
||||
* ClassName: ServiceAclApplication
|
||||
* Package: com.yovinchen.xlcs
|
||||
* 权限管理模块启动类
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/13 17:38
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
public class ServiceAclApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(ServiceAclApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,134 @@
|
||||
package com.yovinchen.xlcs.acl.controller;
|
||||
|
||||
|
||||
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;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* ClassName: AdminController
|
||||
* Package: com.yovinchen.xlcs.acl.controller
|
||||
* 用户管理 前端控制器
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 10:38
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/admin/acl/user")
|
||||
@Api(tags = "用户管理")
|
||||
public class AdminController {
|
||||
|
||||
@Autowired
|
||||
private AdminService adminService;
|
||||
|
||||
@Autowired
|
||||
private RoleService roleService;
|
||||
|
||||
@ApiOperation(value = "获取管理用户分页列表")
|
||||
@GetMapping("{page}/{limit}")
|
||||
public Result index(@ApiParam(name = "page", value = "当前页码", required = true) @PathVariable Long page,
|
||||
@ApiParam(name = "limit", value = "每页记录数", required = true) @PathVariable Long limit,
|
||||
@ApiParam(name = "userQueryVo", value = "查询对象", required = false) AdminQueryVo userQueryVo) {
|
||||
try {
|
||||
Page<Admin> pageParam = new Page<>(page, limit);
|
||||
IPage<Admin> pageModel = adminService.selectPage(pageParam, userQueryVo);
|
||||
return Result.ok(pageModel);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("获取管理用户分页列表异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取管理用户")
|
||||
@GetMapping("get/{id}")
|
||||
public Result get(@PathVariable Long id) {
|
||||
try {
|
||||
Admin user = adminService.getById(id);
|
||||
return Result.ok(user);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("获取管理用户异常", e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ApiOperation(value = "新增管理用户")
|
||||
@PostMapping("save")
|
||||
public Result save(@RequestBody Admin user) {
|
||||
try {
|
||||
//对密码进行MD5处理
|
||||
user.setPassword(MD5.encrypt(user.getPassword()));
|
||||
boolean result = adminService.save(user);
|
||||
return result ? Result.ok(null) : Result.fail(null);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("新增管理用户异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改管理用户")
|
||||
@PutMapping("update")
|
||||
public Result updateById(@RequestBody Admin user) {
|
||||
try {
|
||||
boolean result = adminService.updateById(user);
|
||||
return result ? Result.ok(null) : Result.fail(null);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("修改管理用户异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "删除管理用户")
|
||||
@DeleteMapping("remove/{id}")
|
||||
public Result remove(@PathVariable Long id) {
|
||||
try {
|
||||
boolean result = adminService.removeById(id);
|
||||
return result ? Result.ok(null) : Result.fail(null);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("删除管理用户异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据id列表删除管理用户")
|
||||
@DeleteMapping("batchRemove")
|
||||
public Result batchRemove(@RequestBody List<Long> idList) {
|
||||
try {
|
||||
boolean result = adminService.removeByIds(idList);
|
||||
return result ? Result.ok(null) : Result.fail(null);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("根据id列表删除管理用户异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据用户获取角色数据")
|
||||
@GetMapping("/toAssign/{adminId}")
|
||||
public Result toAssign(@PathVariable Long adminId) {
|
||||
try {
|
||||
Map<String, Object> roleMap = roleService.findRoleByUserId(adminId);
|
||||
return StringUtils.isNotEmpty(roleMap.toString()) ? Result.ok(roleMap) : Result.fail(roleMap);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("根据用户获取角色数据异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据用户分配角色")
|
||||
@PostMapping("/doAssign")
|
||||
public Result doAssign(@RequestParam Long adminId, @RequestParam Long[] roleId) {
|
||||
try {
|
||||
roleService.saveUserRoleRealtionShip(adminId, roleId);
|
||||
return Result.ok(null);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("根据用户分配角色异常", e);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,54 @@
|
||||
package com.yovinchen.xlcs.acl.controller;
|
||||
|
||||
import com.yovinchen.xlcs.common.result.Result;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* ClassName: IndexController
|
||||
* Package: com.yovinchen.xlcs.acl.controller
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/13 18:00
|
||||
*/
|
||||
|
||||
@Api(tags = "登录接口")
|
||||
@RestController
|
||||
@RequestMapping("/admin/acl/index")
|
||||
public class IndexController {
|
||||
|
||||
/**
|
||||
* 1、请求登陆的login
|
||||
*/
|
||||
@PostMapping("login")
|
||||
public Result login() {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("token", "admin-token");
|
||||
return Result.ok(map);
|
||||
}
|
||||
|
||||
/**
|
||||
* 2 获取用户信息
|
||||
*/
|
||||
@GetMapping("info")
|
||||
public Result info() {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("name", "yovinchen");
|
||||
map.put("avatar", "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");
|
||||
return Result.ok(map);
|
||||
}
|
||||
|
||||
/**
|
||||
* 3 退出
|
||||
*/
|
||||
@PostMapping("logout")
|
||||
public Result logout() {
|
||||
return Result.ok(null);
|
||||
}
|
||||
}
|
@@ -0,0 +1,74 @@
|
||||
package com.yovinchen.xlcs.acl.controller;
|
||||
|
||||
import com.yovinchen.xlcs.acl.service.PermissionService;
|
||||
import com.yovinchen.xlcs.common.result.Result;
|
||||
import com.yovinchen.xlcs.model.acl.Permission;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ClassName: PermissionController
|
||||
* Package: com.yovinchen.xlcs.acl.controller
|
||||
* 菜单服务
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 14:03
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/admin/acl/permission")
|
||||
@Api(tags = "菜单服务")
|
||||
|
||||
public class PermissionController {
|
||||
|
||||
@Autowired
|
||||
private PermissionService permissionService;
|
||||
|
||||
@ApiOperation(value = "获取菜单")
|
||||
@GetMapping
|
||||
public Result index() {
|
||||
try {
|
||||
List<Permission> list = permissionService.queryAllMenu();
|
||||
return StringUtils.isNotEmpty(list.toString()) ? Result.ok(list) : Result.fail(list);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("获取菜单异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "新增菜单")
|
||||
@PostMapping("save")
|
||||
public Result save(@RequestBody Permission permission) {
|
||||
try {
|
||||
boolean result = permissionService.save(permission);
|
||||
return result ? Result.ok(null) : Result.fail(null);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("新增菜单异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改菜单")
|
||||
@PutMapping("update")
|
||||
public Result updateById(@RequestBody Permission permission) {
|
||||
try {
|
||||
boolean result = permissionService.updateById(permission);
|
||||
return result ? Result.ok(null) : Result.fail(null);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("修改菜单异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "递归删除菜单")
|
||||
@DeleteMapping("remove/{id}")
|
||||
public Result remove(@PathVariable Long id) {
|
||||
try {
|
||||
boolean result = permissionService.removeChildById(id);
|
||||
return result ? Result.ok(null) : Result.fail(null);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("递归删除菜单异常", e);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,128 @@
|
||||
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.Role;
|
||||
import com.yovinchen.xlcs.vo.acl.RoleQueryVo;
|
||||
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;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* ClassName: RoleController
|
||||
* Package: com.yovinchen.xlcs.acl.controller
|
||||
* 角色管理 前端控制器
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 09:09
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/admin/acl/role")
|
||||
@Api(tags = "角色管理")
|
||||
|
||||
@Slf4j
|
||||
public class RoleController {
|
||||
|
||||
@Autowired
|
||||
private RoleService roleService;
|
||||
@Autowired
|
||||
private PermissionService permissionService;
|
||||
|
||||
@ApiOperation(value = "获取角色分页列表")
|
||||
@GetMapping("{page}/{limit}")
|
||||
public Result index(@ApiParam(name = "page", value = "当前页码", required = true)
|
||||
@PathVariable Long page, @ApiParam(name = "limit", value = "每页记录数", required = true)
|
||||
@PathVariable Long limit, @ApiParam(name = "roleQueryVo", value = "查询对象", required = false)
|
||||
RoleQueryVo roleQueryVo) {
|
||||
try {
|
||||
Page<Role> pageParam = new Page<>(page, limit);
|
||||
IPage<Role> pageModel = roleService.selectPage(pageParam, roleQueryVo);
|
||||
return Result.ok(pageModel);
|
||||
} catch (Exception e) {
|
||||
// 处理异常,例如记录日志或者抛出自定义异常
|
||||
throw new RuntimeException("获取角色分页列表异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取角色")
|
||||
@GetMapping("get/{id}")
|
||||
public Result get(@PathVariable Long id) {
|
||||
try {
|
||||
Role role = roleService.getById(id);
|
||||
return Result.ok(role);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("获取角色异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "新增角色")
|
||||
@PostMapping("save")
|
||||
public Result save(@RequestBody Role role) {
|
||||
try {
|
||||
boolean result = roleService.save(role);
|
||||
return result ? Result.ok(null) : Result.fail(null);
|
||||
} catch (Exception e) {
|
||||
// 处理异常,例如记录日志或者抛出自定义异常
|
||||
throw new RuntimeException("新增角色异常" + role.toString(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改角色")
|
||||
@PutMapping("update")
|
||||
public Result updateById(@RequestBody Role role) {
|
||||
try {
|
||||
boolean result = roleService.updateById(role);
|
||||
return result ? Result.ok(null) : Result.fail(null);
|
||||
} catch (Exception e) {
|
||||
// 处理异常,例如记录日志或者抛出自定义异常
|
||||
throw new RuntimeException("修改角色异常" + role.toString(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "删除角色")
|
||||
@DeleteMapping("remove/{id}")
|
||||
public Result remove(@PathVariable Long id) {
|
||||
try {
|
||||
boolean result = roleService.removeById(id);
|
||||
return result ? Result.ok(null) : Result.fail(null);
|
||||
} catch (Exception e) {
|
||||
// 处理异常,例如记录日志或者抛出自定义异常
|
||||
throw new RuntimeException("删除角色异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据id列表删除角色")
|
||||
@DeleteMapping("batchRemove")
|
||||
public Result batchRemove(@RequestBody List<Long> idList) {
|
||||
// TODO
|
||||
try {
|
||||
boolean result = roleService.removeByIds(idList);
|
||||
return result ? Result.ok(null) : Result.fail(null);
|
||||
} catch (Exception e) {
|
||||
// 处理异常,例如记录日志或者抛出自定义异常
|
||||
throw new RuntimeException("根据id列表删除角色异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取一个角色的所有权限列表")
|
||||
@GetMapping("toAssign/{id}")
|
||||
public Result toAssign(@PathVariable Long id) {
|
||||
// TODO
|
||||
try {
|
||||
Map<String, Object> result = permissionService.getPermissionById(id);
|
||||
return Result.ok(result);
|
||||
} catch (Exception e) {
|
||||
// 处理异常,例如记录日志或者抛出自定义异常
|
||||
throw new RuntimeException("获取一个角色的所有权限列表异常", e);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
package com.yovinchen.xlcs.acl.mapper;
|
||||
|
||||
import com.yovinchen.xlcs.model.acl.Admin;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* ClassName: AdminMapper
|
||||
* Package: com.yovinchen.xlcs.acl.mapper
|
||||
* 用户管理
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 10:45
|
||||
*/
|
||||
@Repository
|
||||
public interface AdminMapper extends BaseMapper<Admin> {
|
||||
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
package com.yovinchen.xlcs.acl.mapper;
|
||||
|
||||
import com.yovinchen.xlcs.model.acl.AdminRole;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* ClassName: AdminRoleMapper
|
||||
* Package: com.yovinchen.xlcs.acl.mapper
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 11:15
|
||||
*/
|
||||
@Repository
|
||||
public interface AdminRoleMapper extends BaseMapper<AdminRole> {
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
package com.yovinchen.xlcs.acl.mapper;
|
||||
|
||||
import com.yovinchen.xlcs.model.acl.Permission;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* ClassName: PermissionMapper
|
||||
* Package: com.yovinchen.xlcs.acl.mapper
|
||||
* 菜单Mapper接口
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 13:59
|
||||
*/
|
||||
@Repository
|
||||
public interface PermissionMapper extends BaseMapper<Permission> {
|
||||
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
package com.yovinchen.xlcs.acl.mapper;
|
||||
|
||||
import com.yovinchen.xlcs.model.acl.Role;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* ClassName: RoleMapper
|
||||
* Package: com.yovinchen.xlcs.acl.mapper
|
||||
* 角色管理
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 09:11
|
||||
*/
|
||||
@Repository
|
||||
public interface RoleMapper extends BaseMapper<Role> {
|
||||
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
package com.yovinchen.xlcs.acl.mapper;
|
||||
|
||||
import com.yovinchen.xlcs.model.acl.RolePermission;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* ClassName: RolePermissionMapper
|
||||
* Package: com.yovinchen.xlcs.acl.mapper
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 15:07
|
||||
*/
|
||||
public interface RolePermissionMapper extends BaseMapper<RolePermission> {
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
package com.yovinchen.xlcs.acl.service;
|
||||
|
||||
import com.yovinchen.xlcs.model.acl.AdminRole;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* ClassName: AdminRoleService
|
||||
* Package: com.yovinchen.xlcs.acl.service
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 11:15
|
||||
*/
|
||||
public interface AdminRoleService extends IService<AdminRole> {
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
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;
|
||||
|
||||
/**
|
||||
* ClassName: AdminService
|
||||
* Package: com.yovinchen.xlcs.acl.service
|
||||
* 用户管理
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 10:44
|
||||
*/
|
||||
public interface AdminService extends IService<Admin> {
|
||||
|
||||
/**
|
||||
* 用户分页列表
|
||||
*
|
||||
* @param pageParam
|
||||
* @param userQueryVo
|
||||
* @return
|
||||
*/
|
||||
IPage<Admin> selectPage(Page<Admin> pageParam, AdminQueryVo userQueryVo);
|
||||
|
||||
}
|
@@ -0,0 +1,26 @@
|
||||
package com.yovinchen.xlcs.acl.service;
|
||||
|
||||
import com.yovinchen.xlcs.model.acl.Permission;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* ClassName: PermissionService
|
||||
* Package: com.yovinchen.xlcs.acl.service
|
||||
* 权限服务
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 14:01
|
||||
*/
|
||||
public interface PermissionService extends IService<Permission> {
|
||||
|
||||
//获取所有菜单列表
|
||||
List<Permission> queryAllMenu();
|
||||
|
||||
//递归删除
|
||||
boolean removeChildById(Long id);
|
||||
|
||||
Map<String, Object> getPermissionById(Long id);
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
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 java.util.Map;
|
||||
|
||||
/**
|
||||
* ClassName: RoleService
|
||||
* Package: com.yovinchen.xlcs.acl.service
|
||||
* 用户管理
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 09:10
|
||||
*/
|
||||
public interface RoleService extends IService<Role> {
|
||||
|
||||
//角色分页列表
|
||||
IPage<Role> selectPage(Page<Role> pageParam, RoleQueryVo roleQueryVo);
|
||||
|
||||
Map<String, Object> findRoleByUserId(Long adminId);
|
||||
|
||||
void saveUserRoleRealtionShip(Long adminId, Long[] roleId);
|
||||
|
||||
}
|
@@ -0,0 +1,20 @@
|
||||
package com.yovinchen.xlcs.acl.service.impl;
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
* ClassName: AdminRoleServiceImpl
|
||||
* Package: com.yovinchen.xlcs.acl.service.impl
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 11:15
|
||||
*/
|
||||
@Service
|
||||
public class AdminRoleServiceImpl extends ServiceImpl<AdminRoleMapper, AdminRole>
|
||||
implements AdminRoleService {
|
||||
|
||||
}
|
@@ -0,0 +1,47 @@
|
||||
package com.yovinchen.xlcs.acl.service.impl;
|
||||
|
||||
import com.yovinchen.xlcs.acl.mapper.AdminMapper;
|
||||
import com.yovinchen.xlcs.acl.service.AdminService;
|
||||
import com.yovinchen.xlcs.acl.service.RoleService;
|
||||
import com.yovinchen.xlcs.model.acl.Admin;
|
||||
import com.yovinchen.xlcs.vo.acl.AdminQueryVo;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
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.util.StringUtils;
|
||||
|
||||
/**
|
||||
* ClassName: AdminServiceImpl
|
||||
* Package: com.yovinchen.xlcs.acl.service.impl
|
||||
* 用户管理
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 10:44
|
||||
*/
|
||||
@Service
|
||||
public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements AdminService {
|
||||
|
||||
@Autowired
|
||||
private AdminMapper userMapper;
|
||||
|
||||
@Autowired
|
||||
private RoleService roleService;
|
||||
|
||||
@Override
|
||||
public IPage<Admin> selectPage(Page<Admin> pageParam, AdminQueryVo userQueryVo) {
|
||||
//获取用户名称条件值
|
||||
String name = userQueryVo.getName();
|
||||
//创建条件构造器
|
||||
LambdaQueryWrapper<Admin> wrapper = new LambdaQueryWrapper<>();
|
||||
if (!StringUtils.isEmpty(name)) {
|
||||
//封装条件
|
||||
wrapper.like(Admin::getName, name);
|
||||
}
|
||||
//调用mapper方法
|
||||
IPage<Admin> pageModel = baseMapper.selectPage(pageParam, wrapper);
|
||||
return pageModel;
|
||||
}
|
||||
}
|
@@ -0,0 +1,78 @@
|
||||
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.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* ClassName: PermissionServiceImpl
|
||||
* Package: com.yovinchen.xlcs.acl.service.impl
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 14:02
|
||||
*/
|
||||
@Service
|
||||
public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission> implements PermissionService {
|
||||
|
||||
|
||||
/**
|
||||
* 获取所有菜单
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Permission> queryAllMenu() {
|
||||
//获取全部权限数据
|
||||
List<Permission> allPermissionList = baseMapper.selectList(new QueryWrapper<Permission>().orderByAsc("CAST(id AS SIGNED)"));
|
||||
|
||||
//把权限数据构建成树形结构数据
|
||||
return PermissionHelper.bulid(allPermissionList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归删除菜单
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean removeChildById(Long id) {
|
||||
List<Long> idList = new ArrayList<>();
|
||||
this.selectChildListById(id, idList);
|
||||
idList.add(id);
|
||||
baseMapper.deleteBatchIds(idList);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getPermissionById(Long id) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归获取子节点
|
||||
*
|
||||
* @param id
|
||||
* @param idList
|
||||
*/
|
||||
private void selectChildListById(Long id, List<Long> idList) {
|
||||
List<Permission> childList = baseMapper.selectList(new QueryWrapper<Permission>()
|
||||
.eq("pid", id)
|
||||
.select("id"));
|
||||
childList.forEach(item -> {
|
||||
idList.add(item.getId());
|
||||
this.selectChildListById(item.getId(), idList);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,114 @@
|
||||
package com.yovinchen.xlcs.acl.service.impl;
|
||||
|
||||
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;
|
||||
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: RoleServiceImpl
|
||||
* Package: com.yovinchen.xlcs.acl.service.impl
|
||||
* 角色管理
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 09:11
|
||||
*/
|
||||
@Service
|
||||
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
|
||||
|
||||
@Autowired
|
||||
private AdminRoleService adminRoleService;
|
||||
|
||||
//角色分页列表
|
||||
@Override
|
||||
public IPage<Role> selectPage(Page<Role> pageParam, RoleQueryVo roleQueryVo) {
|
||||
//获取条件值:角色名称
|
||||
String roleName = roleQueryVo.getRoleName();
|
||||
//创建条件构造器对象
|
||||
LambdaQueryWrapper<Role> wrapper = new LambdaQueryWrapper<>();
|
||||
//判断条件值是否为空
|
||||
if (!StringUtils.isEmpty(roleName)) {
|
||||
//封装条件
|
||||
wrapper.like(Role::getRoleName, roleName);
|
||||
}
|
||||
//调用mapper方法实现条件分页查询
|
||||
IPage<Role> pageModel = baseMapper.selectPage(pageParam, wrapper);
|
||||
return pageModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分配角色
|
||||
*
|
||||
* @param adminId
|
||||
* @param roleIds
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveUserRoleRealtionShip(Long adminId, Long[] roleIds) {
|
||||
//删除用户分配的角色数据
|
||||
adminRoleService.remove(new QueryWrapper<AdminRole>().eq("admin_id", adminId));
|
||||
|
||||
//分配新的角色
|
||||
List<AdminRole> userRoleList = new ArrayList<>();
|
||||
for (Long roleId : roleIds) {
|
||||
if (StringUtils.isEmpty(roleId)) continue;
|
||||
AdminRole userRole = new AdminRole();
|
||||
userRole.setAdminId(adminId);
|
||||
userRole.setRoleId(roleId);
|
||||
userRoleList.add(userRole);
|
||||
}
|
||||
adminRoleService.saveBatch(userRoleList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户获取角色数据
|
||||
*
|
||||
* @param adminId
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> findRoleByUserId(Long adminId) {
|
||||
//查询所有的角色
|
||||
List<Role> allRolesList = baseMapper.selectList(null);
|
||||
|
||||
//拥有的角色id
|
||||
List<AdminRole> existUserRoleList = adminRoleService.list(new QueryWrapper<AdminRole>()
|
||||
.eq("admin_id", adminId)
|
||||
.select("role_id"));
|
||||
List<Long> existRoleList = existUserRoleList
|
||||
.stream()
|
||||
.map(AdminRole::getRoleId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//对角色进行分类
|
||||
List<Role> assignRoles = new ArrayList<Role>();
|
||||
for (Role role : allRolesList) {
|
||||
//已分配
|
||||
if (existRoleList.contains(role.getId())) {
|
||||
assignRoles.add(role);
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> roleMap = new HashMap<>();
|
||||
roleMap.put("assignRoles", assignRoles);
|
||||
roleMap.put("allRolesList", allRolesList);
|
||||
return roleMap;
|
||||
}
|
||||
}
|
@@ -0,0 +1,62 @@
|
||||
package com.yovinchen.xlcs.acl.utils;
|
||||
|
||||
import com.yovinchen.xlcs.model.acl.Permission;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ClassName: PermissionHelper
|
||||
* Package: com.yovinchen.xlcs.acl.utils
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/9/14 14:23
|
||||
*/
|
||||
public class PermissionHelper {
|
||||
|
||||
/**
|
||||
* 使用递归方法建菜单
|
||||
*
|
||||
* @param treeNodes
|
||||
* @return
|
||||
*/
|
||||
public static List<Permission> bulid(List<Permission> treeNodes) {
|
||||
List<Permission> trees = new ArrayList<>();
|
||||
for (Permission treeNode : treeNodes) {
|
||||
if (treeNode.getPid() == 0) {
|
||||
treeNode.setLevel(1);
|
||||
trees.add(findChildren(treeNode, treeNodes));
|
||||
}
|
||||
}
|
||||
return trees;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归查找子节点
|
||||
*
|
||||
* @param treeNodes
|
||||
* @return
|
||||
*/
|
||||
public static Permission findChildren(Permission treeNode, List<Permission> treeNodes) {
|
||||
treeNode.setChildren(new ArrayList<Permission>());
|
||||
|
||||
for (Permission it : treeNodes) {
|
||||
if (treeNode
|
||||
.getId()
|
||||
.longValue() == it
|
||||
.getPid()
|
||||
.longValue()) {
|
||||
int level = treeNode.getLevel() + 1;
|
||||
it.setLevel(level);
|
||||
if (treeNode.getChildren() == null) {
|
||||
treeNode.setChildren(new ArrayList<>());
|
||||
}
|
||||
treeNode
|
||||
.getChildren()
|
||||
.add(findChildren(it, treeNodes));
|
||||
}
|
||||
}
|
||||
return treeNode;
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,11 @@
|
||||
server:
|
||||
port: 8201
|
||||
spring:
|
||||
application:
|
||||
name: service-acl
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
server-addr: 82.157.68.223:8848
|
||||
username: nacos
|
||||
password: nacos
|
@@ -0,0 +1,18 @@
|
||||
spring:
|
||||
cloud:
|
||||
nacos:
|
||||
config:
|
||||
namespace: dd5265c5-8290-45bc-9d07-395c14c977d3
|
||||
server-addr: 82.157.68.223:8848
|
||||
group: service
|
||||
username: nacos
|
||||
password: nacos
|
||||
enabled: true
|
||||
file-extension: yml
|
||||
extension-configs:
|
||||
- data-id: common.yml
|
||||
group: common
|
||||
refresh: true
|
||||
- data-id: service-redis.yml
|
||||
group: common
|
||||
refresh: true
|
@@ -0,0 +1,19 @@
|
||||
module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
|
||||
# \u81EA\u5B9A\u4E49\u65E5\u5FD7\u6253\u5370
|
||||
#logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat
|
||||
logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat
|
||||
customLogMessageFormat=%(currentTime) | SQL\u8017\u65F6\uFF1A %(executionTime) ms | \u8FDE\u63A5\u4FE1\u606F\uFF1A %(category)-%(connectionId) | \u6267\u884C\u8BED\u53E5\uFF1A %(sql)
|
||||
# \u4F7F\u7528\u63A7\u5236\u53F0\u8BB0\u5F55sql
|
||||
appender=com.p6spy.engine.spy.appender.StdoutLogger
|
||||
## \u914D\u7F6E\u8BB0\u5F55Log\u4F8B\u5916
|
||||
excludecategories=info,debug,result,batc,resultset
|
||||
# \u8BBE\u7F6E\u4F7F\u7528p6spy driver\u6765\u505A\u4EE3\u7406
|
||||
deregisterdrivers=true
|
||||
# \u65E5\u671F\u683C\u5F0F
|
||||
dateformat=yyyy-MM-dd HH:mm:ss
|
||||
# \u5B9E\u9645\u9A71\u52A8
|
||||
driverlist=com.mysql.jdbc.Driver
|
||||
# \u662F\u5426\u5F00\u542F\u6162SQL\u8BB0\u5F55
|
||||
outagedetection=true
|
||||
# \u6162SQL\u8BB0\u5F55\u6807\u51C6 \u79D2
|
||||
outagedetectioninterval=2
|
Reference in New Issue
Block a user