diff --git a/spring-boot-demo-rbac-security/sql/security.sql b/spring-boot-demo-rbac-security/sql/security.sql new file mode 100644 index 0000000..385d47a --- /dev/null +++ b/spring-boot-demo-rbac-security/sql/security.sql @@ -0,0 +1,65 @@ +# 用户表 +CREATE TABLE IF NOT EXISTS `sec_user` +( + `id` BIGINT(64) NOT NULL COMMENT '主键', + `username` VARCHAR(50) NOT NULL COMMENT '用户名', + `password` VARCHAR(60) NOT NULL COMMENT '密码', + `nickname` VARCHAR(255) DEFAULT NULL COMMENT '昵称', + `phone` VARCHAR(11) DEFAULT NULL COMMENT '手机', + `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱', + `birthday` BIGINT(13) DEFAULT NULL COMMENT '生日', + `sex` TINYINT(1) DEFAULT NULL COMMENT '性别,男-1,女-2', + `status` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '状态,启用-1,禁用-0', + `create_time` BIGINT(13) NOT NULL COMMENT '创建时间', + `update_time` BIGINT(13) NOT NULL COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `username` (`username`), + UNIQUE KEY `phone` (`phone`), + UNIQUE KEY `email` (`email`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8 COMMENT '用户表'; + +# 角色表 +CREATE TABLE IF NOT EXISTS `sec_role` +( + `id` BIGINT(64) NOT NULL COMMENT '主键', + `name` VARCHAR(50) NOT NULL COMMENT '角色名', + `description` VARCHAR(100) DEFAULT NULL COMMENT '描述', + `create_time` BIGINT(13) NOT NULL COMMENT '创建时间', + `update_time` BIGINT(13) NOT NULL COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8 COMMENT '角色表'; + +# 权限表 +CREATE TABLE IF NOT EXISTS `sec_permission` +( + `id` BIGINT(64) NOT NULL COMMENT '主键', + `name` VARCHAR(50) NOT NULL COMMENT '权限名', + `href` VARCHAR(1000) DEFAULT NULL COMMENT '页面地址', + `type` TINYINT(1) NOT NULL COMMENT '权限类型,页面-1,按钮-2', + `permission` VARCHAR(50) DEFAULT NULL COMMENT '权限表达式', + `sort` INT(11) NOT NULL COMMENT '排序', + `parent_id` BIGINT(64) NOT NULL COMMENT '父级id', + PRIMARY KEY (`id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8 COMMENT '权限表'; + +# 用户角色关系表 +CREATE TABLE IF NOT EXISTS `sec_user_role` +( + `user_id` BIGINT(64) NOT NULL COMMENT '用户主键', + `role_id` BIGINT(64) NOT NULL COMMENT '角色主键', + PRIMARY KEY (`user_id`, `role_id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8 COMMENT '用户角色关系表'; + +# 角色权限关系表 +CREATE TABLE IF NOT EXISTS `sec_role_permission` +( + `role_id` BIGINT(64) NOT NULL COMMENT '角色主键', + `permission_id` BIGINT(64) NOT NULL COMMENT '权限主键', + PRIMARY KEY (`role_id`, `permission_id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8 COMMENT '角色权限关系表'; diff --git a/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/model/Permission.java b/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/model/Permission.java new file mode 100644 index 0000000..38e6a89 --- /dev/null +++ b/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/model/Permission.java @@ -0,0 +1,59 @@ +package com.xkcoding.rbac.security.model; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Table; + +/** + *
+ * 权限 + *
+ * + * @package: com.xkcoding.rbac.security.model + * @description: 权限 + * @author: yangkai.shen + * @date: Created in 2018-12-07 16:04 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Data +@Entity +@Table(name = "sec_permission") +public class Permission { + /** + * 主键 + */ + private Long id; + + /** + * 权限名 + */ + private String name; + + /** + * 页面地址 + */ + private String href; + + /** + * 权限类型,页面-1,按钮-2 + */ + private String type; + + /** + * 权限表达式 + */ + private String permission; + + /** + * 排序 + */ + private String sort; + + /** + * 父级id + */ + private String parent_id; +} diff --git a/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/model/Role.java b/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/model/Role.java new file mode 100644 index 0000000..4ed5764 --- /dev/null +++ b/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/model/Role.java @@ -0,0 +1,54 @@ +package com.xkcoding.rbac.security.model; + +import lombok.Data; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + *+ * 角色 + *
+ * + * @package: com.xkcoding.rbac.security.model + * @description: 角色 + * @author: yangkai.shen + * @date: Created in 2018-12-07 15:45 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Data +@Entity +@Table(name = "sec_role") +public class Role { + /** + * 主键 + */ + @Id + private Long id; + + /** + * 角色名 + */ + private String name; + + /** + * 描述 + */ + private String description; + + /** + * 创建时间 + */ + @Column(name = "create_time") + private Long createTime; + + /** + * 更新时间 + */ + @Column(name = "update_time") + private Long updateTime; +} diff --git a/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/model/User.java b/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/model/User.java new file mode 100644 index 0000000..f5db78c --- /dev/null +++ b/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/model/User.java @@ -0,0 +1,85 @@ +package com.xkcoding.rbac.security.model; + +import lombok.Data; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + *+ * 用户 + *
+ * + * @package: com.xkcoding.rbac.security.model + * @description: 用户 + * @author: yangkai.shen + * @date: Created in 2018-12-07 16:00 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Data +@Entity +@Table(name = "sec_user") +public class User { + + /** + * 主键 + */ + @Id + private Long id; + + /** + * 用户名 + */ + private String username; + + /** + * 密码 + */ + private String password; + + /** + * 昵称 + */ + private String nickname; + + /** + * 手机 + */ + private String phone; + + /** + * 邮箱 + */ + private String email; + + /** + * 生日 + */ + private Long birthday; + + /** + * 性别,男-1,女-2 + */ + private Integer sex; + + /** + * 状态,启用-1,禁用-0 + */ + private Integer status; + + /** + * 创建时间 + */ + @Column(name = "create_time") + private Long createTime; + + /** + * 更新时间 + */ + @Column(name = "update_time") + private Long updateTime; +} diff --git a/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/repository/PermissionDao.java b/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/repository/PermissionDao.java new file mode 100644 index 0000000..012f660 --- /dev/null +++ b/spring-boot-demo-rbac-security/src/main/java/com/xkcoding/rbac/security/repository/PermissionDao.java @@ -0,0 +1,21 @@ +package com.xkcoding.rbac.security.repository; + +import com.xkcoding.rbac.security.model.Permission; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.data.jpa.repository.JpaRepository; + +/** + *+ * 权限 DAO + *
+ * + * @package: com.xkcoding.rbac.security.repository + * @description: 权限 DAO + * @author: yangkai.shen + * @date: Created in 2018-12-07 16:21 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +public interface PermissionDao extends JpaRepository+ * 角色 DAO + *
+ * + * @package: com.xkcoding.rbac.security.repository + * @description: 角色 DAO + * @author: yangkai.shen + * @date: Created in 2018-12-07 16:20 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +public interface RoleDao extends JpaRepository+ * 用户 DAO + *
+ * + * @package: com.xkcoding.rbac.security.repository + * @description: 用户 DAO + * @author: yangkai.shen + * @date: Created in 2018-12-07 16:18 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +public interface UserDao extends JpaRepository