4权限管理+会员管理+专业和课程模块+购买课程

在线教育平台

1. 权限管理

1.1.1 后台首页使用模型关系输出当前登录管理员的角色名称

 

 

效果:

 

 

1.1 输出当前管理员的权限菜单

控制器:

 

 

视图:

 

 

效果:

 

 

1.2 使用中间件实现管理员权限的防FQ功能

创建一个checkAdminAuth中间件,用于检测当前管理员是否拥有操作对应控制器方法的权限。

命令行:

 

 

 

把中间件注册到项目中

 

 

在路由中使用中间件

 

 

中间件检测当前管理员的权限

 

 

2. 会员管理

我们直接参考管理员的CURD来实现

2.1 创建会员的资源控制器

 

 

把Admin\AdminController的代码全部复制过来

修改一下

  1. AdminController” 改成“MemberController”
  2. 去掉use App\Models\Role;
  3. App\Models\Admin” 改成 “App\Models\Member
  4. “管理员”全部替换成“会员”
  5. “admin.admin”改成“admin.member”
  6. Admin $admin”改成“Member $member”
  7. unique:admin”改成“unique:member
  8. $admin”改成“$member”
  9. 去掉->with('role')
  10. 去掉, Role $role
  11. 去掉$data['roleList'] = $role->get();
  12. adminInfo”改成“memberInfo”
  13. “role_id” 改成“type_id”

2.2 创建会员的相关路由

 

 

2.3 创建会员的模型

2.3.1 数据迁移

 

 

代码:

 

 

2.3.1.1 执行数据迁移

 

 

效果:

 

 

2.3.2 创建模型

 

 

把管理员Admin模型的代码,复制一份给会员Member模型,代码:

 

 

2.3.3 数据填充种子

 

 

代码:

 

 

执行数据填充种子

 

 

2.4 显示会员列表

把管理员的列表页视图文件复制到会员目录中

 

 

修改如下

  1. “管理员”改成“会员”
  2. “admin/admin”修改成“admin/member”

 

3. 专业和课程模块

3.1 专业分类

3.1.1 创建资源控制器和资源路由

 

 

把Admin\AdminController的代码复制给专业分类Admin\ProfessionCateController,代码:

修改一下

  1. AdminController” 改成“ProfessionCateController”
  2. 去掉use App\Models\Role;
  3. App\Models\Admin” 改成 “App\Models\Member
  4. “管理员”全部替换成“专业分类”
  5. “admin.admin”改成“admin.professioncate”
  6. Admin $admin”改成“ProfessionCate $professioncate”
  7. unique:admin”改成“unique:professioncate”
  8. $admin”改成“$professioncate”
  9. 去掉->with('role')
  10. 去掉, Role $role
  11. 去掉$data['roleList'] = $role->get();
  12. adminInfo”改成“professioncateInfo”
  13. 去掉“role_id”
  14. “username”改成“cate_name”

3.1.2 创建专业分类的相关路由

 

 

3.1.3 创建模型和数据表

3.1.3.1 使用数据迁移创建专业课程模块的数据表

 

 

4个数据表的数据迁移代码:

 

 

 

3.1.3.2 执行数据迁移

 

 

效果:

 

 

3.1.4 展示专业分类列表

因为我们在创建权限的时候,专业分类的地址名为 profession_cate,后面我们创建专业份额里的路由地址为 professioncate,所以路由出问题了。因此我们需要修改权限的。

数据填充种子文件:

 

 

重新执行权限的数据填充种子文件。

 

 

访问后台的菜单显示效果如下:

 

 

 

接下来,我们把管理员的列表页视图复制到专业分类的视图目录下

 

 

再次访问专业分类列表,显示效果如下;

 

 

接下来,修改专业分类的列表页视图,代码。

修改如下:

  1. “管理员”改成“专业分类”
  2. admin/admin”改成“admin/professioncate”
  3. 修改表格的表头

   

 

  1. “admin_”改成“professioncate_”
  2. 修改datatable的排序字段列

   

 

完成上面的修改工作以后,访问专业分类的列表页,效果:

 

 

表示我们并没有创建模型。所以我们需要专业分类的模型。

 

 

代码:

直接复制Admin管理员模型模型的代码到专业分类的模型中。

 

 

创建了模型以后,继续访问专业分类,报错如下:

 

 

通过错误显示,找到ProfessionCateController的195行:

 

 

再次,访问:

 

 

没有报错,但是没有数据,所以我们使用数据填充种子填充数据。

3.1.5 创建数据填充种子文件

 

 

代码:

 

 

执行数据填充中心文件

 

 

再次访问,专业分类:

 

 

3.1.6 专业分类的添加

访问专业分类的页面,报错如下:

 

 

我们找到页面对应的控制器Admin\ProfessionCateController@create方法中,参数里面引入了Role模型,但是我们不需要,所以去掉。

 

 

修改如下:

 

 

再次访问添加专业分类,错误如下:

 

 

把管理员的添加视图复制一份,粘贴到 专业分类的视图目录中。

 

 

再次访问添加专业分类页面,错误如下:

 

 

视图中,使用了未定义的变量 roleList,所以我们需要调整添加视图页面的代码:

修改如下:

  1. “管理员”改成“专业分类”
  2. admin/admin”改为“admin/professioncate
  3. “avatar”改为“logo
  4. 修改表单的name值为professioncate表的字段名
  5. “form-admin”改成“form-professioncate”

代码:

 

 

效果:

 

 

3.1.7 控制器接收数据并保存

代码:

 

 

效果:

 

 

我们可以把列表页的中间封面图改成图片显示。

 

 

效果:

 

 

3.2 专业管理

3.2.1 创建资源控制器和资源路由

命令行:

 

 

 代码:

直接把管理员的控制器代码复制过来。修改如下:

  1. AdminController” 改成“ProfessionController”
  2. 去掉use App\Models\Role;
  3. App\Models\Admin” 改成 “App\Models\Profession”
  4. “管理员”全部替换成“专业”
  5. “admin.admin”改成“admin.profession”
  6. Admin $admin”改成“Profession $profession”
  7. unique:admin”改成“unique:profession”
  8. $admin”改成“$profession”
  9. 去掉->with('role')
  10. 去掉, Role $role
  11. 去掉$data['roleList'] = $role->get();
  12. adminInfo”改成“professionInfo”
  13. 去掉“role_id”
  14. “username”改成“cate_name”

3.2.2 修改完成以后,创建专业相关的路由

路由代码:

 

 

3.2.3 创建专业模型

我们之前已经使用数据迁移把专业表创建好了,所以接下来我们只需要创建对应的专业模型即可。

命令行:

 

 

代码:

直接把管理员的模型代码复制过来。

 纠正, 我们的专业和专业分类是没有登录功能的,所以我们的模型不需要开启支持Auth类的使用。

模型代码:

 

3.2.4 显示专业列表

访问专业列表,错误如下

 

 

表示找到列表页的视图,所以我们把管理员的列表视图复制到专业的视图目录中。

 

 

访问效果:

 

 

3.2.4.1 修改专业列表的视图

修改如下:

  1. “管理员”改成“专业”
  2. admin/admin”改成“admin/profession”
  3. 修改表格的表头

   

 

  1. “admin_”改成“profession_”
  2. 修改datatable的排序字段列

   

 

再次访问专业列表,错误如下;

 

 

上面表示在Admin\ProfessionController@ajax_list方法中194行报错。

修改如下;

 

 

修改完成以后,访问专业列表效果如下:

 

 

上面表示我们并没有专业的数据,所以我们使用数据填充种子,生成测试数据。

3.2.4.2 创建数据填充种子文件

 

 

代码:

 

 

执行数据填充种子文件

 

 

再次访问专业列表,效果如下:

 

 

调整表格

 

 

效果:

 

 

3.2.5 添加专业

访问添加专业页面,报错如下:

 

 

修改Admin\ProfessionController@create方法:

Role $role”删除

代码:

 

 

再次访问添加专业页面:

 

 

把管理员AdminController的添加页面视图复制专业视图目录中

 

 

再次访问添加专业的页面,报错:

 

 

修改添加专业的视图:

修改如下:

  1. “管理员”改成“专业”
  2. admin/admin”改为“admin/profession
  3. 修改表单的name值为profession表的字段名
  4. “form-admin”改成“form-profession”

代码:

 

 

效果:

 

 

 

3.2.5.1 点击专业分类的输入框,弹出一个选择专业的页面,供我们进行遴选。

分析:

   1. 点击弹出新的layer页面

   2. 在新弹出页面中,可以供管理员选择对应的专业分类,在对应的专业分类中,可以输出对应分类信息

   3. 点击对应行的分类信息以后,就会自动把分类名称,显示添加专业的表单中。

3.2.5.1.1 点击弹出新的layer页面

代码:

 

 

效果:

 

 

提示权限不足,权限不足的原因是因为我们之前做了权限的防FQ,所以我们把这个页面设置一个路由,并在对应控制器ProfessionController中创建一个方法select_cate。

路由代码:

 

 

控制器方法:

 

 

这里我们可以把专业分类的列表页面,复制一份到专业视图目录中

 

 

修改选择专业分类的视图代码:

 

 

 

效果:

 

 

接下来,因为我们最终保存到数据库中的是分类ID,所以我们需要调整 添加专业的表单页面。

添加专业的视图代码:

 

 

选择专业分类视图代码:

 

 

 

效果:

 

 

优化细节,当管理员点选了专业分类以后,自动关闭当前弹窗。

 

 

 

3.2.5.2 点击授课老师的输入框,弹出一个选择老师的页面,供我们进行遴选。

分析:

   1. 点击弹出新的layer页面

   2. 在新弹出页面中,可以供管理员选择对应的老师

   3. 点击对应行的老师信息以后,就会自动把老师名称,显示到添加专业的表单中。

3.2.5.2.1 修改添加专业的表单

 

 

3.2.5.2.2 显示选择老师的页面

 

 

3.2.5.2.3 在ProfessionController创建一个选择老师的方法

 

 

接下来,会员列表的视图文件复制一份专业的视图目录中。

 

 

效果:

 

 

上面这里弹出窗口里面,是会员列表,但是里面不仅显示了老师的信息,还有学生的信息。所以,我们可以修改下MemberController中的ajax_list方法,允许查询会员信息的时候,可以根据条件只显示老师的。

选择老师的视图

 

 

Admin\MemberController控制器

 

 

效果:

 

 

接下来,我们继续调整老师的列表信息

 

 

 

 

 

 

最终效果:

 

 

 

 

 

3.2.5.3 在控制器接收添加的专业数据

控制器,代码:

 

 

效果:

 

 

 

3.2.6 完善细节1:显示老师的名字,而不是编号

控制器:

 

 

视图:

 

 

 

 

4. 购买课程

  1. 显示前台首页的数据[ 显示专业信息 ]
  2. 点击专业信息跳转专业详情
  3. 点击“立即报名”,生成购买专业的确认下单
  4. 点击“提交订单”,生成订单信息

   验证用户是否登录,如果没有登录,则直接跳转到登录页面

   登录则生成订单信息,进入立即支付页面

  1. 点击立即支付,显示微信支付的二维码
  2. 当用户通过手机进行微信支付以后

   我们需要实时监控,用户是否已经支付成功了。

   如果支付成功,则关闭二维码,并进行页面跳转,跳转到会员中心。

4.1 显示前台首页的数据[ 显示专业信息 ]

4.1.1 创建首页控制器

命令行:

 

 

代码:

 

 

4.1.2 声明路由地址

 

 

接下来,把首页和专业详情页面全部复制到项目中,Home\IndexController的视图目录中。

 

 

4.1.3 加载项目前台的静态资源

 

 

访问前台首页,效果如下:

 

 

调整首页视图:

  1. img="/img/” 修改 img="{{ asset('home') }}/img/
  2. url('/img/”  修改 “url('{{ asset('home') }}/img/
  3. href="/css” 修改 “href="{{ asset('home') }}/css
  4. src="/js/” 修改 “src="{{ asset('home') }}/js/
  5. img src="/img” 修改 “img src="{{ asset('home') }}/img

效果:

 

 

4.2 显示专业信息

 

 

我们这里显示两层,所以把中间的内容去掉。

 

 

`效果;

 

 

4.3 控制器查询所有的专业分类,和所有的专业信息

控制器代码:

 

 

视图,代码:

显示所有的专业分类信息

 

 

默认显示所有的专业信息

因为老师是需要输出老师的名称的,所以我们需要在显示数据之前,需要把老师的信息查询出来。

控制器,代码:

 

 

视图,代码:

 

 

效果:

 

 

posted @ 2017-09-24 09:19  奋斗的黑蜗牛1号  阅读(300)  评论(0)    收藏  举报