| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <?php
- namespace addons\Album\common\models;
- use common\enums\StatusEnum;
- use common\models\user\User;
- use Yii;
- use yii\db\Exception;
- /**
- * This is the model class for table "qimall_addons_album_visit".
- *
- * @property int $id
- * @property int $album_id 画册ID
- * @property int $album_page_id 画册页ID
- * @property int $mall_id
- * @property int $user_id
- * @property int $begin_time 浏览开始时间
- * @property int $end_time 浏览结束时间
- * @property int $stay_time 浏览时长
- * @property int $created_at 创建时间
- * @property int $updated_at 更新时间
- * @property string $date 日期
- */
- class AddonsAlbumVisit extends \common\models\base\BaseActiveRecord
- {
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return '{{%addons_album_visit}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['album_id', 'album_page_id', 'mall_id', 'user_id', 'begin_time', 'end_time', 'stay_time','created_at','updated_at'], 'integer'],
- [['date'], 'required'],
- [['date'], 'safe'],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'id' => 'ID',
- 'album_id' => '画册ID',
- 'album_page_id' => '画册页ID',
- 'mall_id' => 'Mall ID',
- 'user_id' => 'User ID',
- 'begin_time' => '浏览开始时间',
- 'end_time' => '浏览结束时间',
- 'stay_time' => '浏览时长',
- 'date' => '日期',
- 'created_at' => '创建时间',
- 'updated_at' => '更新时间',
- ];
- }
- public function getUser()
- {
- return $this->hasOne(User::class, ['id' => 'user_id'])->select('id,mobile,nickname,avatar_url,parent_id,username');
- }
- public function getAlbum()
- {
- return $this->hasOne(AddonsAlbum::class, ['id' => 'album_id'])->select('id,title,goods_count');
- }
- public function getorder()
- {
- return $this->hasOne(AddonsAlbumOrder::class, ['user_id' => 'user_id'])->select('id,amount,order_count,user_id');
- }
- /**
- * @Author: ltm
- * @DateTime: 2022/2/15 0015 11:43
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $data
- * @return string
- */
- public static function setData(array $params){
- try{
- $is_again = 1;
- $todate = date("Y-m-d");
- $visit_data = AddonsAlbumVisit::findOne(['album_id' => $params['album_id'],'mall_id'=>$params['mall_id'],'user_id'=>$params['user_id']]);
- $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]);
- if (!$model){
- $model = new self();
- $model->begin_time = time();
- $model->stay_time = 0;
- $model->date = $todate;
- $model->created_at = time();
- $model->loadDefaultValues();
- }else{
- $is_again = 2;
- $model->end_time = time();
- if($params['post_type'] == 2){
- $time_s = time() - $model->begin_time;
- if($time_s>500){ //挂页面不计数
- $time_s = 500;
- }
- $model->stay_time = $time_s + $model->stay_time;
- $old_stay_time = ($time_s);
- $model->begin_time = 0;
- }else{
- $old_stay_time = 0;
- $model->begin_time = time();
- }
- }
- $model->mall_id = $params['mall_id'];
- if(!$model->load($params,'') || !$model->save()){
- throw new Exception($model->getErrorMessage());
- }
- $msg['status'] = $is_again;
- $msg['album_visit'] = $visit_data;
- $msg['stay_time'] = $old_stay_time;
- return $msg;
- }catch(\Exception $e){
- self::$static_error = $e->getMessage();
- return false;
- }
- }
- public static function handle($params){
- $find = AddonsAlbum::getOne([['id' => $params['album_id'],'status' => StatusEnum::ENABLED]],true);
- $find_page = AddonsAlbumPage::getOne([['id'=> $params['album_page_id'],'status' => StatusEnum::ENABLED]],true);
- if(!$find||!$find_page){
- self::$static_error = "画册不存在";
- return false;
- }
- switch ($params['type']){
- case 'views';
- $user_res = AddonsAlbumVisit::setData($params);
- if($user_res['status'] == 1){
- $params['visit_count'] = 1;
- }
- //智能画册汇总统计
- if($params['post_type'] == 1){ //统计浏览时长发送了两次接口请求,过滤掉一次
- $params['views_count'] = 1;
- }else{
- $params['views_count'] = 0;
- }
- $params['album_visit'] = $user_res['album_visit'];
- $params['stop_time'] = $user_res['stay_time']??5;
- break;
- case 'shares';
- $params['shares_count'] = 1;
- AddonsAlbumPageShare::setData($params);
- break;
- case 'shares_click';
- $params['shares_click_count'] = 1;
- AddonsAlbumPageShare::setData($params);
- break;
- case 'goods_views';
- $params['visit_count'] = 1;
- $params['goods_views_count'] = 1;
- AddonsAlbumGoodsVisit::setData($params);
- break;
- case 'goods_click';
- $params['visit_count'] = 1;
- $params['goods_views_count'] = 1;
- AddonsAlbumGoodsVisit::setData($params);
- break;
- case 'order';
- $res = AddonsAlbumOrder::setData($params);
- if($res['id']){
- $params['pay_count'] = 0;
- }else{
- $params['pay_count'] = 1;
- }
- AddonsAlbumGoodsVisit::setData($params);
- break;
- }
- $res = AddonsAlbumDateStatistics::setData($params);
- //单个画册进行统计
- $album_id = AddonsAlbumStatistics::setData($params);
- return true;
- }
- }
|