diff --git a/app/Console/Tasks/SyncChapterCounterTask.php b/app/Console/Tasks/SyncChapterCounterTask.php index cce2bcf6..0e1b5ab4 100644 --- a/app/Console/Tasks/SyncChapterCounterTask.php +++ b/app/Console/Tasks/SyncChapterCounterTask.php @@ -57,7 +57,6 @@ class SyncChapterCounterTask extends Task if ($allowRecount) { $chapter->user_count = $chapterRepo->countUsers($chapter->id); - $chapter->lesson_count = $chapterRepo->countLessons($chapter->id); $chapter->comment_count = $chapterRepo->countComments($chapter->id); $chapter->like_count = $chapterRepo->countLikes($chapter->id); $chapter->update(); @@ -72,7 +71,6 @@ class SyncChapterCounterTask extends Task if ($counter) { $chapter->user_count = $counter['user_count']; - $chapter->lesson_count = $counter['lesson_count']; $chapter->comment_count = $counter['comment_count']; $chapter->like_count = $counter['like_count']; $chapter->update(); @@ -94,7 +92,7 @@ class SyncChapterCounterTask extends Task protected function allowRecount() { - return date('H') % 2 == 0; + return date('H') % 3 == 0; } } diff --git a/app/Console/Tasks/SyncCommentCounterTask.php b/app/Console/Tasks/SyncCommentCounterTask.php index f63321f3..9c9cf7ac 100644 --- a/app/Console/Tasks/SyncCommentCounterTask.php +++ b/app/Console/Tasks/SyncCommentCounterTask.php @@ -83,7 +83,7 @@ class SyncCommentCounterTask extends Task protected function allowRecount() { - return date('H') == 5; + return date('H') % 4 == 0; } } diff --git a/app/Console/Tasks/SyncConsultCounterTask.php b/app/Console/Tasks/SyncConsultCounterTask.php index 46fc53cc..0eff2802 100644 --- a/app/Console/Tasks/SyncConsultCounterTask.php +++ b/app/Console/Tasks/SyncConsultCounterTask.php @@ -81,7 +81,7 @@ class SyncConsultCounterTask extends Task protected function allowRecount() { - return date('H') == 1; + return date('H') % 4 == 0; } } diff --git a/app/Console/Tasks/SyncCourseCounterTask.php b/app/Console/Tasks/SyncCourseCounterTask.php index 51bc25b7..9aafe98f 100644 --- a/app/Console/Tasks/SyncCourseCounterTask.php +++ b/app/Console/Tasks/SyncCourseCounterTask.php @@ -71,12 +71,15 @@ class SyncCourseCounterTask extends Task $counter = $counterCache->get($course->id); if ($counter) { + $course->user_count = $counter['user_count']; $course->comment_count = $counter['comment_count']; $course->consult_count = $counter['consult_count']; $course->review_count = $counter['review_count']; $course->favorite_count = $counter['favorite_count']; $course->update(); + + $courseCache->rebuild($course->id); } } } @@ -93,7 +96,7 @@ class SyncCourseCounterTask extends Task protected function allowRecount() { - return date('H') % 2 == 0; + return date('H') % 3 == 0; } } diff --git a/app/Console/Tasks/SyncReviewCounterTask.php b/app/Console/Tasks/SyncReviewCounterTask.php index ca67c0dc..63990997 100644 --- a/app/Console/Tasks/SyncReviewCounterTask.php +++ b/app/Console/Tasks/SyncReviewCounterTask.php @@ -81,7 +81,7 @@ class SyncReviewCounterTask extends Task protected function allowRecount() { - return date('H') == 2; + return date('H') % 4 == 0; } } diff --git a/app/Http/Web/Controllers/PublicController.php b/app/Http/Web/Controllers/PublicController.php index 3c245685..c0622d16 100644 --- a/app/Http/Web/Controllers/PublicController.php +++ b/app/Http/Web/Controllers/PublicController.php @@ -44,7 +44,7 @@ class PublicController extends \Phalcon\Mvc\Controller { $text = $this->request->getQuery('text'); $level = $this->request->getQuery('level', 'int', 0); - $size = $this->request->getQuery('size', 'int', 3); + $size = $this->request->getQuery('size', 'int', 5); $url = urldecode($text); diff --git a/app/Http/Web/Views/course/consults.volt b/app/Http/Web/Views/course/consults.volt index 3dd5d706..a73a906a 100644 --- a/app/Http/Web/Views/course/consults.volt +++ b/app/Http/Web/Views/course/consults.volt @@ -15,7 +15,7 @@ diff --git a/app/Http/Web/Views/course/meta.volt b/app/Http/Web/Views/course/meta.volt index e7f364b8..cb3428dd 100644 --- a/app/Http/Web/Views/course/meta.volt +++ b/app/Http/Web/Views/course/meta.volt @@ -30,14 +30,24 @@ 难度 {{ level_info(course.level) }} 课时 {{ course.lesson_count }} 学员 {{ course.user_count }} - 收藏 {{ course.favorite_count }} 评分 {{ course.rating }}

+ + {% set favorite_url = url({'for':'web.course.favorite','id':course.id}) %} + {% set course_url = url({'for':'web.course.show','id':course.id}) %} + {% set qrcode_url = url({'for':'web.qrcode_img'},{'text':'http://baidu.com','size':5}) %} + +
+ + + + +
+
- - - - - + + + +
\ No newline at end of file diff --git a/app/Http/Web/Views/course/reviews.volt b/app/Http/Web/Views/course/reviews.volt index 1a8fcd3f..a7d9d442 100644 --- a/app/Http/Web/Views/course/reviews.volt +++ b/app/Http/Web/Views/course/reviews.volt @@ -23,7 +23,7 @@ diff --git a/app/Http/Web/Views/course/show.volt b/app/Http/Web/Views/course/show.volt index 8f7a7411..dd0a7346 100644 --- a/app/Http/Web/Views/course/show.volt +++ b/app/Http/Web/Views/course/show.volt @@ -25,7 +25,16 @@ {% set show_tab_reviews = course.review_count > 0 ? 1 : 0 %}
-
+
+ {% if show_tab_packages == 1 %} + {{ course.package_count }} + {% endif %} + {% if show_tab_consults == 1 %} + {{ course.consult_count }} + {% endif %} + {% if show_tab_reviews == 1 %} + {{ course.review_count }} + {% endif %}
  • 详情
  • @@ -92,6 +101,7 @@ {% block include_js %} + {{ js_include('web/js/share.js') }} {{ js_include('web/js/course.show.js') }} {% endblock %} \ No newline at end of file diff --git a/public/static/lib/layui/extends/helper.js b/public/static/lib/layui/extends/helper.js index 58a18cfe..a7c644c4 100644 --- a/public/static/lib/layui/extends/helper.js +++ b/public/static/lib/layui/extends/helper.js @@ -1,8 +1,9 @@ -layui.define(['jquery', 'element'], function (exports) { +layui.define(['jquery', 'element', 'layer'], function (exports) { var MOD_NAME = 'helper'; var $ = layui.jquery; var element = layui.element; + var layer = layui.layer; var helper = {}; @@ -16,6 +17,14 @@ layui.define(['jquery', 'element'], function (exports) { }); }; + helper.checkLogin = function () { + if (window.koogua.user.id === '0') { + layer.msg('继续操作前请登录或者注册', {icon: 2, anim: 6}); + return false; + } + return true; + }; + helper.getRequestId = function () { var id = Date.now().toString(36); id += Math.random().toString(36).substr(3); diff --git a/public/static/web/css/common.css b/public/static/web/css/common.css index 8c8499fd..fd30be9d 100644 --- a/public/static/web/css/common.css +++ b/public/static/web/css/common.css @@ -1,9 +1,3 @@ -::-webkit-scrollbar-button { - height: 0; - width: 0; - display: none; -} - .full { background-color: #f2f2f2; } @@ -44,6 +38,12 @@ text-align: center; } +.qrcode img { + width: 160px; + height: 160px; + border: 3px dashed #ccc; +} + .breadcrumb { margin-bottom: 20px; } @@ -468,6 +468,29 @@ body { line-height: 30px; } +.course-tab-wrap { + position: relative; +} + +.course-tab-wrap .tab-count { + position: absolute; + top: 25px; + font-size: 12px; + color: #666; +} + +.course-tab-wrap .package-count { + left: 275px; +} + +.course-tab-wrap .consult-count { + left: 370px; +} + +.course-tab-wrap .review-count { + left: 465px; +} + .course-tab { margin: 0; } @@ -613,7 +636,7 @@ body { .package-course-card .title { font-size: 12px; - padding: 0 3px; + padding: 0 5px; text-align: center; white-space: normal; } @@ -684,16 +707,16 @@ body { margin-right: 10px; } -.review-card .like-icon { +.like .icon-praise { margin-right: 5px; cursor: pointer; } -.like .active, .like .like-icon:hover { +.like .active, .like .icon-praise:hover { color: green; } -.review-card .like-count { +.like .like-count { font-style: normal; } @@ -788,15 +811,6 @@ body { text-align: center; } -.sidebar-chapter-list::-webkit-scrollbar { - width: 5px; -} - -.sidebar-chapter-list::-webkit-scrollbar-thumb { - border-radius: 10px; - background: rgba(0, 0, 0, 0.1); -} - .sidebar-chapter-list { height: 405px; overflow-y: auto; @@ -900,15 +914,6 @@ body { overflow-y: auto; } -.chat-msg-list::-webkit-scrollbar { - width: 5px; -} - -.chat-msg-list::-webkit-scrollbar-thumb { - border-radius: 10px; - background: rgba(0, 0, 0, 0.1); -} - .chat-msg-list .chat, .chat-msg-list .chat-sys { margin-bottom: 10px; line-height: 25px; diff --git a/public/static/web/js/course.show.js b/public/static/web/js/course.show.js index 43387bb3..80115bc8 100644 --- a/public/static/web/js/course.show.js +++ b/public/static/web/js/course.show.js @@ -4,6 +4,13 @@ layui.use(['jquery', 'layer', 'helper'], function () { var layer = layui.layer; var helper = layui.helper; + var course = { + title: $('input[name="course.title"]').val(), + cover: $('input[name="course.cover"]').val(), + url: $('input[name="course.url"]').val(), + qrcode: $('input[name="course.qrcode"]').val() + }; + $('.rating-btn').on('click', function () { var url = $(this).data('url'); layer.open({ @@ -14,14 +21,60 @@ layui.use(['jquery', 'layer', 'helper'], function () { }); }); - $('body').on('click', '.like-icon', function () { + $('.icon-heart').on('click', function () { + var $this = $(this); + $.ajax({ + type: 'POST', + url: $this.parent().data('url'), + beforeSend: function () { + return helper.checkLogin(); + }, + success: function () { + if ($this.hasClass('active')) { + $this.removeClass('active'); + } else { + $this.addClass('active'); + } + }, + error: function (xhr) { + var res = JSON.parse(xhr.responseText); + layer.msg(res.msg, {icon: 2}); + } + }); + }); + + $('.icon-wechat').on('click', function () { + var content = '
    分享到微信
    '; + layer.open({ + type: 1, + title: false, + closeBtn: 0, + shadeClose: true, + content: content + }); + }); + + $('.icon-qq').on('click', function () { + var title = '推荐一门好课:' + course.title + ',快来和我一起学习吧!'; + Share.qq(title, null, course.cover); + }); + + $('.icon-weibo').on('click', function () { + var title = '推荐一门好课:' + course.title + ',快来和我一起学习吧!'; + Share.weibo(title, null, course.cover); + }); + + $('body').on('click', '.icon-praise', function () { var $this = $(this); var $likeCount = $this.next(); var likeCount = parseInt($likeCount.text()); $.ajax({ type: 'POST', url: $this.data('url'), - success: function (res) { + beforeSend: function () { + return helper.checkLogin(); + }, + success: function () { if ($this.hasClass('active')) { $this.removeClass('active'); $likeCount.text(likeCount - 1); diff --git a/public/static/web/js/share.js b/public/static/web/js/share.js new file mode 100644 index 00000000..86466c9d --- /dev/null +++ b/public/static/web/js/share.js @@ -0,0 +1,17 @@ +var Share = {}; + +Share.qq = function (title, url, pic) { + var shareUrl = 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?'; + shareUrl += 'title=' + encodeURIComponent(title || document.title); + shareUrl += '&url=' + encodeURIComponent(url || document.location); + shareUrl += '&pics=' + pic; + window.open(shareUrl, '_blank'); +}; + +Share.weibo = function (title, url, pic) { + var shareUrl = 'http://v.t.sina.com.cn/share/share.php?'; + shareUrl += 'title=' + encodeURIComponent(title || document.title); + shareUrl += '&url=' + encodeURIComponent(url || document.location); + shareUrl += '&pic=' + encodeURIComponent(pic || ''); + window.open(shareUrl, '_blank'); +}; \ No newline at end of file diff --git a/public/static/web/js/vod.player.js b/public/static/web/js/vod.player.js index 46d2400c..50f44225 100644 --- a/public/static/web/js/vod.player.js +++ b/public/static/web/js/vod.player.js @@ -17,9 +17,6 @@ layui.use(['jquery', 'form', 'slider', 'layer', 'helper'], function () { var danmuListUrl = $('input[name="chapter.danmu_url"]').val(); var playUrls = JSON.parse($('input[name="chapter.play_urls"]').val()); var $danmuText = $('input[name="danmu.text"]'); - var $danmuColor = $('input[name="danmu.color"]'); - var $danmuSize = $('input[name="danmu.size"]'); - var $danmuPosition = $('input[name="danmu.position"]'); var playerOptions = { autoplay: false,