data = $data; $this->params = $params; } /** * Execute the job. * * @return void */ public function handle() { if (!empty($this->data) && is_array($this->data)) { if (isset($this->data[0])) { // 二维数组. foreach ($this->data as $item) { self::threadOne($item); } } else { self::threadOne($this->data); } } } /** * 处理单个. * @param array $item */ protected function threadOne(array $item) { $item['device_type'] = strtoupper($item['device_type']); $keyFlag = 'day_active:'; if ($item['channel_uid'] == '') { // 空字符串,代表官方. $fixChannelUid = 'office__'; } else { $fixChannelUid = $item['channel_uid']; } // 时间格式Y-m-d // 日期+渠道维度. $keyPrefix = $keyFlag . 'ch:' . $fixChannelUid . ':' . Carbon::parse($item['created_at'])->toDateString(); $key = $keyPrefix . ':'. $item['device_type']; // 单种设备日活 Redis::pfadd($key, [$item['user_uid']]); // 所有设备日活 Redis::pfadd($keyPrefix, [$item['user_uid']]); // 日期+母包应用维度 $keyPrefix = $keyFlag . 'mom_app:' . $item['mom_app_uid'] . ':' . Carbon::parse($item['created_at'])->toDateString(); $key = $keyPrefix . ':'. $item['device_type']; // 单种设备日活 Redis::pfadd($key, [$item['user_uid']]); // 所有设备日活 Redis::pfadd($keyPrefix, [$item['user_uid']]); // 仅日期维度,所有渠道. $keyPrefix = $keyFlag . Carbon::parse($item['created_at'])->toDateString(); $key = $keyPrefix . ':'. $item['device_type']; // 单种设备日活 Redis::pfadd($key, [$item['user_uid']]); // 所有设备日活 Redis::pfadd($keyPrefix, [$item['user_uid']]); } }