Watch.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace addons\Course\common\logic;
  3. use addons\Course\common\models\AddonsCourseChapter;
  4. use addons\Course\common\models\CourseUserWatch;
  5. use addons\Course\common\models\CourseWatchLog;
  6. use common\enums\StatusEnum;
  7. use common\helpers\wechat\WechatTemplate;
  8. use common\models\mall\Mall;
  9. use common\models\user\User;
  10. use common\traits\ErrorTrait;
  11. class Watch
  12. {
  13. use ErrorTrait;
  14. public static function add($params)
  15. {
  16. $t = \Yii::$app->db->beginTransaction();
  17. try {
  18. CourseWatchLog::setData($params);
  19. $user = User::findOne(['mall_id' => $params['mall_id'], 'id' => $params['user_id']]);
  20. $params['register_time'] = $user['created_at'];
  21. CourseUserWatch::setData($params);
  22. $t->commit();
  23. return true;
  24. } catch (\Exception $e) {
  25. $t->rollBack();
  26. self::$static_error = $e->getMessage();
  27. return false;
  28. }
  29. }
  30. public static function getText($duration)
  31. {
  32. if(empty($duration)) return '暂无';
  33. $h = bcdiv($duration, 3600);
  34. $i = bcdiv($duration - $h * 3600, 60);
  35. $s = $duration % 60;
  36. $text = '累计观看';
  37. if ($h > 0) $text .= $h . '小时';
  38. if ($i > 0) $text .= $i . '分';
  39. if ($s > 0) $text .= $s . '秒';
  40. return $text;
  41. }
  42. public static function initUserWatch()
  43. {
  44. $i = 1;
  45. $page_size = 1000;
  46. while ($list = User::find()->where(['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
  47. ->select('id,mall_id,created_at')
  48. ->offset(($i - 1) * $page_size)->limit($page_size)->all()) {
  49. foreach ($list as $user) {
  50. $param['register_time'] = $user['created_at'];
  51. $param['mall_id'] = $user['mall_id'];
  52. $param['user_id'] = $user['id'];
  53. $param['duration'] = 0;
  54. $res = CourseUserWatch::setData($param);
  55. if ($res == false) {
  56. var_dump(CourseUserWatch::getStaticError());
  57. } else {
  58. var_dump($res['id']);
  59. }
  60. }
  61. $i++;
  62. }
  63. }
  64. }