post('referral'); if ($referral) { $ip = Ip::ip(); $appid = Request::instance()->post('appid', ''); $key = CacheConstants::getGuideWxSubscribe($ip, $_SERVER['HTTP_USER_AGENT'] ?? ''); if ($appid) { Redis::instance()->set($key, $appid . '和' . $id . '和' . $referral, CacheConstants::TOUTIAO_SUB_WINDOW); } else { Redis::instance()->set($key, $id . '和' . $referral, CacheConstants::TOUTIAO_SUB_WINDOW); } LogService::info('REF:' . $id . ':' . $appid . ':' . $key . ':' . $_SERVER['HTTP_USER_AGENT']); } else { LogService::notice('NOREF:' . $id); } } public function visitorsave4join() { $ip = Request::instance()->param('ip', ''); $ua = Request::instance()->param('ua', ''); $url = Request::instance()->param('url', ''); if ($ip && $ua && $url) { $key = CacheConstants::getGuideWxSubscribe($ip, $ua); $appid = Request::instance()->param('appid', ''); if ($appid) { Redis::instance()->set($key, $appid . '和0和' . $url, CacheConstants::TOUTIAO_SUB_WINDOW); } else { Redis::instance()->set($key, '0和' . $url, CacheConstants::TOUTIAO_SUB_WINDOW); } LogService::info('REF:0:' . $appid . ':' . $key . ':' . $ua . ':' . $url); return json(['code' => 0, 'msg' => 'ok']); } else { return json(['code' => 100, 'msg' => 'params ip,ua,url is required, appid is recommended']); } } public function visitorsavefromjs() { $ua = $_SERVER['HTTP_USER_AGENT'] ?? ''; $ip = Ip::ip(); $url = Request::instance()->url(); if ($ip && $ua && $url) { $key = CacheConstants::getGuideWxSubscribe($ip, $ua); $appid = Request::instance()->param('appid', ''); if ($appid) { Redis::instance()->set($key, $appid . '和0和' . $url, CacheConstants::TOUTIAO_SUB_WINDOW); } else { Redis::instance()->set($key, '0和' . $url, CacheConstants::TOUTIAO_SUB_WINDOW); } LogService::info('REF:0:' . $appid . ':' . $key . ':' . $ua . ':' . $url); return json(['code' => 0, 'msg' => 'ok']); } else { return json(['code' => 100, 'msg' => 'params ip,ua,url is required, appid is recommended']); } } }