1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-26 20:52:44 +08:00
course-tencent-cloud/app/Listeners/CourseCounter.php
2020-07-13 19:23:36 +08:00

109 lines
2.8 KiB
PHP

<?php
namespace App\Listeners;
use App\Caches\CourseCounter as CacheCourseCounter;
use App\Models\Course as CourseModel;
use App\Services\Syncer\CourseCounter as CourseCounterSyncer;
use App\Services\Syncer\CourseIndex as CourseIndexSyncer;
use Phalcon\Events\Event;
class CourseCounter extends Listener
{
protected $counter;
public function __construct()
{
$this->counter = new CacheCourseCounter();
}
public function incrUserCount(Event $event, $source, CourseModel $course)
{
$this->counter->hIncrBy($course->id, 'user_count');
$this->syncCourseCounter($course);
$this->syncCourseIndex($course);
}
public function decrUserCount(Event $event, $source, CourseModel $course)
{
$this->counter->hDecrBy($course->id, 'user_count');
$this->syncCourseCounter($course);
$this->syncCourseIndex($course);
}
public function incrConsultCount(Event $event, $source, CourseModel $course)
{
$this->counter->hIncrBy($course->id, 'consult_count');
$this->syncCourseCounter($course);
}
public function decrConsultCount(Event $event, $source, CourseModel $course)
{
$this->counter->hDecrBy($course->id, 'consult_count');
$this->syncCourseCounter($course);
}
public function incrReviewCount(Event $event, $source, CourseModel $course)
{
$this->counter->hIncrBy($course->id, 'review_count');
$this->syncCourseCounter($course);
}
public function decrReviewCount(Event $event, $source, CourseModel $course)
{
$this->counter->hDecrBy($course->id, 'review_count');
$this->syncCourseCounter($course);
}
public function incrCommentCount(Event $event, $source, CourseModel $course)
{
$this->counter->hIncrBy($course->id, 'comment_count');
$this->syncCourseCounter($course);
}
public function decrCommentCount(Event $event, $source, CourseModel $course)
{
$this->counter->hDecrBy($course->id, 'comment_count');
$this->syncCourseCounter($course);
}
public function incrFavoriteCount(Event $event, $source, CourseModel $course)
{
$this->counter->hIncrBy($course->id, 'favorite_count');
$this->syncCourseCounter($course);
}
public function decrFavoriteCount(Event $event, $source, CourseModel $course)
{
$this->counter->hDecrBy($course->id, 'favorite_count');
$this->syncCourseCounter($course);
}
protected function syncCourseCounter(CourseModel $course)
{
$syncer = new CourseCounterSyncer();
$syncer->addItem($course->id);
}
protected function syncCourseIndex(CourseModel $course)
{
$syncer = new CourseIndexSyncer();
$syncer->addItem($course->id);
}
}