Browse Source

用户注册、支付订单发起、回调等给原创书殿回调

zhoulj 6 years ago
parent
commit
19a0c01ed5

+ 18 - 0
app/Http/Controllers/Wap/Oauth/UsersController.php

@@ -73,6 +73,15 @@ class UsersController extends Controller
                     'send_order_id' => Cookie::get('send_order_id')
                 ]
             );
+            
+            // 注册动作
+            $action_type = 'Register';
+            $param = [
+               'openid' => $openid,
+               'uid' => isset($user->id)?$user->id:'0',
+            ];
+            UserService::PushUserActionToQueue($action_type,$distribution_channel_id,$param);
+            
         }
 
 
@@ -111,6 +120,15 @@ class UsersController extends Controller
                     'send_order_id' => Cookie::get('send_order_id')
                 ]
             );
+            
+            // 注册动作
+            $action_type = 'Register';
+            $param = [
+	            'openid' => $openid,
+	            'uid' => isset($user->id)?$user->id:'0',
+            ];
+            UserService::PushUserActionToQueue($action_type,$distribution_channel_id,$param);
+            
         }
 
         Cookie::queue(env('COOKIE_AUTH_WEB_WECHAT'), $user->id, env('U_COOKIE_EXPIRE'), null, null, false, false);

+ 20 - 0
app/Http/Controllers/Wap/Pay/OrdersController.php

@@ -356,6 +356,17 @@ class OrdersController extends Controller
         Log::info($pay_info);
         Log::info('jsSdkSign---- :' . $jsSdkSign);
         $pay_order = $trade_no;
+        
+        // 注册动作-》创建订单
+        $action_type = 'CreateOrder';
+        $param = [
+	        'openid' => isset($openid)?$openid:'0',
+	        'uid' =>isset($uid)?$uid:'0',
+	        'order_sn' => isset($trade_no)?$trade_no:'0',
+	        'amount' => isset($price)?$price:'0',
+        ];
+        UserService::PushUserActionToQueue($action_type,$distribution_channel_id,$param);
+        
         return view('pay.order.index', compact('pay_info', 'referer', 'jsSdkSign', 'pay_order'));
     }
 
@@ -791,6 +802,15 @@ class OrdersController extends Controller
                 $key = 'leyuee:to_send_not_pay_uid:distribution_channel_id:' . $distribution_channel_id;
                 Redis::hdel($key, $uid);
                 DB::commit();
+                
+                // 注册动作-》回调订单
+                $action_type = 'CallBackOrder';
+                $param = [
+                   'order_sn' => isset($trade_no)?$trade_no:'0',
+                   'openid' => isset($uid)?$uid:'0',// 没有openid,用uid写log
+                ];
+                UserService::PushUserActionToQueue($action_type,$distribution_channel_id,$param);
+                
                 return true;
             } catch (\Exception $e) {
                 DB::rollback();

+ 51 - 0
app/Jobs/ActionTrigger.php

@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Jobs;
+
+use Artisan;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+
+/**
+ * 动作触发器,兼容所有扔队列需要异步处理的请求
+ * @author zhoulingjie
+ *
+ */
+class ActionTrigger implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    protected $data;
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct($data)
+    {
+        //
+        \Log::info('action_trigger_init');
+        $this->data = $data;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+//     	$data =  json_encode($this->data);
+//         try {
+//         	\Log::info('ActionTrigger:'.$data['action_type'].' start');
+
+//             Artisan::call('ActionTrigger:'.$data['action_type'],['data'=>$data]);
+
+//         } catch (\Exception $e) {
+//             \Log::info('action_trigger_ept:'.$e->getMessage());
+//         }
+    }
+}

+ 37 - 0
app/Modules/User/Services/UserService.php

@@ -10,6 +10,7 @@ namespace App\Modules\User\Services;
 
 use App\Modules\User\Models\User;
 use DB;
+use App\Jobs\ActionTrigger;
 
 class UserService
 {
@@ -257,4 +258,40 @@ class UserService
 
         return User::updateInfo($from_uid, ['balance' => 0, 'reward_balance' => 0, 'charge_balance' => 0]);
     }
+    
+    // 扔用户一些动作到队列,异步处理一些额外逻辑
+    static function PushUserActionToQueue($action_type,$distribution_channel_id,$param){
+    	try{
+    		// 判断站点是否需要额外逻辑
+    		$data = [];
+    		$data['send_time'] = date("Y-m-d H:i:s");
+    		$data['action_type'] = $action_type;
+    		if($action_type == 'Register'){
+    			$data['openid'] =  $param['openid'];
+    			$data['uid'] = $param['uid'];
+    		}elseif($action_type == 'CreateOrder'){
+    			$data['orderSn'] =  $param['order_sn'];
+    			$data['amount'] = $param['amount'];
+    			$data['openid'] =  $param['openid'];
+    			$data['uid'] = $param['uid'];
+    		}elseif($action_type == 'CallBackOrder'){
+    			$data['orderSn'] =  $param['order_sn'];
+    			$data['openid'] =  $param['openid'];
+    		}
+    		 
+    		$send_data=array(
+    				'send_time'=>date("Y-m-d H:i:s"),
+    				'data' => $data
+    		);
+    		\Log::info('PushUserActionToQueue_openid:'.$data['openid'].' action_type:'.$action_type);
+    		\Log::info('$send_data');\Log::info($send_data);
+    		
+    		$delay = 0;
+    		
+    		$job = (new ActionTrigger($send_data))->onConnection('rabbitmq')->delay($delay)->onQueue('action_trigger_list');
+    		dispatch($job);
+    	}catch(\Exception $e){
+    		\Log::info('ept:'.$e->getMessage());
+    	}
+    }
 }