Academy LMS – 课程学习管理系统项目分析
Academy LMS – 课程学习管理系统项目分析
项目概述
Academy LMS 是一个基于 CodeIgniter 框架的在线学习管理系统(LMS),专为创建和销售在线课程而设计。系统支持视频课程、直播课程、课程市场、多讲师系统等功能。
- 框架: CodeIgniter 3.x
- PHP 版本: 5.3.7+
- 数据库: MySQL
- 前端: Bootstrap + jQuery
- 版本: v7.1 (最新更新包)
—
核心功能
1. 课程管理
- 课程创建: 支持视频课程、直播课程
- 课程设置: 课程信息、价格、分类
- 课程内容: 章节、课时、附件
- 课程预览: 免费预览功能
- 课程审核: 课程发布审核
2. 视频课程
- 视频上传: 本地视频、云存储
- 视频播放: HTML5 视频播放器
- 视频保护: 视频防盗链
- 多分辨率: 支持多种清晰度
- 字幕支持: 视频字幕
3. 直播课程
- 直播集成: Zoom、Jitsi 等
- 直播排期: 课程时间表
- 直播录制: 自动录制保存
- 互动功能: 聊天、问答
4. 用户系统
- 学生注册: 学生账户管理
- 讲师注册: 讲师申请、审核
- 用户角色: 管理员、讲师、学生
- 社交登录: Google、Facebook 等
- JWT 认证: API 认证
5. 课程市场
- 课程展示: 课程列表、搜索
- 课程分类: 多级分类
- 课程筛选: 价格、评分、语言
- 课程推荐: 相关课程
- 课程收藏: 愿望清单
6. 购物车与支付
- 购物车: 多课程购买
- 支付网关: PayPal、Stripe、Razorpay 等
- 优惠券: 折扣码系统
- 发票生成: 购买凭证
- 退款处理: 退款管理
7. 学习管理
- 课程进度: 学习进度跟踪
- 证书生成: 完成证书
- 笔记功能: 课程笔记
- 问答系统: 课程问答
- 评价系统: 课程评分、评论
8. 讲师功能
- 讲师面板: 讲师后台
- 课程统计: 销售统计
- 收入管理: 收入提现
- 学生管理: 学生列表
- 消息系统: 与学生沟通
9. 营销工具
- 优惠券: 限时优惠
- 推荐奖励: 推广佣金
- 邮件营销: 邮件通知
- SEO优化: 搜索引擎优化
- 社交分享: 课程分享
10. 管理功能
- 仪表盘: 数据统计
- 用户管理: 用户列表、编辑
- 课程管理: 课程审核、管理
- 订单管理: 订单列表
- 财务管理: 收入统计
- 设置管理: 系统配置
11. 多语言支持
- 语言管理: 多语言切换
- 翻译系统: 语言包管理
- RTL支持: 从右到左语言
12. 主题系统
- 前端主题: 可切换主题
- 页面构建器: 首页构建器
- 自定义页面: 页面管理
- 菜单管理: 导航菜单
13. 移动端支持
- 响应式设计: 适配移动设备
- PWA支持: 渐进式Web应用
- 移动应用: API 支持
14. API 系统
- REST API: 完整 API 接口
- API 文档: 接口文档
- API 认证: JWT 认证
- 讲师 API: 讲师专用接口
—
项目结构
Academy-LMS/
├── application/ # 应用代码
│ ├── config/ # 配置文件
│ │ ├── autoload.php # 自动加载
│ │ ├── config.php # 主配置
│ │ ├── database.php # 数据库配置
│ │ ├── routes.php # 路由配置
│ │ └── ...
│ ├── controllers/ # 控制器
│ │ ├── Admin.php # 后台管理
│ │ ├── Home.php # 首页
│ │ ├── User.php # 用户
│ │ ├── Payment.php # 支付
│ │ ├── Blog.php # 博客
│ │ ├── Api.php # API
│ │ ├── Api_instructor.php # 讲师API
│ │ ├── Login.php # 登录
│ │ ├── Sign_up.php # 注册
│ │ └── ...
│ ├── models/ # 模型
│ │ ├── Crud_model.php # CRUD基础模型
│ │ ├── User_model.php # 用户模型
│ │ ├── Payment_model.php # 支付模型
│ │ ├── Video_model.php # 视频模型
│ │ ├── Api_model.php # API模型
│ │ ├── Email_model.php # 邮件模型
│ │ └── ...
│ ├── views/ # 视图
│ │ ├── backend/ # 后台视图
│ │ │ ├── admin/ # 管理面板
│ │ │ ├── instructor/ # 讲师面板
│ │ │ └── user/ # 用户面板
│ │ └── frontend/ # 前台视图
│ │ └── [theme]/ # 主题目录
│ ├── helpers/ # 辅助函数
│ ├── libraries/ # 类库
│ ├── hooks/ # 钩子
│ └── language/ # 语言文件
├── assets/ # 静态资源
│ ├── backend/ # 后台资源
│ ├── frontend/ # 前台资源
│ └── global/ # 全局资源
├── system/ # CodeIgniter 系统
├── themes/ # 主题目录
├── uploads/ # 上传文件
├── application/logs/ # 日志文件
├── index.php # 入口文件
└── ...
—
核心模块详解
1. 控制器层 (Controllers)
Home 控制器
class Home extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->database();
$this->load->library('session');
$this->load->model('user_model');
}
// 首页
public function home() {
$home = $this->db->where('status', 1)
->get('home_pages')
->row_array();
$page_data['home'] = $home;
$page_data['page_name'] = $page_name;
$this->load->view('frontend/' . get_frontend_settings('theme') . '/index', $page_data);
}
// 课程列表
public function courses() {
// 课程筛选逻辑
// 分页逻辑
// 渲染视图
}
// 课程详情
public function course($slug) {
$course = $this->crud_model->get_course_by_slug($slug);
$page_data['course'] = $course;
$this->load->view('frontend/course_page', $page_data);
}
// 购物车
public function shopping_cart() {
$page_data['cart_items'] = $this->session->userdata('cart_items');
$this->load->view('frontend/shopping_cart', $page_data);
}
}
Admin 控制器
后台管理控制器,处理所有管理功能。
User 控制器
用户相关操作:个人资料、我的课程、设置等。
Payment 控制器
支付处理:支付网关集成、订单处理。
Api 控制器
API 接口:移动端、第三方集成。
2. 模型层 (Models)
Crud_model
基础 CRUD 操作:
class Crud_model extends CI_Model {
// 添加数据
public function add($table, $data) {
$this->db->insert($table, $data);
return $this->db->insert_id();
}
// 更新数据
public function update($table, $data, $where) {
$this->db->where($where);
return $this->db->update($table, $data);
}
// 删除数据
public function delete($table, $where) {
$this->db->where($where);
return $this->db->delete($table);
}
// 获取课程
public function get_course_by_slug($slug) {
return $this->db->get_where('course', array('slug' => $slug))->row_array();
}
}
User_model
用户相关操作:
class User_model extends CI_Model {
// 用户注册
public function register($data) {
$data['password'] = sha1($data['password']);
$this->db->insert('users', $data);
return $this->db->insert_id();
}
// 用户登录
public function login($email, $password) {
$query = $this->db->get_where('users', array(
'email' => $email,
'password' => sha1($password)
));
return $query->row_array();
}
// 检查会话
public function check_session_data() {
// 会话验证逻辑
}
}
Payment_model
支付相关操作:
class Payment_model extends CI_Model {
// 创建订单
public function create_order($data) {
$this->db->insert('orders', $data);
return $this->db->insert_id();
}
// 处理支付
public function process_payment($gateway, $amount, $order_id) {
switch($gateway) {
case 'paypal':
return $this->paypal_payment($amount, $order_id);
case 'stripe':
return $this->stripe_payment($amount, $order_id);
}
}
}
3. 视图层 (Views)
前端视图
- index.php: 首页
- course_page.php: 课程详情
- courses.php: 课程列表
- shopping_cart.php: 购物车
- login.php: 登录页
- sign_up.php: 注册页
后台视图
- dashboard.php: 仪表盘
- course_create.php: 创建课程
- user_list.php: 用户列表
- order_list.php: 订单列表
- settings.php: 系统设置
4. 配置系统
数据库配置
// application/config/database.php
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'academy_lms',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
路由配置
// application/config/routes.php
$route['default_controller'] = 'home';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
// 自定义路由 $route[‘course/(:any)’] = ‘home/course/$1’; $route[‘courses’] = ‘home/courses’; $route[‘cart’] = ‘home/shopping_cart’;
—
核心业务逻辑
1. 课程购买流程
浏览课程 → 加入购物车 → 查看购物车 → 结算 → 选择支付方式 → 支付 → 订单确认 → 开始学习
2. 课程创建流程
讲师登录 → 进入讲师面板 → 创建课程 → 填写课程信息 → 上传视频 → 设置价格 → 提交审核 → 发布课程
3. 学习流程
学生登录 → 我的课程 → 选择课程 → 观看视频 → 完成课时 → 获得证书
4. 支付流程
创建订单 → 选择支付网关 → 跳转支付 → 支付回调 → 更新订单状态 → 开通课程访问权限
—
核心代码示例
课程购买
public function buy_course($course_id) {
// 检查用户登录
if (!$this->session->userdata('user_id')) {
redirect('login');
}
// 获取课程信息
$course = $this->crud_model->get_course($course_id);
// 检查是否已购买
if ($this->crud_model->is_course_purchased($course_id)) {
$this->session->set_flashdata('error', 'You already purchased this course');
redirect('home/course/' . $course['slug']);
}
// 添加到购物车
$cart_items = $this->session->userdata('cart_items');
if (!in_array($course_id, $cart_items)) {
array_push($cart_items, $course_id);
$this->session->set_userdata('cart_items', $cart_items);
}
redirect('home/shopping_cart');
}
视频播放权限检查
public function watch_lesson($lesson_id) {
$lesson = $this->crud_model->get_lesson($lesson_id);
$course_id = $lesson['course_id'];
// 检查课程访问权限
if (!$this->crud_model->is_course_purchased($course_id) &&
!$this->crud_model->is_free_lesson($lesson_id)) {
redirect('home/course/' . $course_id);
}
// 更新学习进度
$this->crud_model->update_lesson_progress($lesson_id);
// 显示视频播放器
$page_data['lesson'] = $lesson;
$this->load->view('frontend/lesson_player', $page_data);
}
支付回调处理
public function payment_success($gateway) {
// 验证支付
$payment_data = $this->input->post();
if ($this->payment_model->verify_payment($gateway, $payment_data)) {
// 更新订单状态
$order_id = $payment_data['order_id'];
$this->payment_model->update_order_status($order_id, 'completed');
// 开通课程访问权限
$this->crud_model->enroll_student($order_id);
// 发送确认邮件
$this->email_model->send_payment_success_email($order_id);
$this->session->set_flashdata('success', 'Payment successful!');
redirect('home/my_courses');
}
}
—
技术栈
后端
- CodeIgniter 3.x: PHP 框架
- PHP 5.3.7+: 编程语言
- MySQL: 数据库
- MVC 架构: 模型-视图-控制器
前端
- Bootstrap: CSS 框架
- jQuery: JavaScript 库
- HTML5: 视频播放
- CSS3: 样式
第三方服务
- PayPal: 支付网关
- Stripe: 支付网关
- Razorpay: 支付网关
- Zoom: 直播集成
- AWS S3: 云存储
- Google/Facebook: 社交登录
—
数据库架构
核心表
- users: 用户表
- course: 课程表
- course_sections: 课程章节
- lessons: 课时表
- orders: 订单表
- order_items: 订单项目
- enrollments: 报名记录
- reviews: 评价表
- categories: 分类表
- wishlists: 愿望清单
- coupons: 优惠券表
- payouts: 讲师提现
- blogs: 博客表
- pages: 页面表
- settings: 设置表
—
总结
Academy LMS 是一个功能完整的在线学习管理系统:
- 功能全面: 视频课程、直播、课程市场
- 多角色: 管理员、讲师、学生
- 支付集成: 多种支付网关
- 营销工具: 优惠券、推荐奖励
- 移动友好: 响应式设计
- 可扩展: API 支持、主题系统
- 成熟稳定: 长期维护、持续更新
适合创建在线教育平台、企业内部培训系统、个人知识付费等场景。