mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-23 03:50:56 +08:00
更新composer包,优化前台课程页
This commit is contained in:
parent
504e8e0171
commit
970f2b8903
10
README.md
10
README.md
@ -9,7 +9,7 @@
|
|||||||
- [前台演示](https://ctc.koogua.com)
|
- [前台演示](https://ctc.koogua.com)
|
||||||
- [后台演示](https://ctc.koogua.com/admin)
|
- [后台演示](https://ctc.koogua.com/admin)
|
||||||
|
|
||||||
帐号:100015@163.com / 123456 (前后台通用)
|
> 帐号:100015@163.com / 123456 (前后台通用)
|
||||||
|
|
||||||
PS:**管理后台已禁止提交并隐藏私人配置**
|
PS:**管理后台已禁止提交并隐藏私人配置**
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ PS:**管理后台已禁止提交并隐藏私人配置**
|
|||||||
- 前端框架:[layui 2.5.6](https://layui.com), [layim 3.9.5](https://www.layui.com/layim)(已授权)
|
- 前端框架:[layui 2.5.6](https://layui.com), [layim 3.9.5](https://www.layui.com/layim)(已授权)
|
||||||
- 全文检索:[xunsearch 1.4.9](http://www.xunsearch.com)
|
- 全文检索:[xunsearch 1.4.9](http://www.xunsearch.com)
|
||||||
- 即时通讯:[workerman 3.5.22](https://workerman.net)
|
- 即时通讯:[workerman 3.5.22](https://workerman.net)
|
||||||
- 其它依赖:[php7.3](https://php.net), [mysql5.7](https://mysql.com), [redis5.0](https://redis.io)
|
- 基础依赖:[php7.3](https://php.net), [mysql5.7](https://mysql.com), [redis5.0](https://redis.io)
|
||||||
|
|
||||||
#### 使用协议
|
#### 使用协议
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ PS:**管理后台已禁止提交并隐藏私人配置**
|
|||||||
#### 通过这个项目能学到什么?
|
#### 通过这个项目能学到什么?
|
||||||
|
|
||||||
1. 项目规划,phalcon实战,缓存,JWT,即时通讯,全文检索
|
1. 项目规划,phalcon实战,缓存,JWT,即时通讯,全文检索
|
||||||
2. docker操作,docker服务编排,supervisor,devops
|
2. docker,supervisor,devops
|
||||||
3. git,linux,php,mysql,redis,nginx
|
3. git,linux,php,mysql,redis,nginx
|
||||||
|
|
||||||
#### 开发计划
|
#### 开发计划
|
||||||
@ -73,7 +73,7 @@ PS:**管理后台已禁止提交并隐藏私人配置**
|
|||||||
|
|
||||||
#### 加入我们
|
#### 加入我们
|
||||||
|
|
||||||
这是我的创业项目,个人能力和精力有限,要兼顾产品规划以及开发,还要处理除报税记账之外的所有琐碎事情。
|
这是我的创业项目,个人能力和精力有限,要兼顾产品规划以及开发,还要处理很多琐碎事情。
|
||||||
目前在南山科技园某个众创空间,希望有能独挡一面的**深圳前端同学**加入我们。
|
目前在南山科技园某个众创空间,希望有 **深圳前端同学** 加入我们。
|
||||||
|
|
||||||
联系邮箱:76632555@qq.com
|
联系邮箱:76632555@qq.com
|
||||||
|
@ -5,9 +5,9 @@ namespace App\Http\Desktop\Controllers;
|
|||||||
use App\Http\Desktop\Services\CourseQuery as CourseQueryService;
|
use App\Http\Desktop\Services\CourseQuery as CourseQueryService;
|
||||||
use App\Services\Frontend\Course\ChapterList as CourseChapterListService;
|
use App\Services\Frontend\Course\ChapterList as CourseChapterListService;
|
||||||
use App\Services\Frontend\Course\ConsultList as CourseConsultListService;
|
use App\Services\Frontend\Course\ConsultList as CourseConsultListService;
|
||||||
|
use App\Services\Frontend\Course\CourseFavorite as CourseFavoriteService;
|
||||||
use App\Services\Frontend\Course\CourseInfo as CourseInfoService;
|
use App\Services\Frontend\Course\CourseInfo as CourseInfoService;
|
||||||
use App\Services\Frontend\Course\CourseList as CourseListService;
|
use App\Services\Frontend\Course\CourseList as CourseListService;
|
||||||
use App\Services\Frontend\Course\Favorite as CourseFavoriteService;
|
|
||||||
use App\Services\Frontend\Course\PackageList as CoursePackageListService;
|
use App\Services\Frontend\Course\PackageList as CoursePackageListService;
|
||||||
use App\Services\Frontend\Course\RecommendedList as CourseRecommendedListService;
|
use App\Services\Frontend\Course\RecommendedList as CourseRecommendedListService;
|
||||||
use App\Services\Frontend\Course\RelatedList as CourseRelatedListService;
|
use App\Services\Frontend\Course\RelatedList as CourseRelatedListService;
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
{% if lesson.me.duration > 0 %}
|
{% if lesson.me.duration > 0 %}
|
||||||
<span class="study-time" title="学习时长:{{ lesson.me.duration|duration }}"><i class="layui-icon layui-icon-time"></i></span>
|
<span class="study-time" title="学习时长:{{ lesson.me.duration|duration }}"><i class="layui-icon layui-icon-time"></i></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<span class="live">{{ date('m月d日',lesson.attrs.start_time) }} {{ date('H:i',lesson.attrs.start_time) }}~{{ date('H:i',lesson.attrs.end_time) }} {{ over_flag }}</span>
|
<span class="live" title="{{ date('Y-m-d H:i',lesson.attrs.start_time) }}">{{ live_status_info(lesson) }}</span>
|
||||||
</a>
|
</a>
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
@ -46,6 +46,16 @@
|
|||||||
</a>
|
</a>
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro live_status_info(lesson) %}
|
||||||
|
{% if lesson.attrs.stream.status == 'active' %}
|
||||||
|
<span class="active">{{ date('m月d日 H:i',lesson.attrs.start_time) }} 直播中</span>
|
||||||
|
{% elseif lesson.attrs.start_time > time() %}
|
||||||
|
<span class="pending">{{ date('m月d日 H:i',lesson.attrs.start_time) }} 倒计时</span>
|
||||||
|
{% elseif lesson.attrs.end_time < time() %}
|
||||||
|
<span class="finished">{{ date('m月d日 H:i',lesson.attrs.start_time) }} 已结束</span>
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
<div class="layui-collapse">
|
<div class="layui-collapse">
|
||||||
{% for chapter in chapters %}
|
{% for chapter in chapters %}
|
||||||
<div class="layui-colla-item">
|
<div class="layui-colla-item">
|
||||||
@ -53,11 +63,11 @@
|
|||||||
<div class="layui-colla-content layui-show">
|
<div class="layui-colla-content layui-show">
|
||||||
<ul class="lesson-list">
|
<ul class="lesson-list">
|
||||||
{% for lesson in chapter.children %}
|
{% for lesson in chapter.children %}
|
||||||
{% if lesson.model == '1' %}
|
{% if lesson.model == 1 %}
|
||||||
<li class="lesson-item clearfix">{{ vod_lesson_info(lesson) }}</li>
|
<li class="lesson-item clearfix">{{ vod_lesson_info(lesson) }}</li>
|
||||||
{% elseif lesson.model == '2' %}
|
{% elseif lesson.model == 2 %}
|
||||||
<li class="lesson-item clearfix">{{ live_lesson_info(lesson) }}</li>
|
<li class="lesson-item clearfix">{{ live_lesson_info(lesson) }}</li>
|
||||||
{% elseif lesson.model == '3' %}
|
{% elseif lesson.model == 3 %}
|
||||||
<li class="lesson-item clearfix">{{ read_lesson_info(lesson) }}</li>
|
<li class="lesson-item clearfix">{{ read_lesson_info(lesson) }}</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -1,40 +1,72 @@
|
|||||||
|
{%- macro vod_meta_info(course) %}
|
||||||
|
<p class="item">
|
||||||
|
<span class="key">课程时长</span><span class="value">{{ course.attrs.duration|duration }}</span>
|
||||||
|
</p>
|
||||||
|
{{ meta_expiry_info(course) }}
|
||||||
|
{{ meta_price_info(course) }}
|
||||||
|
{{ meta_stats_info(course) }}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro live_meta_info(course) %}
|
||||||
|
<p class="item">
|
||||||
|
<span class="key">直播时间</span><span class="value">{{ course.attrs.start_date }} ~ {{ course.attrs.end_date }}</span>
|
||||||
|
</p>
|
||||||
|
{{ meta_expiry_info(course) }}
|
||||||
|
{{ meta_price_info(course) }}
|
||||||
|
{{ meta_stats_info(course) }}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro read_meta_info(course) %}
|
||||||
|
<p class="item">
|
||||||
|
<span class="key">课程时长</span><span class="value">{{ course.attrs.duration|duration }}</span>
|
||||||
|
</p>
|
||||||
|
{{ meta_expiry_info(course) }}
|
||||||
|
{{ meta_price_info(course) }}
|
||||||
|
{{ meta_stats_info(course) }}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro meta_expiry_info(course) %}
|
||||||
|
<p class="item">
|
||||||
|
<span class="key">学习期限</span><span class="value">{{ course.study_expiry }}个月</span>
|
||||||
|
<span class="key">退款期限</span><span class="value">{{ course.refund_expiry }}天</span>
|
||||||
|
</p>
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro meta_price_info(course) %}
|
||||||
|
<p class="item">
|
||||||
|
{% if course.market_price > 0 %}
|
||||||
|
<span class="key">市场价格</span><span class="value price">{{ '¥%0.2f'|format(course.market_price) }}</span>
|
||||||
|
{% else %}
|
||||||
|
<span class="key">市场价格</span><span class="value free">免费</span>
|
||||||
|
{% endif %}
|
||||||
|
{% if course.vip_price > 0 %}
|
||||||
|
<span class="key">会员价格</span><span class="value price">{{ '¥%0.2f'|format(course.vip_price) }}</span>
|
||||||
|
{% else %}
|
||||||
|
<span class="key">会员价格</span><span class="value free">免费</span>
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro meta_stats_info(course) %}
|
||||||
|
<p class="item">
|
||||||
|
<span class="key">难度级别</span><span class="value">{{ level_info(course.level) }}</span>
|
||||||
|
<span class="key">学习人次</span><span class="value">{{ course.user_count }}</span>
|
||||||
|
<span class="key">综合评分</span><span class="value">{{ "%0.1f"|format(course.ratings.rating) }}</span>
|
||||||
|
</p>
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
<div class="course-meta wrap clearfix">
|
<div class="course-meta wrap clearfix">
|
||||||
<div class="cover">
|
<div class="cover">
|
||||||
<img src="{{ course.cover }}" alt="{{ course.title|e }}">
|
<img src="{{ course.cover }}!cover_270" alt="{{ course.title }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
{% if course.model == '1' %}
|
{% if course.model == 1 %}
|
||||||
<p class="item">
|
{{ vod_meta_info(course) }}
|
||||||
<span class="key">课程时长</span><span class="value">{{ course.attrs.duration|duration }}</span>
|
{% elseif course.model == 2 %}
|
||||||
</p>
|
{{ live_meta_info(course) }}
|
||||||
{% elseif course.model == '2' %}
|
{% elseif course.model == 3 %}
|
||||||
<p class="item">
|
{{ read_meta_info(course) }}
|
||||||
<span class="key">直播时间</span><span class="value">{{ course.attrs.start_date }} ~ {{ course.attrs.end_date }}</span>
|
|
||||||
</p>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if course.market_price > 0 %}
|
|
||||||
<p class="item">
|
|
||||||
<span class="key">学习期限</span><span class="value">{{ course.study_expiry }}个月</span>
|
|
||||||
<span class="key">退款期限</span><span class="value">{{ course.refund_expiry }}天</span>
|
|
||||||
</p>
|
|
||||||
{% endif %}
|
|
||||||
<p class="item">
|
|
||||||
{% if course.market_price > 0 %}
|
|
||||||
<span class="key">市场价格</span><span class="price">{{ '¥%0.2f'|format(course.market_price) }}</span>
|
|
||||||
{% else %}
|
|
||||||
<span class="key">市场价格</span><span class="free">免费</span>
|
|
||||||
{% endif %}
|
|
||||||
{% if course.vip_price > 0 %}
|
|
||||||
<span class="key">会员价格</span><span class="price">{{ '¥%0.2f'|format(course.vip_price) }}</span>
|
|
||||||
{% else %}
|
|
||||||
<span class="key">会员价格</span><span class="free">免费</span>
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
||||||
<p class="item">
|
|
||||||
<span class="key">难度级别</span><span class="value">{{ level_info(course.level) }}</span>
|
|
||||||
<span class="key">学习人次</span><span class="value">{{ course.user_count }}</span>
|
|
||||||
<span class="key">综合评分</span><span class="value">{{ "%0.1f"|format(course.ratings.rating) }}</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="rating">
|
<div class="rating">
|
||||||
<p class="item">
|
<p class="item">
|
||||||
|
@ -23,7 +23,9 @@
|
|||||||
<div class="vip-option-card">
|
<div class="vip-option-card">
|
||||||
<div class="title">{{ option.title }}</div>
|
<div class="title">{{ option.title }}</div>
|
||||||
<div class="price">¥{{ option.price }}</div>
|
<div class="price">¥{{ option.price }}</div>
|
||||||
<div class="order"><a class="layui-btn layui-btn-sm layui-bg-red" href="{{ order_url }}">立即开通</a></div>
|
<div class="order">
|
||||||
|
<button class="layui-btn layui-btn-sm layui-bg-red btn-order" data-url="{{ order_url }}">立即开通</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -147,18 +147,21 @@ class ChapterInfo extends FrontendService
|
|||||||
protected function incrUserCourseCount(UserModel $user)
|
protected function incrUserCourseCount(UserModel $user)
|
||||||
{
|
{
|
||||||
$user->course_count += 1;
|
$user->course_count += 1;
|
||||||
|
|
||||||
$user->update();
|
$user->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function incrCourseUserCount(CourseModel $course)
|
protected function incrCourseUserCount(CourseModel $course)
|
||||||
{
|
{
|
||||||
$course->user_count += 1;
|
$course->user_count += 1;
|
||||||
|
|
||||||
$course->update();
|
$course->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function incrChapterUserCount(ChapterModel $chapter)
|
protected function incrChapterUserCount(ChapterModel $chapter)
|
||||||
{
|
{
|
||||||
$chapter->user_count += 1;
|
$chapter->user_count += 1;
|
||||||
|
|
||||||
$chapter->update();
|
$chapter->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,6 +64,7 @@ class ConsultLike extends FrontendService
|
|||||||
protected function incrLikeCount(ConsultModel $consult)
|
protected function incrLikeCount(ConsultModel $consult)
|
||||||
{
|
{
|
||||||
$consult->like_count += 1;
|
$consult->like_count += 1;
|
||||||
|
|
||||||
$consult->update();
|
$consult->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ use App\Services\Frontend\CourseTrait;
|
|||||||
use App\Services\Frontend\Service as FrontendService;
|
use App\Services\Frontend\Service as FrontendService;
|
||||||
use App\Validators\UserLimit as UserLimitValidator;
|
use App\Validators\UserLimit as UserLimitValidator;
|
||||||
|
|
||||||
class Favorite extends FrontendService
|
class CourseFavorite extends FrontendService
|
||||||
{
|
{
|
||||||
|
|
||||||
use CourseTrait;
|
use CourseTrait;
|
||||||
@ -66,6 +66,7 @@ class Favorite extends FrontendService
|
|||||||
protected function incrCourseFavoriteCount(CourseModel $course)
|
protected function incrCourseFavoriteCount(CourseModel $course)
|
||||||
{
|
{
|
||||||
$course->favorite_count += 1;
|
$course->favorite_count += 1;
|
||||||
|
|
||||||
$course->update();
|
$course->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,6 +81,7 @@ class Favorite extends FrontendService
|
|||||||
protected function incrUserFavoriteCount(UserModel $user)
|
protected function incrUserFavoriteCount(UserModel $user)
|
||||||
{
|
{
|
||||||
$user->favorite_count += 1;
|
$user->favorite_count += 1;
|
||||||
|
|
||||||
$user->update();
|
$user->update();
|
||||||
}
|
}
|
||||||
|
|
@ -64,6 +64,7 @@ class ReviewLike extends FrontendService
|
|||||||
protected function incrLikeCount(ReviewModel $review)
|
protected function incrLikeCount(ReviewModel $review)
|
||||||
{
|
{
|
||||||
$review->like_count += 1;
|
$review->like_count += 1;
|
||||||
|
|
||||||
$review->update();
|
$review->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,13 +10,13 @@
|
|||||||
"swiftmailer/swiftmailer": "^6.0",
|
"swiftmailer/swiftmailer": "^6.0",
|
||||||
"peppeocchi/php-cron-scheduler": "^2.4",
|
"peppeocchi/php-cron-scheduler": "^2.4",
|
||||||
"yansongda/pay": "^2.9",
|
"yansongda/pay": "^2.9",
|
||||||
"tencentcloud/tencentcloud-sdk-php": "3.*",
|
"tencentcloud/tencentcloud-sdk-php": "^3.0",
|
||||||
"qcloudsms/qcloudsms_php": "0.1.*",
|
"qcloudsms/qcloudsms_php": "^0.1",
|
||||||
"qcloud/cos-sdk-v5": "2.*",
|
"qcloud/cos-sdk-v5": "^2.0",
|
||||||
"workerman/gateway-worker": "^3.0.12",
|
"workerman/gateway-worker": "^3.0",
|
||||||
"workerman/gatewayclient": "^3.0.12",
|
"workerman/gatewayclient": "^3.0",
|
||||||
"whichbrowser/parser": "^2.0",
|
"whichbrowser/parser": "^2.0",
|
||||||
"hightman/xunsearch": "^1.4.14",
|
"hightman/xunsearch": "^1.4",
|
||||||
"aferrandini/phpqrcode": "1.0.1",
|
"aferrandini/phpqrcode": "1.0.1",
|
||||||
"xiaochong0302/ip2region": "^1.0",
|
"xiaochong0302/ip2region": "^1.0",
|
||||||
"robmorgan/phinx": "^0.12",
|
"robmorgan/phinx": "^0.12",
|
||||||
|
244
composer.lock
generated
244
composer.lock
generated
@ -1,20 +1,20 @@
|
|||||||
{
|
{
|
||||||
"_readme": [
|
"_readme": [
|
||||||
"This file locks the dependencies of your project to a known state",
|
"This file locks the dependencies of your project to a known state",
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "66628b38c16e2071e5636757472860e8",
|
"content-hash": "cce345a8509cd31ff8492310a2a2332a",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "aferrandini/phpqrcode",
|
"name": "aferrandini/phpqrcode",
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/aferrandini/PHPQRCode.git",
|
"url": "https://github.com/aferrandini/PHPQRCode.git",
|
||||||
"reference": "3c1c0454d43710ab5bbe19a51ad4cb41c22e3d46"
|
"reference": "3c1c0454d43710ab5bbe19a51ad4cb41c22e3d46"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/aferrandini/PHPQRCode/zipball/3c1c0454d43710ab5bbe19a51ad4cb41c22e3d46",
|
"url": "https://api.github.com/repos/aferrandini/PHPQRCode/zipball/3c1c0454d43710ab5bbe19a51ad4cb41c22e3d46",
|
||||||
"reference": "3c1c0454d43710ab5bbe19a51ad4cb41c22e3d46",
|
"reference": "3c1c0454d43710ab5bbe19a51ad4cb41c22e3d46",
|
||||||
@ -747,26 +747,26 @@
|
|||||||
],
|
],
|
||||||
"time": "2019-07-01T23:21:34+00:00"
|
"time": "2019-07-01T23:21:34+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "hightman/xunsearch",
|
"name": "hightman/xunsearch",
|
||||||
"version": "1.4.14",
|
"version": "1.4.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/hightman/xs-sdk-php.git",
|
"url": "https://github.com/hightman/xs-sdk-php.git",
|
||||||
"reference": "d2faba65b9b4c0c0ea6e8b2ad5bafdefcbf3db87"
|
"reference": "8ec1a3aa3ef58b83cd4e0e72a171f6446f4136b9"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/hightman/xs-sdk-php/zipball/d2faba65b9b4c0c0ea6e8b2ad5bafdefcbf3db87",
|
"url": "https://api.github.com/repos/hightman/xs-sdk-php/zipball/8ec1a3aa3ef58b83cd4e0e72a171f6446f4136b9",
|
||||||
"reference": "d2faba65b9b4c0c0ea6e8b2ad5bafdefcbf3db87",
|
"reference": "8ec1a3aa3ef58b83cd4e0e72a171f6446f4136b9",
|
||||||
"shasum": "",
|
"shasum": "",
|
||||||
"mirrors": [
|
"mirrors": [
|
||||||
{
|
{
|
||||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||||
"preferred": true
|
"preferred": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"lib-pcre": "*",
|
"lib-pcre": "*",
|
||||||
@ -781,26 +781,26 @@
|
|||||||
"dev-master": "1.4.x-dev"
|
"dev-master": "1.4.x-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"classmap": [
|
"classmap": [
|
||||||
"lib/",
|
"lib/",
|
||||||
"wrapper/yii-ext/"
|
"wrapper/yii-ext/"
|
||||||
],
|
],
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"hightman\\xunsearch\\": "wrapper/yii2-ext/"
|
"hightman\\xunsearch\\": "wrapper/yii2-ext/"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notification-url": "https://packagist.jp/downloads/",
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
"license": [
|
"license": [
|
||||||
"GPL-2.0+"
|
"GPL-2.0+"
|
||||||
],
|
],
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "hightman",
|
"name": "hightman",
|
||||||
"email": "hightman@twomice.net",
|
"email": "hightman@twomice.net",
|
||||||
"role": "Founder and project leader"
|
"role": "Founder and project leader"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "xunsearch php sdk, include yii, yii2 supports",
|
"description": "xunsearch php sdk, include yii, yii2 supports",
|
||||||
"homepage": "http://www.xunsearch.com/",
|
"homepage": "http://www.xunsearch.com/",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@ -809,7 +809,7 @@
|
|||||||
"yii",
|
"yii",
|
||||||
"yii2"
|
"yii2"
|
||||||
],
|
],
|
||||||
"time": "2019-11-01T02:17:32+00:00"
|
"time": "2020-09-03T16:46:04+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "lcobucci/jwt",
|
"name": "lcobucci/jwt",
|
||||||
@ -1436,26 +1436,26 @@
|
|||||||
],
|
],
|
||||||
"time": "2017-10-23T01:57:42+00:00"
|
"time": "2017-10-23T01:57:42+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "qcloud/cos-sdk-v5",
|
"name": "qcloud/cos-sdk-v5",
|
||||||
"version": "v2.0.0",
|
"version": "v2.0.9",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/tencentyun/cos-php-sdk-v5.git",
|
"url": "https://github.com/tencentyun/cos-php-sdk-v5.git",
|
||||||
"reference": "a8ac2dc1f58ddb36e5d702d19f9d7cb8d6f1dc5e"
|
"reference": "d9fa5e8468ce4462d671976555efaa9acd2896e4"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/tencentyun/cos-php-sdk-v5/zipball/a8ac2dc1f58ddb36e5d702d19f9d7cb8d6f1dc5e",
|
"url": "https://api.github.com/repos/tencentyun/cos-php-sdk-v5/zipball/d9fa5e8468ce4462d671976555efaa9acd2896e4",
|
||||||
"reference": "a8ac2dc1f58ddb36e5d702d19f9d7cb8d6f1dc5e",
|
"reference": "d9fa5e8468ce4462d671976555efaa9acd2896e4",
|
||||||
"shasum": "",
|
"shasum": "",
|
||||||
"mirrors": [
|
"mirrors": [
|
||||||
{
|
{
|
||||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||||
"preferred": true
|
"preferred": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"guzzlehttp/guzzle": "~6.3",
|
"guzzlehttp/guzzle": "~6.3",
|
||||||
"guzzlehttp/guzzle-services": "~1.1",
|
"guzzlehttp/guzzle-services": "~1.1",
|
||||||
@ -1487,7 +1487,7 @@
|
|||||||
"php",
|
"php",
|
||||||
"qcloud"
|
"qcloud"
|
||||||
],
|
],
|
||||||
"time": "2019-09-25T12:28:54+00:00"
|
"time": "2020-06-16T13:09:21+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "qcloudsms/qcloudsms_php",
|
"name": "qcloudsms/qcloudsms_php",
|
||||||
@ -2949,30 +2949,30 @@
|
|||||||
],
|
],
|
||||||
"time": "2020-07-06T13:23:11+00:00"
|
"time": "2020-07-06T13:23:11+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "tencentcloud/tencentcloud-sdk-php",
|
"name": "tencentcloud/tencentcloud-sdk-php",
|
||||||
"version": "3.0.92",
|
"version": "3.0.251",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/TencentCloud/tencentcloud-sdk-php.git",
|
"url": "https://github.com/TencentCloud/tencentcloud-sdk-php.git",
|
||||||
"reference": "71164956c234368c65c00e321e96f6dbd0f8d9c0"
|
"reference": "a3b3054262e48776e8014d5e385a8932b0102f29"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/TencentCloud/tencentcloud-sdk-php/zipball/71164956c234368c65c00e321e96f6dbd0f8d9c0",
|
"url": "https://api.github.com/repos/TencentCloud/tencentcloud-sdk-php/zipball/a3b3054262e48776e8014d5e385a8932b0102f29",
|
||||||
"reference": "71164956c234368c65c00e321e96f6dbd0f8d9c0",
|
"reference": "a3b3054262e48776e8014d5e385a8932b0102f29",
|
||||||
"shasum": "",
|
"shasum": "",
|
||||||
"mirrors": [
|
"mirrors": [
|
||||||
{
|
{
|
||||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||||
"preferred": true
|
"preferred": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"guzzlehttp/guzzle": "^6.3",
|
"guzzlehttp/guzzle": "^6.3",
|
||||||
"guzzlehttp/psr7": "^1.4",
|
"guzzlehttp/psr7": "^1.4",
|
||||||
"php": ">=5.6.33"
|
"php": ">=5.6.0"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@ -2997,7 +2997,7 @@
|
|||||||
],
|
],
|
||||||
"description": "TencentCloudApi php sdk",
|
"description": "TencentCloudApi php sdk",
|
||||||
"homepage": "https://github.com/TencentCloud/tencentcloud-sdk-php",
|
"homepage": "https://github.com/TencentCloud/tencentcloud-sdk-php",
|
||||||
"time": "2019-09-27T09:23:30+00:00"
|
"time": "2020-09-15T00:59:07+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "whichbrowser/parser",
|
"name": "whichbrowser/parser",
|
||||||
@ -3064,28 +3064,28 @@
|
|||||||
],
|
],
|
||||||
"time": "2018-10-02T09:26:41+00:00"
|
"time": "2018-10-02T09:26:41+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "workerman/gateway-worker",
|
"name": "workerman/gateway-worker",
|
||||||
"version": "v3.0.13",
|
"version": "v3.0.18",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/walkor/GatewayWorker.git",
|
"url": "https://github.com/walkor/GatewayWorker.git",
|
||||||
"reference": "38b44c95f21cd340b5a9cff3987ddb2abb9a2a38"
|
"reference": "50d3a77deb7f7fb206d641ee0307ae1c41d5d41d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/walkor/GatewayWorker/zipball/38b44c95f21cd340b5a9cff3987ddb2abb9a2a38",
|
"url": "https://api.github.com/repos/walkor/GatewayWorker/zipball/50d3a77deb7f7fb206d641ee0307ae1c41d5d41d",
|
||||||
"reference": "38b44c95f21cd340b5a9cff3987ddb2abb9a2a38",
|
"reference": "50d3a77deb7f7fb206d641ee0307ae1c41d5d41d",
|
||||||
"shasum": "",
|
"shasum": "",
|
||||||
"mirrors": [
|
"mirrors": [
|
||||||
{
|
{
|
||||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||||
"preferred": true
|
"preferred": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"workerman/workerman": ">=3.1.8"
|
"workerman/workerman": ">=3.5.0"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@ -3102,7 +3102,7 @@
|
|||||||
"communication",
|
"communication",
|
||||||
"distributed"
|
"distributed"
|
||||||
],
|
],
|
||||||
"time": "2019-07-02T11:55:24+00:00"
|
"time": "2020-07-15T06:45:01+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "workerman/gatewayclient",
|
"name": "workerman/gatewayclient",
|
||||||
|
@ -92,6 +92,11 @@
|
|||||||
width: 320px;
|
width: 320px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.layui-main .vditor-reset {
|
||||||
|
font: 14px Helvetica Neue, Helvetica, PingFang SC, Tahoma, Arial, sans-serif;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: column;
|
flex-flow: column;
|
||||||
@ -500,7 +505,6 @@ body {
|
|||||||
|
|
||||||
.course-meta .info .price {
|
.course-meta .info .price {
|
||||||
color: red;
|
color: red;
|
||||||
font-size: 14px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.course-meta .info .free {
|
.course-meta .info .free {
|
||||||
@ -548,11 +552,6 @@ body {
|
|||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.course-details {
|
|
||||||
line-height: 1.8em;
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lesson-item {
|
.lesson-item {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
@ -583,6 +582,10 @@ body {
|
|||||||
color: #666;
|
color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.lesson-item .live .active {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
.lesson-item .study-time {
|
.lesson-item .study-time {
|
||||||
color: green;
|
color: green;
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,13 @@ layui.use(['jquery', 'helper'], function () {
|
|||||||
var $ = layui.jquery;
|
var $ = layui.jquery;
|
||||||
var helper = layui.helper;
|
var helper = layui.helper;
|
||||||
|
|
||||||
|
$('.btn-order').on('click', function () {
|
||||||
|
var url = $(this).data('url');
|
||||||
|
helper.checkLogin(function () {
|
||||||
|
window.location.href = url;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
if ($('#tab-discount-courses').length > 0) {
|
if ($('#tab-discount-courses').length > 0) {
|
||||||
var $tabDiscountCourses = $('#tab-discount-courses');
|
var $tabDiscountCourses = $('#tab-discount-courses');
|
||||||
helper.ajaxLoadHtml($tabDiscountCourses.data('url'), $tabDiscountCourses.attr('id'));
|
helper.ajaxLoadHtml($tabDiscountCourses.data('url'), $tabDiscountCourses.attr('id'));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user