fly 5 years ago
parent
commit
dd1b8b5977

+ 16 - 56
app/Http/Controllers/QuickApp/BaseController.php

@@ -1,68 +1,28 @@
 <?php
 
 namespace App\Http\Controllers\QuickApp;
+
+use App\Modules\User\Services\QappUserService;
 use Illuminate\Routing\Controller;
-use App\Modules\User\Models\Xcxuser;
-use JWTAuth;
+
 class BaseController extends Controller
 {
-
-    /**
-     * 公众号接口签名密钥
-     * @var string
-     */
-    protected $secret_key = 'Uv%vkPI5K8Opqoww';
-
-
-    protected function checkUid(){
-        if(!$this->getAuthenticatedUser()) return false;
-        return true;
-    }
-
+    private $field = [];
+    
     public function __get($name)
     {
-        static $user =null;
-        if(is_null($user)) $user =  $this->getAuthenticatedUser();
-
-        if($name == '_user_info'){
-            return $user;
-        }
-        if($name == 'uid'){
-            return $user->id;
-        }
-        if($name == 'distribution_channel_id'){
-            return $user->distribution_channel_id;
-        }
-        if($name == 'openid'){
-            $QAPP_user = Xcxuser::where('uid',$user->id)->select('openid')->first();
-            return $QAPP_user->openid;
-        }
-        return null;
-    }
-
-    public function getAuthenticatedUser(){
-        try {
-            if (! $user = JWTAuth::parseToken()->authenticate()) {
-                return false;
+        if (!isset($this->field[$name])) {
+            $qapp_user = QappUserService::getGolableUserStatic();
+            if ($name == '_user_info') {
+                $this->field[$name] = $qapp_user->user;
+            }
+            if ($name == 'uid') {
+                $this->field[$name] = $qapp_user->uid;
+            }
+            if ($name == 'distribution_channel_id') {
+                $this->field[$name] = $qapp_user->user->distribution_channel_id;
             }
-        } catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
-            return false;
-            //return response()->json(['token_expired'], $e->getStatusCode());
-        } catch (\Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
-            return false;
-            //return response()->json(['token_invalid'], $e->getStatusCode());
-        } catch (\Tymon\JWTAuth\Exceptions\JWTException $e) {
-            return false;
-            //return response()->json(['token_absent'], $e->getStatusCode());
         }
-
-        return $user;
-    }
-
-    public function checkSign($param){
-        if(!isset($param['sign'])) return false;
-        if(empty($param['sign'])) return false;
-
-        return $param['sigin'] == _sign($param,$this->secret_key);
+        return  $this->field[$name];
     }
 }

+ 0 - 16
app/Http/Controllers/QuickApp/Book/BookController.php

@@ -90,9 +90,6 @@ class BookController extends BaseController
      *       }
      */
     public function index(Request $request,$bid){
-        if(!$this->checkUid()){
-            return response()->error('QAPP_NOT_LOGIN');
-        }
         $bid = Hashids::decode($bid)[0];
         $book_info = BookConfigService::getBookById($bid);
         if(!$book_info){
@@ -152,9 +149,6 @@ class BookController extends BaseController
      *       }
      */
     public function getBookLists(Request $request,$sex){
-        if(!$this->checkUid()){
-            //return response()->error('QAPP_NOT_LOGIN');
-        }
         if($sex == 'male'){
             $type = [
                 'BOOK_MALE_LOOP',
@@ -406,9 +400,6 @@ class BookController extends BaseController
      *       }
      */
     public function similarRecom (Request $request){
-        if(!$this->checkUid()){
-            //return response()->error('QAPP_NOT_LOGIN');
-        }
         $category_id = $request->input('category_id');
         $bid = $request->input('bid');
         if(empty($bid) || empty($category_id)){
@@ -503,9 +494,6 @@ class BookController extends BaseController
      *       }
      */
     public function readOverRecommend(Request $request){
-        if(!$this->checkUid()){
-            //return response()->error('QAPP_NOT_LOGIN');
-        }
         $bid = $request->input('bid');
         if(empty($bid)){
             return response()->error('PARAM_ERROR');
@@ -593,10 +581,6 @@ class BookController extends BaseController
      *       }
      */
     public function rank(Request $request){
-        if(!$this->checkUid()){
-            //return response()->error('QAPP_NOT_LOGIN');
-        }
-
         $type = $request->input('type');
         $time = $request->input('time');
 

+ 0 - 7
app/Http/Controllers/QuickApp/Book/ChapterController.php

@@ -220,9 +220,6 @@ class ChapterController extends BaseController
      *       }
      */
     public function index(Request $request,$bid,$cid){
-        if(!$this->checkUid()){
-            return response()->error('QAPP_NOT_LOGIN');
-        }
         $oldbid = $bid;
         $bid = Hashids::decode($bid)[0];
         //获取图书信息
@@ -383,10 +380,6 @@ class ChapterController extends BaseController
      *       }
      */
     public function pay(Request $request,$bid,$cid){
-
-        if(!$this->checkUid()){
-            return response()->error('QAPP_NOT_LOGIN');
-        }
         $remind = (int)$request->input('remind');
         $oldbid = $bid;
         $bid = Hashids::decode($bid)[0];

+ 14 - 39
app/Http/Controllers/QuickApp/Oauth/UsersController.php

@@ -43,14 +43,21 @@ class UsersController extends Controller
      */
     public function index(Request $request)
     {
+        $params = $request->except('_url');
         $send_order_id = $request->input('send_order_id', 0);
         $device_no = $request->input('device_no', '');
         $device_info = $request->input('device_info', '');
-        if ($device_no) {
-            $data = QappUserService::loginStatic(compact('send_order_id', 'device_no', 'device_info'));
-            return response()->success($data);
+        $sign = $request->input('sign', '');
+        $key = 'a!A&AFRWT65Nb3NlklezUiqHyQAA@Z8M';
+        if ($sign == _sign($params, $key)) {
+            if ($device_no) {
+                $data = QappUserService::loginStatic(compact('send_order_id', 'device_no', 'device_info'));
+                return response()->success($data);
+            } else {
+                return response()->error('PARAM_ERROR');
+            }
         } else {
-            return response()->error('PARAM_ERROR');
+            return response()->error('QAPP_SIGN_ERROR');
         }
     }
 
@@ -78,47 +85,15 @@ class UsersController extends Controller
      *           }
      *       }
      */
-    public function RefreshToken()
+    public function refreshToken()
     {
         try {
             $old_token = JWTAuth::getToken();
             $token = JWTAuth::refresh($old_token);
             $time = time() + SysConsts::ONE_HOUR_SECONDS * 2;
             return response()->success(compact('token', 'time'));
-        } catch (Exception $e) { }
-        return response()->error('XCX_NOT_LOGIN');
-    }
-
-    /**
-     * 检验数据的真实性,并且获取解密后的明文.
-     * @param $encryptedData string 加密的用户数据
-     * @param $iv string 与用户数据一同返回的初始向量
-     * @param $data string 解密后的原文
-     *
-     * @return int 成功0,失败返回对应的错误码
-     */
-    private function decryptData($encryptedData, $iv, &$data)
-    {
-        if (strlen($iv) != 24) {
-            return ErrorCode::$IllegalIv;
-        }
-        $aesIV = base64_decode($iv);
-        $aesCipher = base64_decode($encryptedData);
-        $aesKey = "";
-        $result = openssl_decrypt($aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
-        $dataObj = json_decode($result);
-        if ($dataObj  == NULL) {
-            return ErrorCode::$IllegalBuffer;
+        } catch (Exception $e) {
+            return response()->error('QAPP_NOT_LOGIN');
         }
-        $data = $result;
-        return ErrorCode::$OK;
     }
 }
-class ErrorCode
-{
-    public static $OK = 0;
-    public static $IllegalAesKey = -41001;
-    public static $IllegalIv = -41002;
-    public static $IllegalBuffer = -41003;
-    public static $DecodeBase64Error = -41004;
-}

+ 12 - 50
app/Http/Controllers/QuickApp/Order/OrdersController.php

@@ -95,17 +95,6 @@ class OrdersController extends BaseController
      */
     public function chargeList(Request $request)
     {
-        if (!$this->checkUid()) {
-            return response()->error('QAPP_NOT_LOGIN');
-        }
-        
-        $device = $request->has('device')?$request->get('device'):'';
-        
-        // 苹果先不展示充值
-        if($device == 'iPhone'){
-        	return response()->success();
-        }
-        
         $res = ProductService::getChargeProduct();
         if (!$res->isEmpty()) {
             $data = [];
@@ -129,7 +118,7 @@ class OrdersController extends BaseController
                     ];
                     $intro2 = [
                         ['label' => '多送', 'important' => false],
-                        ['label' => (int)($v->given / 100), 'important' => true],
+                        ['label' => (int) ($v->given / 100), 'important' => true],
                         ['label' => '元', 'important' => false],
                     ];
                     $v->vip = 0;
@@ -162,7 +151,7 @@ class OrdersController extends BaseController
                 }
                 $data[] = [
                     'product_id' => $v->id,
-                    'price' => (int)$v->price . '元',
+                    'price' => (int) $v->price . '元',
                     'vip' => $v->vip,
                     'intro' => $intro,
                     'intro2' => $intro2,
@@ -218,13 +207,8 @@ class OrdersController extends BaseController
      */
     public function bookOrderList(Request $request)
     {
-        if (!$this->checkUid()) {
-            return response()->error('QAPP_NOT_LOGIN');
-        }
         $page_size = $request->input('page_size', 15);
         $book_order = BookOrderService::getRecord($this->uid, $page_size);
-        //$book_order = BookOrder::where('uid', $this->uid)->select('bid', 'uid', 'book_name', 'created_at', 'fee')->paginate($page_size);
-
         return response()->pagination(new BookOrderTransformer(), $book_order);
     }
 
@@ -275,9 +259,6 @@ class OrdersController extends BaseController
      */
     public function chapterOrderList(Request $request)
     {
-        if (!$this->checkUid()) {
-            return response()->error('QAPP_NOT_LOGIN');
-        }
         $chapter_model = new ChapterOrderService();
         $page_size = $request->input('page_size', 15);
         $chapter_order = $chapter_model->getByUid($this->uid, $page_size);
@@ -328,9 +309,6 @@ class OrdersController extends BaseController
      */
     public function chargeRecordLists(Request $request)
     {
-        if (!$this->checkUid()) {
-            return response()->error('QAPP_NOT_LOGIN');
-        }
         $page_size = $request->input('page_size', 15);
         $res = OrderService::getOrderList($this->uid, $page_size);
         return response()->pagination(new ChargeListTransformer(), $res);
@@ -379,22 +357,13 @@ class OrdersController extends BaseController
      */
     function wxindex(Request $request)
     {
-        Log::info($request->all());
         $product_id = $request->has('product_id') ? $request->get('product_id') : '';
         $sign = $request->has('sign') ? $request->get('sign') : '';
         $send_order_id = $request->has('send_order_id') ? $request->get('send_order_id') : 0;
 
-        if (!$this->checkUid()) {
-            return response()->error('QAPP_NOT_LOGIN');
-        }
-
         if (empty($product_id) || empty($sign)) {
             return response()->error('QAPP_PARAM_ERROR');
         }
-
-        if (!$this->checkSign($request->all('_url'))) {
-            //return response()->error('QAPP_PARAM_ERROR');
-        }
         $bid = $request->has('bid') ? $request->get('bid') : 0;
         $openid = $this->openid;
         //$openid = 'o0bsX0b3-kgWIb4JBdTAk7HVtnrk';
@@ -405,9 +374,7 @@ class OrdersController extends BaseController
         $uid = $this->uid;
         $distribution_channel_id = $this->distribution_channel_id;
         $price = $product_info->price * 100;
-        if ($uid < 32) {
-            //$price = 1;
-        }
+        if ($uid < 32) { }
 
         if (in_array($uid, explode(',', env('TEST_UID')))) {
             $price = 1;
@@ -418,7 +385,6 @@ class OrdersController extends BaseController
             } catch (\Exception $e) {
                 $bid = 0;
             }
-
         }
         //$price = 1;
         if ($product_info->type == 'YEAR_ORDER') {
@@ -445,7 +411,7 @@ class OrdersController extends BaseController
             'order_type' => $order_type,
             'from_bid' => $bid,
             'from_type' => 'QuickApp',
-            'activity_id'=>0
+            'activity_id' => 0
         ]);
         Log::info('order is');
         Log::info($res);
@@ -482,7 +448,7 @@ class OrdersController extends BaseController
                 'appId' => $result->appid,
                 'package' => 'prepay_id=' . $result->prepay_id,
                 'nonceStr' => $result->nonce_str,
-                'timeStamp' => (string)time(),
+                'timeStamp' => (string) time(),
                 'signType' => 'MD5',
             ];
             $data['paySign'] = $this->MakeSign($data);
@@ -520,20 +486,21 @@ class OrdersController extends BaseController
      *
      *       }
      */
-    public function checkOrder(Request $request){
-        $order = $request->input('order','');
+    public function checkOrder(Request $request)
+    {
+        $order = $request->input('order', '');
         $i = 0;
         $uid = $this->uid;
-        while ($i <= 10){
+        while ($i <= 10) {
             $order_info = OrderService::getByTradeNo($order);
-            if(!$order_info){
+            if (!$order_info) {
                 return response()->error('QAPP_SYS_ERROR');
                 break;
             }
             if (isset($order_info->status) && $order_info->status == 'PAID') {
                 $data['balance'] = 0;
                 $user = UserService::getById($uid);
-                if($user){
+                if ($user) {
                     $data['balance'] = $user->balance;
                 }
                 return response()->success($data);
@@ -542,7 +509,6 @@ class OrdersController extends BaseController
             $i++;
         }
         return response()->error('QAPP_SYS_ERROR');
-
     }
     protected function MakeSign($value)
     {
@@ -614,7 +580,6 @@ class OrdersController extends BaseController
                     $order->pay_end_at = date('Y-m-d H:i:s');
                     $order->transaction_id = $transaction_id;
                     $order->save();
-
                 } elseif ($product->type == 'BOOK_ORDER') {
                     Log::info('BOOK_ORDERBOOK_ORDERBOOK_ORDERBOOK_ORDERBOOK_ORDERBOOK_ORDERBOOK_ORDERBOOK_ORDER');
                     $order_type = 'BOOK';
@@ -624,7 +589,6 @@ class OrdersController extends BaseController
                     $order->pay_end_at = date('Y-m-d H:i:s');
                     $order->transaction_id = $transaction_id;
                     $order->save();
-
                 } elseif ($product->type == 'TICKET_RECHARGE') {
                     Log::info('TICKET_RECHARGETICKET_RECHARGETICKET_RECHARGETICKET_RECHARGETICKET_RECHARGE');
                     $order_type = 'RECHARGE';
@@ -634,7 +598,6 @@ class OrdersController extends BaseController
                     $order->pay_end_at = date('Y-m-d H:i:s');
                     $order->transaction_id = $transaction_id;
                     $order->save();
-
                 } else {
                     DB::rollback();
                     return 'Order not exist.';
@@ -715,5 +678,4 @@ class OrdersController extends BaseController
         $data['pay_end_at'] = '0000-00-00 00:00:00';
         return OrderService::save_order($data);
     }
-
-}
+}

+ 0 - 10
app/Http/Controllers/QuickApp/User/ReadRecordController.php

@@ -62,10 +62,6 @@ class ReadRecordController extends BaseController
      *           ]
      */
     public function index(Request $request){
-        if(!$this->checkUid()){
-            return response()->error('QAPP_NOT_LOGIN');
-        }
-
         $res = ReadRecordService::getReadRecord($this->uid);
         if($res){
             $id_arr = [];
@@ -130,9 +126,6 @@ class ReadRecordController extends BaseController
      *
      */
     public function addReadRecord(Request $request){
-        if(!$this->checkUid()){
-            return response()->error('QAPP_NOT_LOGIN');
-        }
         $param = $request->except('_url');
         if(checkParam($param,['bid','cid','chapter_name'])){
             return response()->error('LACK_PARAM');
@@ -174,9 +167,6 @@ class ReadRecordController extends BaseController
      *
      */
     public function delReadRecord(Request $request){
-        if(!$this->checkUid()){
-            return response()->error('QAPP_NOT_LOGIN');
-        }
         $param = $request->except('_url');
         if(checkParam($param,['bid'])){
             return response()->error('LACK_PARAM');

+ 0 - 4
app/Http/Controllers/QuickApp/User/UserController.php

@@ -59,10 +59,6 @@ class UserController extends BaseController
      *     }
      */
     public function index(){
-        if(!$this->checkUid()){
-            return response()->error('QAPP_NOT_LOGIN');
-        }
-
         $data = UserService::getById($this->uid);
         if(!$data->head_img){
             $data->head_img = 'https://yueduyun.oss-cn-hangzhou.aliyuncs.com/xiaochengxu/img/defaulthead.png';

+ 0 - 13
app/Http/Controllers/QuickApp/User/UserShelfBooksController.php

@@ -68,10 +68,6 @@ class UserShelfBooksController extends BaseController
      *       }
      */
     public function index(Request $request){
-        if(!$this->checkUid()){
-            return response()->error('QAPP_NOT_LOGIN');
-        }
-
         $res = UserShelfBooksService::getUserShelfBooksListByUid($this->uid);
 
         if($res->isEmpty()){
@@ -122,9 +118,6 @@ class UserShelfBooksController extends BaseController
      *       data: {}
      */
     public function addShelf(Request $request){
-        if(!$this->checkUid()){
-            return response()->error('QAPP_NOT_LOGIN');
-        }
         $param = $request->except('_url');
         if(checkParam($param,['bid'])){
             return response()->error('LACK_PARAM');
@@ -167,9 +160,6 @@ class UserShelfBooksController extends BaseController
      *       data: {}
      */
     public function delShelf(Request $request){
-        if(!$this->checkUid()){
-            return response()->error('QAPP_NOT_LOGIN');
-        }
         $bid = $request->input('bid');
         if(empty($bid)) return response()->error('LACK_PARAM');
         $param['uid'] = $this->uid;
@@ -205,9 +195,6 @@ class UserShelfBooksController extends BaseController
      *           }
      */
     public function  isOnshelf(Request $request){
-        if(!$this->checkUid()){
-            return response()->error('QAPP_NOT_LOGIN');
-        }
         $bid = $request->input('bid');
         if(!$bid) return response()->error('LACK_PARAM');
         $bid = Hashids::decode($bid)[0];

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

@@ -2,6 +2,7 @@
 
 namespace App\Http\Middleware;
 
+use App\Modules\User\Services\QappUserService;
 use Closure;
 use Illuminate\Http\Request;
 use Tymon\JWTAuth\Exceptions\JWTException;
@@ -20,17 +21,18 @@ class QuickAppGetUserFromToken extends BaseMiddleware
     public function handle(Request $request, Closure $next)
     {
         if (!$token = $this->auth->setRequest($request)->getToken()) {
-            return response()->error('QAPP_TOKEN_ERROR');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         try {
             $user = $this->auth->authenticate($token);
+            QappUserService::setGolableUserStatic($user->id);
         } catch (TokenExpiredException $e) {
             return response()->error('QAPP_TOKEN_ERROR');
         } catch (JWTException $e) {
             return response()->error('QAPP_TOKEN_ERROR');
         }
         if (!$user) {
-            return response()->error('QAPP_TOKEN_ERROR');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         $this->events->fire('tymon.jwt.valid', $user);
         return $next($request);

+ 0 - 20
app/Http/Middleware/QuickAppOAuth.php

@@ -1,20 +0,0 @@
-<?php
-
-namespace App\Http\Middleware;
-
-use Closure;
-
-class QuickAppOAuth
-{
-    /**
-     * Handle an incoming request.
-     *
-     * @param  \Illuminate\Http\Request  $request
-     * @param  \Closure  $next
-     * @return mixed
-     */
-    public function handle($request, Closure $next)
-    {
-        return $next($request);
-    }
-}

+ 1 - 1
app/Http/Middleware/QuickAppRefreshToken.php

@@ -22,7 +22,7 @@ class QuickAppRefreshToken extends  BaseMiddleware
         $response = $next($request);
         try {
             $newToken = $this->auth->setRequest($request)->parseToken()->getToken();
-            $response->headers->set('Authorization', 'Bearer ' . $newToken);
+            $response->headers->set('Authorization', 'bearer ' . $newToken);
         } catch (TokenExpiredException $e) {
             return response()->error('QAPP_TOKEN_ERROR');
         } catch (JWTException $e) {

+ 1 - 1
app/Http/Routes/QuickApp/QuickAppRoutes.php

@@ -10,7 +10,7 @@ Route::group(['domain' => env('QUICKAPP_DOMAIN'), 'namespace' => 'App\Http\Contr
     //支付回调
     Route::any('pay/wcback', 'Order\OrdersController@wxback_xcx');
 
-    Route::group(['prefix' => 'api'], function () {
+    Route::group(['prefix' => 'api', 'middleware' => 'jwttoken'], function () {
         //首页
         Route::get('books/{sex}/index', 'Book\BookController@getBookLists');
         //书库

+ 20 - 0
app/Modules/User/Services/QappUserService.php

@@ -13,6 +13,8 @@ use Tymon\JWTAuth\Facades\JWTAuth;
 
 /**
  * 
+ * @method static \App\Modules\User\Models\QappUser setGolableUserStatic(int $uid) 设置快应用用户信息(全局)
+ * @method static \App\Modules\User\Models\QappUser getGolableUserStatic() 获取快应用用户信息(全局)
  * @method static \App\Modules\User\Models\QappUser loginStatic(array $data) 快应用用户登录
  */
 class QappUserService
@@ -36,6 +38,24 @@ class QappUserService
         return compact('token', 'time', 'uid');
     }
 
+    public function getGolableUser()
+    {
+        $qapp_user = app()->make('qapp_user');
+        return $qapp_user;
+    }
+
+    public function setGolableUser(int $uid)
+    {
+        $qapp_user = app()->make('qapp_user');
+        $user_info = $this->getQAppUserByUid($uid);
+        $qapp_user->id = $user_info->id;
+        $qapp_user->uid = $user_info->uid;
+        $qapp_user->device_no = $user_info->device_no;
+        $qapp_user->device_info = $user_info->device_info;
+        $qapp_user->phone = $user_info->phone;
+        $qapp_user->user = $user_info->user;
+    }
+
     /**
      * 根据设备号获取快应用用户信息
      */

+ 2 - 6
app/Providers/AppServiceProvider.php

@@ -14,7 +14,7 @@ class AppServiceProvider extends ServiceProvider
      */
     public function boot()
     {
-        $this->app->instance('user', new stdClass);
+        $this->app->instance('qapp_user', new stdClass);
     }
 
     /**
@@ -23,9 +23,5 @@ class AppServiceProvider extends ServiceProvider
      * @return void
      */
     public function register()
-    {
-        /*if ($this->app->environment() !== 'production') {
-            $this->app->register(\Way\Generators\GeneratorsServiceProvider::class);
-            $this->app->register(\Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class);
-        }*/ }
+    { }
 }