开源在线教育点播系统。

Overview

MeEdu - 开源的在线视频点播系统。

StyleCI Build Status

安装方式

FAQ

收费插件

插件 插件 插件
问答模块 试题插件 团购
秒杀 阿里云HLS加密播放 腾讯云HLS加密播放
学习路径 图文收费 电子书模块

鸣谢

感谢下面小伙伴提供支付宝和微信相关支付账号(排名不分前后):

昵称
Baiyuetribe https://github.com/Baiyuetribe
逸企邦 https://easeco.cn
Aunger https://www.aunwen.com
Comments
  • MeEdu任意文件读取漏洞

    MeEdu任意文件读取漏洞

    image

    \app\Http\Controllers\Backend\Api\V1\UploadController.php

    public function imageUpload(Request $request)
        {
            $url = $request->input('url');
            if (!$url) {
                return $this->error('请输入图片地址');
            }
            $extension = '';
            if (preg_match('/\.png/i', $url)) {
                $extension = 'png';
            } elseif (preg_match('/\.jpg/i', $url)) {
                $extension = 'jpg';
            } elseif (preg_match('/\.gif/i', $url)) {
                $extension = 'gif';
            } elseif (preg_match('/\.jpeg/i', $url)) {
                $extension = 'jpeg';
            }
            if (!$extension) {
                return $this->error('无法检测图片格式');
            }
    
            try {
                // 将图片保存到本地临时文件
                $content = file_get_contents($url);
                $tmpPath = config('meedu.upload.image.path') . '/' . Str::random(32) . '.' . $extension;
    
                // 保存到storage
                $disk = config('meedu.upload.image.disk');
                Storage::disk($disk)->put($tmpPath, $content);
                $url = url(Storage::disk($disk)->url($tmpPath));
    
                return $this->successData([
                    'path' => $tmpPath,
                    'url' => $url,
                ]);
            } catch (\Exception $e) {
                return $this->error($e->getMessage());
            }
        }
    

    读取一个url,然后保存文件。后缀判断逻辑错误,仅判断了包含这几个后缀,应该判断为以这几个后缀结尾。 payload: {"url":"file:///www\/wwwroot\/demo.meedu.vip/.png/../.env"} image image

    opened by plzmyy 5
  • 编辑管理员资料的bug

    编辑管理员资料的bug

    文件: /app/Http/Requests/Backend/Administrator/AdministratorRequest.php

       public function filldata()
        {
            $data = ['name' => $this->input('name', '')];
            $this->input('password') && $data['password'] = bcrypt($this->input('password'));
            if ($this->isMethod('post')) {
                $data['email'] = $this->input('email');
            }
            return $data;
        }
    

    如果编辑管理员资料的时候不填密码, 那么则会吧此管理员的密码值为空。 问题代码:$this->input('password') && $data['password'] = bcrypt($this->input('password'));

    1. 修改密码和修改用户资料的功能分开。
    2. 在此处过过滤,密码值为空则 unsert($data['password'])
    opened by anziguoer 5
  • 一个人能出的课程有限,多个人协同出不同课程,立马就能丰富起来。

    一个人能出的课程有限,多个人协同出不同课程,立马就能丰富起来。

    有增加相关功能的想法么? 类似于添加讲师管理的功能吧。 协同者可以有自己的管理账号,自己添加课程,看到自己的收益,全站订阅可以设置分成比例之类的。 如果本身主机性能一般,能通过七牛云之类的云视频平台来做视频存放就更爽了。 最近想和朋友一起做硬件课程来着,本来想自己学Laravel来弄个试试,没想到搜到你的项目了。

    duplicate 
    opened by cj01036 5
  • 使用阿里云的邮件服务,群发邮件meedu有bug

    使用阿里云的邮件服务,群发邮件meedu有bug

    meedu/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php

    这个文件的normalizeMailboxes 函数,foreach ($mailboxes as $key => $value)执行的时候,$key如果是数据库里的值,会直接用整条json作为email的addr,从而导致最后发送邮件失败。

    log里我打印了信息:

    [2019-03-28 11:03:40] local.INFO: eaddr valueExample [2019-03-28 11:03:40] local.INFO: eaddr:[email protected] [2019-03-28 11:03:40] local.INFO: eaddr value [2019-03-28 11:03:40] local.INFO: eaddr:{"id":1,"email":"[email protected]","created_at":"2019-03-22 21:00:57","updated_at":"2019-03-22 21:00:57"} [2019-03-28 11:03:40] local.ERROR: Address in mailbox given [{"id":1,"email":"[email protected]","created_at":"2019-03-22 21:00:57","updated_at":"2019-03-22 21:00:57"}] does not comply with R FC 2822, 3.6.2. {"exception":"[object] (Swift_RfcComplianceException(code: 0): Address in mailbox given [{"id":1,"email":"[email protected]","created_at":"2019-03-22 21:00:57","upd ated_at":"2019-03-22 21:00:57"}] does not comply with RFC 2822, 3.6.2.

    opened by webbill 4
  • 后台菜单幻灯片bug

    后台菜单幻灯片bug

    向开源精神致敬~ 发现个小问题, 还望抽空指导一下...

    点击幻灯片菜单会报错, 错误码为 500, 但是没有错误提示.

    我追了一下源码, 发现没有定义 backend/api/v1/slider 路由, 而且我在app/Http/Controllers/Backend/Api/V1目录下也没有找到slider控制器, 请问是我安装的问题, 还是源码未完善?

    @Qsnh @git-zjx

    opened by LiPengFei1989 3
  • 4.7admin端验证码不显示

    4.7admin端验证码不显示

    浏览器console报错 Access to XMLHttpRequest at 'http://192.168.199.128/backend/api/v1/captcha/image' from origin 'http://192.168.199.128:88' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested 屏幕截图 2022-07-21 162345

    opened by AkiArasaki 2
  • 备案链接指向URL地址不能访问

    备案链接指向URL地址不能访问

    测试网站 :https://vip.english.thingswell.cn/

    备案号指向的URL应该是 https://beian.miit.gov.cn/ 实际URL是 http://www.beian.miit.gov.cn/

    按照备案要求,不合规。

    后台管理只有修改备案号,没有修改备案地址的功能。

    MeEdu版本 v3.7.2 后台版本 v3.7 内核版本 Laravel 6.18.42 PHP版本 7.2.33

    opened by urna 2
  • 阿里云视频点播选择华北2区域无法使用

    阿里云视频点播选择华北2区域无法使用

    meedu版本:v3.7.4

    alibabacloud/client扩展版本:v1.5.30

    环境:PHP7.2

    在测试的时候,阿里云视频点播的节点选择的是北京(cn-beijing),配置完成后,上传点播视频时报错

    [2021-04-17 08:37:59] local.ERROR: exception {"message":"InvalidStorage.NotFound: The storageLocation does not exist. RequestId: ****-9E1F-4367-821D-****GET \"http://vod.cn-shanghai.aliyuncs.com\" 403","code":403,"line":343,"params":{"title":"****.mp4","filename":"****.mp4"},"url":"http://*****/backend/api/v1/video/token/aliyun/create","method":"POST","ip":["******"]} {"request_id":"78RibM*****"}
    

    经过查询阿里云官方文档,在调用 CreateUploadVideo 方法时,需要设置 host(uri) 属性,具体实现如下:

    <?php
    use AlibabaCloud\Client\AlibabaCloud;
    use AlibabaCloud\Client\Exception\ClientException;
    use AlibabaCloud\Client\Exception\ServerException;
    
    // Download:https://github.com/aliyun/openapi-sdk-php
    // Usage:https://github.com/aliyun/openapi-sdk-php/blob/master/README.md
    
    AlibabaCloud::accessKeyClient('<accessKeyId>', '<accessSecret>')
                            ->regionId('cn-beijing')
                            ->asDefaultClient();
    
    try {
        $result = AlibabaCloud::rpc()
                              ->product('vod')
                              // ->scheme('https') // https | http
                              ->version('2017-03-21')
                              ->action('CreateUploadVideo')
                              ->method('POST')
                              ->host('vod.cn-beijing.aliyuncs.com')
                              ->options([
                                            'query' => [
                                              'Title' => "***.mp4",
                                              'FileName' => "***.mp4",
                                            ],
                                        ])
                              ->request();
        print_r($result->toArray());
    } catch (ClientException $e) {
        echo $e->getErrorMessage() . PHP_EOL;
    } catch (ServerException $e) {
        echo $e->getErrorMessage() . PHP_EOL;
    }
    
    

    经过整体排查,其他调用vod接口部分也存在相关问题,一并添加设置host方法即可。 建议增加配置项增加设置host属性的灵活性。

    opened by HuiguoRose 2
  • build(deps): bump laravel/framework from 6.18.42 to 6.20.12

    build(deps): bump laravel/framework from 6.18.42 to 6.20.12

    Bumps laravel/framework from 6.18.42 to 6.20.12.

    Release notes

    Sourced from laravel/framework's releases.

    v6.20.12

    v6.20.12 (2021-01-13)

    v6.20.11

    v6.20.11 (2021-01-13)

    Fixed

    • Limit expected bindings (#35865)

    v6.20.10

    v6.20.10 (2021-01-12)

    Added

    • Added new line to DetectsLostConnections (#35790)

    Fixed

    • Fixed error from missing null check on PHP 8 in Illuminate\Validation\Concerns\ValidatesAttributes::validateJson() (#35797)

    v6.20.9

    v6.20.9 (2021-01-05)

    Added

    v6.20.8

    v6.20.8 (2020-12-22)

    Fixed

    • Fixed Illuminate\Validation\Concerns\ValidatesAttributes::validateJson() for PHP8 (#35646)
    • Catch DecryptException with invalid X-XSRF-TOKEN in Illuminate\Foundation\Http\Middleware\VerifyCsrfToken (#35671)

    v6.20.7

    v6.20.7 (2020-12-08)

    Fixed

    • Backport for fix issue with polymorphic morphMaps with literal 0 (#35487)
    • Fixed mime validation for jpeg files (#35518)

    v6.20.6

    v6.20.6 (2020-12-01)

    Fixed

    • Backport Redis context option (#35370)
    • Fixed validating image/jpeg images after Symfony/Mime update (#35419)

    ... (truncated)

    Changelog

    Sourced from laravel/framework's changelog.

    v6.20.12 (2021-01-13)

    v6.20.11 (2021-01-13)

    Fixed

    • Limit expected bindings (#35865)

    v6.20.10 (2021-01-12)

    Added

    • Added new line to DetectsLostConnections (#35790)

    Fixed

    • Fixed error from missing null check on PHP 8 in Illuminate\Validation\Concerns\ValidatesAttributes::validateJson() (#35797)

    v6.20.9 (2021-01-05)

    Added

    v6.20.8 (2020-12-22)

    Fixed

    • Fixed Illuminate\Validation\Concerns\ValidatesAttributes::validateJson() for PHP8 (#35646)
    • Catch DecryptException with invalid X-XSRF-TOKEN in Illuminate\Foundation\Http\Middleware\VerifyCsrfToken (#35671)

    v6.20.7 (2020-12-08)

    Fixed

    • Backport for fix issue with polymorphic morphMaps with literal 0 (#35487)
    • Fixed mime validation for jpeg files (#35518)

    v6.20.6 (2020-12-01)

    Fixed

    • Backport Redis context option (#35370)
    • Fixed validating image/jpeg images after Symfony/Mime update (#35419)

    v6.20.5 (2020-11-24)

    Fixed

    • Fixing BroadcastException message in PusherBroadcaster@broadcast (#35290)
    • Fixed generic DetectsLostConnection string (#35323)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies php 
    opened by dependabot[bot] 2
  • build(deps): bump ini from 1.3.5 to 1.3.8

    build(deps): bump ini from 1.3.5 to 1.3.8

    Bumps ini from 1.3.5 to 1.3.8.

    Commits
    • a2c5da8 1.3.8
    • af5c6bb Do not use Object.create(null)
    • 8b648a1 don't test where our devdeps don't even work
    • c74c8af 1.3.7
    • 024b8b5 update deps, add linting
    • 032fbaf Use Object.create(null) to avoid default object property hazards
    • 2da9039 1.3.6
    • cfea636 better git push script, before publish instead of after
    • 56d2805 do not allow invalid hazardous string as section name
    • See full diff in compare view
    Maintainer changes

    This version was pushed to npm by isaacs, a new releaser for ini since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 2
Releases(v4.8.1)
  • v4.8.1(Dec 6, 2022)

  • v4.8(Sep 2, 2022)

    新增

    ● 新增用户已购录播课、已购课时、录播课课时学习记录API ● 新增后台管理员操作日志 ● 新增学员注销、学员删除 ● 新增学员登录日志 ● 新增图片上传日志 ● 新增不再使用的老旧API开关配置 ● 新增内存缓存

    优化/修复

    ● 优化后台权限,管理员权限分配更简单明了 ● 修复部分浏览器设置视频禁止快进播放无效bug ● 修复清空学员标签报错bug ● 优化部分代码 ● 优化社交登录,新增V3版本的社交登录API ● 优化腾讯云扩展依赖包(项目整体体积由原先的40MB缩减到12MB) ● 修复注册IP解析(当开启队列时会出现) ● 优化学员的多端口登录限制 ● 修复学员VIP属性编辑错误bug ● 修复视频文件尺寸过大导致本地未记录已上传视频的bug ● 优化支付宝回调处理(部分使用者配置了退款回调导致系统会将退款回调也当做支付成功回调处理) ● 修复学员批量导入未设置VIP过期时间导致报错bug ● 修复订单支付成功的积分奖励备注额度错误的bug ● 优化课时批量导入的检测和错误提示

    移除

    ● 移除学员邀请码功能 ● 移除邀请相关API ● 移除学员邀请送积分配置 ● 移除小程序相关功能和API ● 移除课时的单独订阅购买

    Source code(tar.gz)
    Source code(zip)
  • v4.7(Jun 29, 2022)

    1. 增加已看课程 v3 接口
    2. 增加我的课程 v3 接口
    3. 增加我的收藏 v3 接口
    4. 优化 API 文档
    5. 优化视频批量导入的数据错误提示
    6. 修复课程分类二级分类的排序 bug
    7. 修复已支付订单的积分抽成奖励
    Source code(tar.gz)
    Source code(zip)
  • v4.6(Apr 12, 2022)

    • 增加退款功能
    • 跑马灯增加文字内容、颜色、大小、透明度配置
    • 学员批量导入增加VIP、VIP过期时间、是否禁止登录、标签字段的导入
    • 后台管理员邮箱可修改
    • 后台登录增加图形验证码
    • 优化搜索结果展示
    • 新增已上传视频删除功能
    • 登录限制优化
    • 新增退出token注销
    • 新增录播课二级分类
    • 后台新增学员属性批量修改
    • 后台新增批量给学员发消息
    Source code(tar.gz)
    Source code(zip)
  • v4.5.5(Mar 26, 2022)

  • v4.5.4(Dec 19, 2021)

  • v4.5.3(Dec 15, 2021)

  • v4.5.2(Dec 9, 2021)

  • v4.5(Nov 19, 2021)

    • Laravel 框架升级到 v8.x
    • 增加全文搜索
    • 完善社交登录绑定
    • 修复用户注册IP解析
    • 增加腾讯云SMS
    • 增加腾讯云COS图片存储
    • 优化微信公众号菜单编辑
    • 完善PC用户资料编辑
    • 优化微信支付
    • 优化邀请码生成逻辑
    • 修复课程的视频试看bug
    • 优化手机号换绑流程
    • API文档重构
    Source code(tar.gz)
    Source code(zip)
  • v4.4(Aug 14, 2021)

    本次更新是一个里程碑的版本。

    新增

    • 新增后台图片素材库
    • 新增后台视频素材库
    • 新增后台用户标签管理
    • 新增PC首页页面装修自定义
    • 新增H5首页页面装修自定义
    • 新增PC和H5视频播放跑马灯

    修复

    • 修复无法试看bug
    • 修复阿里云视频多清晰度播放下有清晰度丢失的情况
    • 修复中英文关键字遗漏
    • 修复我的课程,收藏课程,学习历史课程的数据读取限制

    优化

    • 优化后台用户API接口
    • 优化微信小程序静默登录API接口
    • 优化后台订单列表参数过滤
    • 优化后台视频API接口
    • 优化课程分类删除检测
    • 优化后台评论API接口
    • 优化后台优惠码API接口
    • 优化视频批量导入
    • 优化路由参数中的id判断
    • 优化课程附件下载名
    • 优化PC和H5的视频播放器(删除了一些不必要的功能)

    移除

    • 移除首页推荐板块
    • 移除模板软链接Command
    Source code(tar.gz)
    Source code(zip)
  • v4.3(Jul 9, 2021)

    • 新增PC手机短信登录
    • 新增多语言配置
    • 更新依赖
    • 新增PC手机号绑定
    • 修复PC找回密码发送短信模板错误
    • 修复API接口短信验证码校验
    • 修复视频播放界面搜索框样式错误
    Source code(tar.gz)
    Source code(zip)
  • v4.2.1(Jun 8, 2021)

    • 修复H5手机号绑定
    • 修复H5我的课程界面报错
    • 修复H5我的资料上传图片icon
    • 优化H5我的邀请码生成
    • 优化升级命令,新增视图缓存清除
    Source code(tar.gz)
    Source code(zip)
  • v4.2(Jun 7, 2021)

    新增

    • 用户批量导入
    • PC微信账号扫码绑定

    修复

    • QQ账号绑定
    • 微信支付成功后的跳转

    优化

    • 视频播放器统一切换到 DPlayer
    • PC界面重新改版
    Source code(tar.gz)
    Source code(zip)
  • v4.1(May 18, 2021)

  • v4.0.1(Apr 25, 2021)

    1.fixed: 默认播放器播放腾讯云HLS加密视频无法快进 2.HTML的默认lang改为zh-CN(原先默认的en部分国产浏览器会提示翻译) 3.fixed: 微信公众号登录和授权登录的api接口登录成功后的跳转bug

    Source code(tar.gz)
    Source code(zip)
  • v4.0(Apr 23, 2021)

    新增

    • [x] 一键升级命令(升级更加简单)
    • [x] 公安网备案配置
    • [x] 微信公众号PC扫码登录(非开放平台)
    • [x] 微信JSAPI支付
    • [x] 后台对用户发送站内消息
    • [x] 腾讯云自适应转码播放支持
    • [x] 后台用户详情增加用户视频观看记录列表
    • [x] 微信浏览器内的网页分享自定义标题,描述,图片

    优化

    • [x] 优化注册业务代码
    • [x] 默认队列驱动改为sync
    • [x] 优化课程价格文案
    • [x] 优化阿里云和腾讯云播放器播放界面按空格键暂停/重新播放
    • [x] 前端依赖更新
    • [x] 优化社交登录业务逻辑代码
    • [x] 微信公众号事件的eventKey支持正则
    • [x] 优化手机号强制绑定
    • [x] 优化公告H5界面

    修复

    • [x] 修复因删除视频导致课程404
    • [x] 修复H5密码重置发送验证码失败
    • [x] 修复微信公众号关注事件消息回复bug
    • [x] 修复阿里云视频清晰度切换
    • [x] 课程价格为0的附件下载bug
    • [x] 修复阿里云点播无法上传视频到非上海区域

    移除

    • [x] 移除后台缓存配置
    • [x] Github社交登录
    • [x] 微信开放平台社交登录
    • [x] 移除后台视频列表(放到了课程子目录下)
    Source code(tar.gz)
    Source code(zip)
  • v3.7.4(Jan 22, 2021)

  • v3.7.2(Dec 28, 2020)

  • v3.7.1(Dec 27, 2020)

    新增

    • 新增微信公众号授权开关控制
    • PC手机号强制绑定新增退出按钮

    修复

    • 修复课程列表分类筛选页码未重置为1
    • 修复PC微信支付收银台页面标题为meedu
    • 修复PC手动支付收银台页面标题为meedu
    • 修复微信公众号授权登录下用户已锁定重复重定向bug
    Source code(tar.gz)
    Source code(zip)
  • v3.7(Dec 22, 2020)

    新增

    • [x] PC点击章节名展开视频
    • [x] PC导航栏新窗口打开字段
    • [x] 微信公众号授权登录

    优化

    • [x] 邀请码/优惠码文案
    • [x] 导航栏样式
    • [x] PC用户头像样式
    • [x] PC我的资料页面样式
    • [x] 社交登录流程(含手机号的强制绑定)
    • [x] 图形验证码参数调整
    • [x] 注册IP解析依赖更换为高德API
    • [x] 微信公众号文本消息回复的规则校验
    • [x] docker的nginx默认上传文件大小配置

    修复

    • [x] 登录页面弹出登录框导致图形验证码错误无法登录/注册
    • [x] 课程订阅数量统计
    • [x] H5的app.js图片上传的报错

    移除

    • [x] 删除User模型
    • [x] 移除视频的简单介绍和详细介绍
    Source code(tar.gz)
    Source code(zip)
  • v3.6(Oct 30, 2020)

    新增

    • [x] 新增:短信注册API接口
    • [x] 新增:重置密码API接口
    • [x] 新增:课程和视频的slug可自定义
    • [x] 新增:视频批量导入
    • [x] 新增:管理员密码修改权限
    • [x] 新增:图片上传API接口
    • [x] 新增:用户资料(真实姓名,年龄,职业,毕业学校,毕业证照片,身份证号,身份证正反面,手持身份证照等)
    • [x] 新增:用户资料保存API接口

    修复

    • [x] 修复:会员续费时长计算bug
    • [x] 修复:微信公众号Hook
    • [x] 修复:课程是否订阅逻辑
    • [x] 修复:H5验证码点击切换bug
    • [x] 修复:默认播放器跑马灯开关
    • [x] 修复:PC注册成功弹出框隐藏在下方bug

    优化

    • [x] 优化User模型代码
    • [x] 优化阿里云视频点播依赖包
    • [x] 提高PC端短信验证码强度
    • [x] H5界面重构
    • [x] 订单抽成奖励排除优惠码的金额
    Source code(tar.gz)
    Source code(zip)
  • v3.5.2(Oct 17, 2020)

  • v3.5.1(Sep 30, 2020)

  • v3.5(Sep 30, 2020)

    新增

    • [x] 优惠码批量导入
    • [x] 优惠码批量生成
    • [x] 课程视频观看记录数据导出(excel)
    • [x] 首页导航二级分类
    • [x] 用户视频观看时长统计
    • [x] 课程免费标签

    修复

    • [x] 修复手机号注册默认为昵称未配置
    • [x] 修复后台VIP会员过滤

    优化

    • [x] 优化用户头像上传路径
    • [x] 缓存代码优化
    Source code(tar.gz)
    Source code(zip)
  • v3.4(Sep 8, 2020)

    新增

    • 新增:微信公众号消息回复
    • 新增:微信公众号自定义菜单
    • 新增:订单商品增加商品名,价格,封面字段
    • 新增:后台订单详情
    • 新增:后台课程订阅管理
    • 新增:后台视频订阅管理
    • 新增:后台视频观看记录
    • 新增:用户标签
    • 新增:用户备注
    • 新增:埋点
    • 新增:注册送会员

    优化

    • 优化:后台课程和视频评论的API接口(增加部分过滤参数)
    • 优化:后台订单列表API接口(新增部分过滤参数)
    • 优化:依赖更新
    • 优化:后台一大波体验优化

    修复

    • 修复:后台用户的VIP删除
    Source code(tar.gz)
    Source code(zip)
  • v3.3(Aug 7, 2020)

    新增

    • added: 用户登录记录存储
    • added: 单点登录(不限制,单平台限制,全平台限制。平台有: PC,H5,ANDROID,IOS,MINI)
    • added: 首页导航active routes
    • added: 全局自定义css(PC和H5分开定义)
    • added: 后台远程图片一键同步到本地
    • added: 幻灯片增加平台字段(pc,h5,mini,android,ios),不同平台读取所在平台的幻灯片
    • added: 微信小程序一键登录api(手机号一键登录)
    • added: 课程列表增加免费课程过滤

    优化

    • Laravel从5.8升级到6.x
    • 单元测试phpunit升级到8.x
    • 更换zip解压缩依赖(原先的zip扩展包已停止维护)
    • 课程列表显示价格和课程订阅人数
    • 优化注册流程字段,去掉了昵称和再次输入密码,使得注册更加方便
    • 优化登录后的跳转
    • 更新cors跨域扩展包
    • 安装文档更新
    • 优化后台敏感配置为空的情况下不显示*符号

    修复

    • fixed: 微信小程序支付
    • fixed: 视频详情api接口的课程订阅数量统计
    Source code(tar.gz)
    Source code(zip)
  • v3.2.1(Jul 7, 2020)

  • v3.2(Jul 6, 2020)

    新增

    • added: 课程章节收缩
    • added: 用户协议,用户隐私协议,关于我们页面增加自定义Js代码
    • added: 课程和视频评论控制
    • added: 视频批量删除
    • added: 后台积分操作
    • added: 视频pc和h5的播放器指定
    • added: 视频试看
    • added: 视频快进控制
    • added: 试看标签

    优化

    • 优化:系统配置数据改为数据库存储
    • 优化:阿里云相关依赖代码优化

    修复

    • fixed: 搜索页面标题
    • fixed: helper.php的加载
    • fixed: 课程观看进度判断
    • fixed: 傻瓜安装
    Source code(tar.gz)
    Source code(zip)
  • v3.1(Jun 22, 2020)

    新增

    • added: 积分功能(看视频,完成课程,注册,支付订单,邀请5个送积分场景)
    • added:积分api接口
    • added: 积分变动站内消息通知
    • added: 用户隐私政策
    • added: 课程附件

    优化

    • 优化:api限流由 60/分钟 改为 120/分钟
    • 优化:课程列表的课节数量改为订阅数量
    • 优化:手动支付
    • 优化:H5课程详情封面改为100%宽度
    • 优化:code style
    • 优化:H5暂无数据组件大小调整
    • 优化:前端静态资源版本号
    • 优化:H5的分页组件

    修复

    • fixed: 视频下单api接口返回的错误信息
    • fixed: 后台用户编辑删除vip报错
    • fixed: 我的邀请码接口返回奖励字段
    • fixed: 关于我们界面的图片可能溢出问题
    • fixed: 部分h5页面引入了错误的暂无数据组件
    Source code(tar.gz)
    Source code(zip)
Owner
 小滕
a Creator.
 小滕