| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | <?phpnamespace App\Console\Commands;use Illuminate\Console\Command;use Redis;use DB;use Hashids;class LatestCustomerMsg extends Command{    /**     * The name and signature of the console command.     *     * @var string     */    protected $signature = 'LatestCustomerMsg';    /**     * The console command description.     *     * @var string     */    protected $description = 'latest three days customer msg';    /**     * Create a new command instance.     *     * @return void     */    public function __construct()    {        parent::__construct();    }    /**     * Execute the console command.     *     * @return mixed     */    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 (strpos('/detail',$url_info['path']) !== false) {                    parse_str($url_info['query'],$param);                    if (!isset($param['id'])) {                        continue;                    }                    if($param['id'] == 'undefined') continue;                    $bid_info = \Hashids::decode($param['id']);                    $bid = isset($bid_info[0])?$bid_info[0]:0;                }                if (strpos($url_info['path'],'/yun/') !== false) {                    $send_order_id = str_replace('/yun/','',$url_info['path']);                    $send_order_info = \App\Modules\SendOrder\Services\SendOrderService::getById($send_order_id);                    if($send_order_info){                        $bid = $send_order_info->book_id;                    }                }*/                if (!$bid) continue;                Redis::hset('latestcustomerinfo', $item->id, json_encode([                    'bid' => $bid,                    'send_time' => $item->send_time                ]));            }        }    }}
 |