Bläddra i källkod

账户级回传队列分开

zqwang 2 år sedan
förälder
incheckning
28b512925d

+ 0 - 1
app/Jobs/QappTikTok/NewQappTikTokUserCharge.php

@@ -52,7 +52,6 @@ class NewQappTikTokUserCharge implements ShouldQueue
         if ($this->reportParams->send_order_id) {
         if ($this->reportParams->send_order_id) {
             $params['send_order_id'] = $this->reportParams->send_order_id;
             $params['send_order_id'] = $this->reportParams->send_order_id;
         }
         }
-
         $params['sign'] = _sign($params, SysConsts::TIKTOK_KEY);
         $params['sign'] = _sign($params, SysConsts::TIKTOK_KEY);
         $response       = $client->request('post', $this->url, ['form_params' => $params])->getBody()->getContents();
         $response       = $client->request('post', $this->url, ['form_params' => $params])->getBody()->getContents();
         myLog('qapp_user_charge')->info($response);
         myLog('qapp_user_charge')->info($response);

+ 68 - 0
app/Jobs/QappTikTok/QappTikTokUserChargeAccount.php

@@ -0,0 +1,68 @@
+<?php
+
+namespace App\Jobs\QappTikTok;
+
+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 QappTikTokUserChargeAccount implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    private $reportParams;
+
+    protected $url;
+
+    /**
+     * QappTikTokUserCharge constructor.
+     * @param QappTikTokUserChargeRequest $reportParams
+     */
+    public function __construct(QappTikTokUserChargeRequest $reportParams)
+    {
+        $this->reportParams = $reportParams;
+        $this->url = env('TIKTOK_API_URL'). 'api/qappuser/new_charge';
+    }
+
+    /**
+     * Execute the job.
+     * @throws \GuzzleHttp\Exception\GuzzleException
+     */
+    public function handle()
+    {
+        $client = new Client();
+        $params = [
+            'uid'         => (int)$this->reportParams->uid,
+            'amount'      => (float)$this->reportParams->amount,
+            'pay_time'    => (string)$this->reportParams->pay_time,
+            'order_no'     => (string)$this->reportParams->order_no,
+            'book_id'     => (string)$this->reportParams->book_id,
+            'book_name'   => (string)$this->reportParams->book_name,
+            'source'      => 'zsy',
+            'send_order_id' => (int) $this->reportParams->send_order_id,
+            'account' => (string) $this->reportParams->amount,
+            'account_id' =>  (int)$this->reportParams->amount_id,
+        ];
+
+        // 避免签名错误
+        if ($this->reportParams->send_order_id) {
+            $params['send_order_id'] = $this->reportParams->send_order_id;
+        }
+        $params['sign'] = _sign($params, SysConsts::TIKTOK_KEY);
+        $response       = $client->request('post', $this->url, ['form_params' => $params])->getBody()->getContents();
+        myLog('qapp_user_charge_account')->info($response);
+        $result = json_decode($response);
+        if ($result) {
+            if ($result->code != 0) {
+                myLog('qapp_user_charge_account')->info($response);
+            }
+        }
+    }
+}

+ 52 - 0
app/Jobs/QappTikTok/QappTikTokUserChargeAccountRequest.php

@@ -0,0 +1,52 @@
+<?php
+
+
+namespace App\Jobs\QappTikTok;
+
+
+class QappTikTokUserChargeAccountRequest
+{
+    // 派单所属账号id
+    public  $account_id;
+    
+    // 派单账号
+    public $account;
+    
+    // 用户Uid
+    public $uid;
+
+    // 充值金额
+    public $amount;
+
+    // 支付时间
+    public $pay_time;
+
+    /**
+     * 订单号
+     */
+    public $order_no;
+
+    // 上报类型
+    public $type;
+
+    // 书籍id
+    public $book_id;
+
+    // 书名
+    public $book_name;
+
+    // 回传类型
+    public $report_type;
+
+    // 回传比例
+    public $report_rate;
+
+    // 派单id
+    public $send_order_id;
+
+    // 分子
+    public $molecule;
+
+    // 分母
+    public $denominator = 100;
+}

+ 1 - 0
app/Modules/SendOrder/Models/QappSendOrder.php

@@ -14,6 +14,7 @@ class QappSendOrder extends Model
         'distribution_channel_id',
         'distribution_channel_id',
         'report_type',
         'report_type',
         'report_rate',
         'report_rate',
+        'return_type',
         'first_charge_template_id',
         'first_charge_template_id',
         'second_charge_template_id',
         'second_charge_template_id',
         'callback_type',
         'callback_type',

+ 63 - 29
app/Modules/Trade/Pay/PaySuccessAbstract.php

@@ -3,6 +3,8 @@
 namespace App\Modules\Trade\Pay;
 namespace App\Modules\Trade\Pay;
 
 
 use App\Jobs\QappTikTok\NewQappTikTokUserCharge;
 use App\Jobs\QappTikTok\NewQappTikTokUserCharge;
+use App\Jobs\QappTikTok\QappTikTokUserChargeAccount;
+use App\Jobs\QappTikTok\QappTikTokUserChargeAccountRequest;
 use App\Jobs\QappTikTok\QappTikTokUserChargeRequest;
 use App\Jobs\QappTikTok\QappTikTokUserChargeRequest;
 use App\Jobs\QappTikTok\QappTikTokUserCharge;
 use App\Jobs\QappTikTok\QappTikTokUserCharge;
 use App\Modules\Book\Models\BookConfig;
 use App\Modules\Book\Models\BookConfig;
@@ -86,39 +88,12 @@ abstract class PaySuccessAbstract
     protected function addQueue()
     protected function addQueue()
     {
     {
         UserTaskService::addUserTaskQueue($this->order->uid, BaseTask::charge, UserTaskService::judge_trigger);
         UserTaskService::addUserTaskQueue($this->order->uid, BaseTask::charge, UserTaskService::judge_trigger);
-        $bid       = ReadRecordService::getSimpleFirstReadRecord($this->order->uid);
-        $book_id   = book_hash_encode($bid);
-        $book      = BookConfig::where('bid', $bid)->select('book_name')->first();
-        $book_name = $book ? $book->book_name : '';
-
         // 取用户注册的派单id,派单信息
         // 取用户注册的派单id,派单信息
         $user           = User::getUser($this->order->uid);
         $user           = User::getUser($this->order->uid);
         $sendOrderId    = getProp($user, 'send_order_id');
         $sendOrderId    = getProp($user, 'send_order_id');
         $quickSendOrder = QappSendOrder::getSendOrderById($sendOrderId);
         $quickSendOrder = QappSendOrder::getSendOrderById($sendOrderId);
-        $reportType     = getProp($quickSendOrder, 'report_type');
-        $reportRate     = (int)getProp($quickSendOrder, 'report_rate', 100);
-
-        // 队列处理回传业务
-        $tikTokChargeRequest                = new QappTikTokUserChargeRequest();
-        $tikTokChargeRequest->uid           = $this->order->uid;
-        $tikTokChargeRequest->amount        = $this->order->price;
-        $tikTokChargeRequest->order_no      = $this->order->trade_no;
-        $tikTokChargeRequest->pay_time      = $this->order->created_at;
-        $tikTokChargeRequest->book_id       = $book_id;
-        $tikTokChargeRequest->book_name     = $book_name;
-        $tikTokChargeRequest->send_order_id = $sendOrderId;
-
-        // 需要跟派单设置的回传类型一致才上报
-        myLog('qapp_user_charge')->info('addQueue', compact('tikTokChargeRequest'));
-        $job = new NewQappTikTokUserCharge($tikTokChargeRequest);
-        $callback_type = getProp($quickSendOrder, 'callback_type');
-        if ($callback_type == 'cycle_report') {
-            $cycjob = new CycleCallBack($this->order->trade_no);
-            dispatch($cycjob->onConnection('redis_queue')->onQueue('{qapp_tiktok_cycle_user_charge_queue}'));
-        }else{
-            dispatch($job->onConnection('redis_queue')->onQueue('{qapp_tiktok_user_charge_queue}'));
-        }
-
+        $this->handleOrderQueue($quickSendOrder,$sendOrderId);
+        
         // 同步数据
         // 同步数据
         $this->order->distribution_channel_id = getProp($quickSendOrder, 'distribution_channel_id');
         $this->order->distribution_channel_id = getProp($quickSendOrder, 'distribution_channel_id');
         try {
         try {
@@ -128,4 +103,63 @@ abstract class PaySuccessAbstract
         }
         }
 
 
     }
     }
+    
+    private function handleOrderQueue($quickSendOrder, $sendOrderId)
+    {
+        $bid       = ReadRecordService::getSimpleFirstReadRecord($this->order->uid);
+        $book_id   = book_hash_encode($bid);
+        $book      = BookConfig::where('bid', $bid)->select('book_name')->first();
+        $book_name = $book ? $book->book_name : '';
+      
+        $return_type =  getProp($quickSendOrder, 'return_type'); // tiktok_account 巨量平台账户级; self:派单自身配置的回传配置成
+        $reportType     = getProp($quickSendOrder, 'report_type');
+        $reportRate     = (int)getProp($quickSendOrder, 'report_rate', 100);
+        // 默认走派单回传配置
+        switch ($return_type){
+            // 头条账户级回传
+            case "tiktok_account":
+                $tikTokChargeRequest                = new QappTikTokUserChargeAccountRequest();
+                $tikTokChargeRequest->uid           = $this->order->uid;
+                $tikTokChargeRequest->amount        = $this->order->price;
+                $tikTokChargeRequest->order_no      = $this->order->trade_no;
+                $tikTokChargeRequest->pay_time      = $this->order->created_at;
+                $tikTokChargeRequest->book_id       = $book_id;
+                $tikTokChargeRequest->book_name     = $book_name;
+                $tikTokChargeRequest->send_order_id = $sendOrderId;
+                $tikTokChargeRequest->account = $quickSendOrder->account;
+                $tikTokChargeRequest->account_id = DB::table('qapp_channel_accounts')->where('account',$tikTokChargeRequest->account)->value('id');
+                myLog('qapp_user_charge')->info('addQueue', compact('tikTokChargeRequest'));
+                // 需要跟派单设置的回传类型一致才上报
+                $obj = new QappTikTokUserChargeAccount($tikTokChargeRequest);
+                dispatch($obj->onConnection('redis_queue')->onQueue('{qapp_tiktok_account_user_charge_queue}'));
+                
+                break;
+                
+            default:
+                // 队列处理回传业务
+                $tikTokChargeRequest                = new QappTikTokUserChargeRequest();
+                $tikTokChargeRequest->uid           = $this->order->uid;
+                $tikTokChargeRequest->amount        = $this->order->price;
+                $tikTokChargeRequest->order_no      = $this->order->trade_no;
+                $tikTokChargeRequest->pay_time      = $this->order->created_at;
+                $tikTokChargeRequest->book_id       = $book_id;
+                $tikTokChargeRequest->book_name     = $book_name;
+                $tikTokChargeRequest->send_order_id = $sendOrderId;
+    
+                // 需要跟派单设置的回传类型一致才上报
+                myLog('qapp_user_charge')->info('addQueue', compact('tikTokChargeRequest'));
+                $job = new NewQappTikTokUserCharge($tikTokChargeRequest);
+                $callback_type = getProp($quickSendOrder, 'callback_type');
+                if ($callback_type == 'cycle_report') {
+                    $cycjob = new CycleCallBack($this->order->trade_no);
+                    dispatch($cycjob->onConnection('redis_queue')->onQueue('{qapp_tiktok_cycle_user_charge_queue}'));
+                }else{
+                    dispatch($job->onConnection('redis_queue')->onQueue('{qapp_tiktok_user_charge_queue}'));
+                }
+                break;
+        }
+       
+    }
+    
+    
 }
 }