onlinetest пре 5 година
родитељ
комит
b234771674

+ 4 - 0
app/Consts/SysConsts.php

@@ -20,4 +20,8 @@ class SysConsts
      * 一年365;
      */
     const ONE_YEAR_DAYS = 365;
+    /**
+     * 数据回传加密key
+     */
+    const TIKTOK_KEY = 'RxCy1TfYDs8mwcLhH541695XpgOWOBxg';
 }

+ 1 - 1
app/Http/Controllers/QuickApp/BaseController.php

@@ -24,7 +24,7 @@ class BaseController extends Controller
     {
 
         if (!isset($this->field[$name])) {
-            $qapp_user = QappUserService::getGolableUserStatic();
+            $qapp_user = (new QappUserService)->getGolableUser();
             if ($name == 'user_info') {
                 $user = User::find($qapp_user->uid);
                 //$this->field[$name] = $qapp_user->user;

+ 3 - 1
app/Http/Controllers/QuickApp/Oauth/UsersController.php

@@ -49,9 +49,11 @@ class UsersController extends Controller
         $package = $request->input('package', '');
         $send_order_id = $request->input('send_order_id', 0);
         $device_no = $request->input('device_no', '');
+        $androidid = $request->input('androidid', '');
+        $mac = $request->input('mac', '');
         $device_info = $request->input('device_info', '');
         if ($device_no) {
-            $data = QappUserService::loginStatic(compact('package', 'send_order_id', 'device_no', 'device_info'));
+            $data = (new QappUserService)->login(compact('package', 'send_order_id', 'device_no', 'androidid', 'mac', 'device_info'));
             return response()->success($data);
         } else {
             return response()->error('PARAM_ERROR');

+ 1 - 2
app/Http/Controllers/QuickApp/User/UserController.php

@@ -13,7 +13,6 @@ use App\Modules\User\Services\QappUserService;
 use App\Modules\User\Services\ReadRecordService;
 use App\Modules\User\Services\UserService;
 use App\Modules\User\Services\UserSignService;
-use Exception;
 use Illuminate\Http\Request;
 use Redis;
 
@@ -181,7 +180,7 @@ class UserController extends BaseController
             if ($this->phone == $phone) {
                 return response()->success();
             } else if (!$this->phone) {
-                $result = QappUserService::bindPhoneStatic($this->uid, $phone);
+                $result = (new QappUserService)->bindPhone($this->uid, $phone);
                 if (!$result) {
                     return response()->success();
                 } else {

+ 2 - 2
app/Http/Middleware/QuickAppGetUserFromToken.php

@@ -30,9 +30,9 @@ class QuickAppGetUserFromToken extends BaseMiddleware
             $user = $this->auth->authenticate($token);
             $send_order_id =  $request->header('send-order-id', 0);
             if ($send_order_id) {
-                UserService::setUserSendOrderStatic($user->id, $send_order_id);
+                UserService::setUserSendOrder($user->id, $send_order_id);
             }
-            QappUserService::setGolableUserStatic($user->id);
+            (new QappUserService)->setGolableUser($user->id);
         } catch (TokenExpiredException $e) {
             return response()->error('QAPP_TOKEN_ERROR');
         } catch (JWTException $e) {

+ 70 - 0
app/Jobs/QappTikTokUser.php

@@ -0,0 +1,70 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Consts\SysConsts;
+use GuzzleHttp\Client;
+use Illuminate\Bus\Queueable;
+use Illuminate\Queue\SerializesModels;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+
+/**
+ * 快应用抖音推广用户
+ */
+class QappTikTokUser implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    private $device_no;
+    private $mac;
+    private $channel_id;
+    private $uid;
+    private $register_time;
+    private $is_report;
+
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(string $device_no, string $mac, int $channel_id, int $uid, string $register_time, bool $is_report = false)
+    {
+        $this->device_no = $device_no;
+        $this->mac = $mac;
+        $this->channel_id = $channel_id;
+        $this->uid = $uid;
+        $this->register_time = $register_time;
+        $this->is_report = $is_report;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        $client = new Client();
+        $params = [
+            'device_no' => $this->device_no,
+            'mac' => $this->mac,
+            'channel_id' => $this->channel_id,
+            'uid' => $this->uid,
+            'register_time' => $this->register_time,
+            'is_report' => $this->is_report,
+            'source' => 'zsy'
+        ];
+        $params['sign'] = _sign($params, SysConsts::TIKTOK_KEY);
+        $url = 'https://newtrackapi.zhuishuyun.com/api/qappuser/register';
+        $response =  $client->request('post', $url, ['form_params' => $params])->getBody()->getContents();
+        myLog('new_user_register')->info($response);
+        $result =  json_decode($response);
+        if ($result) {
+            if ($result->code != 0) {
+                myLog('new_user_register')->info($response);
+            }
+        }
+    }
+}

+ 41 - 0
app/Jobs/QappTikTokUserCharge.php

@@ -0,0 +1,41 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Consts\SysConsts;
+use GuzzleHttp\Client;
+use Illuminate\Bus\Queueable;
+use Illuminate\Queue\SerializesModels;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+
+/**
+ * 抖音用户充值
+ */
+class QappTikTokUserCharge implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    /**
+     * 只有当天注册当天充值用户才上传
+     */
+    const CURRENT_DAY_REGISTER = 'current_day_register';
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(int $uid, float $amount, string $pay_time, string $type = self::CURRENT_DAY_REGISTER, int $molecule = 1, int $denominator = 1)
+    {
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+    }
+}

+ 3 - 0
app/Modules/Trade/Pay/PaySuccessAbstract.php

@@ -2,6 +2,7 @@
 
 namespace App\Modules\Trade\Pay;
 
+use App\Jobs\QappTikTokUserCharge;
 use App\Modules\Subscribe\Models\Order;
 use Exception;
 use Illuminate\Support\Facades\DB;
@@ -34,6 +35,8 @@ abstract class PaySuccessAbstract
          DB::beginTransaction();
          $this->setOrderSuccess();
          $this->handlePayProcess();
+         $job = new QappTikTokUserCharge($this->order->uid, $this->order->price, $this->order->created_at);
+         dispatch($job->onConnection('rabbitmq')->onQueue('qapp_tiktok_user_charge_queue'));
          DB::commit();
          return true;
       } catch (Exception $e) {

+ 11 - 1
app/Modules/User/Models/QappUser.php

@@ -7,5 +7,15 @@ use Illuminate\Database\Eloquent\Model;
 class QappUser extends Model
 {
     protected $table = 'qapp_users';
-    protected $fillable = ['uid', 'channel_id', 'device_no', 'device_info', 'phone'];
+    protected $fillable = [
+        'imei',
+        'oaid',
+        'androidid',
+        'device_no',
+        'mac',
+        'uid',
+        'device_info',
+        'phone',
+        'channel_id',
+    ];
 }

+ 15 - 15
app/Modules/User/Services/QappUserService.php

@@ -3,6 +3,7 @@
 
 namespace App\Modules\User\Services;
 
+use App\Jobs\QappTikTokUser;
 use App\Modules\BaseService;
 use App\Modules\User\Models\QappPackage;
 use App\Modules\User\Models\QappUser;
@@ -13,17 +14,11 @@ use Tymon\JWTAuth\Facades\JWTAuth;
 
 /**
  * 
- * @method static \App\Modules\User\Models\QappUser setGolableUserStatic(int $uid) 设置快应用用户信息(全局)
- * @method static void getGolableUserStatic() 获取快应用用户信息(全局)
- * @method static \App\Modules\User\Models\QappUser loginStatic(array $data) 快应用用户登录
- * @method static bool bindPhoneStatic(int $uid, string $phone) 绑定手机号
  */
 class QappUserService
 {
-    use BaseService;
-
     /**
-     * 获取快应用用户
+     * 登录
      */
     public function login(array $data)
     {
@@ -38,7 +33,7 @@ class QappUserService
         $time = strtotime("+1 month");
         $token = JWTAuth::fromUser($user);
         if ($data['send_order_id']) {
-            UserService::setUserSendOrderStatic($uid, $data['send_order_id']);
+            UserService::setUserSendOrder($uid, $data['send_order_id']);
         }
         return compact('token', 'time', 'uid');
     }
@@ -115,7 +110,7 @@ class QappUserService
         if ($qapp_user) {
             $user = User::find($uid);
             $qapp_user->user = $user;
-            $qapp_user->send_order_id = UserService::getUserSendOrderStatic($uid);
+            $qapp_user->send_order_id = UserService::getUserSendOrder($uid);
             $package_info = QappPackage::where('channel_id', $user->distribution_channel_id)->first();
             $qapp_user->app_pay_merchat_id = $package_info->app_pay_merchat_id;
             $qapp_user->h5_pay_merchat_id = $package_info->h5_pay_merchat_id;
@@ -133,15 +128,20 @@ class QappUserService
         try {
             DB::beginTransaction();
             $user = $this->createUser($data);
-            $uid = $user->id;
             $channel_id = $user->distribution_channel_id;
-            $device_no = $data['device_no'];
-            $device_info = $data['device_info'];
-            $data = compact('device_info', 'uid');
-            $unique_key = compact('device_no', 'channel_id');
-            $qapp_user = QappUser::firstOrCreate($unique_key, $data);
+            $qapp_user = QappUser::firstOrCreate([
+                'device_no' => $data['device_no'],
+                'channel_id' => $channel_id,
+            ], [
+                'androidid' => $data['androidid'],
+                'mac' => $data['mac'],
+                'uid' => $user->id,
+                'device_info' => $data['device_info'],
+            ]);
             $qapp_user->user = $user;
             DB::commit();
+            $job = new QappTikTokUser($data['device_no'], $data['mac'], $channel_id, $user->id, $user->created_at);
+            dispatch($job->onConnection('rabbitmq')->onQueue('qapp_tiktok_user_register_queue'));
             return $qapp_user;
         } catch (Exception $e) {
             myLog('create_user')->error($e->getMessage());

+ 2 - 10
app/Modules/User/Services/UserService.php

@@ -18,27 +18,19 @@ use App\Modules\User\Models\User;
 use App\Modules\User\Models\UserEnv;
 use DB;
 use App\Jobs\ActionTrigger;
-use App\Modules\BaseService;
 use App\Modules\OfficialAccount\Models\DistributionSelfDefineConfig;
 use App\Modules\Channel\Models\Channel;
 use App\Modules\Trade\Models\Order;
 use Redis;
 
-/**
- * 
- * @method void setUserSendOrderStatic(int $uid,int $send_order_id)
- * @method int getUserSendOrderStatic(int $uid)
- */
 class UserService
 {
-    use BaseService;
-
-    public function setUserSendOrder(int $uid, int $send_order_id)
+    public static function setUserSendOrder(int $uid, int $send_order_id)
     {
         return Redis::hset('book_read:' . $uid, 'send_order_id', $send_order_id);
     }
 
-    public function getUserSendOrder(int $uid)
+    public static function getUserSendOrder(int $uid)
     {
         $send_order_id = Redis::hGet('book_read:' . $uid, 'send_order_id');
         $send_order_id = (int) ($send_order_id ? $send_order_id : 0);