16], ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'mall_id' => 'Mall ID', 'user_id' => 'User ID', 'material_id' => 'Material ID', 'view_seconds' => 'View Seconds', 'status' => 'Status', 'created_at' => 'Created At', 'updated_at' => 'Updated At', 'view_times' => 'View Times', 'share_user_id' => 'Share User ID', 'share_user_type' => 'Share User Type', 'unikey' => 'Unikey', ]; } public function getUser() { return $this->hasOne(User::class, ['id' => 'user_id'])->select('id,mobile,nickname,avatar_url,parent_id,username'); } public function getMaterial() { return $this->hasOne(BusinessCardMaterials::class, ['id' => 'material_id'])->select('id,title,cover_img'); } public function getCarduser() { return $this->hasOne(BusinessCardUser::class, ['user_id' => 'user_id'])->select('id,user_id,parent_id'); } public function getShareuser() { return $this->hasOne(User::class, ['id' => 'share_user_id'])->select('id,mobile,nickname,avatar_url,parent_id,username'); } /** * 数据设置 */ public static function setData(array $params, $card_id = 0) { try{ $is_add = 0; if (!isset($params['mall_id']) || empty($params['mall_id'])) throw new Exception('缺少商城ID'); if (isset($params['id']) && !empty($params['id'])) { $model = self::findOne(['id' => $params['id'], 'mall_id' => $params['mall_id'], 'status' => StatusEnum::ENABLED]); if(empty($model)) throw new Exception('浏览记录不存在或已删除'); if (isset($params['view_seconds'])) { $model->view_seconds = $model->view_seconds + $params['view_seconds']; unset($params['view_seconds']); } } else { $model = new self(); $model->loadDefaultValues(); $model->mall_id = $params['mall_id']; $is_add = 1; } if (!$model->load($params,'') || !$model->save()) throw new Exception($model->getErrorMessage()); if($is_add == 1){ self::cutomerLog($params,$model, $card_id); } return $model; }catch(Exception $e){ self::setStaticError($e->getMessage()); return false; } } /** * @param $params * @param $log_data * @param $card_id * @return void * @throws Exception */ //添加行为 public static function cutomerLog($params,$log_data, $card_id = 0){ $add['mall_id'] = $params['mall_id']; $add['user_id'] = $params['user_id']; $add['item_id'] = !empty($card_id) ? $card_id : -1; // -1 $add['material_id'] = $params['material_id']; //$material_times = CardMaterialBrowseLog::count([['=','user_id',$params['user_id']],['=','material_id',$params['material_id']]]); $add['material_times'] = $log_data->view_times; $add['material_log_id'] = $log_data->id; $add['log_type'] = CardEnums::LOG_TYPE_MATEREAL_DETAIL; BusinessCardCustomerLog::setData($add); // 记录 BusinessCardSecretUserScore::setData($params['mall_id'], $params['user_id'], CardEnums::LOG_TYPE_MATEREAL_DETAIL); } // 用户是否阅读过该素材 public static function isReaded($mall_id, $user_id, $material_id) { $is_readed = self::getOne([ ['=', 'mall_id', $mall_id], ['=', 'user_id', $user_id], ['=', 'material_id', $material_id], ['=', 'status', StatusEnum::ENABLED], ], true, '', 'id desc', 'id,view_times'); return $is_readed; } // 用户是否标记过该素材 public static function isMarked($mall_id, $user_id, $material_id, $unikey) { $cache_key = 'addons:cache_key:mall' . $mall_id . ':user' . $user_id . ':material' . $material_id . ':' . $unikey; $redis = Yii::$app->redis; $data = $redis->get($cache_key); if ($data) { return json_decode($data, true); } $log = self::getOne([ ['=', 'mall_id', $mall_id], ['=', 'user_id', $user_id], ['=', 'material_id', $material_id], ['=', 'unikey', $unikey], ['=', 'status', StatusEnum::ENABLED], ], true, '', 'id desc', 'id,user_id'); if ($log) { $redis->setex($cache_key, 120, json_encode($log, JSON_UNESCAPED_UNICODE)); } return $log; } }