00:00
嗯,好,那我们现在的话呢,Po文件已经写好了,然后我们刷新了me的,呃,这个配置,那么这样的话呢。我们刷新po文件以后呢,实际上这些依赖呢,它就都导进来了,呃,际上都下载下来了,对吧?呃,当然就是我们现在只是写了一个po文件,所以说接下来的话呢,我们会在呃。Main这个文件夹下面,Java文件夹下面呢,我们来写一个什么呢?我们来新建一个包,对吧?我们可以新建一个比方说软件包来存放我们代码,比如说是一个艾特硅谷这样的一个包,对吧?然后回车,然后在这个康迪亚的硅谷里边呢,我们可以写一个叫做呃云台application这样的一个类,呃,当然这个类呢,我为什么先写这个东西呢?实际上这个就是我们supreme BOO,呃,它的一个启动程序,所以说在这在这里面如果你给这个类,对吧,我们怎么样把它标志为一个spring boot的呃启动程序呢?啊,那就说如果在这里面你给它打一个注解的话,那就是spring boot application,对吧,你在打一个注解,打了一个spring good application,然后再写一个main函数。
01:21
对吧,写一个main函数,当然在这写一个main函数的话呢,我们就是spring application点。对吧,然后云台application.class然后arts,实际上这个是一些样板代码啊,当然这个样板代码它的作用是什么呢?其实就是。我们这里面可以写一行注释,叫做启动spring对吧,Boot应用。好,OK,那么在这里边启动了这个spring boot应用以后呢,呃呃,当然你要注意你不要忘记这个注解啊,因为这个注解的话呢,它其实就是把这个类呢标注为了一个spring boot的应用程序,对吧?这个注解好,然后呢,在这的话呢,你写一个main函数里边写一个spring application.wrong对吧?那它就启动了spring boot这样的一个应用对吧?启动了spring boot这样的一个应用,好,那接下来的话呢,实际上你一旦运行这个main函数呢,它其实就是把呃,我们这个spring boot应用呢,给它跑起来了,对吧?那你可以看到现在诶,它已经运行起来了,呃,只不过我们现在呢,我们没有编写任何有关控制器的代码,也就是说,虽然我现在跑起了一个spring BOO的应用,但是并没有任何URL,我们是可以访问的,对吧,我们没有办法。
02:55
比如说像这个服务器发请求,因为我们并没有任何说呃,就是说处理呃这些请求的一些代码,所以说接下来的话呢,我们写完这个呃主程序的话呢,我们接下来我们就开始呃写一些模块的代码,对吧?我们第一个要写的模块是什么呢?我们第一个要写的模块当然就是呃,呃,Thein,呃这样的一个模块对吧?我们要写的就是in这样一个模块,呃,那么也就是我们的管理后台这样的一个模块对吧?呃当然在这里边的话呢,我们要写这个管理后台的话呢,那根据Java的一些惯例的话呢,实际上我们应该是呃写一些Java并这样的一些类,对吧?所以说我在这个呃啊的命下面的话呢,我新建一个。
03:47
软件包叫做什么呢?叫做Bing吧。OK。那么min下面我新建了一个病这样的一个软件包呢,我们在Java b或者说在doin.b这个软件包里边,我们要创建哪些扎拉病的类呢?对吧,我们要创建哪些扎拉病的类呢呢?这个就涉及到了我们,呃,就是说。
04:12
权限模块它的数据库里边的表的结构是什么?换句话说就是我们要如何来设计权限模块里边的表。对吧,或者说我们权限模块,或者说我们通过权限模块里面的这个表结构呢,我们大概就可以知道。对吧,我们权限模块能干什么,它的功能是什么?所以在这里面呢,我们可以看到,诶在部署里边呢,有一个第一个是create database,云台下划线上的命,也就是我们在买SQL里边呢,我们首先要创建一个呃数据库,叫做云台下划线命。然后呢,呃,当然你要在这个买CQL里边呢,你要use云台的命,对吧,你要去呃使用这个数据库,然后在这个数据库里边的话呢,我们第一个要创建的叫做用户表,对吧?我们第一张要创建的用户表,也就是我在这边我create table user,那么它的第一个字段呢,是ID字段,当然这个ID字段呢,它是一个big int,呃类型啊,并且它是一个自增的,而且它是一个对吧,你可以看到这里边我们的注释呢,写的它是一个用户ID,那么在这下面的话呢,有一个叫做primary key ID,也就是我们这个ID呢,是我们这张表的主件用户ID,然后呢,除了用户ID呢,还有两个字符串类型的,一个是用户名,另一个是密码,对吧,我们的呃用户名呢,当然也是独一无二的unique key它是一个,然后呢,我们这个引擎呢,使用的是inno DB对吧,因为inno DB引擎呢,它可以建索引啊呃,有一些比方说支持事物啊等等等等,所以说这个。
05:54
DB引擎呢,是买CQL里面它使用的最多的一种引擎,呃,然后我们的字符集呢,我们使用的是UTMB4对吧?呃,UTMB4,呃,那么这个UTIMB4它的作用主要是什么呢?主要就是呃我们可以往呃这张表里面呢,插入的一些数据呢,它不一。
06:15
不是局限在utr这样的字符啊,对吧,比方说你要插入一些类似于什么O这个表情啊等等之类的,现在比较流行的一些字符呢,我们使用utim mb4的编码呢,都是可以把它插入进去的,好当然我们这张表示用户表,我们这里只有三个字段,对吧?那这实际上也是为了教学,我们简化了表的结构,实际上呢,就是一般来讲的话呢,对吧,你可能你的表结构里面,你当然不会只有这三个字段,你有可能有比方说我们除了ID username password以外,你可能还有一些其他的一些字段,呃,什么样的一些字段呢,比如说呃,叫做。昵称对吧,用户昵称也就是我们的nickname,比方说还有创建时间对吧,Create time,呃,然后我们这个数据的更新时间,什么up time呀,呃等等等等,其实它呃里边你可以添加非常多的字段,但是我们这里边为了简化问题,也就是说为了让我们。
07:20
呃,在写代码的时候呢,呃就是说专注于最核心的东西呢,所以说我这里面我特意把这张表结构呢,呃给他,呃就是说简化到了只有三个字段,一个是主键,另一个是用户名,还有一个就是密码啊,这是我们的用户表啊,这是我们的用户表啊,当然就是说除了用户表以外呢,我们重要的表还有一个叫做什么呢?叫做角色表。对吧?那么这个角色表我们都知道,那你可以看到我们上面这个用户表呢,我们插入了几条呃测试数据对吧?这个用户名呢,是比方说这个ID是E用户名设的命,然后它的密码呢,是这样一串经过MD5加密的这样的一个呃字符,对吧?我们插入了三条数据,然后呢,这个角色表的话呢,你可以看到我们这个角色表就更简单了,它只有两个字段,一个是主键ID,角色ID啊,另一个呢,叫做roll name,也就是我们这个角色的名字是什么对吧?我们这个角色的名字是什么。
08:19
然后呢,我们也插入了两条数据,呃,当然插入两条数据呢,实际上就是往这个表里边。啊,我们插入了两个角色,一个是系统管理员,另一个是普通管理员,对吧,另一个是或者说叫做普通用户对吧,叫做普通用户,好,那么我们这个用户表和角色表。他如果用我们数据库里边的呃这样的一个,就是说呃概念的话呢,实际上这两张表对吧,我们有一个用户表,还有一个角色表,实际上这两个表呢,它可能是一个多对多的关系,也就是说你一个用户他有可能有多个角色。
09:04
对吧,那么你一个角色呢,也有可能有多个用户是这个角色,所以说用户表和角色表呢,实际上呃,它本身是一个多对多的关系,但是你可以看到在这两张表里边呢,其实我们。并没有办法说看出来,诶这个用户表和角色表它到底有什么关系,对吧?因为我们这个用户表里面好像也没有一个字段说是,呃,它是它的角色信息啊之类的,对吧?角色表里面也没有一个字段,呃,表明了它的用户信息对吧?表明它的用户信息,所以说呢,我们如何来反映用户和角色的关系呢?实际上我们啊,对吧,我们先跳过这个权限表,呃,实际上在这儿的话呢,我们还会创建一个用户角色表,当然这个表名叫做user_RO。对吧,那么这张表很关键啊,就是说这个用户角色表呢,这张表它实际上反映的就是用户和角色的一个关系,用户和角色的一个关系,也就是说在这里面你可以看到这个用户角色表呢,它有三个字段,第一个字段是ID,对吧,就是我们主见这个当然就是说每一个呃表它都有这样一个主件,对吧?那么还有两个字段,一个是用户ID,还有一个是角色ID。
10:20
对吧,一个是用户ID,还有一个是角色ID,也就是说我们这张表呢,通过存储对吧,每一行数据它都存一个用户ID,存一个角色ID对吧,那就表明。哎,某一个用户他具备了某一个角色,我这里边插入了三条,呃,测试数据对吧,我们来看一下,当然它的主键是123,我们来看一下啊,我们插入的第一条数据主见是一,用户ID是一,那么角色ID也是一。那我们插入这条数据表示什么呢?表示用户ID唯一的,它具备一个角色对吧?而这个角色ID是一,那如果我们回过头去查的话呢,你就会发现,诶,用户ID唯一的是in,而角色I唯一的呢,是系统管理员。
11:15
对吧,也就是说我们那我们那条数据表示了什么呢?表示用户啊的命,他拥有一个角色叫做系统管理员,对吧,因为你在这里面,你可以看到它插入了在user这张表里面呢,它插入了一个,呃,用户ID是一角色ID也是一对吧。也就这条数据你就可以反映出来某一个用户和角色关系对吧,当然你还可以插入其他的,比方说你还可以插入一个,比如说用户ID是一,角色ID是二,对吧,那这就表明什么呀,表明用户啊doin他。除了系统管理员之外,对吧,那么他还有角色管理员,还有这个普通用户这样的一个角色,对吧?也就是说你在这边,如果你插入的多一些的话呢,你就比方说这是一个呃用户一对吧,USER1,那么它除了用户一呃他诶。
12:11
他是一个什么系统管理员,对吧,C的命对吧,这样的一个管理,那么他有这样的一个角色,他有这样的一个角色。也就是说这个就是我们插入这个什么insert对吧,我插入三个数据,一逗号一逗号一对吧,那么它这条数据实际上就反映了这样的一个关系,那么我如果比方说我这个USER1,它还具备的一个角色呢,是比方说普通用户common user对吧,那么普通用户的话呢,那在这里边,诶,这个USER1呢,他还同时具备这样的一个角色,那么。我就再插入一条什么样的数据呢?Insert,比方说212对吧,那我插入这条数据呢,就表明我的用户一它还同时具有一个呃普通用户的这样的一个角色对吧?普通用户这样的一个角色啊,当然我们这里面我们为了简化的话呢,呃实际上就是我们后面在呃就是虽然我们这个表结构呢,它实际上是允许你呃用户和角色多对多呢,当然一般情况来讲的话呢,呃,我们一个用户可能只会有一个角色对吧?一个用户只会有一个角色好啊,当然一个角色它不一定只有一个用户啊,当然一般来说的话呢,我们一个用户可能他呃只有一个角色好。
13:32
那这是前两张表,一个是用户表,一个是角色表。那么除了决策表以外呢,当然还有一个就是叫做权限表。对吧,还有一个呢,就是叫做呃,权限表。呃,那么我们,呃,就是说除了角色表以外呢,还有一张很重要的表呢,就叫权限表。对吧,因为你每一个角色的话呢,他肯定是,呃,就是说。需要拥有一些权限,对吧,你不能说是所有的呃,这个角色他都拥有同样的权限,对吧,那这个就是说我们的后台管理系统,或者说权限管理模块,它就呃失去作用了,对吧,或者说失去意义了,那么在这里边的话呢,我们的权限表。
14:18
对吧,我们首先来看什么叫做权限。对吧?呃,当然简单来讲的话呢,我这里边实际上是实现了一个菜单权限对吧,比方说我们在呃这个呃,就是说在访问页面的时候,大家之前也看过了,呃可能在最右边的话呢,它有很多个菜单,对吧?比如说在这里边还有权限管理对吧?那么权限管理下面呢,它有两个子菜单。对吧,比如说这个是一个叫做用户管理,对吧?呃,然后呢,除了用户管理以外呢,它还有一个子菜单叫做角色管理,大家应该都还记得,呃,对吧?角色管理就在这里边的话呢,你可以看到诶,这有这么多的权限,因为我们把这个之前的呃跑起来的后端项目停掉的话呢,你可以看到这里面它会有一个500这样的一个。
15:09
啊错误,因为我们把后端停掉了,也就是说这样的一个呃菜单的话呢,那不同的用户他应该是呃,允许他访问的菜单的数量是呃,就是说是不一样的对吧,是不一样的呃所以在这里边的话呢。我们就把这个菜单的名字给他,或者说菜单的路由对吧,给它编成了权限对吧?给它编成了权限,我们来看一下啊,首先呢,我们插入的,呃,首先我们这里边表的结构,第一个是主键啊,这个没有问题,第二个呢,这个是权限的ID对吧?或者说它的主键,那第二个的呃,这个字段呢,叫做parent ID。对吧,那这个是某一个权限。他的上级权限的ID。
16:03
对吧,上级权限的ID。那么还有两个字段呢,一个就是权限的名称,还有一个呢,就是权限的编码。而这个权限的编码呢,实际上就是我们可以访问的菜单的名字,或者叫做或者说菜单的这个URL路由吧,在前端的好,那这个就是我们的表结构,那么我们这里边要解答的一个问题,就是说你这个权限为什么它还有上级呢,对不对,为什么他还有上级呢?我们来看一下什么叫做上下级,对吧?那在这里边的话呢,角色管理,诶这个子菜单的权限,或者说子菜单的访问权限,他的上级权限就是一个权限管理。就是这个副菜单,换句话说,如果我们一个用角色,他没有这个权限管理的,呃,就是说呃,这个菜单的访问权限的话,那么它所有的子菜单,我们应该也是不允许他访问的。
17:04
对吧,那这个就是我们要引入父子权限呃这样的一个概念的一个原因,对吧?这样的一个概念的原因包括下面,比方说报表管理,如果你没有报表管理这个附菜单的访问权限的话,那你底下的像呃,Clickhouse报表管理,或者说买CQL报表管理,那你这个都应该是呃,不应该有这两个子菜单访问权限的,所以我们在这里边的话呢,我们就引入了呃这个。就是说父子权限这样的一个概念,对吧?我们这张表里边的每一行数据,首先它有主键,那这个主键就是它的权限的ID,那么还有一个字段呢,叫做parent_ID而这个parent_ID呢,呃,表示的是。对吧,这条权限它的上级权限是什么对吧?当然还有名称以及名称的编码,我们在这儿的话呢,我们就插入一些测试数据,当然我这个测试数据呢,就是直接把我前端的,呃,菜单的权限呢,编码以后写入到了数据库里边,比如说在这里面你可以看到。
18:10
首先我们插入一个一条数据呢,是第一条数据,我们插入的是全部权限。对吧?然后第二条数据我们插入的是什么?当然它的ID是二,你可以看到我们插入的这个权限呢,是权限管理,当然它的英文名字叫我的命,或者说编码叫我的命,对吧?那么他的上级权限是什么呢?你可以看到他上级权限的ID是一,也就是说权限管理。这一个它的上级权限是我们的这个全部权限,哎,你可以看到我又插入了一个数据统计对吧?它的编码4STAISTICS,它的上级权限也是一,也就是全部权限,当然它的权限的ID呢,是三对吧,当然你可以继续往下看,比方说在这里边用户管理和角色管理,它的上级权限的ID都是二对吧,也就是说都是权限管理,换句话说,我们这个呢,实际上它是,呃,这张表它存储的其实是一个叫做树形结构对吧?比方在这的话呢,我们可以画一下。
19:19
它的树形结构的根节点,它是一个叫做全部权限,对吧,那么这个根节点呢,它的,哎第一个子节点。对吧,我们这个树形结构的第一个孩子节点呢,那么它是一个比方说是权限管理对吧,这样的一个,呃,就是说子节点。也就是说全部权限它的主键ID呢是呃什么呢?它的主键ID是一,然后呢,权限管理的主键ID对吧?是二,然后呢,权限管理下面的话呢,它还有两个子节点对吧?啊,那第一个子节点的话呢,是。
20:05
什么呢?第一个子节点,比方说是用户管理对吧,那么第二个子节点呢,它是呃,叫做这个角色管理对吧,叫做角色管理。好。OK,然后我们来看一下这个用户管理和角色管理我的呃主键ID对吧,那么用户管理的主键ID是七,角色管理的的主键ID是八,对吧?所以说在这的话呢,我们用户管理呢,是一个呃,七。呃,角色管理呢,是一个把,所以说实际上当然我还有一些节点并没有画出来啊,比方说呃,数据统计模块啊,再比方说其他的一些模块,对吧?当然我们这个权限表里面,实际上它存的就是这样的一个数形结构,我们第一条数据插的是全部权限,它的ID是一,第二条数据插入的是权限管理,对吧?呃,它的权限的主件或者说ID是二,然后呢,它还有两个子权限,这两个子权限一个是用户管理权限,一个是角色管理权限,那么他们的主键ID呢,分别是七和八啊,当然这两个权限他们的副级权限或者说上级权限的ID呢,是二,对吧?所以说在这的话你就会发现诶。
21:20
我的这个用户管理和角色管理的这一个字段,也就是parent ID呢,我们给他呃插入的是二,也就是说我们通过插入这样的一些数据呢,我们就可以把这个菜单的这样的一个数形结构给它保存到了呃买C数这张表里面对吧?好,那我们现在有了权限这张表以后呢,我们当然我们刚才也讲了,就是说由于用户和角色,呃它是有关系的,对吧?所以说我们需要用一张表来反映用户和角色之间的关系。Danny。比方说你可以在呃,把这两个呢,设成外键啊之类的,这个都是其实都是可以的,对吧,其实都是可以的。
22:03
啊,那我们除了用户和角色的关系以外呢,我们还需要建一张表来反映角色和权限的关系。因为你角色的权限,一个角色他可能拥有很多个权限,对吧,比如说。我系统管理员这样的一个角色呢,他拥有这些所有的权限。对吧,那你可以看到这个是一个一对多的关系,对吧,某一个角色他有可能拥有很多权限。对吧?比方说普通用户他拥有的权限呢,是一个呃数据统计呃这样的一些权限,对吧?也就是说你一个角色可能有多个呃权限,当然就是说你一个权限他也可能被多个角色拥有,所以说这个权限和呃角色的一个关系呢,实际上它也是一个呃多对多的关系,对吧?那么我们需要建一张表,这张表除了主键以外呢,还有就是角色ID以及权限ID,那你一个我们插入每一条数据呢,比方说我在这插入这样一条数据。
23:07
呃,Rule permission里面我插入了一条数据,一逗号一逗号一,那这个表示什么呢?表示就是首先它的主键是一,然后呢,我的角色ID是一,角色ID唯一的系统管理员权限ID唯一的权限呢,是全部权限对吧?所以说这一行数据就表明我们的系统管理员这个角色拥有全部权限这个权限对吧?当然我插入的第二条数据呢,表示对吧,系统管理员这个角色它拥有权限二对吧,主建ID为二的权限,我们看主键ID为二的权限呢,就是权限管理啊的命这个权限。对吧,我们把这些所有的权限都针对角色一呢,给它插入了一遍,对吧?你可以看到我们的权限ID从一到17,我们都赋予了角色一对吧,也就是系统管理员,因为我们要想让系统管理员呢拥有所有的角色,对吧,拥有所有的权限。
24:09
也就是说,你每插入一条数据,实际上就是给某一个角色赋予了一个权限,对吧?所以这张表你可以看得出来,它实际上反映的是角色和权限之间的一个多对多的关系,一个多对多的关系,好。那我们现在权限管理模块的表结构呢,实际上已经给他建好了,对吧,那么我们通过这个建表的过程呢,呃,你就可以学习到说我设计一个后台的权限管理模块,你应该怎么设计,实际上基本就是这样子,对吧,它是一个。三个。这个表的关系对吧,比方这个是一个用户表对吧,那么除了用户表以外呢,那么还有一个就是角色表。
25:00
对吧,角色表,那么用户表和角色表之间呢,它是一个多对多的对吧?呃,用户表和角色表之间呢,它是一个多对多的关系,也就是这二者之间是一个多对多的关系,那么角色表和权限表之间呢,它又是一个多对多的关系,对吧。好,也就是说角色表和权限表之间呢,又是一个多对多的关系,所以说基本上我们所有的呃这个权限管理模块,它基本上都是这样的一个呃原理啊,基本上都是这样的一个原理,好那既然我们现在有了这几张表,以及反映他们之间关系的啊表以后呢,我们就可以根据这些表的结构呢,来新建一些Java病的类了,对吧,因为我们这个Java病呢,实际上它是呃要和我们的这个表结构呢,基本上呢,呃要做一个呃。对应对吧,基本上做一个对应,所以我们在的in点并里边呢,我们新建一个Java类,这个叫做什么呢?叫做user对吧,那么这个user呢,它就是和用户表来进行对应的,对吧?呃,实际上就是和用户表。
26:16
进行一定的对应啊,当然它不一定是完全对应啊,所以我们在这的话,我们就是private long ID对吧,主件ID好,那么private string username对吧?那么这个是用户名,那么private string password对吧?那么这个是密码,那么还有呢,除了用户名密码,当然我在这边我还可以给他写一个,呃,就是real name这样的一个对吧,这个呢叫做角色名对吧?当然你要注意就是在我的表里边对吧这个字段。
27:02
User表中没有好,然后我们现在我们有了这样的几个private字段以后呢,我们就可以给它创建一些呃,类似于空构造器这样的一些东西,对吧,我们创建一个空构造器,然后接下来的话呢,我们在创建一些呃什么呢?我们再给它生成一些get set。对,我们使用这个idea的功能来给它生成。对吧,当然你你还可以比方说把它的呃这个to string对吧,给他重写一下OK。呃,那么有同学就会想啊,说我这些功能对吧,像get center,像to string,我不是可以使用类似于longbo这样的,呃,插件对吧,或者说打一些注解对吧,我们logb里的at data这样的注解。呃,就可以完成这样的工作,那我们为什么不用longb,而选择自己去建立一些get呢?首先。
28:03
呃,那么在这里面的话呢,我第一点就是我们要写这个项目的时候呢,我们尽量少引入依赖,其次就是longbo它不同的版本,对吧,我们首先我们要明白说longb它的一个呃原理是什么,对吧?那么longb的原理实际上就是在我们编译Java代码的过程中,它自动对吧,在编译期。在编译的过程中,它帮你去插入一些Java代码,对吧?插入一些呃,下面类似于get set啊,构造器啊,To string这样的一些方法,那么longb帮助你自动插入的这些方法对不对?他插入了什么,你可能并没有办法说是完全的了解,如果你对这个依赖,他做了什么事情,你没有办法说彻底的理解或者说掌控的话,对不对?那么最好不要使用它。对吧,最好不要使用它,实际上就是我们看过之前有一些。
29:03
B的bug,呃,它可能就是来源于对这个longbo使用不当啊,因为我们都知道这个longbo呢,它有可能帮助你去插入一些类似于像呃Java里边的对吧,类里边的ES方法,还有像什么哈哈西code,它会帮你插入一些这样的一些代码。那么像equals判断。两个对象是否相等,或者哈希code的,呃,自动的插入给一个对象生成一个哈希code的这样的代码,那这个是有一些危险的,是有一些隐患的,也就是你并不知道它对吧,帮你注入的代码是什么,所以说我们这里面我们直接选择使用呃,Java的这样的一个语法,对吧?来明确把它写出来就好了,那这是第一点啊,那么第二点的话呢,就是在Java时期之后呀,他引入了一个叫做record的语法,对吧?呃,可能不一定是在Java时期引入的,可能是在14之后引入的,对吧?就是说他引入了一个这样的叫做记录语法对吧?那引入了这样一个记录语法,大家可以下去学习一下,我们后面我们也会用到这个记录语法,那你可以看到,呃,实际上我们有了这个记录语法的话呢,呃,其实用longbo的,对longbo的需求呢,基本上就很少了,对吧?好,我们现在我们已经新建了一个user这样的。
30:26
的一个类了,对吧,新建了一个U的这样一个类,然后接下来的话呢,我们要新建一个什么样的类呢?对不对啊,当然就是按照我们的表结构对吧?比如说在这里面我们再新建一个呃这个角色对吧,角色这样的一个并类,那么角色这样一个并类的话呢,它呃,当然呃需要和表呢进行一定的对应对吧?我们这里面的话呢,它是和角色表进行。呃,一定的对应,好,那么private long ID private,对吧,String rule name,那么这个是角色名对吧?这个我们表里面是有的啊,当然这个是主键,呃,我们表里面肯定也是有的,好,我们有了这两个字段之后呢?啊,那这个就比较简单了,我们直接还是按照我们按照之前的方法对吧?呃,生成一个空构造器。
31:23
然后呢,我们再给它,呃就是说生成一些get center对吧?生成一些get center,呃当然实际上就是现在的Java的写法对吧?我们呃其实并没有必要说是你一定要遵循呃一些约定俗成的做法对吧?比如说我这里边我这两个字段都是private,呃然后呢,我再加入一些get set,那我可不可以把这些直接把这两个字段变成public,然后我就不需要写呢?其实是完全可以的,其实完全可以的,你并不一定说是呃一定要按照一些陈旧的观念去呃写呃这样一大堆的样板代码,对吧?呃,这个其实是没有必要的,呃当然我们这里面的话呢,我们就是还是按照。
32:12
约定俗成的一些规矩,对吧?我们来这样写,实际上你把他俩写成public,然后呃把这些get center都去掉对吧,直接对它的字段进行修改,呃问题也不是特别大对吧?问题也不是特别大,因为毕竟Java它呃它不算是一个纯正的这样的函数式编程语言啊啊我们现在呃,我们有了role以后呢,我们在当然我们还要新建一个类,叫做permission,对吧,叫做permision啊permission然后在这的话呢,这个类的话呢,当然呃也是需要和我们的呃就是说表进行对应的对吧,当然它可能还有一些字段并不一定和表能对应的上。对吧,和权限表进行一定的对应,对吧,好,然后接下来的话呢,我们在这儿。
33:03
我们。把它的这个字段呢,都给它填进来,首先第一个是主键,主键ID,那么第二个的话呢,是parent ID对吧?那这个就是我们的上级权限的ID对吧?那么第三个是什么呢?第三个是permission name权限名称对吧?第四个的话是什么呢?第四个是我们的permission code对吧?那么这个是权限的编码实际上是什么呀?它实际上是前端。组建URL的名字对吧,这样我们就可以通过呃这个编码呢,来控制对前端的一个呃,就是说控制前端它哪些组件的URL对吧?你可以访问对吧?呃我们后面我们再写这个代码的时候呢,可以带着大家呃稍微看一下这个前端的呃一些代码对吧?当然我们主要还是写后端的代码好,那除了这个以外呢,我们还有就是一些。
34:18
呃,表里边并没有的字段,比方说level,那么这个level表示什么意思呢?表示对吧,权限的层级啊,因为我们都知道,实际上它权限是一个树形结构。对吧,那么树形结构的话呢,你这个节点它到底这个数里边的节点,它到底处于第几层对不对?所以我们在这的话呢,我们需要有一个字段呢,那来表示这个权限的层级,好,那还有的话呢,就是我们呃,需要有一个这个列表对吧?那么这个列表里边呢,它的泛型是permission对吧?然后呢,我这个呢叫做children,那这个children是什么意思呢?表示。
35:05
对吧,权限的子权限组成的列表啊,因为你某一个权限它有可能是有子权限的,对不对?比如说我们这个里边权限管理,也就是说ID为二的这个权限呢,它是有两个子权限对吧?那么这两个子权限它组成一个列表的话呢,就是呃,它的孩子节点对吧?所以我们这里面我们需要有一个children准这样的一个呃字段啊,然后呢,我们还有一个呢,就是叫做布尔值select等于false对吧?那么这个实际上是供前端使用,也就是说你这个权限是否被选中对吧?权限是否被选中,当然我们后面我们在写代码的时候,呃,我们去呃写这个后端代码的时候呢,你就知道知道这个c select字段它到底是。
36:01
啊,做什么用的对吧,好。啊,当然我们还是先创建一个空构造器。构造函数,然后呢,还是来。给它生成一些,呃,就是说构造函数啊,对吧,生成一些这个啊,不是构造函数,我们给它生成一些,呃,Get set吧,这个字段比较多,对吧?啊,当然这个音为有idea的支持,其实也无所谓是吧,也无所谓好啊,然后呢,当然你在这的话呢,你还可以把two string给它重写一下,对吧?好,通过向导生成一个two string,那这也是没有问题的,OK,那接下来的话呢,我们现在已经把和权限表一一对应的这个扎并per permission这个类呢,呃,我们都已经写好了,那么除了这三个类以外呢,我们还要写一些什么样的类呢?我们来看一下,那么就是。
37:00
啊,除了这三个类以外呢,我们还需要写一个,比如说什么呢?比如说user rule,对吧?那么这个类主要用来干嘛呢?我们其实前面已经讲过了,对吧?因为用户和关系,呃,用户角色呢,它是有一定的关系的,对吧,它可能是一个多对多的关系,所以说我们是这个并类呢,就是和用户角色表进行对应对吧?和用户角色表进行对应,好,那么它有几个字段呢?当然我在这儿我就两个字段吧,一个是U的ID,那么这个是用户ID,对吧,用户的主件,那么第二个的话呢,是叫做roll ID,那么这个就是角色的角色ID,啊,我有这两个ID呢,其实就可以了,每条数据对吧?因为我们都知道在用户角色表里边呢,呃,每一行数据,它都反映了一个用户和一个角色之间的关系,对吧?好,然后在这的话呢,我们还是创建一。
38:01
一个呃,就当时我们还写样板代码,创建一个空构造器,然后创建一些,呃,这个get对吧。创建一个好。OK,那有了这个之后的话呢,呃,我们还需要写什么呢?对不对?大家应该也已经想到了,那就是啊,我们还有角色和权限之间的,呃,这个反映他们关系的表对吧?还没有Java病来对应对吧?所以说在这的话呢,我们再写一个RO permi这样的一个类,对吧?那么这个类里边有几个字段呢?呃,当然第一个就是角色ID对吧?呃,那么第二个呢,当然就是permission ids。然后在这的话呢,我给他一个string这样的一个类型吧,对吧,我们不用浪,那么这个是什么呢?这个就是权限ID。
39:03
的列表字符串,因为你一个角色它可能有多个权限,对吧,可能有多个权限,所以我们在这的话呢,我们用个string来反映他们之间的关系,好,我们在这里边我们生成一个空构造器,然后呢给它创建一些。呃,这个get对吧,创建就get OK,好,那这样的话呢,Role permission我们就已经写完了,呃,实际上和表对应的一些,呃扎拉并类呢,其实我们已经呃写的差不多了,对吧?我们已经写的差多了,那么接下来的话呢,呃,我们还需要一个呃扎va病这样一个类叫做什么呢?叫做user logging for,也就是我们用户的一个登录信息,呃,它也需要一个Java病,对吧?User logging info这样的一个类,呃,那么这个类的话呢,我们有几个字段呢?首先我们的第一个字段。
40:03
当然就是我们的用户名对吧?Private string username用户名private。Set string,然后在这的话呢,是一个等于new哈希set,那么有同学就会想到说这个是什么呀,那这个就是用户可以仿。问的对吧,路由组成的集合。也就是说你一个用户,他可以访问的路由是由这个用户的权限所决定的,对吧,由他的角色所拥有的权限所决定的,比方说你系统管理员,你就可以访问呃,所有的呃这个URL对吧,所有的路由,那么普通管理员,普通用户的话呢,他只能访问呃,类似于像数据统计啊之类这样的一些,呃,极少数的一些路由,对吧?而这个呢,就是我们用户登录以后,我返回给他的,对吧,就是说用户可以访问的路由组成的集合,好呃,当然在这的话,我们还是按照之前写样板代码的方法。
41:23
来生成一个空构造器,然后再生成一些呃,这种无聊的get,对吧,无聊的get set好。OK,确定。啊,当然在这的话呢,你也可以写to string啊什么之类的,对吧,那这样的话呢,我们呃,权限管用户权限管理模块的并。呃,这个包呢,我们就写完了,也就是说它的这个渣病类呢,我们都创建完了。
我来说两句