123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- namespace App\Console\Commands;
- use Illuminate\Console\Command;
- use Redis;
- use DB;
- use Hashids;
- class LatestCustomerMsg extends Command
- {
-
- protected $signature = 'LatestCustomerMsg';
-
- protected $description = 'latest three days customer msg';
-
- public function __construct()
- {
- parent::__construct();
- }
-
- public function handle()
- {
- $this->start();
- }
- private function start()
- {
- Redis::del('latestcustomerinfo');
- $sites = redisEnv('CUSTOM_CHAPTER_ORDER_SITES', '');
- if (!$sites) return;
- $sites = explode(',', $sites);
- $result = \App\Modules\OfficialAccount\Models\CustomSendMsgs::where('send_time', '>=', date('Y-m-d H:i:s', time() - 15 * 60 - 3 * 86400))
- ->where('send_time', '<=', date('Y-m-d H:i:s'))
- ->whereIn('distribution_channel_id', $sites)
- ->select('id', 'redirect_url', 'send_time')
- ->get();
- if ($result->isEmpty()) return;
- foreach ($result as $item) {
- if (!$item->redirect_url) continue;
- $url_info = parse_url($item->redirect_url);
- if (isset($url_info['path']) && isset($url_info['query'])) {
- if (strpos('/reader', $url_info['path']) === false &&
- strpos('/yun', $url_info['path']) === false &&
- strpos('/detail', $url_info['path']) === false &&
- strpos('/custom_msgs_page', $url_info['path']) === false
- ) {
- continue;
- }
- $bid = null;
- if (strpos('/reader', $url_info['path']) !== false) {
- parse_str($url_info['query'], $param);
- if (!isset($param['bid'])) {
- continue;
- }
- if ($param['bid'] == 'undefined') continue;
- $bid_info = Hashids::decode($param['bid']);
- $bid = isset($bid_info[0]) ? $bid_info[0] : 0;
- }
- if (strpos('/custom_msgs_page', $url_info['path']) !== false) {
- $temp = urldecode($url_info['query']);
- $temp_info = parse_url($temp);
- parse_str($temp_info['query'], $param);
- if (!isset($param['bid'])) {
- continue;
- }
- if ($param['bid'] == 'undefined') continue;
- $bid_info = Hashids::decode($param['bid']);
- $bid = isset($bid_info[0]) ? $bid_info[0] : 0;
- }
-
- if (!$bid) continue;
- Redis::hset('latestcustomerinfo', $item->id, json_encode([
- 'bid' => $bid,
- 'send_time' => $item->send_time
- ]));
- }
- }
- }
- }
|