首页 > 其他分享 >jeecg boot 企业级应用管理后台 (六)权限模块介绍 从0开始 (持续更新)

jeecg boot 企业级应用管理后台 (六)权限模块介绍 从0开始 (持续更新)

时间:2024-07-26 17:26:13浏览次数:13  
标签:permission boot 企业级 sys public role 权限 id jeecg

数据库部分

Jeecg 的权限模块在数据库中通常涉及以下几个表:

  1. 权限表(sys_permission:存储权限的基本信息,如权限名称、权限标识、描述等。

    CREATE TABLE `sys_permission` (
      `id` BIGINT NOT NULL AUTO_INCREMENT,
      `name` VARCHAR(50) NOT NULL COMMENT '权限名称',
      `perms` VARCHAR(100) NOT NULL COMMENT '权限标识',
      `description` VARCHAR(255) COMMENT '描述',
      PRIMARY KEY (`id`)
    );
    
  2. 角色表(sys_role:存储系统中定义的角色信息。

    CREATE TABLE `sys_role` (
      `id` BIGINT NOT NULL AUTO_INCREMENT,
      `name` VARCHAR(50) NOT NULL COMMENT '角色名称',
      `code` VARCHAR(50) NOT NULL COMMENT '角色编码',
      `description` VARCHAR(255) COMMENT '描述',
      PRIMARY KEY (`id`)
    );
    
  3. 用户角色关联表(sys_user_role:存储用户和角色的对应关系。

    CREATE TABLE `sys_user_role` (
      `user_id` BIGINT NOT NULL COMMENT '用户ID',
      `role_id` BIGINT NOT NULL COMMENT '角色ID',
      PRIMARY KEY (`user_id`, `role_id`)
    );
    
  4. 角色权限关联表(sys_role_permission:存储角色和权限的对应关系。

    CREATE TABLE `sys_role_permission` (
      `role_id` BIGINT NOT NULL COMMENT '角色ID',
      `permission_id` BIGINT NOT NULL COMMENT '权限ID',
      PRIMARY KEY (`role_id`, `permission_id`)
    );
    

后端部分

角色后端路径(\jeecg-module-system\jeecg-system-biz\src\main\java\org\jeecg\modules\system\controller\SysRoleController.java)

后端主要采用 Spring Boot 框架进行开发,以下是一些关键点:

  1. Controller:处理权限的增删改查请求。

    @RestController
    @RequestMapping("/sys/permission")
    public class PermissionController {
    
        @Autowired
        private PermissionService permissionService;
    
        @GetMapping
        public List<Permission> getAllPermissions() {
            return permissionService.getAllPermissions();
        }
    
        @PostMapping
        public void addPermission(@RequestBody Permission permission) {
            permissionService.savePermission(permission);
        }
    
        @PutMapping
        public void updatePermission(@RequestBody Permission permission) {
            permissionService.updatePermission(permission);
        }
    
        @DeleteMapping("/{id}")
        public void deletePermission(@PathVariable Long id) {
            permissionService.deletePermission(id);
        }
    }
    
  2. Service:负责业务逻辑处理,如获取权限列表、保存权限、更新权限、删除权限等。

    @Service
    public class PermissionService {
    
        @Autowired
        private PermissionRepository permissionRepository;
    
        public List<Permission> getAllPermissions() {
            return permissionRepository.findAll();
        }
    
        public void savePermission(Permission permission) {
            permissionRepository.save(permission);
        }
    
        public void updatePermission(Permission permission) {
            permissionRepository.save(permission);
        }
    
        public void deletePermission(Long id) {
            permissionRepository.deleteById(id);
        }
    }
    
  3. Repository:负责与数据库进行交互,通常使用 JPA 或者 MyBatis。

    @Repository
    public interface PermissionRepository extends JpaRepository<Permission, Long> {
    }
    

前端部分

角色前端路径(\src\views\system\role\index.vue)

前端部分通常采用 Vue.js 进行开发,以下是一些关键点:

  1. 权限管理页面:展示权限列表,并提供增删改查功能。

    <template>
        <div class="permission-container">
            <el-table :data="permissionList" stripe style="width: 100%">
                <el-table-column prop="name" label="权限名称"></el-table-column>
                <el-table-column prop="perms" label="权限标识"></el-table-column>
                <el-table-column prop="description" label="描述"></el-table-column>
                <el-table-column label="操作">
                    <template slot-scope="scope">
                        <el-button @click="handleEdit(scope.row)" type="primary">编辑</el-button>
                        <el-button @click="handleDelete(scope.row.id)" type="danger">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <el-button @click="handleAdd">新增权限</el-button>
        </div>
    </template>
    
    <script>
    export default {
        data() {
            return {
                permissionList: []
            };
        },
        created() {
            this.fetchPermissions();
        },
        methods: {
            fetchPermissions() {
                this.$axios.get('/sys/permission')
                    .then(response => {
                        this.permissionList = response.data;
                    })
                    .catch(error => {
                        this.$message.error('获取权限失败');
                    });
            },
            handleAdd() {
                // 处理新增权限事件
            },
            handleEdit(permission) {
                // 处理编辑权限事件
            },
            handleDelete(id) {
                this.$axios.delete(`/sys/permission/${id}`)
                    .then(() => {
                        this.$message.success('删除成功');
                        this.fetchPermissions();
                    })
                    .catch(() => {
                        this.$message.error('删除失败');
                    });
            }
        }
    };
    </script>
    
  2. 路由:配置权限管理路由,动态加载权限管理页面。

    import Vue from 'vue';
    import Router from 'vue-router';
    import Home from '@/views/Home.vue';
    import Permission from '@/views/Permission.vue';
    
    Vue.use(Router);
    
    const router = new Router({
        routes: [
            {
                path: '/',
                name: 'Home',
                component: Home,
                children: [
                    {
                        path: 'permission',
                        name: 'Permission',
                        component: Permission
                    }
                ]
            }
        ]
    });
    
    export default router;
    

Jeecg 的权限模块结合了前后端的开发,使得用户可以方便地管理系统中的权限和角色。通过 Spring Boot 进行后端处理,Vue.js 进行前端展示,整个流程高效且易于维护。

标签:permission,boot,企业级,sys,public,role,权限,id,jeecg
From: https://blog.csdn.net/qq_46685188/article/details/140720071

相关文章