AddonsCourseChapterLikes.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. namespace addons\Course\common\models;
  3. use addons\Course\common\enums\CourseEnum;
  4. use common\enums\StatusEnum;
  5. use Yii;
  6. /**
  7. * This is the model class for table "{{%addons_course_user_chapter_likes}}".
  8. *
  9. * @property int $id
  10. * @property int $mall_id 商城id
  11. * @property int $course_id 课程id
  12. * @property int $user_id 用户id
  13. * @property int $is_likes 是否点赞,1:是,0:不是
  14. * @property int $status 状态 0禁用,1启用,-1是删除
  15. * @property int $created_at
  16. * @property int $updated_at
  17. */
  18. class AddonsCourseChapterLikes extends \common\models\base\BaseActiveRecord
  19. {
  20. /**
  21. * {@inheritdoc}
  22. */
  23. public static function tableName()
  24. {
  25. return '{{%addons_course_user_chapter_likes}}';
  26. }
  27. /**
  28. * {@inheritdoc}
  29. */
  30. public function rules()
  31. {
  32. return [
  33. [['mall_id', 'course_id', 'user_id', 'is_likes', 'status', 'created_at', 'updated_at'], 'integer'],
  34. ];
  35. }
  36. /**
  37. * {@inheritdoc}
  38. */
  39. public function attributeLabels()
  40. {
  41. return [
  42. 'id' => 'ID',
  43. 'mall_id' => '商城id',
  44. 'course_id' => '课程id',
  45. 'user_id' => '用户id',
  46. 'is_likes' => '是否点赞,1:是,0:不是',
  47. 'status' => '状态 0禁用,1启用,-1是删除',
  48. 'created_at' => 'Created At',
  49. 'updated_at' => 'Updated At',
  50. ];
  51. }
  52. /**
  53. * 判断用户是否点赞课程
  54. * @param $course_id int 课程ID
  55. * @return int 0:未点赞 1:已点赞
  56. */
  57. public static function getUserIsLikes($course_id, $user_id)
  58. {
  59. $result = 0;
  60. $userChapterLikes = self::findOne(["course_id" => $course_id, "user_id" => $user_id]);
  61. if (!empty($userChapterLikes)) {
  62. $result = $userChapterLikes->is_likes;
  63. }
  64. return $result;
  65. }
  66. public static function setData(int $mall_id, array $data)
  67. {
  68. // 判断课程是否可以点赞
  69. $where[] = ['id' => $data['course_id']];
  70. $where[] = ['status' => StatusEnum::ENABLED];
  71. $where[] = ['mall_id' => $mall_id];
  72. $course_info = AddonsCourse::getOne($where);
  73. if (empty($course_info)) {
  74. self::$static_error = '课程不存在或已下架';
  75. return false;
  76. }
  77. $msg = '点赞成功';
  78. array_shift($where);
  79. $where[] = ['user_id' => $data['user_id']];
  80. $where[] = ['course_id' => $data['course_id']];
  81. $user_course_like_model = AddonsCourseChapterLikes::getOne($where);
  82. $like = 1;
  83. if (!$user_course_like_model) {
  84. $user_course_like_model = new self();
  85. $user_course_like_model->loadDefaultValues();
  86. $user_course_like_model->load($data, '');
  87. $user_course_like_model->mall_id = $mall_id;
  88. $user_course_like_model->is_likes = CourseEnum::IS_LIKES_ONE;
  89. $user_course_like_model->status = StatusEnum::ENABLED;
  90. } else {
  91. if ($user_course_like_model->is_likes == CourseEnum::IS_LIKES_ZERO) {
  92. $user_course_like_model->is_likes = CourseEnum::IS_LIKES_ONE;
  93. } else {
  94. $like = -1;
  95. $msg = '取消点赞成功';
  96. $user_course_like_model->is_likes = CourseEnum::IS_LIKES_ZERO;
  97. }
  98. }
  99. if (!$user_course_like_model->save()) {
  100. self::$static_error = '保存数据失败:' . $user_course_like_model->getErrorMessage();
  101. return false;
  102. }
  103. $course_info->updateCounters(['likes' => $like]);
  104. return $msg;
  105. }
  106. }