| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | <?phpnamespace App\Jobs;use App\Consts\SysConsts;use App\Modules\OfficialAccount\Models\ForceSubscribeUsers;use App\Modules\OfficialAccount\Models\OfficialAccount;use App\Modules\Trade\Models\Order;use App\Modules\User\Models\User;use App\Modules\User\Models\UserEnv;use GuzzleHttp\Client;use GuzzleHttp\Exception\ConnectException;use Illuminate\Bus\Queueable;use Illuminate\Queue\SerializesModels;use Illuminate\Queue\InteractsWithQueue;use Illuminate\Contracts\Queue\ShouldQueue;use Illuminate\Foundation\Bus\Dispatchable;use Illuminate\Support\Facades\Log;/** * 抖音用户推送数据 */class TikTokUser implements ShouldQueue{    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;    /**     * 类型:充值     */    const charge = 'charge';    /**     * 类型:注册     */    const register = 'register';    private $uid;    private $type;    /**     * Create a new job instance.     * @param int $uid     * @param string $type 类型     * @return void     */    public function __construct(int $uid, string $type)    {        $this->uid = $uid;        $this->type = $type;    }    /**     * Execute the job.     *     * @return void     */    public function handle()    {        $user = User::find($this->uid);        $user_env = UserEnv::where('uid', $this->uid)->first();        if ($user && $user_env) {            if ($this->type == self::charge) {                $order = Order::where('uid', $this->uid)->where('status', 'PAID')->orderBy('id', 'desc')->first();                $current_day_register = date('Y-m-d', strtotime($order->created_at)) ==  date('Y-m-d', strtotime($user->created_at));                if ($order && $current_day_register && $order->price >= 30) {                    $time = (string) $order->created_at;                    $ip = $order->create_ip;                    $count = Order::where('uid', $this->uid)->where('status', 'PAID')->where('price', '>=', '30')->count();                    if ($count == 1) {                        $amount = $order->price;                    } else {                        return;                    }                } else {                    return;                }            } else {                $time = (string) $user->created_at;                $ip = $user->register_ip;            }            $wechat = OfficialAccount::where('distribution_channel_id', $user->distribution_channel_id)->orderBy('id', 'desc')->first();            if ($wechat) {                $params = [                    'ip' => trim($ip),                    'ua' => trim($user_env->ua),                    'open_id' => trim($user->openid),                    'account_id' => trim($wechat->alias),                    'app_id' => trim($wechat->appid),                    'source' => 'wdy',                    'amount' =>  isset($amount) ? $amount : '',                    'type' => $this->type,                    'time' => $time,                ];                $params['sign'] = _sign($params, SysConsts::TIKTOK_KEY);                $client = new Client(['timeout' => 4]);                $url = 'https://newtrackapi.zhuishuyun.com/api/tiktokPushInfo';                try {                    $response = $client->post($url, ['form_params' => $params]);                    $code = $response->getStatusCode();                    $res = $code == 200 ? 'success' : 'fail';                    Log::info('TikTokUser .' . $this->type . '. result : ' . $res . ' request params :' . json_encode($params) . ' http code: ' . $response->getStatusCode() . ' return content:' . $response->getBody()->getContents());                } catch (ConnectException $e) {                    Log::error($e->getMessage());                }            }        }    }}
 |