AddonsAlbumVisit.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <?php
  2. namespace addons\Album\common\models;
  3. use common\enums\StatusEnum;
  4. use common\models\user\User;
  5. use Yii;
  6. use yii\db\Exception;
  7. /**
  8. * This is the model class for table "qimall_addons_album_visit".
  9. *
  10. * @property int $id
  11. * @property int $album_id 画册ID
  12. * @property int $album_page_id 画册页ID
  13. * @property int $mall_id
  14. * @property int $user_id
  15. * @property int $begin_time 浏览开始时间
  16. * @property int $end_time 浏览结束时间
  17. * @property int $stay_time 浏览时长
  18. * @property int $created_at 创建时间
  19. * @property int $updated_at 更新时间
  20. * @property string $date 日期
  21. */
  22. class AddonsAlbumVisit extends \common\models\base\BaseActiveRecord
  23. {
  24. /**
  25. * {@inheritdoc}
  26. */
  27. public static function tableName()
  28. {
  29. return '{{%addons_album_visit}}';
  30. }
  31. /**
  32. * {@inheritdoc}
  33. */
  34. public function rules()
  35. {
  36. return [
  37. [['album_id', 'album_page_id', 'mall_id', 'user_id', 'begin_time', 'end_time', 'stay_time','created_at','updated_at'], 'integer'],
  38. [['date'], 'required'],
  39. [['date'], 'safe'],
  40. ];
  41. }
  42. /**
  43. * {@inheritdoc}
  44. */
  45. public function attributeLabels()
  46. {
  47. return [
  48. 'id' => 'ID',
  49. 'album_id' => '画册ID',
  50. 'album_page_id' => '画册页ID',
  51. 'mall_id' => 'Mall ID',
  52. 'user_id' => 'User ID',
  53. 'begin_time' => '浏览开始时间',
  54. 'end_time' => '浏览结束时间',
  55. 'stay_time' => '浏览时长',
  56. 'date' => '日期',
  57. 'created_at' => '创建时间',
  58. 'updated_at' => '更新时间',
  59. ];
  60. }
  61. public function getUser()
  62. {
  63. return $this->hasOne(User::class, ['id' => 'user_id'])->select('id,mobile,nickname,avatar_url,parent_id,username');
  64. }
  65. public function getAlbum()
  66. {
  67. return $this->hasOne(AddonsAlbum::class, ['id' => 'album_id'])->select('id,title,goods_count');
  68. }
  69. public function getorder()
  70. {
  71. return $this->hasOne(AddonsAlbumOrder::class, ['user_id' => 'user_id'])->select('id,amount,order_count,user_id');
  72. }
  73. /**
  74. * @Author: ltm
  75. * @DateTime: 2022/2/15 0015 11:43
  76. * @Copyright: copyright (c) 2021 广东七件事集团
  77. * @param $data
  78. * @return string
  79. */
  80. public static function setData(array $params){
  81. try{
  82. $is_again = 1;
  83. $todate = date("Y-m-d");
  84. $visit_data = AddonsAlbumVisit::findOne(['album_id' => $params['album_id'],'mall_id'=>$params['mall_id'],'user_id'=>$params['user_id']]);
  85. $model = self::findOne(['album_id' => $params['album_id'],'album_page_id' => $params['album_page_id'],'user_id'=>$params['user_id'],'mall_id'=>$params['mall_id'],'date' => $todate]);
  86. if (!$model){
  87. $model = new self();
  88. $model->begin_time = time();
  89. $model->stay_time = 0;
  90. $model->date = $todate;
  91. $model->created_at = time();
  92. $model->loadDefaultValues();
  93. }else{
  94. $is_again = 2;
  95. $model->end_time = time();
  96. if($params['post_type'] == 2){
  97. $time_s = time() - $model->begin_time;
  98. if($time_s>500){ //挂页面不计数
  99. $time_s = 500;
  100. }
  101. $model->stay_time = $time_s + $model->stay_time;
  102. $old_stay_time = ($time_s);
  103. $model->begin_time = 0;
  104. }else{
  105. $old_stay_time = 0;
  106. $model->begin_time = time();
  107. }
  108. }
  109. $model->mall_id = $params['mall_id'];
  110. if(!$model->load($params,'') || !$model->save()){
  111. throw new Exception($model->getErrorMessage());
  112. }
  113. $msg['status'] = $is_again;
  114. $msg['album_visit'] = $visit_data;
  115. $msg['stay_time'] = $old_stay_time;
  116. return $msg;
  117. }catch(\Exception $e){
  118. self::$static_error = $e->getMessage();
  119. return false;
  120. }
  121. }
  122. public static function handle($params){
  123. $find = AddonsAlbum::getOne([['id' => $params['album_id'],'status' => StatusEnum::ENABLED]],true);
  124. $find_page = AddonsAlbumPage::getOne([['id'=> $params['album_page_id'],'status' => StatusEnum::ENABLED]],true);
  125. if(!$find||!$find_page){
  126. self::$static_error = "画册不存在";
  127. return false;
  128. }
  129. switch ($params['type']){
  130. case 'views';
  131. $user_res = AddonsAlbumVisit::setData($params);
  132. if($user_res['status'] == 1){
  133. $params['visit_count'] = 1;
  134. }
  135. //智能画册汇总统计
  136. if($params['post_type'] == 1){ //统计浏览时长发送了两次接口请求,过滤掉一次
  137. $params['views_count'] = 1;
  138. }else{
  139. $params['views_count'] = 0;
  140. }
  141. $params['album_visit'] = $user_res['album_visit'];
  142. $params['stop_time'] = $user_res['stay_time']??5;
  143. break;
  144. case 'shares';
  145. $params['shares_count'] = 1;
  146. AddonsAlbumPageShare::setData($params);
  147. break;
  148. case 'shares_click';
  149. $params['shares_click_count'] = 1;
  150. AddonsAlbumPageShare::setData($params);
  151. break;
  152. case 'goods_views';
  153. $params['visit_count'] = 1;
  154. $params['goods_views_count'] = 1;
  155. AddonsAlbumGoodsVisit::setData($params);
  156. break;
  157. case 'goods_click';
  158. $params['visit_count'] = 1;
  159. $params['goods_views_count'] = 1;
  160. AddonsAlbumGoodsVisit::setData($params);
  161. break;
  162. case 'order';
  163. $res = AddonsAlbumOrder::setData($params);
  164. if($res['id']){
  165. $params['pay_count'] = 0;
  166. }else{
  167. $params['pay_count'] = 1;
  168. }
  169. AddonsAlbumGoodsVisit::setData($params);
  170. break;
  171. }
  172. $res = AddonsAlbumDateStatistics::setData($params);
  173. //单个画册进行统计
  174. $album_id = AddonsAlbumStatistics::setData($params);
  175. return true;
  176. }
  177. }