fly il y a 5 ans
Parent
commit
1e956eca53
45 fichiers modifiés avec 8264 ajouts et 2447 suppressions
  1. 0 283
      app/Http/Controllers/KuaiYingYong/Oauth/UsersController.php
  2. 3 3
      app/Http/Controllers/KuaiYingYong/BaseController.php
  3. 1 1
      app/Http/Controllers/KuaiYingYong/Book/BookCategoryController.php
  4. 10 14
      app/Http/Controllers/KuaiYingYong/Book/BookController.php
  5. 27 27
      app/Http/Controllers/KuaiYingYong/Book/ChapterController.php
  6. 1 1
      app/Http/Controllers/KuaiYingYong/Book/Transformers/BookTransformer.php
  7. 1 1
      app/Http/Controllers/KuaiYingYong/Book/Transformers/ChapterListTransformer.php
  8. 1 1
      app/Http/Controllers/KuaiYingYong/Book/Transformers/ChapterTransformer.php
  9. 124 0
      app/Http/Controllers/QuickApp/Oauth/UsersController.php
  10. 18 18
      app/Http/Controllers/KuaiYingYong/Order/OrdersController.php
  11. 1 1
      app/Http/Controllers/KuaiYingYong/Order/Transformers/BookOrderTransformer.php
  12. 1 1
      app/Http/Controllers/KuaiYingYong/Order/Transformers/ChapterOrderTransformer.php
  13. 1 1
      app/Http/Controllers/KuaiYingYong/Order/Transformers/ChargeListTransformer.php
  14. 1 1
      app/Http/Controllers/KuaiYingYong/Order/Transformers/OrderTransformer.php
  15. 6 6
      app/Http/Controllers/KuaiYingYong/User/ReadRecordController.php
  16. 1 1
      app/Http/Controllers/KuaiYingYong/User/Transformers/ReadRecordTransformer.php
  17. 1 1
      app/Http/Controllers/KuaiYingYong/User/Transformers/UserShelfBooksTransformer.php
  18. 3 3
      app/Http/Controllers/KuaiYingYong/User/UserController.php
  19. 10 10
      app/Http/Controllers/KuaiYingYong/User/UserShelfBooksController.php
  20. 0 0
      app/Http/Controllers/QuickApp/apidoc.json
  21. 0 0
      app/Http/Controllers/QuickApp/header.md
  22. 2 16
      app/Http/Kernel.php
  23. 0 65
      app/Http/Middleware/CrmUser.php
  24. 0 30
      app/Http/Middleware/EnableCrossRequest.php
  25. 1 25
      app/Http/Middleware/EncryptCookies.php
  26. 9 12
      app/Http/Middleware/XchengxuGetUserFromToken.php
  27. 2 6
      app/Http/Middleware/CheckParam.php
  28. 7 6
      app/Http/Middleware/XchengxuRefreshToken.php
  29. 0 794
      app/Http/Middleware/ReadOauth.php
  30. 0 17
      app/Http/Middleware/VerifyCsrfToken.php
  31. 0 80
      app/Http/Routes/KuaiYingYong/KuaiYingYongRoutes.php
  32. 74 0
      app/Http/Routes/QuickApp/QuickAppRoutes.php
  33. 0 13
      app/Http/Routes/Wap/OfficialAccountRoutes.php
  34. 0 345
      app/Http/Routes/Wap/WapRoutes.php
  35. 0 32
      app/Http/Routes/WapBrower/WebRoutes.php
  36. 0 245
      app/Http/Routes/Wechat/OfficialAccountRoutes.php
  37. 0 87
      app/Http/Routes/Xchengxu/XchengxuRoutes.php
  38. 18 0
      app/Modules/BaseService.php
  39. 93 73
      app/Modules/Book/Services/BookService.php
  40. 11 0
      app/Modules/User/Models/QappUser.php
  41. 101 0
      app/Modules/User/Services/QappUserService.php
  42. 3 61
      app/Providers/RouteServiceProvider.php
  43. 186 164
      config/error.php
  44. 3773 1
      public/kyydoc/api_data.js
  45. 3773 1
      public/kyydoc/api_data.json

+ 0 - 283
app/Http/Controllers/KuaiYingYong/Oauth/UsersController.php

@@ -1,283 +0,0 @@
-<?php
-
-namespace App\Http\Controllers\KuaiYingYong\Oauth;
-
-use App\Modules\User\Services\UserService;
-use App\Modules\Xcx\Services\XcxSendOrderService;
-use Illuminate\Http\Request;
-use App\Http\Controllers\Controller;
-use App\Modules\User\Models\User;
-use App\Modules\User\Models\Xcxuser;
-use Log;
-use JWTAuth;
-use GuzzleHttp\Client;
-
-class UsersController extends Controller
-{
-
-
-    /**
-     * @apiDefine Login 登录
-     */
-
-
-    /**
-     * @apiVersion 1.0.0
-     * @apiDescription 登录
-     * @api {post} login 登录
-     * @apiParam  {String}  js_code js_code
-     * @apiParam  {Int}     distribution_channel_id distribution_channel_id
-     * @apiParam  {String}  sign    签名
-     * @apiGroup Login
-     * @apiName index
-     * @apiSuccess {int}         code 状态码
-     * @apiSuccess {String}      msg  信息
-     * @apiSuccess {object}      data 结果集
-     * @apiSuccess {String}      data.token token
-     * @apiSuccess {Int}         data.time 过期时间
-     * @apiSuccessExample {json} Success-Response:
-     *     HTTP/1.1 200 OK
-     *     {
-     *       code: 0,
-     *       msg: "",
-     *       data:  {
-     *            token:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
-     *            time:123455
-     *           }
-     *       }
-     */
-    public function index(Request $request)
-    {
-        Log::info($request->all());
-        //$distribution_channel_id = $request->input('distribution_channel_id', '');
-        //海报推广的参数
-        $scene = $request->input('scene', '');
-        $js_code = $request->input('js_code');
-        $sign = $request->input('sign');
-        $encryptedData = $request->input('encryptedData');
-        $iv = $request->input('iv');
-        //参数推广的参数
-        $channel_key = $request->input('channel_key',0);
-        $sign = 1;
-        if (empty($js_code)  || empty($sign)) {
-            return response()->error('PARAM_ERROR');
-        }
-        $distribution_channel_id = 14;
-        $uid = 0;
-        $u = 0;
-        //解析海报推广的参数
-        if($scene){
-            $scene_arr = explode('_',$scene);
-            $distribution_channel_id = (int)$scene_arr[0];
-            $uid = $scene_arr[1];
-            $u = $scene_arr[2];
-        }
-        //解析参数推广的参数
-        if($channel_key){
-            $channel_key =(int)$channel_key;
-            $channel_info = XcxSendOrderService::getChannelIdBySendOrderId($channel_key);
-            if($channel_info){
-                $distribution_channel_id = $channel_info->distribution_channel_id;
-                $u = $channel_key;
-            }
-        }
-        if ($sign !== _sign(compact('openid', 'distribution_channel_id', 'unionid'), 'Uv%vkPI5K8Opqoww')) {
-            //return response()->error('PARAM_ERROR');
-        }
-        $login_info = $this->getUserWeixinInfo($js_code);
-        $appid = 'wxa0c8331eba3b34d5';
-        $status = $this->decryptData($appid,$login_info['session_key'],$encryptedData,$iv,$user_info);
-
-        if($status != ErrorCode::$OK){
-            return response()->error('PARAM_ERROR');
-        }
-
-        if (!$user_info) response()->error('PARAM_ERROR');
-        $user_info = json_decode($user_info,1);
-        if (!isset($user_info['openId']) || !isset($user_info['unionId'])) {
-            return response()->error('PARAM_ERROR');
-        }
-        $openid = $user_info['openId'];
-        $unionid = $user_info['unionId'];
-        $user = $this->createUser(compact('openid', 'distribution_channel_id', 'unionid','uid','u'),$user_info);
-        if ($user) {
-            $uid = $user->id;
-            $time = time() + 7200;
-            $token = JWTAuth::fromUser($user);
-            return response()->success(compact('token', 'time','uid'));
-        } else {
-            return response()->error('PARAM_ERROR');
-        }
-    }
-
-    /**
-     * 授权用户信息
-     * @param $data
-     * @return bool
-     */
-    protected function createUser($data,$user_info)
-    {
-        //compact('openid', 'distribution_channel_id', 'unionid','uid','u')
-        //用户已经是小程序用户了
-        $xcx_user = Xcxuser::where('unionid',$data['unionid'])
-            ->where('distribution_channel_id',$data['distribution_channel_id'])
-            ->select('uid')
-            ->first();
-        if($xcx_user){
-            return User::find($xcx_user->uid);
-        }
-        $info = [];
-        if(isset($user_info['city']) && !empty($user_info['city'])) {$info['city'] = $user_info['city'];}
-        if(isset($user_info['province']) && !empty($user_info['province'])){ $info['province'] = $user_info['province'];}
-        if(isset($user_info['country']) && !empty($user_info['country'])){ $info['country'] = $user_info['country'];}
-        if(isset($user_info['gender']) && !empty($user_info['gender'])) {$info['sex'] = $user_info['gender'];}
-        if(isset($user_info['nickName']) && !empty($user_info['nickName'])) {$info['nickname'] = $user_info['nickName'];}
-        if(isset($user_info['avatarUrl']) && !empty($user_info['avatarUrl'])) {$info['head_img'] = $user_info['avatarUrl'];}
-        //从推广进来的一般会有uid
-        if($data['uid']){
-            Xcxuser::create([
-                'uid'=>$data['uid'],
-                'openid'=>$data['openid'],
-                'unionid'=>$data['unionid'],
-                'distribution_channel_id'=>$data['distribution_channel_id'],
-                'u'=>$data['u']
-            ]);
-
-            if($info){
-                UserService::updateInfo($data['uid'],$info);
-            }
-            return User::find($data['uid']);
-        }else{
-            //直接进入的
-            $info['openid'] =$data['openid'];
-            $info['unionid'] =$data['openid'];
-            $info['distribution_channel_id'] =$data['distribution_channel_id'];
-            $info['send_order_id'] =$data['u'];
-            $user =  User::addUser($info);
-
-            Xcxuser::create([
-                'uid'=>$user->id,
-                'openid'=>$data['openid'],
-                'unionid'=>$data['unionid'],
-                'distribution_channel_id'=>$user->distribution_channel_id,
-                'u'=>$data['u']
-            ]);
-            return $user;
-        }
-    }
-
-    /**
-     * @apiVersion 1.0.0
-     * @apiDescription 刷新token
-     * @api {get} RefreshToken 刷新token
-     * @apiParam {String}  [token]  token
-     * @apiHeader {String} [Authorization]  token 两个token任选其一
-     * @apiGroup Login
-     * @apiName RefreshToken
-     * @apiSuccess {int}         code 状态码
-     * @apiSuccess {String}      msg  信息
-     * @apiSuccess {object}      data 结果集
-     * @apiSuccess {String}      data.token token
-     * @apiSuccess {Int}         data.time 过期时间
-     * @apiSuccessExample {json} Success-Response:
-     *     HTTP/1.1 200 OK
-     *     {
-     *       code: 0,
-     *       msg: "",
-     *       data:  {
-     *            token:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
-     *            time:123455
-     *           }
-     *       }
-     */
-    public function RefreshToken()
-    {
-        try{
-            $old_token = JWTAuth::getToken();
-            $token = JWTAuth::refresh($old_token);
-            $time = time() + 7200;
-            return response()->success(compact('token', 'time'));
-        }catch (\Exception $e){
-
-        }
-        return response()->error('XCX_NOT_LOGIN');
-    }
-
-
-    private function getUserWeixinInfo($js_code)
-    {
-        if (empty($js_code)) {
-            return false;
-        }
-        $url = 'https://api.weixin.qq.com/sns/jscode2session?';
-        $client = new Client([
-            'timeout' => 2.0,
-        ]);
-        $appid = 'wxa0c8331eba3b34d5';
-        $secret = '17c01c26dd7873e557710601436774c7';
-        $grant_type = 'authorization_code';
-        try {
-            $res = $client->get($url . http_build_query(compact('js_code', 'appid', 'secret', 'grant_type')))->getBody()->getContents();
-            Log::info('code 换取 session_key is :');
-            Log::info($res);
-            $res = json_decode($res, true);
-            if (isset($res['errcode'])) {
-                return false;
-            }
-            return $res;
-        } catch (\Exception $e) {
-            Log::info($e);
-            return false;
-        }
-    }
-
-
-    /**
-     * 检验数据的真实性,并且获取解密后的明文.
-     * @param $encryptedData string 加密的用户数据
-     * @param $iv string 与用户数据一同返回的初始向量
-     * @param $data string 解密后的原文
-     *
-     * @return int 成功0,失败返回对应的错误码
-     */
-    private function decryptData($appid, $sessionKey,$encryptedData, $iv, &$data )
-    {
-        if (strlen($sessionKey) != 24) {
-            return ErrorCode::$IllegalAesKey;
-        }
-        $aesKey=base64_decode($sessionKey);
-
-
-        if (strlen($iv) != 24) {
-            return ErrorCode::$IllegalIv;
-        }
-        $aesIV=base64_decode($iv);
-
-        $aesCipher=base64_decode($encryptedData);
-
-        $result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
-
-        $dataObj=json_decode( $result );
-        if( $dataObj  == NULL )
-        {
-            return ErrorCode::$IllegalBuffer;
-        }
-        if( $dataObj->watermark->appid !=$appid )
-        {
-            return ErrorCode::$IllegalBuffer;
-        }
-        $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;
-}

+ 3 - 3
app/Http/Controllers/KuaiYingYong/BaseController.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong;
+namespace App\Http\Controllers\QuickApp;
 use Illuminate\Routing\Controller;
 use App\Modules\User\Models\Xcxuser;
 use JWTAuth;
@@ -34,8 +34,8 @@ class BaseController extends Controller
             return $user->distribution_channel_id;
         }
         if($name == 'openid'){
-            $xcx_user = Xcxuser::where('uid',$user->id)->select('openid')->first();
-            return $xcx_user->openid;
+            $QAPP_user = Xcxuser::where('uid',$user->id)->select('openid')->first();
+            return $QAPP_user->openid;
         }
         return null;
     }

+ 1 - 1
app/Http/Controllers/KuaiYingYong/Book/BookCategoryController.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\Book;
+namespace App\Http\Controllers\QuickApp\Book;
 
 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;

+ 10 - 14
app/Http/Controllers/KuaiYingYong/Book/BookController.php

@@ -1,10 +1,10 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\Book;
+namespace App\Http\Controllers\QuickApp\Book;
 
 use Illuminate\Http\Request;
-use App\Http\Controllers\KuaiYingYong\BaseController;
-use App\Http\Controllers\KuaiYingYong\Book\Transformers\BookTransformer;
+use App\Http\Controllers\QuickApp\BaseController;
+use App\Http\Controllers\QuickApp\Book\Transformers\BookTransformer;
 use App\Modules\Book\Services\BookConfigService;
 use App\Modules\Book\Services\UserShelfBooksService;
 use App\Modules\Book\Services\ChapterService;
@@ -91,19 +91,15 @@ class BookController extends BaseController
      */
     public function index(Request $request,$bid){
         if(!$this->checkUid()){
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
-
-        //$bid = $request->all()['_url'];
-        //$bid =explode('/',$bid)[3];
         $bid = Hashids::decode($bid)[0];
-
         $book_info = BookConfigService::getBookById($bid);
         if(!$book_info){
-            return response()->error('XCX_SYS_ERROR');
+            return response()->error('QAPP_SYS_ERROR');
         }
         if(!in_array($book_info->is_on_shelf,[1,2])){
-            return response()->error('XCX_OFF_SHELF');
+            return response()->error('QAPP_OFF_SHELF');
         }
         $is_on_shelf = UserShelfBooksService::getUserShelfBooksListByUidAndBid($this->uid,$bid);
 
@@ -157,7 +153,7 @@ class BookController extends BaseController
      */
     public function getBookLists(Request $request,$sex){
         if(!$this->checkUid()){
-            //return response()->error('XCX_NOT_LOGIN');
+            //return response()->error('QAPP_NOT_LOGIN');
         }
         if($sex == 'male'){
             $type = [
@@ -411,7 +407,7 @@ class BookController extends BaseController
      */
     public function similarRecom (Request $request){
         if(!$this->checkUid()){
-            //return response()->error('XCX_NOT_LOGIN');
+            //return response()->error('QAPP_NOT_LOGIN');
         }
         $category_id = $request->input('category_id');
         $bid = $request->input('bid');
@@ -508,7 +504,7 @@ class BookController extends BaseController
      */
     public function readOverRecommend(Request $request){
         if(!$this->checkUid()){
-            //return response()->error('XCX_NOT_LOGIN');
+            //return response()->error('QAPP_NOT_LOGIN');
         }
         $bid = $request->input('bid');
         if(empty($bid)){
@@ -598,7 +594,7 @@ class BookController extends BaseController
      */
     public function rank(Request $request){
         if(!$this->checkUid()){
-            //return response()->error('XCX_NOT_LOGIN');
+            //return response()->error('QAPP_NOT_LOGIN');
         }
 
         $type = $request->input('type');

+ 27 - 27
app/Http/Controllers/KuaiYingYong/Book/ChapterController.php

@@ -1,15 +1,15 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\Book;
+namespace App\Http\Controllers\QuickApp\Book;
 
 use Illuminate\Http\Request;
-use App\Http\Controllers\KuaiYingYong\BaseController;
+use App\Http\Controllers\QuickApp\BaseController;
 use Redis;
 use App\Modules\Book\Services\ChapterService;
 use App\Modules\User\Services\ReadRecordService;
-use App\Http\Controllers\KuaiYingYong\Book\Transformers\ChapterTransformer;
+use App\Http\Controllers\QuickApp\Book\Transformers\ChapterTransformer;
 use App\Modules\Book\Services\BookConfigService;
-use App\Http\Controllers\KuaiYingYong\Book\Transformers\ChapterListTransformer;
+use App\Http\Controllers\QuickApp\Book\Transformers\ChapterListTransformer;
 use App\Modules\Subscribe\Services\BookOrderService;
 use App\Modules\Subscribe\Services\ChapterOrderService;
 use App\Modules\Subscribe\Services\YearOrderService;
@@ -221,7 +221,7 @@ class ChapterController extends BaseController
      */
     public function index(Request $request,$bid,$cid){
         if(!$this->checkUid()){
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         $oldbid = $bid;
         $bid = Hashids::decode($bid)[0];
@@ -229,15 +229,15 @@ class ChapterController extends BaseController
         $book_info  = BookConfigService::getBookById($bid);
 
 
-        if(empty($book_info)) return response()->error('XCX_SYS_ERROR');
+        if(empty($book_info)) return response()->error('QAPP_SYS_ERROR');
 
         if($book_info->is_on_shelf == 0 || $book_info->is_on_shelf == 3){
-            //return response()->error('XCX_OFF_SHELF');
+            //return response()->error('QAPP_OFF_SHELF');
         }
         //获取章节信息
         $chapter = ChapterService::getChapterNameById($cid,$bid);
         if(!$chapter){
-            return response()->error('XCX_SYS_ERROR');
+            return response()->error('QAPP_SYS_ERROR');
         }
 
         if($chapter->is_vip == 0){
@@ -287,21 +287,21 @@ class ChapterController extends BaseController
             if($this->isOrderRemind($bid)){
 
                 if($book_info->charge_type == 'BOOK'){
-                    return response()->error('XCX_BOOK_BALANCE_PAY',$data);
+                    return response()->error('QAPP_BOOK_BALANCE_PAY',$data);
                 }else
                     if($book_info->charge_type == 'CHAPTER'){
-                        return response()->error('XCX_CHAPTER_INSUFFICIENT_BALANCE',$data);
+                        return response()->error('QAPP_CHAPTER_INSUFFICIENT_BALANCE',$data);
                     }else{
-                        return response()->error('XCX_SYS_ERROR');
+                        return response()->error('QAPP_SYS_ERROR');
                     }
             }else{
                 //不需要提醒
                 if($book_info->charge_type == 'BOOK'){
-                    return response()->error('XCX_BOOK_SECOND_BALANCE_PAY',$data);
+                    return response()->error('QAPP_BOOK_SECOND_BALANCE_PAY',$data);
                 }elseif($book_info->charge_type == 'CHAPTER'){
-                    return response()->error('XCX_CHAPTER_SECOND_BALANCE_PAY',$data);
+                    return response()->error('QAPP_CHAPTER_SECOND_BALANCE_PAY',$data);
                 }else{
-                    return response()->error('XCX_SYS_ERROR');
+                    return response()->error('QAPP_SYS_ERROR');
                 }
             }
         }
@@ -309,12 +309,12 @@ class ChapterController extends BaseController
         if($this->isOrderRemind($bid)){
             //return response()->error('INSUFFICIENT_BALANCE',$data);
             if($book_info->charge_type  == 'BOOK'){
-                return response()->error('XCX_BOOK_BUY',$data);
+                return response()->error('QAPP_BOOK_BUY',$data);
             }else
                 if($book_info->charge_type == 'CHAPTER'){
-                    return response()->error('XCX_CHAPTER_BUY',$data);
+                    return response()->error('QAPP_CHAPTER_BUY',$data);
                 }else{
-                    return response()->error('XCX_SYS_ERROR');
+                    return response()->error('QAPP_SYS_ERROR');
                 }
         }
         //付费 不提醒
@@ -331,11 +331,11 @@ class ChapterController extends BaseController
 
             //不需要提醒
             if($book_info->charge_type == 'BOOK'){
-                return response()->error('XCX_BOOK_SECOND_BALANCE_PAY',$data);
+                return response()->error('QAPP_BOOK_SECOND_BALANCE_PAY',$data);
             }elseif($book_info->charge_type == 'CHAPTER'){
-                return response()->error('XCX_CHAPTER_SECOND_BALANCE_PAY',$data);
+                return response()->error('QAPP_CHAPTER_SECOND_BALANCE_PAY',$data);
             }else{
-                return response()->error('XCX_SYS_ERROR');
+                return response()->error('QAPP_SYS_ERROR');
             }
         }
     }
@@ -385,23 +385,23 @@ class ChapterController extends BaseController
     public function pay(Request $request,$bid,$cid){
 
         if(!$this->checkUid()){
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         $remind = (int)$request->input('remind');
         $oldbid = $bid;
         $bid = Hashids::decode($bid)[0];
         $book_info = BookConfigService::getBookById($bid);;
-        if(empty($book_info)) response()->error('XCX_SYS_ERROR');
+        if(empty($book_info)) response()->error('QAPP_SYS_ERROR');
 
         if($book_info->is_on_shelf == 0 || $book_info->is_on_shelf == 3){
             if(!$this->isBookOrdered($bid)){
-                response()->error('XCX_OFF_SHELF');
+                response()->error('QAPP_OFF_SHELF');
             } 
         }
         //获取章节
         $chapter = ChapterService::getChapterNameById($cid,$bid);
         if(!$chapter){
-            return response()->error('XCX_SYS_ERROR');
+            return response()->error('QAPP_SYS_ERROR');
         }
 
 
@@ -433,11 +433,11 @@ class ChapterController extends BaseController
             ];
             //不需要提醒
             if($book_info->charge_type == 'BOOK'){
-                return response()->error('XCX_BOOK_SECOND_BALANCE_PAY',$data);
+                return response()->error('QAPP_BOOK_SECOND_BALANCE_PAY',$data);
             }elseif($book_info->charge_type == 'CHAPTER'){
-                return response()->error('XCX_CHAPTER_SECOND_BALANCE_PAY',$data);
+                return response()->error('QAPP_CHAPTER_SECOND_BALANCE_PAY',$data);
             }else{
-                return response()->error('XCX_SYS_ERROR');
+                return response()->error('QAPP_SYS_ERROR');
             }
         }
     }

+ 1 - 1
app/Http/Controllers/KuaiYingYong/Book/Transformers/BookTransformer.php

@@ -5,7 +5,7 @@
  * Time: 14:02
  */
 
-namespace App\Http\Controllers\KuaiYingYong\Book\Transformers;
+namespace App\Http\Controllers\QuickApp\Book\Transformers;
 use Hashids;
 class BookTransformer
 {

+ 1 - 1
app/Http/Controllers/KuaiYingYong/Book/Transformers/ChapterListTransformer.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\Book\Transformers;
+namespace App\Http\Controllers\QuickApp\Book\Transformers;
 use Hashids;
 class ChapterListTransformer
 {

+ 1 - 1
app/Http/Controllers/KuaiYingYong/Book/Transformers/ChapterTransformer.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\Book\Transformers;
+namespace App\Http\Controllers\QuickApp\Book\Transformers;
 use Hashids;
 class ChapterTransformer
 {

+ 124 - 0
app/Http/Controllers/QuickApp/Oauth/UsersController.php

@@ -0,0 +1,124 @@
+<?php
+
+namespace App\Http\Controllers\QuickApp\Oauth;
+
+use App\Consts\SysConsts;
+use Illuminate\Http\Request;
+use App\Http\Controllers\Controller;
+use App\Modules\User\Services\QappUserService;
+use JWTAuth;
+
+class UsersController extends Controller
+{
+    /**
+     * @apiDefine Login 登录
+     */
+
+    /**
+     * @apiVersion 1.0.0
+     * @apiDescription 登录
+     * @api {post} login 登录
+     * @apiParam  {String}  js_code js_code
+     * @apiParam  {Int}     distribution_channel_id distribution_channel_id
+     * @apiParam  {String}  sign    签名
+     * @apiGroup Login
+     * @apiName index
+     * @apiSuccess {int}         code 状态码
+     * @apiSuccess {String}      msg  信息
+     * @apiSuccess {object}      data 结果集
+     * @apiSuccess {String}      data.uid 用户uid
+     * @apiSuccess {String}      data.token token
+     * @apiSuccess {Int}         data.time 过期时间
+     * @apiSuccessExample {json} Success-Response:
+     *     HTTP/1.1 200 OK
+     *     {
+     *       code: 0,
+     *       msg: "",
+     *       data:  {
+     *            token:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
+     *            time:123455,
+     *            uid:1
+     *           }
+     *       }
+     */
+    public function index(Request $request)
+    {
+        $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);
+        } else {
+            return response()->error('PARAM_ERROR');
+        }
+    }
+
+    /**
+     * @apiVersion 1.0.0
+     * @apiDescription 刷新token
+     * @api {get} RefreshToken 刷新token
+     * @apiParam {String}  [token]  token
+     * @apiHeader {String} [Authorization]  token 两个token任选其一
+     * @apiGroup Login
+     * @apiName RefreshToken
+     * @apiSuccess {int}         code 状态码
+     * @apiSuccess {String}      msg  信息
+     * @apiSuccess {object}      data 结果集
+     * @apiSuccess {String}      data.token token
+     * @apiSuccess {Int}         data.time 过期时间
+     * @apiSuccessExample {json} Success-Response:
+     *     HTTP/1.1 200 OK
+     *     {
+     *       code: 0,
+     *       msg: "",
+     *       data:  {
+     *            token:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
+     *            time:123455
+     *           }
+     *       }
+     */
+    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;
+        }
+        $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;
+}

+ 18 - 18
app/Http/Controllers/KuaiYingYong/Order/OrdersController.php

@@ -1,15 +1,15 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\Order;
+namespace App\Http\Controllers\QuickApp\Order;
 
-use App\Http\Controllers\KuaiYingYong\BaseController;
+use App\Http\Controllers\QuickApp\BaseController;
 use Illuminate\Http\Request;
 use App\Modules\Subscribe\Services\BookOrderService;
 use App\Modules\Subscribe\Services\ChapterOrderService;
 use App\Modules\Xcx\Services\XcxOrderService as OrderService;
-use App\Http\Controllers\KuaiYingYong\Order\Transformers\BookOrderTransformer;
-use App\Http\Controllers\KuaiYingYong\Order\Transformers\ChapterOrderTransformer;
-use App\Http\Controllers\KuaiYingYong\Order\Transformers\ChargeListTransformer;
+use App\Http\Controllers\QuickApp\Order\Transformers\BookOrderTransformer;
+use App\Http\Controllers\QuickApp\Order\Transformers\ChapterOrderTransformer;
+use App\Http\Controllers\QuickApp\Order\Transformers\ChargeListTransformer;
 use App\Modules\Subscribe\Services\YearOrderService;
 use App\Modules\User\Services\UserService;
 use DB;
@@ -96,7 +96,7 @@ class OrdersController extends BaseController
     public function chargeList(Request $request)
     {
         if (!$this->checkUid()) {
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         
         $device = $request->has('device')?$request->get('device'):'';
@@ -171,7 +171,7 @@ class OrdersController extends BaseController
             }
             return response()->success($data);
         } else {
-            return response()->error('XCX_SYS_ERROR');
+            return response()->error('QAPP_SYS_ERROR');
         }
     }
 
@@ -219,7 +219,7 @@ class OrdersController extends BaseController
     public function bookOrderList(Request $request)
     {
         if (!$this->checkUid()) {
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         $page_size = $request->input('page_size', 15);
         $book_order = BookOrderService::getRecord($this->uid, $page_size);
@@ -276,7 +276,7 @@ class OrdersController extends BaseController
     public function chapterOrderList(Request $request)
     {
         if (!$this->checkUid()) {
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         $chapter_model = new ChapterOrderService();
         $page_size = $request->input('page_size', 15);
@@ -329,7 +329,7 @@ class OrdersController extends BaseController
     public function chargeRecordLists(Request $request)
     {
         if (!$this->checkUid()) {
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         $page_size = $request->input('page_size', 15);
         $res = OrderService::getOrderList($this->uid, $page_size);
@@ -344,7 +344,7 @@ class OrdersController extends BaseController
         if ($order_info && $order_info->status == 'PAID') {
             return response()->success();
         }
-        return response()->error('XCX_SYS_ERROR');
+        return response()->error('QAPP_SYS_ERROR');
     }
 
 
@@ -385,15 +385,15 @@ class OrdersController extends BaseController
         $send_order_id = $request->has('send_order_id') ? $request->get('send_order_id') : 0;
 
         if (!$this->checkUid()) {
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
 
         if (empty($product_id) || empty($sign)) {
-            return response()->error('XCX_PARAM_ERROR');
+            return response()->error('QAPP_PARAM_ERROR');
         }
 
         if (!$this->checkSign($request->all('_url'))) {
-            //return response()->error('XCX_PARAM_ERROR');
+            //return response()->error('QAPP_PARAM_ERROR');
         }
         $bid = $request->has('bid') ? $request->get('bid') : 0;
         $openid = $this->openid;
@@ -444,7 +444,7 @@ class OrdersController extends BaseController
             'send_order_id' => $send_order_id,
             'order_type' => $order_type,
             'from_bid' => $bid,
-            'from_type' => 'KuaiYingYong',
+            'from_type' => 'QuickApp',
             'activity_id'=>0
         ]);
         Log::info('order is');
@@ -465,7 +465,7 @@ class OrdersController extends BaseController
             'detail' => 'novel read',
             'out_trade_no' => $trade_no,
             'total_fee' => $price,
-            'notify_url' => env('XCX_PAY_CALL_BACK_URL'),
+            'notify_url' => env('QAPP_PAY_CALL_BACK_URL'),
             'openid' => $openid,
             'spbill_create_ip' => $request->getClientIp(),
         ];
@@ -527,7 +527,7 @@ class OrdersController extends BaseController
         while ($i <= 10){
             $order_info = OrderService::getByTradeNo($order);
             if(!$order_info){
-                return response()->error('XCX_SYS_ERROR');
+                return response()->error('QAPP_SYS_ERROR');
                 break;
             }
             if (isset($order_info->status) && $order_info->status == 'PAID') {
@@ -541,7 +541,7 @@ class OrdersController extends BaseController
             sleep(1);
             $i++;
         }
-        return response()->error('XCX_SYS_ERROR');
+        return response()->error('QAPP_SYS_ERROR');
 
     }
     protected function MakeSign($value)

+ 1 - 1
app/Http/Controllers/KuaiYingYong/Order/Transformers/BookOrderTransformer.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\Order\Transformers;
+namespace App\Http\Controllers\QuickApp\Order\Transformers;
 use Hashids;
 class BookOrderTransformer
 {

+ 1 - 1
app/Http/Controllers/KuaiYingYong/Order/Transformers/ChapterOrderTransformer.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\Order\Transformers;
+namespace App\Http\Controllers\QuickApp\Order\Transformers;
 use Hashids;
 class ChapterOrderTransformer
 {

+ 1 - 1
app/Http/Controllers/KuaiYingYong/Order/Transformers/ChargeListTransformer.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\Order\Transformers;
+namespace App\Http\Controllers\QuickApp\Order\Transformers;
 class ChargeListTransformer
 {
 

+ 1 - 1
app/Http/Controllers/KuaiYingYong/Order/Transformers/OrderTransformer.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\Order\Transformers;
+namespace App\Http\Controllers\QuickApp\Order\Transformers;
 
 class OrderTransformer
 {

+ 6 - 6
app/Http/Controllers/KuaiYingYong/User/ReadRecordController.php

@@ -1,12 +1,12 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\User;
+namespace App\Http\Controllers\QuickApp\User;
 
 use Illuminate\Http\Request;
-use App\Http\Controllers\KuaiYingYong\BaseController;
+use App\Http\Controllers\QuickApp\BaseController;
 use App\Modules\Book\Services\BookConfigService;
 use App\Modules\Book\Services\UserShelfBooksService;
-use App\Http\Controllers\KuaiYingYong\User\Transformers\ReadRecordTransformer;
+use App\Http\Controllers\QuickApp\User\Transformers\ReadRecordTransformer;
 use App\Modules\User\Services\ReadRecordService;
 use Hashids;
 use Redis;
@@ -63,7 +63,7 @@ class ReadRecordController extends BaseController
      */
     public function index(Request $request){
         if(!$this->checkUid()){
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
 
         $res = ReadRecordService::getReadRecord($this->uid);
@@ -131,7 +131,7 @@ class ReadRecordController extends BaseController
      */
     public function addReadRecord(Request $request){
         if(!$this->checkUid()){
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         $param = $request->except('_url');
         if(checkParam($param,['bid','cid','chapter_name'])){
@@ -175,7 +175,7 @@ class ReadRecordController extends BaseController
      */
     public function delReadRecord(Request $request){
         if(!$this->checkUid()){
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         $param = $request->except('_url');
         if(checkParam($param,['bid'])){

+ 1 - 1
app/Http/Controllers/KuaiYingYong/User/Transformers/ReadRecordTransformer.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\User\Transformers;
+namespace App\Http\Controllers\QuickApp\User\Transformers;
 use Hashids;
 class ReadRecordTransformer
 {

+ 1 - 1
app/Http/Controllers/KuaiYingYong/User/Transformers/UserShelfBooksTransformer.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\User\Transformers;
+namespace App\Http\Controllers\QuickApp\User\Transformers;
 
 use Hashids;
 

+ 3 - 3
app/Http/Controllers/KuaiYingYong/User/UserController.php

@@ -1,9 +1,9 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\User;
+namespace App\Http\Controllers\QuickApp\User;
 
 
-use App\Http\Controllers\KuaiYingYong\BaseController;
+use App\Http\Controllers\QuickApp\BaseController;
 use App\Modules\Subscribe\Services\YearOrderService;
 use App\Modules\User\Transformers\YearOrderTransformer;
 use App\Modules\User\Services\UserService;
@@ -60,7 +60,7 @@ class UserController extends BaseController
      */
     public function index(){
         if(!$this->checkUid()){
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
 
         $data = UserService::getById($this->uid);

+ 10 - 10
app/Http/Controllers/KuaiYingYong/User/UserShelfBooksController.php

@@ -1,12 +1,12 @@
 <?php
 
-namespace App\Http\Controllers\KuaiYingYong\User;
+namespace App\Http\Controllers\QuickApp\User;
 
 use Illuminate\Http\Request;
-use App\Http\Controllers\KuaiYingYong\BaseController;
+use App\Http\Controllers\QuickApp\BaseController;
 use Redis;
 use App\Modules\Book\Services\UserShelfBooksService;
-use App\Http\Controllers\KuaiYingYong\User\Transformers\UserShelfBooksTransformer;
+use App\Http\Controllers\QuickApp\User\Transformers\UserShelfBooksTransformer;
 use App\Modules\User\Services\ReadRecordService;
 use Hashids;
 use Log;
@@ -69,7 +69,7 @@ class UserShelfBooksController extends BaseController
      */
     public function index(Request $request){
         if(!$this->checkUid()){
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
 
         $res = UserShelfBooksService::getUserShelfBooksListByUid($this->uid);
@@ -123,7 +123,7 @@ class UserShelfBooksController extends BaseController
      */
     public function addShelf(Request $request){
         if(!$this->checkUid()){
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         $param = $request->except('_url');
         if(checkParam($param,['bid'])){
@@ -137,13 +137,13 @@ class UserShelfBooksController extends BaseController
         try{
             $res = UserShelfBooksService::create($param);
         }catch (\Exception $e){
-            return response()->error('XCX_PARAM_ERROR');
+            return response()->error('QAPP_PARAM_ERROR');
         }
 
         if($res){
             return response()->success($res);
         }
-        return response()->error('XCX_SYS_ERROR');
+        return response()->error('QAPP_SYS_ERROR');
     }
 
 
@@ -168,7 +168,7 @@ class UserShelfBooksController extends BaseController
      */
     public function delShelf(Request $request){
         if(!$this->checkUid()){
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         $bid = $request->input('bid');
         if(empty($bid)) return response()->error('LACK_PARAM');
@@ -178,7 +178,7 @@ class UserShelfBooksController extends BaseController
         if($res){
             return response()->success();
         }
-        return response()->error('XCX_SYS_ERROR');
+        return response()->error('QAPP_SYS_ERROR');
     }
     
 
@@ -206,7 +206,7 @@ class UserShelfBooksController extends BaseController
      */
     public function  isOnshelf(Request $request){
         if(!$this->checkUid()){
-            return response()->error('XCX_NOT_LOGIN');
+            return response()->error('QAPP_NOT_LOGIN');
         }
         $bid = $request->input('bid');
         if(!$bid) return response()->error('LACK_PARAM');

app/Http/Controllers/KuaiYingYong/apidoc.json → app/Http/Controllers/QuickApp/apidoc.json


app/Http/Controllers/KuaiYingYong/header.md → app/Http/Controllers/QuickApp/header.md


+ 2 - 16
app/Http/Kernel.php

@@ -28,20 +28,10 @@ class Kernel extends HttpKernel
             \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
             \Illuminate\Session\Middleware\StartSession::class,
             \Illuminate\View\Middleware\ShareErrorsFromSession::class,
-            //\App\Http\Middleware\VerifyCsrfToken::class,
-            //\App\Http\Middleware\EnableCrossRequest::class,
-        ],
-        'wap' => [
-            \App\Http\Middleware\EncryptCookies::class,
-            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
-            //\Illuminate\Session\Middleware\StartSession::class,
-            //\Illuminate\View\Middleware\ShareErrorsFromSession::class,
-            //\App\Http\Middleware\VerifyCsrfToken::class,
-            //\App\Http\Middleware\EnableCrossRequest::class,
         ],
         'jwttoken' => [
-            \App\Http\Middleware\XchengxuRefreshToken::class,
-            \App\Http\Middleware\XchengxuGetUserFromToken::class,
+            \App\Http\Middleware\QuickAppRefreshToken::class,
+            \App\Http\Middleware\QuickAppGetUserFromToken::class,
         ],
         'api' => [
             'throttle:60,1',
@@ -56,10 +46,6 @@ class Kernel extends HttpKernel
      * @var array
      */
     protected $routeMiddleware = [
-        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
         'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
-        'ReadOauth' => \App\Http\Middleware\ReadOauth::class,
-        'EnableCross' => \App\Http\Middleware\EnableCrossRequest::class,
-        'CrmUser' =>  \App\Http\Middleware\CrmUser::class,
     ];
 }

+ 0 - 65
app/Http/Middleware/CrmUser.php

@@ -1,65 +0,0 @@
-<?php
-
-namespace App\Http\Middleware;
-
-use App\Modules\User\Services\SiteUser;
-use Closure;
-use EasyWeChat\Foundation\Application;
-use Cookie;
-
-class CrmUser
-{
-    /**
-     * Handle an incoming request.
-     *
-     * @param  \Illuminate\Http\Request  $request
-     * @param  \Closure  $next
-     * @return mixed
-     */
-    public function handle($request, Closure $next)
-    {
-        $uid = Cookie::get('crm_user_id');
-        if ($uid) {
-            $channel_id = Cookie::get('crm_channel_id');
-            $this->setUserGlobal($uid, $channel_id);
-        } else {
-            $openid = $request->get('openid');
-            // $openid = 'oHhd20YbxxOZ34ahoE7ZrX8M8O2c';
-            $params = $request->except('_url');
-            if (empty($openid)) {
-                $url = url()->current() . '?' . http_build_query($params);
-                $params['redirect_url'] = urlencode($url);
-                $app = new Application($this->auth($params));
-                return $app->oauth->redirect();
-            } else {
-                $site_user = new SiteUser($openid);
-                $user = $site_user->getChannelUser();
-                Cookie::queue('crm_user_id', $user[0], env('U_COOKIE_EXPIRE'));
-                Cookie::queue('crm_channel_id', $user[1], env('U_COOKIE_EXPIRE'));
-                $this->setUserGlobal($user[0], $user[1]);
-            }
-        }
-        return $next($request);
-    }
-
-    private function setUserGlobal($uid, $channel_id)
-    {
-        $user = app()->make('user');
-        $user->id = $uid;
-        $user->channel_id = $channel_id;
-    }
-
-    private function auth($param)
-    {
-        $param['appid'] = 'wx9d389a73b88bbeae';
-        $options = [
-            'app_id' => 'wx9d389a73b88bbeae',
-            'secret' => '2f6594bb595dfa256b5512e43a32a3d3',
-            'oauth' => [
-                'scopes' => ['snsapi_base'],
-                'callback' => env('AUTH_CALLBACK_URL') . '?' . http_build_query($param),
-            ],
-        ];
-        return $options;
-    }
-}

+ 0 - 30
app/Http/Middleware/EnableCrossRequest.php

@@ -1,30 +0,0 @@
-<?php 
-
-namespace App\Http\Middleware;
-
-use Closure;
-use Response;
-use Log;
-class EnableCrossRequest {
-
-  /**
-   * Handle an incoming request.
-   *
-   * @param  \Illuminate\Http\Request  $request
-   * @param  \Closure  $next
-   * @return mixed
-   */
-  public function handle($request, Closure $next)
-  {     
-        $response = $next($request);
-
-        /*
-        header("Access-Control-Allow-Credentials: true");
-        header("Access-Control-Allow-Methods: *");
-        header("Access-Control-Allow-Headers: Content-Type,Access-Token");
-        header("Access-Control-Expose-Headers: *");*/
-        
-        return $response;
-  }
-
-}

+ 1 - 25
app/Http/Middleware/EncryptCookies.php

@@ -11,29 +11,5 @@ class EncryptCookies extends BaseEncrypter
      *
      * @var array
      */
-    protected $except = [
-        'u',
-        'send_order_id',
-        'from',
-        'send_order_continue',
-        'send_order_flag',
-        'force_subscribe_name',
-        'sub_random_num',
-        'reader_share_bid',
-        'reader_share_cid',
-        'force_show_qrcode',
-        'cpc_ad_status',
-        'crm',
-        'crm_flag',
-        'is_paid',
-        'crm_person_img',
-        'crm_person_name',
-        'sign_recomand_bids',
-        'month_pay_redirect',
-        'is_force_out_guide',
-        'push_transfer_custom_flag',
-        'push_transfer_template_flag',
-        'crm_user_id',
-        'crm_channel_id'
-    ];
+    protected $except = [];
 }

+ 9 - 12
app/Http/Middleware/XchengxuGetUserFromToken.php

@@ -3,11 +3,12 @@
 namespace App\Http\Middleware;
 
 use Closure;
+use Illuminate\Http\Request;
 use Tymon\JWTAuth\Exceptions\JWTException;
 use Tymon\JWTAuth\Exceptions\TokenExpiredException;
 use Tymon\JWTAuth\Middleware\BaseMiddleware;
 
-class XchengxuGetUserFromToken extends BaseMiddleware
+class QuickAppGetUserFromToken extends BaseMiddleware
 {
     /**
      * Handle an incoming request.
@@ -16,26 +17,22 @@ class XchengxuGetUserFromToken extends BaseMiddleware
      * @param  \Closure  $next
      * @return mixed
      */
-    public function handle($request, \Closure $next)
+    public function handle(Request $request, Closure $next)
     {
-        if (! $token = $this->auth->setRequest($request)->getToken()) {
-            return response()->error('XCX_TOKEN_ERROR');
+        if (!$token = $this->auth->setRequest($request)->getToken()) {
+            return response()->error('QAPP_TOKEN_ERROR');
         }
-
         try {
             $user = $this->auth->authenticate($token);
         } catch (TokenExpiredException $e) {
-            return response()->error('XCX_TOKEN_ERROR');
+            return response()->error('QAPP_TOKEN_ERROR');
         } catch (JWTException $e) {
-            return response()->error('XCX_TOKEN_ERROR');
+            return response()->error('QAPP_TOKEN_ERROR');
         }
-
-        if (! $user) {
-             return response()->error('XCX_TOKEN_ERROR');
+        if (!$user) {
+            return response()->error('QAPP_TOKEN_ERROR');
         }
-
         $this->events->fire('tymon.jwt.valid', $user);
-
         return $next($request);
     }
 }

+ 2 - 6
app/Http/Middleware/CheckParam.php

@@ -3,8 +3,8 @@
 namespace App\Http\Middleware;
 
 use Closure;
-use App\Api\Common\Common;
-class CheckParam
+
+class QuickAppOAuth
 {
     /**
      * Handle an incoming request.
@@ -15,10 +15,6 @@ class CheckParam
      */
     public function handle($request, Closure $next)
     {
-
-        if(empty($request->all())){
-            return response()->json(Common::error('1001'));
-        }
         return $next($request);
     }
 }

+ 7 - 6
app/Http/Middleware/XchengxuRefreshToken.php

@@ -3,10 +3,12 @@
 namespace App\Http\Middleware;
 
 use Closure;
+use Illuminate\Http\Request;
 use Tymon\JWTAuth\Exceptions\JWTException;
 use Tymon\JWTAuth\Exceptions\TokenExpiredException;
 use Tymon\JWTAuth\Middleware\BaseMiddleware;
-class XchengxuRefreshToken extends  BaseMiddleware
+
+class QuickAppRefreshToken extends  BaseMiddleware
 {
     /**
      * Handle an incoming request.
@@ -15,17 +17,16 @@ class XchengxuRefreshToken extends  BaseMiddleware
      * @param  \Closure  $next
      * @return mixed
      */
-    public function handle($request, \Closure $next)
+    public function handle(Request $request, Closure $next)
     {
         $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('XCX_TOKEN_ERROR');
+            return response()->error('QAPP_TOKEN_ERROR');
         } catch (JWTException $e) {
-            //return response()->error('XCX_TOKEN_ERROR');
+            return response()->error('QAPP_TOKEN_ERROR');
         }
         return $response;
     }

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 794
app/Http/Middleware/ReadOauth.php


+ 0 - 17
app/Http/Middleware/VerifyCsrfToken.php

@@ -1,17 +0,0 @@
-<?php
-
-namespace App\Http\Middleware;
-
-use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
-
-class VerifyCsrfToken extends BaseVerifier
-{
-    /**
-     * The URIs that should be excluded from CSRF verification.
-     *
-     * @var array
-     */
-    protected $except = [
-        'api/*'
-    ];
-}

+ 0 - 80
app/Http/Routes/KuaiYingYong/KuaiYingYongRoutes.php

@@ -1,80 +0,0 @@
-<?php
-
-Route::group(['domain'=>env('KUANYINGYONG_DOMAIN'),'namespace'=>'App\Http\Controllers\KuaiYingYong'],function(){
-    //支付
-    Route::any('pay/wcback_xchengxu','Order\OrdersController@wcback_official');
-    Route::any('help','Web\RedirectController@help');
-    Route::post('api/login','Oauth\UsersController@index');
-    Route::get('api/RefreshToken','Oauth\UsersController@RefreshToken');
-
-    //支付回调
-    Route::any('pay/wcback','Order\OrdersController@wxback_xcx');
-    Route::group(['prefix'=>'api'],function (){
-        //首页
-        Route::get('books/{sex}/index','Book\BookController@getBookLists');
-        //书库
-        Route::get('books/library','Book\BookController@library');
-        //相似推荐
-        Route::get('books/similar','Book\BookController@similarRecom');
-        //阅读完后的推荐
-        Route::get('books/readOverRecommend','Book\BookController@readOverRecommend');
-        //排行榜
-        Route::get('books/rank','Book\BookController@rank');
-        //分类列表
-        Route::get('books/getCategory','Book\BookCategoryController@getCategory');
-    });
-    //web 接口  jwttoken
-    Route::group(['prefix'=>'api','middleware'=>'jwttoken'],function () {
-
-        //图书详情
-        Route::get('book/{bid}','Book\BookController@index');
-
-        //目录不分页
-        Route::get('books/{bid}/allcatalog','Book\ChapterController@getCatalog');
-
-        //Route::get('books/{bid}/allcatalog/{aa}',function ($tt,$bid,$aa){return $bid.'---'.$aa;});
-        //目录分页
-        Route::get('books/{bid}/catalog','Book\ChapterController@getCatalogPerPage');
-        //章节详情
-        Route::get('books/{bid}/chapters/{cid}','Book\ChapterController@index')->where('cid','\d+');
-        //余额订购
-        Route::get('books/{bid}/balance/chapterOrders/{cid}','Book\ChapterController@pay');
-
-        //Route::get('books/search','Book\BookController@bookSearch');
-
-        //充值列表
-        Route::get('order/chargeList','Order\OrdersController@chargeList');
-        //章节订购列表
-        Route::get('order/chapterOrderList','Order\OrdersController@chapterOrderList');
-        //单本订购列表
-        Route::get('order/bookOrderList','Order\OrdersController@bookOrderList');
-        //充值记录
-        Route::get('order/chargeRecordLists','Order\OrdersController@chargeRecordLists');
-
-        Route::get('order/issuccess','Order\OrdersController@isSuccess');
-        Route::get('userinfo','User\UserController@index');
-
-
-        //书架
-        Route::get('userShelfBooks','User\UserShelfBooksController@index');
-        //添加书架
-        Route::post('userShelfBooks','User\UserShelfBooksController@addShelf');
-        //删除书架
-        Route::get('userShelfBooks/delete','User\UserShelfBooksController@delShelf');
-
-        Route::get('userShelfBooks/isonshelf','User\UserShelfBooksController@isOnshelf');
-
-        //阅读记录
-        Route::get('readrecord','User\ReadRecordController@index');
-        //添加阅读记录
-        Route::post('readrecord','User\ReadRecordController@addReadRecord');
-        //删除阅读记录
-        Route::get('readrecord/delete','User\ReadRecordController@delReadRecord');
-
-        //支付
-        Route::get('goToPay','Order\OrdersController@wxindex');
-
-        Route::get('checkOrder','Order\OrdersController@checkOrder');
-    });
-
-});

+ 74 - 0
app/Http/Routes/QuickApp/QuickAppRoutes.php

@@ -0,0 +1,74 @@
+<?php
+
+Route::group(['domain' => env('QUICKAPP_DOMAIN'), 'namespace' => 'App\Http\Controllers\QuickApp'], function () {
+    //登录
+    Route::post('login', 'Oauth\UsersController@index');
+    //支付
+    Route::any('pay/wcback_xchengxu', 'Order\OrdersController@wxindex');
+    Route::get('RefreshToken', 'Oauth\UsersController@RefreshToken');
+
+    //支付回调
+    Route::any('pay/wcback', 'Order\OrdersController@wxback_xcx');
+
+    Route::group(['prefix' => 'api', 'middleware' => 'jwttoken'], function () {
+        //首页
+        Route::get('books/{sex}/index', 'Book\BookController@getBookLists');
+        //书库
+        Route::get('books/library', 'Book\BookController@library');
+        //相似推荐
+        Route::get('books/similar', 'Book\BookController@similarRecom');
+        //阅读完后的推荐
+        Route::get('books/readOverRecommend', 'Book\BookController@readOverRecommend');
+        //排行榜
+        Route::get('books/rank', 'Book\BookController@rank');
+        //分类列表
+        Route::get('books/getCategory', 'Book\BookCategoryController@getCategory');
+
+        //图书详情
+        Route::get('book/{bid}', 'Book\BookController@index');
+
+        //目录不分页
+        Route::get('books/{bid}/allcatalog', 'Book\ChapterController@getCatalog');
+
+        //目录分页
+        Route::get('books/{bid}/catalog', 'Book\ChapterController@getCatalogPerPage');
+        //章节详情
+        Route::get('books/{bid}/chapters/{cid}', 'Book\ChapterController@index')->where('cid', '\d+');
+        //余额订购
+        Route::get('books/{bid}/balance/chapterOrders/{cid}', 'Book\ChapterController@pay');
+
+        //充值列表
+        Route::get('order/chargeList', 'Order\OrdersController@chargeList');
+        //章节订购列表
+        Route::get('order/chapterOrderList', 'Order\OrdersController@chapterOrderList');
+        //单本订购列表
+        Route::get('order/bookOrderList', 'Order\OrdersController@bookOrderList');
+        //充值记录
+        Route::get('order/chargeRecordLists', 'Order\OrdersController@chargeRecordLists');
+
+        Route::get('order/issuccess', 'Order\OrdersController@isSuccess');
+        Route::get('userinfo', 'User\UserController@index');
+
+
+        //书架
+        Route::get('userShelfBooks', 'User\UserShelfBooksController@index');
+        //添加书架
+        Route::post('userShelfBooks', 'User\UserShelfBooksController@addShelf');
+        //删除书架
+        Route::get('userShelfBooks/delete', 'User\UserShelfBooksController@delShelf');
+
+        Route::get('userShelfBooks/isonshelf', 'User\UserShelfBooksController@isOnshelf');
+
+        //阅读记录
+        Route::get('readrecord', 'User\ReadRecordController@index');
+        //添加阅读记录
+        Route::post('readrecord', 'User\ReadRecordController@addReadRecord');
+        //删除阅读记录
+        Route::get('readrecord/delete', 'User\ReadRecordController@delReadRecord');
+
+        //支付
+        Route::get('goToPay', 'Order\OrdersController@wxindex');
+
+        Route::get('checkOrder', 'Order\OrdersController@checkOrder');
+    });
+});

+ 0 - 13
app/Http/Routes/Wap/OfficialAccountRoutes.php

@@ -1,13 +0,0 @@
-<?php
-
-Route::group(['domain'=>env('WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap\OfficialAccount','prefix'=>'api'],function(){
-
-    /**
-    * 公众号
-    */
-
-	//获取公众号信息
-    Route::any('OfficialAccount/customerImgUrlByChannelId', 'CustomMsgController@customerImgUrlByChannelId');
-
-
-});

+ 0 - 345
app/Http/Routes/Wap/WapRoutes.php

@@ -1,345 +0,0 @@
-<?php
-/**
- * 图书路由文件
- * by zhanyang
- *
- * 2017-12-05
- */
-
-
-Route::group(['domain'=>env('PAY_WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap'],function(){
-    //支付
-    Route::get('/goToPay','Pay\OrdersController@wxindex');
-    //支付回调
-    Route::any('pay/wcback_allinpay','Pay\OrdersController@wcback_allinpay');
-    Route::any('pay/wcback_official','Pay\OrdersController@wcback_official');
-    Route::any('pay/wcback_lianlianpay','Pay\OrdersController@wcback_lianlianpay');
-    Route::any('pay/wcback_palmpay','Pay\OrdersController@wcback_palmpay');
-    Route::any('pay/wcback_originbank','Pay\OrdersController@wcback_originbank');
-    Route::any('pay/wcback_smkpay','Pay\OrdersController@wcback_smkpay');
-    Route::any('pay/wcback_union','Pay\OrdersController@wcback_union');
-    Route::post('pay/reportError','Pay\OrdersController@reportError');
-    //包月
-
-    Route::any('monthpay/signcallback','Pay\MonthOrderController@signCallBack');
-    Route::post('monthpay/ordercallback','Pay\MonthOrderController@orderCallBack');
-    Route::post('xiyue/paynotify','Other\XiyueController@xiyuePayNotity');
-    Route::post('xiyue/getuserbalance','Other\XiyueController@getUserBalance');
-    Route::post('xiyue/consume','Other\XiyueController@xiyueConsume');
-
-
-    Route::post('monthpay/signcallbackv2','Pay\MonthOrderController@signCallBackV2');
-    Route::post('monthpay/ordercallbackv2','Pay\MonthOrderController@orderCallBackV2');
-
-});
-Route::group(['domain'=>env('OFFICIAL_AUTH_FOMAIN'),'namespace'=>'App\Http\Controllers\Wap'],function(){
-    //避免人工上传授权目录验证文件
-    Route::get('MP_verify_{id}.txt',function ($id){
-        return response($id);
-    });
-
-    Route::any('/user_oauth','Oauth\UsersController@user_oauth');
-    Route::get('/wxAuthCallBack','Oauth\UsersController@wcCallbackParse');
-
-    Route::any('/user_oauth_v2','Oauth\UsersV2Controller@user_oauth');
-    Route::get('/wxAuthCallBackv2','Oauth\UsersV2Controller@wcCallbackParse');
-    Route::get('/wxAuthCallBack2v2','Oauth\UsersV2Controller@wcCallbackParse2');
-});
-
-Route::group(['domain'=>env('HELP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap\Help'],function(){
-    Route::get('/','HelpController@index');
-    Route::get('/{id}','HelpController@helpDetail');
-    Route::get('/help/getLinkByAppid','HelpController@getLinkByAppid');
-});
-//分享中间页
-Route::group(['domain'=>env('WAP_DOMAIN'),'prefix'=>'api','namespace'=>'App\Http\Controllers\Wap\Book'],function(){//,'middleware'=>'ReadOauth'
-    Route::any('red_book/getLoop','RedBookController@getLoop');
-    Route::any('red_book/getBookDetail','RedBookController@getBookDetail');
-    Route::any('red_book/getChapterList','RedBookController@getChapterList');
-
-});
-
-//分享中间页
-Route::group(['domain'=>env('share_domain'),'namespace'=>'App\Http\Controllers\Wap'],function(){//,'middleware'=>'ReadOauth'
-    Route::get('share/show','Advertises\ShareController@share');
-    Route::any('share/outjump','Advertises\ShareController@ShareJump');
-});
-
-
-
-Route::group(['domain'=>env('FRIEND_LINK_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap'],function(){
-    Route::get('friendlink','User\CoflController@index');
-    Route::get('fl','User\CoflController@index');
-    Route::get('r/{number}','User\CoflController@r')->where('number','\d+');;
-    Route::get('recent','User\CoflController@recent');
-    Route::get('person','User\CoflController@person');
-    Route::get('index','User\CoflController@indexRoot');
-    Route::get('sign','User\CoflController@sign');
-    Route::get('wsign','User\CoflController@sign');
-    Route::get('guidepersonal','User\CoflController@guidePersonal');
-    Route::get('friendactivitylink','User\CoflController@activity');
-    Route::get('freecurrency','User\CoflController@freeCurrencyView');
-    Route::get('fcandt','User\CoflController@freeCurrencyViewForTransfer');
-    Route::get('wfreecurrency','User\CoflController@freeCurrencyView');
-    Route::get('freethrhcurrency','User\CoflController@freeCurrencyView');
-    Route::get('frocefreethrhcurrency','User\CoflController@freeCurrencyView');
-
-    Route::get('customfcl','User\CoflController@freeCurrencyViewOther');
-
-    Route::post('freecurrency','User\CoflController@freeCurrencyPost');
-    Route::get('activity','User\CoflController@longActivity');
-    Route::get('activity/year','User\CoflController@yearActivity');
-    
-    Route::group(['middleware'=>'CrmUser'], function () {
-        Route::get('individualWechat/national_day','IndividualWechat\ActivityController@national');
-        Route::get('crm/entrance','User\CrmBooklistController@index');
-        Route::get('crm/booklist','User\CrmBooklistController@booklist');
-        Route::get('crm/bookshow','User\CrmBooklistController@bookshow');
-    });
-});
-
-Route::group(['domain'=>env('WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap','middleware'=>'EnableCross'],function(){
-
-    Route::any('help','Web\RedirectController@help');
-
-    Route::any('testLogin','Web\RedirectController@testLogin');
-    Route::get('mmdggce','User\UserController@setOrderDelCookie');
-
-    Route::get('pay/wait','Pay\OrdersController@waitPage');
-    Route::get('pay/waitv2','Pay\OrdersController@waitPageV2');
-    Route::get('pay/wait_union','Pay\OrdersController@waitPageUnion');
-
-    Route::get('monthpay/wait','Pay\MonthOrderController@wait');
-    Route::get('api/monthorder/issuccess','Pay\MonthOrderController@issuccess');
-
-    //链接强关跳转地址
-    Route::get('subscribeauth','Subscribe\LinkSubscribeController@index');
-    //枪关链接回调地址
-    Route::get('subauthback','Subscribe\LinkSubscribeController@wxAuthCallBack');
-    //用户行为
-    Route::any('api/userBehavior','User\UserbehaviorController@collectionBehavior');
-    Route::any('subscribe/qrcode','Subscribe\LinkSubscribeController@subscribeView');
-
-    Route::get('advertise/show','Advertises\AdvertiseController@jump');
-    Route::get('advertise/jump','Advertises\AdvertiseController@jumpToSource');
-    Route::any('advertise/recieveUserBehavior','Advertises\AdvertiseController@recieveUserBehavior');
-
-    Route::get('advertise/pdd','Advertises\AdvertiseController@pddAd');
-
-    //crm导粉
-    Route::get('guidestrem','User\CoflController@guidePersonalAccount');
-
-    Route::get('xiyue/sharelink','Other\WeixinController@shareLink');
-
-//web 接口
-    Route::group(['prefix'=>'api'],function () {
-
-        //图书详情
-        Route::get('book/{bid}','Book\BookController@index');
-        Route::get('bookFromWhere/{bid}','Book\BookController@index');
-        //首页
-        Route::get('books/{sex}/index','Book\BookController@getBookLists');
-        //书库
-        Route::get('books/library','Book\BookController@library');
-        //相似推荐
-        Route::get('books/similar','Book\BookController@similarRecom');
-        //阅读完后的推荐
-        Route::get('books/readOverRecommend','Book\BookController@readOverRecommend');
-        //h5书籍智能推荐
-        Route::get('books/H5SmartRecommendBooks','Book\BookController@H5SmartRecommendBooks');
-        //排行榜
-        Route::get('books/rank','Book\BookController@rank');
-        //分类列表
-        Route::get('books/getCategory','Book\BookCategoryController@getCategory');
-        //目录不分页
-        Route::get('books/{bid}/allcatalog','Book\ChapterController@getCatalog');
-
-        //Route::get('books/{bid}/allcatalog/{aa}',function ($tt,$bid,$aa){return $bid.'---'.$aa;});
-        //目录分页
-        Route::get('books/{bid}/catalog','Book\ChapterController@getCatalogPerPage');
-        //章节详情
-        Route::get('books/{bid}/chapters/{cid}','Book\ChapterController@index')->where('cid','\d+');
-        //余额订购
-        Route::get('books/{bid}/balance/chapterOrders/{cid}','Book\ChapterController@pay');
-
-        //Route::get('books/search','Book\BookController@bookSearch');
-
-        //充值列表
-        Route::get('order/chargeList','Order\OrdersController@chargeList');
-        //章节订购列表
-        Route::get('order/chapterOrderList','Order\OrdersController@chapterOrderList');
-        //单本订购列表
-        Route::get('order/bookOrderList','Order\OrdersController@bookOrderList');
-        //充值记录
-        Route::get('order/chargeRecordLists','Order\OrdersController@chargeRecordLists');
-
-        Route::get('order/issuccess','Order\OrdersController@isSuccess');
-
-        //代付列表
-        Route::get('order/substitutePayChargeList','Order\OrdersController@substitutePayChargeList');
-        //代付按钮
-        Route::get('order/substitutePay','Order\OrdersController@substitutePay');
-
-        //用户信息
-        Route::get('userinfo','User\UserController@index');
-        //签到记录
-        Route::get('user/sign_record','User\UserController@signRecord');
-        Route::get('user/sign','User\UserController@sign');
-        //催更
-        Route::get('user/urgeUpdate','User\UserController@urgeUpdate');
-
-        Route::post('bindphone/sendcode','User\UserController@sendCode');
-        Route::post('bindphone/bind','User\UserController@bindPhone');
-
-
-        // 测试登录
-//         Route::any('user/test_add_user_login_cookie','User\UserController@test_add_user_login_cookie');
-        
-//         // 用户免费分享
-//         Route::any('user/FreeShare','User\UserFreeShareController@FreeShare');
-//         // 用户免费分享统计
-//         Route::any('user/add_free_share_visitstat','User\UserFreeShareController@add_free_share_visitstat');
-
-        
-
-        //书架
-        Route::get('userShelfBooks','User\UserShelfBooksController@index');
-        //添加书架
-        Route::post('userShelfBooks','User\UserShelfBooksController@addShelf');
-        //删除书架
-        Route::get('userShelfBooks/delete','User\UserShelfBooksController@delShelf');
-
-        Route::get('userShelfBooks/isonshelf','User\UserShelfBooksController@isOnshelf');
-        //阅读器用户分享统计
-        Route::get('user/recordShare','User\UserController@recordShare');
-        //广告统计
-        Route::post('user/advisitstat','User\UserController@adVisitStat');
-
-        //阅读记录
-        Route::get('readrecord','User\ReadRecordController@index');
-        //添加阅读记录
-        Route::post('readrecord','User\ReadRecordController@addReadRecord');
-        //删除阅读记录
-        Route::get('readrecord/delete','User\ReadRecordController@delReadRecord');
-        //获取强关二维码
-        Route::get('subscribe/qrcode','Subscribe\SubscribeController@getSubscribeQrcode');
-
-        Route::post('error/undefinedCollect','Other\ErrorCollectionController@undefinedCollect');
-        Route::post('activity/getCoupons','User\UserController@getCoupons');
-
-        //章节评论
-        Route::post('chapter/comment','Book\ChapterController@commentChapter');
-        Route::get('chapter/getComment','Book\ChapterController@getChapterComment');
-
-        //书籍送礼
-        Route::get('gift/getGiftsList','Book\BooksGiftController@getAllGiftsV2');
-        Route::post('gift/sendGifts','Book\BooksGiftController@sendGiftsV2');
-        Route::get('gift/getUserSendGiftsRecord','Book\BooksGiftController@getUserSendGiftsRecordV2');
-        Route::get('gift/getUserGiftsConsumeRecord','Book\BooksGiftController@getSendGiftsForConsumeRecord');
-        //分享签名
-        Route::get('chapter/getWechatJsConfig','Book\ChapterController@getWechatJsConfig');
-
-        //投诉
-        Route::get('complaints/getComplaintTags','Other\ComplaintsController@getComplaintTags');
-        Route::post('complaints/add','Other\ComplaintsController@Complaints');
-
-        Route::post('activity/huaweiLottery','Web\ActivityController@huaweiLottery');
-
-        Route::post('weixin/jsSdkConfig','Other\WeixinController@jsSdkConfig');
-
-    });
-
-    //授权回掉
-    Route::get('/oauthCallBack','Oauth\UsersController@wcback');
-
-    Route::get('/oauthCallBackV2','Oauth\UsersController@wcbackV2');
-
-    Route::get('/oauthCallBacktest','Oauth\UsersController@wcbackTest');
-
-    Route::get('/testauth','Web\RedirectController@testauth');
-
-    //退出 测试
-    Route::get('logout','User\UserController@logout');
-
-    Route::get('clearcookie','Web\RedirectController@clearCookie');
-
-    Route::get('custom_msgs_page','Web\RedirectController@customPushtransferPage');
-
-    //需要微信授权
-    Route::group(['middleware'=>'ReadOauth'],function (){
-
-        //推广链接
-        Route::get('yun/{param}','Web\RedirectController@index')->where('param','\d+');
-        //活动推送
-        Route::get('push/activity','Web\WelcomeController@activity');
-        Route::get('sale/activity','Web\WelcomeController@channelActivity');
-        Route::get('sale/springactivity','Web\WelcomeController@springActivity');
-        Route::get('sale/womenactivity','Web\WelcomeController@womenActivity');
-        Route::get('sale/newUserActivity','Web\WelcomeController@newUserActivity');
-
-        Route::get('sale/channelsalenine','Web\WelcomeController@channelActivityNine');
-        Route::get('sale/channelsalesixty','Web\WelcomeController@channelActivitySixtyEight');
-        Route::get('sale/channelsaleforty','Web\WelcomeController@channelActivityFortyEight');
-        Route::get('sale/channelnewuser','Web\WelcomeController@channelNewUserActivity');
-        Route::get('sale/qingMingActivity','Web\WelcomeController@qingMingActivity');
-        Route::get('sale/readDayActivity','Web\WelcomeController@readDayActivity');
-        Route::get('sale/laborDayActivity','Web\WelcomeController@readDayActivity');
-        Route::get('sale/yearActivity','Web\WelcomeController@yearActivity');
-        Route::get('sale','Web\WelcomeController@commonActivity');
-        Route::get('sale/summer','Web\WelcomeController@summerActivity');
-        Route::get('sale/newUserSale','Web\WelcomeController@newUserSale');
-        Route::get('sale/nationday','Web\ActivityController@nationDayActivity');
-        Route::get('sale/chongyang','Web\WelcomeController@cYactivity');
-        Route::get('sale/newUserForeverActivity','Web\WelcomeController@newUserForeverActivity');
-        Route::get('sale/tempC','Web\WelcomeController@tempC');
-
-        Route::get('sale/seYearActivity','Web\WelcomeController@otherYearActivity');
-        Route::get('sale/shoppingDayActivity','Web\WelcomeController@shoppingDayActivity');
-        Route::get('sale/thanksGivingDayActivity','Web\WelcomeController@thanksGivingDayActivity');
-
-        Route::get('sale/greatcold','Web\WelcomeController@greatColdActivity');
-        Route::get('sale/vernalequinox','Web\WelcomeController@vernalEquinoxActivity');
-        Route::get('sale/customvip','Web\WelcomeController@channelYearActivity');
-
-        Route::get('activity/channel','Web\ActivityController@channelCustomActivity');
-        Route::get('activity/common','Web\ActivityController@commonActivity');
-        Route::get('activity/crm','Web\ActivityController@crmActivity');
-
-        Route::get('activity/huaweiLottery','Web\ActivityController@huaweiLotteryView');
-        Route::get('activity/huaweiActivity','Web\ActivityController@huaweiActivity');
-        Route::get('activity/summerholiday','Web\ActivityController@summerHoliday');
-
-        Route::get('activity/ragonBoatActivity','Web\ActivityController@ragonBoatActivity');
-        Route::get('activity/crmy','Web\ActivityController@crmYearActivity');
-
-        Route::get('welfare/giving','Web\WelfareController@giving');
-
-        //继续阅读
-        Route::get('continue','User\ReadRecordController@latestRead');
-        //分享站内跳转
-        Route::any('share/jump','Advertises\ShareController@jump');
-        //用户强关信息页
-        Route::any('subscribe/getFromUser','Subscribe\SubscribeController@getFromUser');
-
-        Route::get('sign','User\UserController@signV3');
-        Route::get('signV3','User\UserController@signV3');
-
-        Route::get('force/guide','User\UserController@guidePersonalAccount');
-
-        //绑定手机号码
-        //Route::get('bindphone/bind','User\UserController@bindPhoneView');
-
-        //随机每日领5-15书币
-        Route::get('randSign','User\UserController@day_rand_sign');
-
-        Route::get('rmonthpay','Order\OrdersController@monthPay');
-        Route::get('crmpush','User\UserController@crmPushView');
-        //crm导粉
-        Route::get('guidestremv2','Crm\CrmGuideFansController@activeGuidePersonalAccountV2');
-
-        Route::any('{slug}','Web\WelcomeController@index')->where('slug', '(.*)?');
-
-    });
-
-});
-

+ 0 - 32
app/Http/Routes/WapBrower/WebRoutes.php

@@ -1,32 +0,0 @@
-<?php
-/**
- * Created by PhpStorm.
- * User: z-yang
- * Date: 2018/5/21
- * Time: 10:43
- */
-
-Route::group(['domain'=>env('WAP_BROWER_DOMAIN'),'namespace'=>'App\Http\Controllers\WapBrowser'],function(){
-    Route::get('test','Chapter\ChapterController@test');
-    //reader
-    Route::get('reader','Chapter\ChapterController@index');
-    //强管
-    Route::get('subscribe','Subscribe\SubscribeController@subscribeView');
-
-    //书库
-    Route::get('stock','BookController@stock');
-    Route::get('search','BookController@search');
-    //书城
-    Route::get('/api/books/library','BookController@library');
-
-    //详情
-    Route::get('detail','Chapter\ChapterController@bookDetail');
-    //目录
-    Route::get('catalog','Chapter\ChapterController@catalog');
-    Route::get('apiCatalog','Chapter\ChapterController@apiCatalog');
-    //首页
-    Route::get('/','Index\IndexController@index');
-    //派单
-    Route::get('yun/{param}','Index\IndexController@yun')->where('param','\d+');
-
-});

+ 0 - 245
app/Http/Routes/Wechat/OfficialAccountRoutes.php

@@ -1,245 +0,0 @@
-<?php
-
-Route::group(['domain'=>env('WECHAT_DOMAIN'),'namespace'=>'App\Http\Controllers\Wechat\OfficialAccount','prefix'=>'api'],function(){
-
-    /**
-    * 公众号
-    */
-
-	//获取公众号信息
-    Route::any('OfficialAccount/officialAccountByAppid', 'OfficialAccountsController@officialAccountByAppid');
-
-    //获取一个可分发的公众号
-    Route::any('OfficialAccount/canUseOfficialAccountByChannelId', 'OfficialAccountsController@canUseOfficialAccountByChannelId');
-
-    //授权公众号信息
-    Route::any('OfficialAccount/authOfficialAccount','OfficialAccountsController@authOfficialAccount');
-
-    //分销渠道ID获取服务号列表
-    Route::any('OfficialAccount/allOfficialAccountBydistributionChannelId','OfficialAccountsController@allOfficialAccountBydistributionChannelId');
-
-    //根据分销渠道ID获取授权公众号
-    Route::any('OfficialAccount/officialAuthAccountBydistributionChannelId', 'OfficialAccountsController@officialAuthAccountBydistributionChannelId');
-
-    //取消公众号授权
-    Route::any('OfficialAccount/cancelAuthOfficialAccount','OfficialAccountsController@cancelAuthOfficialAccount');
-
-    //服务号授权返回URL
-    Route::any('OfficialAccount/officialAccountAuthUrl','OfficialAccountsController@officialAccountAuthUrl');
-
-    //更新公众号信息
-    Route::any('OfficialAccount/updateOfficialAccount','OfficialAccountsController@updateOfficialAccount');
-
-    //测试发送客服消息
-    Route::any('OfficialAccount/sendNewsTask','WechatCustomerMsgController@sendNewsTask');
-    
-    /**
-     * 监控
-     */
-    // 检查公众号是否被封
-    Route::any('OfficialAccount/check_gzh_ban', 'OfficialAccountService@check_gzh_ban');
-
-    /**
-    * 模板消息
-    */
-
-    //获取模板
-    Route::any('OfficialAccount/wechatTemplateByAppidAndCommonTemplateId', 'WechatTemplatesController@wechatTemplateByAppidAndCommonTemplateId');
-
-    //通过ID获取模板
-    Route::any('OfficialAccount/wechatTemplateMsgById', 'WechatTemplatesController@wechatTemplateMsgById');
-
-    //更新模板消息任务状态
-    Route::any('OfficialAccount/updateWechatTemplateStatus', 'WechatTemplatesController@updateWechatTemplateStatus');
-
-    //更新模板消息
-    Route::any('OfficialAccount/updateWechatTemplateMsgById', 'WechatTemplatesController@updateWechatTemplateMsgById');
-
-    //得到要开通的模板消息列表
-    Route::any('OfficialAccount/wechatPublicTemplateList', 'WechatPublicTemplatesController@wechatPublicTemplateList');
-
-    //保存模板
-    Route::any('OfficialAccount/addWechatTemplate', 'WechatTemplatesController@addWechatTemplate');
-
-    //更新模板
-    Route::any('OfficialAccount/updateWechatTemplateId', 'WechatTemplatesController@updateWechatTemplateId');
-    
-    //发送模板消息
-    Route::any('OfficialAccount/addWechatTemplateMsg', 'WechatTemplatesController@addWechatTemplateMsg');
-
-    //测试发送模板消息
-    Route::any('OfficialAccount/testAddWechatTemplateMsg', 'WechatTemplatesController@testAddWechatTemplateMsg');
-
-    //测试RebitMQ
-    Route::any('OfficialAccount/testRebitMQ', 'WechatTemplatesController@testRebitMQ');
-
-    //个人测试发送模板消息
-    Route::any('OfficialAccount/test_add_template_task', 'WechatTemplatesController@test_add_template_task');
-
-    //获取推送模板消息
-    Route::any('OfficialAccount/wechatTemplateMsgBydistributionChannelId', 'WechatTemplatesController@wechatTemplateMsgBydistributionChannelId');
-
-
-
-    /**
-    * 强制关注用户
-    */
-
-    //获取强关用户
-    Route::any('OfficialAccount/forceSubscribeUsersByAppidAndOpenId', 'ForceSubscribeUsersController@forceSubscribeUsersByAppidAndOpenId');   
-
-    //appid获取强关用户
-    Route::any('OfficialAccount/forceSubscribeUsersByUid', 'ForceSubscribeUsersController@forceSubscribeUsersByUid');
-
-    //添加强关用户
-    Route::any('OfficialAccount/addForceSubscribeUsers', 'ForceSubscribeUsersController@addForceSubscribeUsers');
-
-    //强制关注用户
-    Route::any('OfficialAccount/subscribeForceSubscribeUsers', 'ForceSubscribeUsersController@subscribeForceSubscribeUsers');
-
-    //取消强制关注
-    Route::any('OfficialAccount/cancelForceSubscribeUsers', 'ForceSubscribeUsersController@cancelForceSubscribeUsers');
-
-    //强关用户与公众号最后交互时间更新
-    Route::any('OfficialAccount/forceSubscribeUsersLastTimeUpdate', 'ForceSubscribeUsersController@forceSubscribeUsersLastTimeUpdate');
-    
-    //强关用户uid强制更新
-    Route::any('OfficialAccount/updateForceSubscribeUsers', 'ForceSubscribeUsersController@updateForceSubscribeUsers');
-    
-    //根据渠道号,appid,openid获取用户
-    Route::any('OfficialAccount/forceSubscribeUsersByOpenidAndAppidAndChannelId', 'ForceSubscribeUsersController@forceSubscribeUsersByOpenidAndAppidAndChannelId');
-    
-    //根据渠道号,openid获取素材强关映射
-    Route::any('OfficialAccount/getMaterialForceSubscribeMapping', 'ForceSubscribeUsersController@getMaterialForceSubscribeMapping');
-    
-    
-    
-    /**
-    * ----------------------方法测试--START
-    */
-    //测试queue延迟队列
-    Route::any('OfficialAccount/testGetSimpleChannelBook', 'WechatTestController@getSimpleChannelBook');
-
-    //测试queue延迟队列
-    Route::any('OfficialAccount/testSendMailDelayQueue', 'WechatTestController@testSendMailDelayQueue');
-
-    //从redis中取officialaccount或者从数据库中取并更新redis
-    Route::any('OfficialAccount/officialAccountByAppidTestRedis', 'WechatTestController@officialAccountByAppidTestRedis');
-
-    //同步official_account表至Redis
-    Route::any('OfficialAccount/updateOfficialToRedisTest', 'WechatTestController@updateOfficialToRedisTest');
-
-    //从Redis中取一个公众号
-    Route::any('OfficialAccount/getOfficialFromRedis', 'WechatTestController@getOfficialFromRedis');
-
-    //从Redis中取一个客服消息
-    Route::any('OfficialAccount/getWechatMsgRedis', 'WechatTestController@getWechatMsgRedis');
-
-    //sign参数
-    Route::any('OfficialAccount/getSignTest', 'WechatTestController@getSignTest');
-    
-    //获取渠道下所有的服务号信息
-    Route::any('OfficialAccount/allOfficialAccountBydistributionChannelId', 'WechatTestController@allOfficialAccountBydistributionChannelId');
-
-    //获取渠道的服务号数量
-    Route::any('OfficialAccount/officialAccountCountByChannelId', 'WechatTestController@officialAccountCountByChannelId');
-    
-    //通过渠道号和时间获取用户数
-    Route::any('OfficialAccount/forceSubscribeUserCountByChannelIdAndDate', 'ForceSubscribeUsersController@forceSubscribeUserCountByChannelIdAndDate');
-
-    //通过渠道号和时间获取用户数
-    Route::any('OfficialAccount/customerImgUrlByChannelId', 'ForceSubscribeUsersController@customerImgUrlByChannelId');
-
-    //测试上传客服图片
-    Route::any('OfficialAccount/uploadCustomerImgUrl', 'ForceSubscribeUsersController@uploadCustomerImgUrl');
-
-    //根据模板消息参数获取用户
-    Route::any('OfficialAccount/forceUserCountByTemplatePrams', 'WechatTemplatesController@forceUserCountByTemplatePrams');
-
-    //测试文字格式的模板消息发送
-    Route::any('OfficialAccount/testSendTextOfficialMsg', 'ForceSubscribeUsersController@testSendTextOfficialMsg');
-
-    //客服消息开关设置
-    Route::any('OfficialAccount/customMsgSwitchSetting', 'WechatCustomerMsgController@customMsgSwitchSetting');
-    //客服消息开关列表获取
-    Route::any('OfficialAccount/customMsgSwitchsByChannelId', 'WechatCustomerMsgController@customMsgSwitchsByChannelId');
-    //获取指定客服消息开关
-    Route::any('OfficialAccount/customMsgSwitchsByChannelCate', 'WechatCustomerMsgController@customMsgSwitchsByChannelCate');
-
-    //发送客服消息列表获取
-    Route::any('OfficialAccount/customSendMsgsByChannelId', 'WechatCustomerMsgController@customSendMsgsByChannelId');
-    //通过ID获取指定客服消息
-    Route::any('OfficialAccount/customSendMsgsById', 'WechatCustomerMsgController@customSendMsgsById');
-    //停止发送客服消息
-    Route::any('OfficialAccount/stopCustomSendMsgsById', 'WechatCustomerMsgController@stopCustomSendMsgsById');
-    //发送客服消息
-    Route::any('OfficialAccount/addCustomSendMsgs', 'WechatCustomerMsgController@addCustomSendMsgs');
-    //测试发送客服消息
-    Route::any('OfficialAccount/testAddCustomSendMsgs', 'WechatCustomerMsgController@testAddCustomSendMsgs');
-
-
-    //测试3天回本12小时推送
-    Route::any('OfficialAccount/add_news_recovery_push_hot', 'WechatCustomerMsgController@add_news_recovery_push_hot');
-    //测试3天回本24小时推送
-    Route::any('OfficialAccount/add_news_recovery_push_activity', 'WechatCustomerMsgController@add_news_recovery_push_activity');
-    //测试发送定制书籍推送
-    Route::any('OfficialAccount/add_news_point_book', 'WechatCustomerMsgController@add_news_point_book');
-    //测试发送热门书籍推送
-    Route::any('OfficialAccount/add_news_top_book', 'WechatCustomerMsgController@add_news_top_book');
-    //测试发送未支付订单提醒
-    Route::any('OfficialAccount/sendUnpaid', 'WechatCustomerMsgController@sendUnpaid');
-    
-    //支付用户每日推送提醒
-    Route::any('OfficialAccount/add_template_pay_push_daily', 'WechatCustomerMsgController@add_template_pay_push_daily');
-
-    //获取每日智能推送分析数据
-    Route::any('OfficialAccount/customSendDayStatsByChannelAndFrom', 'CustomSendStatsController@customSendDayStatsByChannelAndFrom');
-    //获取渠道下智能推送分析总数据
-    Route::any('OfficialAccount/customSendStatsByChannelAndFrom', 'CustomSendStatsController@customSendStatsByChannelAndFrom');
-
-
-    //获取所有图库素材
-    Route::any('OfficialAccount/getAllDocumentCovers', 'WechatCustomerMsgController@getAllDocumentCovers');
-    //获取所有标签文案
-    Route::any('OfficialAccount/getAllHeadlinesNoType', 'WechatCustomerMsgController@getAllHeadlinesNoType');
-
-    //获取图文链接
-    Route::any('OfficialAccount/createOfficialImgTxtUrl', 'WechatCustomerMsgController@createOfficialImgTxtUrl');
-    //获取图文链接列表
-    Route::any('OfficialAccount/getOfficialImgTxtUrl', 'WechatCustomerMsgController@getOfficialImgTxtUrl');
-    
-    /**
-    * ----------------------方法测试--END
-    */
-
-    /**
-    * 公众号事件交互
-    */
-
-    //公众号事件交互
-    Route::any('OfficialAccount/officialInteractiveEventFeedback', 'OfficialInteractiveEventController@officialInteractiveEventFeedback');
-
-
-
-    /**
-    * 公众号菜单
-    */
-
-    //获取菜单列表
-    Route::any('OfficialAccount/officialMenusList', 'OfficialMenusController@officialMenusList');
-
-
-
-    /**
-    * 分销用户
-    */
-
-    //保存公众号用户
-    Route::any('OfficialAccount/saveOfficialWechatUser', 'OfficialWechatUserController@saveOfficialWechatUser');
-
-    //获取公众号用户
-    Route::any('OfficialAccount/getOfficialWechatUser', 'OfficialWechatUserController@getOfficialWechatUser');
-
-
-
-});

+ 0 - 87
app/Http/Routes/Xchengxu/XchengxuRoutes.php

@@ -1,87 +0,0 @@
-<?php
-/**
- * 图书路由文件
- * by zhanyang
- *
- * 2017-12-05
- */
-
-
-Route::group(['domain'=>env('XCHENGXU_DOMAIN'),'namespace'=>'App\Http\Controllers\Xchengxu'],function(){
-    //支付会掉
-    Route::any('pay/wcback_xchengxu','Order\OrdersController@wcback_official');
-    Route::any('help','Web\RedirectController@help');
-    Route::post('api/login','Oauth\UsersController@index');
-    Route::get('api/RefreshToken','Oauth\UsersController@RefreshToken');
-    //支付回调
-    Route::any('pay/wcback','Order\OrdersController@wxback_xcx');
-    Route::group(['prefix'=>'api'],function (){
-        //首页
-        Route::get('books/{sex}/index','Book\BookController@getBookLists');
-        //书库
-        Route::get('books/library','Book\BookController@library');
-        //相似推荐
-        Route::get('books/similar','Book\BookController@similarRecom');
-        //阅读完后的推荐
-        Route::get('books/readOverRecommend','Book\BookController@readOverRecommend');
-        //排行榜
-        Route::get('books/rank','Book\BookController@rank');
-        //分类列表
-        Route::get('books/getCategory','Book\BookCategoryController@getCategory');
-    });
-    //web 接口  jwttoken
-    Route::group(['prefix'=>'api','middleware'=>'jwttoken'],function () {
-
-        //图书详情
-        Route::get('book/{bid}','Book\BookController@index');
-
-        //目录不分页
-        Route::get('books/{bid}/allcatalog','Book\ChapterController@getCatalog');
-
-        //Route::get('books/{bid}/allcatalog/{aa}',function ($tt,$bid,$aa){return $bid.'---'.$aa;});
-        //目录分页
-        Route::get('books/{bid}/catalog','Book\ChapterController@getCatalogPerPage');
-        //章节详情
-        Route::get('books/{bid}/chapters/{cid}','Book\ChapterController@index')->where('cid','\d+');
-        //余额订购
-        Route::get('books/{bid}/balance/chapterOrders/{cid}','Book\ChapterController@pay');
-
-        //Route::get('books/search','Book\BookController@bookSearch');
-
-        //充值列表
-        Route::get('order/chargeList','Order\OrdersController@chargeList');
-        //章节订购列表
-        Route::get('order/chapterOrderList','Order\OrdersController@chapterOrderList');
-        //单本订购列表
-        Route::get('order/bookOrderList','Order\OrdersController@bookOrderList');
-        //充值记录
-        Route::get('order/chargeRecordLists','Order\OrdersController@chargeRecordLists');
-
-        Route::get('order/issuccess','Order\OrdersController@isSuccess');
-        Route::get('userinfo','User\UserController@index');
-
-
-        //书架
-        Route::get('userShelfBooks','User\UserShelfBooksController@index');
-        //添加书架
-        Route::post('userShelfBooks','User\UserShelfBooksController@addShelf');
-        //删除书架
-        Route::get('userShelfBooks/delete','User\UserShelfBooksController@delShelf');
-
-        Route::get('userShelfBooks/isonshelf','User\UserShelfBooksController@isOnshelf');
-
-        //阅读记录
-        Route::get('readrecord','User\ReadRecordController@index');
-        //添加阅读记录
-        Route::post('readrecord','User\ReadRecordController@addReadRecord');
-        //删除阅读记录
-        Route::get('readrecord/delete','User\ReadRecordController@delReadRecord');
-
-        //支付
-        Route::get('goToPay','Order\OrdersController@wxindex');
-
-        Route::get('checkOrder','Order\OrdersController@checkOrder');
-    });
-
-});
-

+ 18 - 0
app/Modules/BaseService.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Modules;
+
+
+trait BaseService
+{
+    private static $_instance;
+
+    public function __callStatic($name, $arguments)
+    {
+        $name = preg_replace('/Static$/', '', $name);
+        if (self::$_instance == null) {
+            self::$_instance = new self;
+        }
+        return self::$_instance->$name(...$arguments);
+    }
+}

+ 93 - 73
app/Modules/Book/Services/BookService.php

@@ -4,18 +4,24 @@ namespace App\Modules\Book\Services;
 
 use App\Modules\Book\Models\Book;
 use App\Modules\Book\Models\Chapter;
-use GuzzleHttp\Client;
+use Hashids;
 use Redis;
 use App\Modules\Statistic\Services\WapVisitStatService;
 use DB;
 
 class BookService
 {
+    public function decodeBid(string $bid)
+    {
+        return Hashids::decode($bid)[0];
+    }
+
     /**
      * 获取book中存在的分类信息id
      * @return array
      */
-    public static  function getCategoryId(){
+    public static  function getCategoryId()
+    {
         return Book::getCategoryId();
     }
 
@@ -26,8 +32,9 @@ class BookService
      * @return mixed
      *
      */
-    public  static function  updateIntro($bid,$intro){
-        return Book::where('id',$bid)->update(['intro'=>$intro]);
+    public  static function  updateIntro($bid, $intro)
+    {
+        return Book::where('id', $bid)->update(['intro' => $intro]);
     }
 
     /**
@@ -35,12 +42,11 @@ class BookService
      * @param int $channel_id
      * @param int $price
      */
-    public static function setChapterPrice(int $channel_id,float $price):void{
-        try{
-            Redis::hset('book_chapter_price',$channel_id,$price);
-        }catch (\Exception $e){
-
-        }
+    public static function setChapterPrice(int $channel_id, float $price): void
+    {
+        try {
+            Redis::hset('book_chapter_price', $channel_id, $price);
+        } catch (\Exception $e) { }
     }
 
     /**
@@ -48,98 +54,112 @@ class BookService
      * @param int $channel_id
      * @return int
      */
-    public static function getChapterPrice(int $channel_id){
-        try{
-            $fee =  Redis::hget('book_chapter_price',$channel_id);
-            if($fee)
-                return (float)$fee;
+    public static function getChapterPrice(int $channel_id)
+    {
+        try {
+            $fee =  Redis::hget('book_chapter_price', $channel_id);
+            if ($fee)
+                return (float) $fee;
             else
                 return 0;
-        }catch (\Exception $e){
-
-        }
+        } catch (\Exception $e) { }
         return 0;
     }
-    
-    public static function getBookStatistics($smart_push_books){
-    	// 获取书籍统计数据
-    	if(!empty($smart_push_books)){
-    		foreach($smart_push_books as $key=>$smart_push_book){
-    			$book_statistics = WapVisitStatService::smartPushTestBookStats($smart_push_book->bid);
-    			$smart_push_books[$key]->uv = $book_statistics['uv'];
-    			$smart_push_books[$key]->pv = $book_statistics['pv'];
-    			$smart_push_books[$key]->charge_amount = $book_statistics['charge_amount'];
-    			$smart_push_books[$key]->charge_user_num = $book_statistics['charge_user_num'];
-    			$smart_push_books[$key]->book_amount = $book_statistics['book_amount'];
-    			$smart_push_books[$key]->book_user_num = $book_statistics['book_user_num'];
-    			$smart_push_books[$key]->real_push_user_num = $book_statistics['real_push_user_num'];
-    			$smart_push_books[$key]->second_chapter_uv = $book_statistics['second_chapter_uv'];
-    		}
-    	}
-    	return $smart_push_books;
+
+    public static function getBookStatistics($smart_push_books)
+    {
+        // 获取书籍统计数据
+        if (!empty($smart_push_books)) {
+            foreach ($smart_push_books as $key => $smart_push_book) {
+                $book_statistics = WapVisitStatService::smartPushTestBookStats($smart_push_book->bid);
+                $smart_push_books[$key]->uv = $book_statistics['uv'];
+                $smart_push_books[$key]->pv = $book_statistics['pv'];
+                $smart_push_books[$key]->charge_amount = $book_statistics['charge_amount'];
+                $smart_push_books[$key]->charge_user_num = $book_statistics['charge_user_num'];
+                $smart_push_books[$key]->book_amount = $book_statistics['book_amount'];
+                $smart_push_books[$key]->book_user_num = $book_statistics['book_user_num'];
+                $smart_push_books[$key]->real_push_user_num = $book_statistics['real_push_user_num'];
+                $smart_push_books[$key]->second_chapter_uv = $book_statistics['second_chapter_uv'];
+            }
+        }
+        return $smart_push_books;
     }
 
-    public static function getBookById($bid){
+    public static function getBookById($bid)
+    {
         return Book::find($bid);
     }
 
-    public static function newYunQiBook($bid){
-        $old = DB::table('book_yunqi')->where('yq_bid',$bid)->where('type','NEW_YUNQI')->first();
-        if($old){
+    public static function newYunQiBook($bid)
+    {
+        $old = DB::table('book_yunqi')->where('yq_bid', $bid)->where('type', 'NEW_YUNQI')->first();
+        if ($old) {
             return -1;
         }
         $new_yunqi_book = DB::connection('new_yunqi')
             ->table('books')
-            ->join('book_configs','books.id','=','book_configs.bid')
+            ->join('book_configs', 'books.id', '=', 'book_configs.bid')
             ->select(
-                'books.id','books.author','books.author','books.intro','books.category_name','books.keyword',
-                'books.status','books.chapter_count','books.size','books.last_chapter','book_configs.book_name as name',
-                'book_configs.cover','book_configs.force_subscribe_chapter_seq','book_configs.charge_type','book_configs.roles'
+                'books.id',
+                'books.author',
+                'books.author',
+                'books.intro',
+                'books.category_name',
+                'books.keyword',
+                'books.status',
+                'books.chapter_count',
+                'books.size',
+                'books.last_chapter',
+                'book_configs.book_name as name',
+                'book_configs.cover',
+                'book_configs.force_subscribe_chapter_seq',
+                'book_configs.charge_type',
+                'book_configs.roles'
             )
-            ->where('books.id',$bid)
+            ->where('books.id', $bid)
             ->first();
-        if(!$new_yunqi_book){
+        if (!$new_yunqi_book) {
             return -2;
         }
 
         $book = Book::create(
             [
-                'ly_bid'=>0,'name'=>$new_yunqi_book->name,'author'=>$new_yunqi_book->author,'intro'=>$new_yunqi_book->intro,'cover'=>$new_yunqi_book->cover,
-                'category_name'=>$new_yunqi_book->category_name,'keyword'=>$new_yunqi_book->keyword,'category_id'=>0,'status'=>$new_yunqi_book->status,
-                'chapter_count'=>$new_yunqi_book->chapter_count,'first_cid'=>0,'last_cid'=>0,'size'=>$new_yunqi_book->size,'last_chapter'=>$new_yunqi_book->last_chapter,
-                'sequence'=>0,'yq_bid'=>$bid
+                'ly_bid' => 0, 'name' => $new_yunqi_book->name, 'author' => $new_yunqi_book->author, 'intro' => $new_yunqi_book->intro, 'cover' => $new_yunqi_book->cover,
+                'category_name' => $new_yunqi_book->category_name, 'keyword' => $new_yunqi_book->keyword, 'category_id' => 0, 'status' => $new_yunqi_book->status,
+                'chapter_count' => $new_yunqi_book->chapter_count, 'first_cid' => 0, 'last_cid' => 0, 'size' => $new_yunqi_book->size, 'last_chapter' => $new_yunqi_book->last_chapter,
+                'sequence' => 0, 'yq_bid' => $bid
             ]
         );
         DB::table('book_yunqi')->insert([
-            'bid'=>$book->id,
-            'yq_bid'=>$bid,
-            'type'=>'NEW_YUNQI',
-            'created_at'=>date('Y-m-d H:i:s'),
-            'updated_at'=>date('Y-m-d H:i:s')
+            'bid' => $book->id,
+            'yq_bid' => $bid,
+            'type' => 'NEW_YUNQI',
+            'created_at' => date('Y-m-d H:i:s'),
+            'updated_at' => date('Y-m-d H:i:s')
         ]);
-        for ($i = 1;$i<=$new_yunqi_book->chapter_count;$i++){
-            $temp = DB::connection('new_yunqi')->table('chapters')->where('bid',$bid)->where('sequence',$i)->select('name','content','is_vip','size')->first();
-            if($temp){
+        for ($i = 1; $i <= $new_yunqi_book->chapter_count; $i++) {
+            $temp = DB::connection('new_yunqi')->table('chapters')->where('bid', $bid)->where('sequence', $i)->select('name', 'content', 'is_vip', 'size')->first();
+            if ($temp) {
                 Chapter::create([
-                    'bid'=>$book->id,
-                    'name'=>$temp->name,
-                    'sequence'=>$i,
-                    'is_vip'=>$temp->is_vip,
-                    'size'=>$temp->size,
-                    'prev_cid'=>0,
-                    'next_cid'=>0,
-                    'recent_update_at'=>date('Y-m-d H:i:s'),
-                    'content'=>$temp->content,
-                    'ly_chapter_id'=>0
+                    'bid' => $book->id,
+                    'name' => $temp->name,
+                    'sequence' => $i,
+                    'is_vip' => $temp->is_vip,
+                    'size' => $temp->size,
+                    'prev_cid' => 0,
+                    'next_cid' => 0,
+                    'recent_update_at' => date('Y-m-d H:i:s'),
+                    'content' => $temp->content,
+                    'ly_chapter_id' => 0
                 ]);
             }
         }
-        \Artisan::call('book:afs',['bid'=>[$book->id]]);
-        DB::table('book_configs')->where('bid',$book->id)->update([
-            'force_subscribe_chapter_seq'=>$new_yunqi_book->force_subscribe_chapter_seq,
-            'roles'=>$new_yunqi_book->roles,
-            'charge_type'=>$new_yunqi_book->charge_type,
-            'cp_source'=>'new_yunqi'
+        \Artisan::call('book:afs', ['bid' => [$book->id]]);
+        DB::table('book_configs')->where('bid', $book->id)->update([
+            'force_subscribe_chapter_seq' => $new_yunqi_book->force_subscribe_chapter_seq,
+            'roles' => $new_yunqi_book->roles,
+            'charge_type' => $new_yunqi_book->charge_type,
+            'cp_source' => 'new_yunqi'
         ]);
         return 0;
     }

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

@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Modules\User\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class QappUser extends Model
+{
+    protected $table = 'qapp_users';
+    protected $fillable = ['uid', 'device_no', 'device_info', 'phone'];
+}

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

@@ -0,0 +1,101 @@
+<?php
+
+
+namespace App\Modules\User\Services;
+
+use App\Consts\SysConsts;
+use App\Modules\BaseService;
+use App\Modules\User\Models\QappUser;
+use App\Modules\User\Models\User;
+use DB;
+use Exception;
+use Tymon\JWTAuth\Facades\JWTAuth;
+
+/**
+ * 
+ * @method static \App\Modules\User\Models\QappUser loginStatic(array $data) 快应用用户登录
+ */
+class QappUserService
+{
+    use BaseService;
+
+    /**
+     * 获取快应用用户
+     */
+    public function login(array $data)
+    {
+        $device_no = $data['device_no'];
+        $qapp_user = $this->getQAppUserByDeviceNo($device_no);
+        if (!$qapp_user) {
+            $qapp_user = $this->createQuickAppUser($data);
+        }
+        $user = $qapp_user->user;
+        $uid = $user->id;
+        $time = time() + SysConsts::ONE_HOUR_SECONDS * 2;
+        $token = JWTAuth::fromUser($user);
+        return compact('token', 'time', 'uid');
+    }
+
+    /**
+     * 根据设备号获取快应用用户信息
+     */
+    public function getQAppUserByDeviceNo(string $device_no)
+    {
+        $qapp_user = QappUser::where('device_no', $device_no)->first();
+        if ($qapp_user) {
+            $user = User::find($qapp_user->uid);
+            $qapp_user->user = $user;
+        }
+        return $qapp_user;
+    }
+
+    /**
+     * 根据uid获取快应用用户信息
+     */
+    public function getQAppUserByUid(int $uid)
+    {
+        $qapp_user = QappUser::where('uid', $uid)->first();
+        if ($qapp_user) {
+            $user = User::find($uid);
+            $qapp_user->user = $user;
+        }
+        return $qapp_user;
+    }
+
+
+    /**
+     * 创建快应用用户信息
+     */
+    public function createQuickAppUser(array $data)
+    {
+        try {
+            DB::beginTransaction();
+            $user = $this->createUser($data);
+            $uid = $user->id;
+            $device_no = $data['device_no'];
+            $data = compact('device_info');
+            $unique_key = compact('device_no', 'uid');
+            $qapp_user = QappUser::firstOrCreate($unique_key, $data);
+            $qapp_user->user = $user;
+            DB::commit();
+            return $qapp_user;
+        } catch (Exception $e) {
+            myLog('create_user')->error($e->getMessage());
+        }
+    }
+
+    /**
+     * 创建用户
+     */
+    private function createUser(array $data)
+    {
+        $openid = $data['device_no'];
+        $unionid = $data['device_no'];
+        $register_ip = _getIp();
+        $distribution_channel_id = 0;
+        $send_order_id = $data['send_order_id'];
+        $unique_key = compact('unionid', 'distribution_channel_id');
+        $data = compact('openid', 'register_ip', 'send_order_id');
+        return User::firstOrCreate($unique_key, $data);
+    }
+}

+ 3 - 61
app/Providers/RouteServiceProvider.php

@@ -35,76 +35,18 @@ class RouteServiceProvider extends ServiceProvider
      */
     public function map(Router $router)
     {
-        $this->mapOfficialAccountRoutes($router);
-        $this->mapWapRoutes($router);
-        $this->mapWebRoutes($router);
-        $this->mapXchengyuRoutes($router);
-        $this->mapKuaiYingYongRoutes($router);
-    }
-
-
-
-    protected function mapOfficialAccountRoutes(Router $router)
-    {
-        $router->group([
-            'middleware' => 'web',
-        ], function ($router) {
-            require app_path('Http/Routes/Wap/OfficialAccountRoutes.php');
-        });
-        $router->group([
-            'middleware' => 'wap',
-        ], function ($router) {
-            require app_path('Http/Routes/Wechat/OfficialAccountRoutes.php');
-        });
-    }
-
-
-    /**
-     * h5路由
-     * @param Router $router
-     */
-    protected function mapWapRoutes(Router $router)
-    {
-        $router->group([
-            'middleware' => 'wap',
-        ], function ($router) {
-            require app_path('Http/Routes/Wap/WapRoutes.php');
-        });
-    }
-
-    //UI界面
-    protected function mapWebRoutes(Router $router)
-
-    {
-        $router->group([
-            'middleware' => 'web',
-        ], function ($router) {
-            require app_path('Http/Routes/WapBrower/WebRoutes.php');
-
-        });
-    }
-
-    /**
-     * 小程序路由
-     * @param Router $router
-     */
-    protected function mapXchengyuRoutes(Router $router){
-        $router->group([
-            'middleware' => 'web',
-        ], function ($router) {
-            require app_path('Http/Routes/Xchengxu/XchengxuRoutes.php');
-        });
+        $this->mapQuickAppRoutes($router);
     }
 
     /**
      * 快应用
      */
-    protected function mapKuaiYingYongRoutes(Router $router)
+    protected function mapQuickAppRoutes(Router $router)
     {
         $router->group([
             'middleware' => 'web',
         ], function ($router) {
-            require app_path('Http/Routes/KuaiYingYong/KuaiYingYongRoutes.php');
+            require app_path('Http/Routes/QuickApp/QuickAppRoutes.php');
         });
     }
 

+ 186 - 164
config/error.php

@@ -1,194 +1,216 @@
 <?php
 
 return [
-
-
-        'NOT_EXIST'=>['code'=>1001,'msg'=>'记录不存在'],
-        'PARAM_EMPTY'=>['code'=>1002,'msg'=>'参数不能为空'],
-        'PARAM_ERROR'=>['code'=>1003,'msg'=>'参数错误'],
-        'TASK_IN_PROGRESS'=>['code'=>1004,'msg'=>'任务执行中'],
-        'BALANCE_NOT_ENOUGH'=>['code'=>2001,'msg'=>'账户余额不足'],
-        'NOT_CHECKED'=>['code'=>6001,'msg'=>'还没审核通过'],
-        'ALREADY_CHECKED'=>['code'=>6002,'msg'=>'已审核通过'],
-        'ALREADY_PUSHED'=>['code'=>6003,'msg'=>'已推送'],
+        'NOT_EXIST' => ['code' => 1001, 'msg' => '记录不存在'],
+        'PARAM_EMPTY' => ['code' => 1002, 'msg' => '参数不能为空'],
+        'PARAM_ERROR' => ['code' => 1003, 'msg' => '参数错误'],
+        'TASK_IN_PROGRESS' => ['code' => 1004, 'msg' => '任务执行中'],
+        'BALANCE_NOT_ENOUGH' => ['code' => 2001, 'msg' => '账户余额不足'],
+        'NOT_CHECKED' => ['code' => 6001, 'msg' => '还没审核通过'],
+        'ALREADY_CHECKED' => ['code' => 6002, 'msg' => '已审核通过'],
+        'ALREADY_PUSHED' => ['code' => 6003, 'msg' => '已推送'],
 
 
         //渠道
-        'ACCOUNT_PASSWORD_NOT_EMPTY'=>['code'=>10003,'msg'=>'账号密码不能为空'],
-        'LOGIN_VERIFY_ERROR'=>['code'=>10003,'msg'=>'账号密码错误'],
-        'PHONE_NOT_REGISTERED'=>['code'=>10003,'msg'=>'号码尚未注册'],
-        'VERIFY_CODE_ERROR'=>['code'=>10004,'msg'=>'验证码错误'],
-        'PHONE_CODE_ERROR'=>['code'=>10004,'msg'=>'验证码未找到'],
-        'SMS_CODE_ERROR'=>['code'=>10007,'msg'=>'短信验证码错误'],
-        'PASSWORD_NOT_SAME'=>['code'=>10008,'msg'=>'密码不一致'],
-        'SMS_SEND_ERROR'=>['code'=>10011,'msg'=>'验证码发送失败'],
-        'SMS_GET_TOO_OFTEN'=>['code'=>10012,'msg'=>'验证码获取过于频繁'],
-        'PASSWORD_WRONG'=>['code'=>10012,'msg'=>'密码错误'],
-        'CHANNEL_NOT_ENABLED'=>['code'=>10012,'msg'=>'账号正在审核,暂不能登录'],
-        'USER_NOT_FOUND'=>['code'=>10013,'msg'=>'用户不存在'],
-        'REGISTER_NUMBER_ERROR'=>['code'=>10013,'msg'=>'注册编号错误'],
-        'COMPANY_EXIST' => ['code'=>10014,'msg'=>'公司名称已经存在'],
-        'UPLOAD_FAILED' => ['code'=>10015,'msg'=>'上传失败'],
-        'CONTENT_MAINTAIN' => ['code'=>10015,'msg'=>'该书正在内容精修中,10月15日恢复正常,敬请期待!'],
+        'ACCOUNT_PASSWORD_NOT_EMPTY' => ['code' => 10003, 'msg' => '账号密码不能为空'],
+        'LOGIN_VERIFY_ERROR' => ['code' => 10003, 'msg' => '账号密码错误'],
+        'PHONE_NOT_REGISTERED' => ['code' => 10003, 'msg' => '号码尚未注册'],
+        'VERIFY_CODE_ERROR' => ['code' => 10004, 'msg' => '验证码错误'],
+        'PHONE_CODE_ERROR' => ['code' => 10004, 'msg' => '验证码未找到'],
+        'SMS_CODE_ERROR' => ['code' => 10007, 'msg' => '短信验证码错误'],
+        'PASSWORD_NOT_SAME' => ['code' => 10008, 'msg' => '密码不一致'],
+        'SMS_SEND_ERROR' => ['code' => 10011, 'msg' => '验证码发送失败'],
+        'SMS_GET_TOO_OFTEN' => ['code' => 10012, 'msg' => '验证码获取过于频繁'],
+        'PASSWORD_WRONG' => ['code' => 10012, 'msg' => '密码错误'],
+        'CHANNEL_NOT_ENABLED' => ['code' => 10012, 'msg' => '账号正在审核,暂不能登录'],
+        'USER_NOT_FOUND' => ['code' => 10013, 'msg' => '用户不存在'],
+        'REGISTER_NUMBER_ERROR' => ['code' => 10013, 'msg' => '注册编号错误'],
+        'COMPANY_EXIST' => ['code' => 10014, 'msg' => '公司名称已经存在'],
+        'UPLOAD_FAILED' => ['code' => 10015, 'msg' => '上传失败'],
+        'CONTENT_MAINTAIN' => ['code' => 10015, 'msg' => '该书正在内容精修中,10月15日恢复正常,敬请期待!'],
 
 
         // 管理
-        'MANAGE_NOT_ENABLED'=>['code'=>10101,'msg'=>'账号暂不可用'],
-        'TEST_BOOK_LIMIT_NUM'=>['code'=>10102,'msg'=>'已有测书数量达到上限'],
-        'BOOK_NOT_EXIST'=>['code'=>10103,'msg'=>'上架书库里没找到该bid'],
-        
-        'MANAGE_USER_EXIST'=>['code'=>10103,'msg'=>'用户已经存在'],
-        'MANAGE_PRIV_ERROR'=>['code'=>10103,'msg'=>'当前账号没有权限'],
-        'ACCOUNT_NOT_EXIST'=>['code'=>10103,'msg'=>'账户不存在'],
-        
-
-        'CASH_ACCOUNT_NOT_SET'=>['code'=>10006,'msg'=>'提现账户未设置'],
-        'CASH_ACCOUNT_EXIST'=>['code'=>10006,'msg'=>'提现账户已存在'],
-        'INSUFFICIENT_BALANCE'=>['code'=>10006,'msg'=>'余额不足'],
-        'LESS_THAN_LOWEST_WITHDRAW_MONEY'=>['code'=>10006,'msg'=>'提现不能低于100'],
-        
-        'PHONE_REGISTERED'=>['code'=>10009,'msg'=>'手机号码已注册'],
-        'PROMOTION_NAME_NOT_EMPTY'=>['code'=>10005,'msg'=>'推广名称不能为空'],
-        'NOT_LOGIN'=>['code'=>10010,'msg'=>'尚未登陆'],
-        
-        'NO_AUTHORIZED_OFFICIAL_ACCOUNT'=>['code'=>10012,'msg'=>'无授权公众号'],
-        'READ_USER_NOT_EXIST'=>['code'=>10012,'msg'=>'阅读用户不存在'],
-        'USER_NOT_SUBSCRIBE'=>['code'=>10012,'msg'=>'用户未关注'],
-        'ACCOUNT_FRONZEN'=>['code'=>10012,'msg'=>'账户被冻结,请咨询官方客服'],
-        'DRAW_ONLY_ONCE_A_DAY'=>['code'=>10012,'msg'=>'每天仅允许提现一次'],
-
-        'HANDLE_FAILED'=>['code'=>10013,'msg'=>'操作失败'],
-        'SAME_ACCOUNT_ERROR'=>['code'=>20028,'msg'=>'两个账号不能相同'],
+        'MANAGE_NOT_ENABLED' => ['code' => 10101, 'msg' => '账号暂不可用'],
+        'TEST_BOOK_LIMIT_NUM' => ['code' => 10102, 'msg' => '已有测书数量达到上限'],
+        'BOOK_NOT_EXIST' => ['code' => 10103, 'msg' => '上架书库里没找到该bid'],
+
+        'MANAGE_USER_EXIST' => ['code' => 10103, 'msg' => '用户已经存在'],
+        'MANAGE_PRIV_ERROR' => ['code' => 10103, 'msg' => '当前账号没有权限'],
+        'ACCOUNT_NOT_EXIST' => ['code' => 10103, 'msg' => '账户不存在'],
+
+
+        'CASH_ACCOUNT_NOT_SET' => ['code' => 10006, 'msg' => '提现账户未设置'],
+        'CASH_ACCOUNT_EXIST' => ['code' => 10006, 'msg' => '提现账户已存在'],
+        'INSUFFICIENT_BALANCE' => ['code' => 10006, 'msg' => '余额不足'],
+        'LESS_THAN_LOWEST_WITHDRAW_MONEY' => ['code' => 10006, 'msg' => '提现不能低于100'],
+
+        'PHONE_REGISTERED' => ['code' => 10009, 'msg' => '手机号码已注册'],
+        'PROMOTION_NAME_NOT_EMPTY' => ['code' => 10005, 'msg' => '推广名称不能为空'],
+        'NOT_LOGIN' => ['code' => 10010, 'msg' => '尚未登陆'],
+
+        'NO_AUTHORIZED_OFFICIAL_ACCOUNT' => ['code' => 10012, 'msg' => '无授权公众号'],
+        'READ_USER_NOT_EXIST' => ['code' => 10012, 'msg' => '阅读用户不存在'],
+        'USER_NOT_SUBSCRIBE' => ['code' => 10012, 'msg' => '用户未关注'],
+        'ACCOUNT_FRONZEN' => ['code' => 10012, 'msg' => '账户被冻结,请咨询官方客服'],
+        'DRAW_ONLY_ONCE_A_DAY' => ['code' => 10012, 'msg' => '每天仅允许提现一次'],
+
+        'HANDLE_FAILED' => ['code' => 10013, 'msg' => '操作失败'],
+        'SAME_ACCOUNT_ERROR' => ['code' => 20028, 'msg' => '两个账号不能相同'],
         //验证码登陆
-        'CAPTCHA_VERIFY_ERROR'=>['code'=>10021,'msg'=>'验证码错误'],
+        'CAPTCHA_VERIFY_ERROR' => ['code' => 10021, 'msg' => '验证码错误'],
 
         //各个模块自己写错误码
         //
         //图书  100001
-        'UNKNOWN_ERROR'=>['code'=>'10013','msg'=>'未知错误'],
-        'LACK_PARAM'=>['code'=>'10014','msg'=>'缺少参数'],
+        'UNKNOWN_ERROR' => ['code' => '10013', 'msg' => '未知错误'],
+        'LACK_PARAM' => ['code' => '10014', 'msg' => '缺少参数'],
         //
         //2000
 
 
         //Notice
 
-        'NAME_EXIST'=>['code'=>50003,'msg'=>'名称已经存在'],
+        'NAME_EXIST' => ['code' => 50003, 'msg' => '名称已经存在'],
         //Finance
-        'FORBID_CHANGE'=>['code'=>60001,'msg'=>'禁止修改'],
-
-        'WITHDRAW_CASH_AMOUNT'=>['code'=>60002,'msg'=>'提现金额必须 >= 100'],
-        'WITHDRAW_CASH_AMOUNT_MORE'=>['code'=>60002,'msg'=>'提现金额不能大于20万'],
-        'WITHDRAW_CASH_AMOUNT_INSUFFICIEN'=>['code'=>60003,'msg'=>'可提现金额不足'],
-        'WITHDRAW_CASH_AMOUNT_FROZEN'=>['code'=>60004,'msg'=>'账号已冻结'],
-        'WITHDRAW_CASH_AMOUNT_NO_CHANGE'=>['code'=>60005,'msg'=>'不能修改状态'],
-        'WITHDRAW_CASH_AMOUNT_ACCOUNT'=>['code'=>60006,'msg'=>'账号未设置'],
-        'PAYMENT_CHANNEL_AMOUNT_WITHOUT'=>['code'=>60007,'msg'=>'渠道可打款金额不足,请走人工打款'],
-        'LIQUIDATED_STAT_AMOUNT_WITHOUT'=>['code'=>60008,'msg'=>'渠道可清算金额不足'],
-        'COMMISSION_RATE_WITHOUT'=>['code'=>60009,'msg'=>'结算比例在 0.1 到 0.99 之间'],
-        'WITHDRAW_CASH_TODAY_USE'=>['code'=>60010,'msg'=>'您今天已经提现过了!'],
-        'PAYMENT_AUTO_NOT_OPEN'=>['code'=>60007,'msg'=>'自动打款暂未开通,请人工打款!'],
+        'FORBID_CHANGE' => ['code' => 60001, 'msg' => '禁止修改'],
+
+        'WITHDRAW_CASH_AMOUNT' => ['code' => 60002, 'msg' => '提现金额必须 >= 100'],
+        'WITHDRAW_CASH_AMOUNT_MORE' => ['code' => 60002, 'msg' => '提现金额不能大于20万'],
+        'WITHDRAW_CASH_AMOUNT_INSUFFICIEN' => ['code' => 60003, 'msg' => '可提现金额不足'],
+        'WITHDRAW_CASH_AMOUNT_FROZEN' => ['code' => 60004, 'msg' => '账号已冻结'],
+        'WITHDRAW_CASH_AMOUNT_NO_CHANGE' => ['code' => 60005, 'msg' => '不能修改状态'],
+        'WITHDRAW_CASH_AMOUNT_ACCOUNT' => ['code' => 60006, 'msg' => '账号未设置'],
+        'PAYMENT_CHANNEL_AMOUNT_WITHOUT' => ['code' => 60007, 'msg' => '渠道可打款金额不足,请走人工打款'],
+        'LIQUIDATED_STAT_AMOUNT_WITHOUT' => ['code' => 60008, 'msg' => '渠道可清算金额不足'],
+        'COMMISSION_RATE_WITHOUT' => ['code' => 60009, 'msg' => '结算比例在 0.1 到 0.99 之间'],
+        'WITHDRAW_CASH_TODAY_USE' => ['code' => 60010, 'msg' => '您今天已经提现过了!'],
+        'PAYMENT_AUTO_NOT_OPEN' => ['code' => 60007, 'msg' => '自动打款暂未开通,请人工打款!'],
         //'PAYMENT_AUTO_NOT_OPEN'=>['code'=>60011,'msg'=>'自动打款暂未开通,请人工打款!'],
-        'PAYMENT_WITHDRAW_MONEY_TOO'=>['code'=>60012,'msg'=>'已成功打款!'],
-        'PAYMENT_WITHDRAW_MONEY'=>['code'=>60013,'msg'=>'打款金额错误,提现金额 - 手续费 = 打款金额'],
+        'PAYMENT_WITHDRAW_MONEY_TOO' => ['code' => 60012, 'msg' => '已成功打款!'],
+        'PAYMENT_WITHDRAW_MONEY' => ['code' => 60013, 'msg' => '打款金额错误,提现金额 - 手续费 = 打款金额'],
 
         //officialAccount
-        'FORCESUBSCRIBEUSER_IS_EXIST'=>['code'=>80003,'msg'=>'该用户已经强关'],
-        'ADDFORCESUBSCRIBEUSER_UNSUCCESSFUL'=>['code'=>80004,'msg'=>'添加强关用户失败'],
-        'UPDATEFORCESUBSCRIBEUSER_UNSUCCESSFUL'=>['code'=>80004,'msg'=>'更新强关用户失败'],
-        'CANCELFORCESUBSCRIBEUSER_UNSUCCESSFUL'=>['code'=>80004,'msg'=>'强关用户取关失败'],
-        'FORCESUBSCRIBEUSER_NOT_FOUND'=>['code'=>80003,'msg'=>'无法获取用户'],
-        'TEMEPATES_NOT_FOUND'=>['code'=>80003,'msg'=>'无法找到模板'],
-        'TEMEPATES_UNSUCCESSFUL'=>['code'=>80003,'msg'=>'模板消息操作失败'],
-        'TEMEPATES_IS_EXIST'=>['code'=>80003,'msg'=>'模板已经存在'],
-        'WECHAT_USER_REQUEST_ERROR'=>['code'=>80004,'msg'=>'新增用户接口调用失败'],
-        'OFFICIAL_ACCOUNT_IS_EXIST'=>['code'=>80003,'msg'=>'公众号已经存在'],
-        'OFFICIAL_ACCOUNT_FAILED'=>['code'=>80004,'msg'=>'公众号授权失败'],
-        'UPDATE_OFFICIAL_ACCOUNT_FAILED'=>['code'=>80004,'msg'=>'更新公众号失败'],
-        'CANCEL_OFFICIAL_ACCOUNT_FAILED'=>['code'=>80004,'msg'=>'取消公众号授权失败'],
-        'OFFICIAL_ACCOUNT_NOT_FOUND'=>['code'=>80003,'msg'=>'公众号不存在'],
-        'EVENT_NOT_FOUND'=>['code'=>80003,'msg'=>'事件未配置'],
-        'HAS_NO_CUSTOMS'=>['code'=>80003,'msg'=>'无法获取客服消息'],
-        'CUSTOMS_SETTING_FAILED'=>['code'=>80004,'msg'=>'客服消息操作失败'],
-        'CUSTOMS_SEND_FAILED'=>['code'=>80004,'msg'=>'客服消息发送失败'],
-        'OFFICIAL_IMGTXT_FAILED'=>['code'=>80004,'msg'=>'素材创建失败'],
-        'OFFICIAL_IMGTXT_DELFAILED'=>['code'=>80004,'msg'=>'素材删除失败'],
-        'OFFICIAL_IMGTXT_FOUNDFAILED'=>['code'=>80004,'msg'=>'未找到素材'],
-        'CUSTOMS_DOUBLE_FAILED'=>['code'=>80008,'msg'=>'你已经在1小时内创建过该客服消息,不能重复创建'],
-        'TEMPLATE_DOUBLE_FAILED'=>['code'=>80008,'msg'=>'你已经在1小时内创建过该模板消息,不能重复创建'],
-        'TEMPLATEMSG_IS_SEDDING'=>['code'=>80008,'msg'=>'该模板消息正在发送中,当前不允许操作'],
-        'CUSTOMMSG_IS_SEDDING'=>['code'=>80008,'msg'=>'该客服消息正在发送中,当前不允许操作'],
-        'KEYWORD_NOT_FOUND'=>['code'=>80009,'msg'=>'无法找到关键字'],
-        'SMART_PUSHS_UNSUCCESSFUL'=>['code'=>80008,'msg'=>'自定义操作失败'],
-        'SMART_PUSHS_NOT_ALL_EDIT'=>['code'=>80008,'msg'=>'修改自定义前必须先编辑好男女的内容'],
-
-        'NOT_ENABLE_FULL_SEND'=>['code'=>80008,'msg'=>'全量发送暂不支持,容易封号'],
-        
-        'KEYWORDS_UNSUCCESSFUL'=>['code'=>80009,'msg'=>'关键字操作失败'],
-        'OLD_APP_NOT_ALLOW_DELETE'=>['code'=>80010,'msg'=>'公众号已有一定数量注册用户不允许删除'],
-        'NOT_FOUND_OFFICIAL_ACCOUNT'=>['code'=>80011,'msg'=>'公众号不存在'],
-        'SHORT_URL_ERROR'=>['code'=>80012,'msg'=>'短连接转化失败,请稍后再试'],
-        'SHORT_URL_NOT_ALLOW_ERROR'=>['code'=>80013,'msg'=>'内容不允许使用短链接,请重新编辑'],
-        
-        'CHECK_TEMPLATE_LIMIT_NUM'=>['code'=>80014,'msg'=>'请只勾选1个公众号测试'],
-        'UNABLE_DEL_EXIST_GZH'=>['code'=>80014,'msg'=>'站点还有绑定公众号,请解绑后再删除站点'],
-        'UNABLE_DEL_EXIST_WITHDRAWL_AMOUNT'=>['code'=>80014,'msg'=>'站点还有余额,请提现后再删除站点'],
-        'NOT_ENABLE_TEMPLATE_SEND'=>['code'=>80014,'msg'=>'最近封号严重,模板消息暂时关停'],
+        'FORCESUBSCRIBEUSER_IS_EXIST' => ['code' => 80003, 'msg' => '该用户已经强关'],
+        'ADDFORCESUBSCRIBEUSER_UNSUCCESSFUL' => ['code' => 80004, 'msg' => '添加强关用户失败'],
+        'UPDATEFORCESUBSCRIBEUSER_UNSUCCESSFUL' => ['code' => 80004, 'msg' => '更新强关用户失败'],
+        'CANCELFORCESUBSCRIBEUSER_UNSUCCESSFUL' => ['code' => 80004, 'msg' => '强关用户取关失败'],
+        'FORCESUBSCRIBEUSER_NOT_FOUND' => ['code' => 80003, 'msg' => '无法获取用户'],
+        'TEMEPATES_NOT_FOUND' => ['code' => 80003, 'msg' => '无法找到模板'],
+        'TEMEPATES_UNSUCCESSFUL' => ['code' => 80003, 'msg' => '模板消息操作失败'],
+        'TEMEPATES_IS_EXIST' => ['code' => 80003, 'msg' => '模板已经存在'],
+        'WECHAT_USER_REQUEST_ERROR' => ['code' => 80004, 'msg' => '新增用户接口调用失败'],
+        'OFFICIAL_ACCOUNT_IS_EXIST' => ['code' => 80003, 'msg' => '公众号已经存在'],
+        'OFFICIAL_ACCOUNT_FAILED' => ['code' => 80004, 'msg' => '公众号授权失败'],
+        'UPDATE_OFFICIAL_ACCOUNT_FAILED' => ['code' => 80004, 'msg' => '更新公众号失败'],
+        'CANCEL_OFFICIAL_ACCOUNT_FAILED' => ['code' => 80004, 'msg' => '取消公众号授权失败'],
+        'OFFICIAL_ACCOUNT_NOT_FOUND' => ['code' => 80003, 'msg' => '公众号不存在'],
+        'EVENT_NOT_FOUND' => ['code' => 80003, 'msg' => '事件未配置'],
+        'HAS_NO_CUSTOMS' => ['code' => 80003, 'msg' => '无法获取客服消息'],
+        'CUSTOMS_SETTING_FAILED' => ['code' => 80004, 'msg' => '客服消息操作失败'],
+        'CUSTOMS_SEND_FAILED' => ['code' => 80004, 'msg' => '客服消息发送失败'],
+        'OFFICIAL_IMGTXT_FAILED' => ['code' => 80004, 'msg' => '素材创建失败'],
+        'OFFICIAL_IMGTXT_DELFAILED' => ['code' => 80004, 'msg' => '素材删除失败'],
+        'OFFICIAL_IMGTXT_FOUNDFAILED' => ['code' => 80004, 'msg' => '未找到素材'],
+        'CUSTOMS_DOUBLE_FAILED' => ['code' => 80008, 'msg' => '你已经在1小时内创建过该客服消息,不能重复创建'],
+        'TEMPLATE_DOUBLE_FAILED' => ['code' => 80008, 'msg' => '你已经在1小时内创建过该模板消息,不能重复创建'],
+        'TEMPLATEMSG_IS_SEDDING' => ['code' => 80008, 'msg' => '该模板消息正在发送中,当前不允许操作'],
+        'CUSTOMMSG_IS_SEDDING' => ['code' => 80008, 'msg' => '该客服消息正在发送中,当前不允许操作'],
+        'KEYWORD_NOT_FOUND' => ['code' => 80009, 'msg' => '无法找到关键字'],
+        'SMART_PUSHS_UNSUCCESSFUL' => ['code' => 80008, 'msg' => '自定义操作失败'],
+        'SMART_PUSHS_NOT_ALL_EDIT' => ['code' => 80008, 'msg' => '修改自定义前必须先编辑好男女的内容'],
+
+        'NOT_ENABLE_FULL_SEND' => ['code' => 80008, 'msg' => '全量发送暂不支持,容易封号'],
+
+        'KEYWORDS_UNSUCCESSFUL' => ['code' => 80009, 'msg' => '关键字操作失败'],
+        'OLD_APP_NOT_ALLOW_DELETE' => ['code' => 80010, 'msg' => '公众号已有一定数量注册用户不允许删除'],
+        'NOT_FOUND_OFFICIAL_ACCOUNT' => ['code' => 80011, 'msg' => '公众号不存在'],
+        'SHORT_URL_ERROR' => ['code' => 80012, 'msg' => '短连接转化失败,请稍后再试'],
+        'SHORT_URL_NOT_ALLOW_ERROR' => ['code' => 80013, 'msg' => '内容不允许使用短链接,请重新编辑'],
+
+        'CHECK_TEMPLATE_LIMIT_NUM' => ['code' => 80014, 'msg' => '请只勾选1个公众号测试'],
+        'UNABLE_DEL_EXIST_GZH' => ['code' => 80014, 'msg' => '站点还有绑定公众号,请解绑后再删除站点'],
+        'UNABLE_DEL_EXIST_WITHDRAWL_AMOUNT' => ['code' => 80014, 'msg' => '站点还有余额,请提现后再删除站点'],
+        'NOT_ENABLE_TEMPLATE_SEND' => ['code' => 80014, 'msg' => '最近封号严重,模板消息暂时关停'],
 
         //订阅
-        'NOT_ORDERED'=>['code'=>10012,'msg'=>'未订购'],
+        'NOT_ORDERED' => ['code' => 10012, 'msg' => '未订购'],
 
         //wap
-        'WAP_NOT_LOGIN'=>['code'=>10001,'msg'=>'未登录'],
-        'WAP_NOT_ORDERED'=>['code'=>10002,'msg'=>'未订购'],
-        'WAP_PARAM_ERROR'=>['code'=>10003,'msg'=>'参数错误'],
-        'WAP_SYS_ERROR'=>['code'=>10004,'msg'=>'系统错误'],
-        'WAP_SIGN_ERROR'=>['code'=>10005,'msg'=>'签名有误'],
-        'WAP_NOT_EXIST'=>['code'=>10007,'msg'=>'资源不存在'],
-        'WAP_ADDED_SHELF'=>['code'=>10008,'msg'=>'已添加到书架'],
-        'WAP_INSUFFICIENT_BALANCE'=>['code'=>10009,'msg'=>'余额不足'],
-        'WAP_ORDER_FAILED'=>['code'=>10010,'msg'=>'订购失败'],
-        'WAP_PRODUCT_NOT_FOUND'=>['code'=>10011,'msg'=>'产品找不到'],
-        'WAP_NOT_SUBSCRIBE'=>['code'=>10012,'msg'=>'未关注'],
-        'WAP_LACK_PARAM'=>['code'=>10013,'msg'=>'缺少参数'],
-        'WAP_BOOK_INSUFFICIENT_BALANCE'=>['code'=>10014,'msg'=>'单本余额不足'],
-        'WAP_CHAPTER_INSUFFICIENT_BALANCE'=>['code'=>10015,'msg'=>'章订余额不足'],
-        'WAP_CHAPTER_BUY'=>['code'=>10016,'msg'=>'购买章节'],
-        'WAP_BOOK_BUY'=>['code'=>10017,'msg'=>'购买图书'],
-        'WAP_OFF_SHELF'=>['code'=>10018,'msg'=>'图书下架'],
-        'WAP_BOOK_BALANCE_PAY'=>['code'=>10019,'msg'=>'购买图书'],
-        'WAP_BOOK_SECOND_BALANCE_PAY'=>['code'=>10020,'msg'=>'第二次图书订购余额不足'],
-        'WAP_CHAPTER_SECOND_BALANCE_PAY'=>['code'=>10021,'msg'=>'第二次章节订购余额不足'],
-        'WAP_DOMAIN_NOT_MATCH'=>['code'=>10022,'msg'=>'域名不匹配'],
-        'WAP_LINK_SUBSCRIBE'=>['code'=>10023,'msg'=>'链接强关'],
-        'WAP_HAD_ON_SHELF'=>['code'=>10024,'msg'=>'已经在书架上了'],
+        'WAP_NOT_LOGIN' => ['code' => 10001, 'msg' => '未登录'],
+        'WAP_NOT_ORDERED' => ['code' => 10002, 'msg' => '未订购'],
+        'WAP_PARAM_ERROR' => ['code' => 10003, 'msg' => '参数错误'],
+        'WAP_SYS_ERROR' => ['code' => 10004, 'msg' => '系统错误'],
+        'WAP_SIGN_ERROR' => ['code' => 10005, 'msg' => '签名有误'],
+        'WAP_NOT_EXIST' => ['code' => 10007, 'msg' => '资源不存在'],
+        'WAP_ADDED_SHELF' => ['code' => 10008, 'msg' => '已添加到书架'],
+        'WAP_INSUFFICIENT_BALANCE' => ['code' => 10009, 'msg' => '余额不足'],
+        'WAP_ORDER_FAILED' => ['code' => 10010, 'msg' => '订购失败'],
+        'WAP_PRODUCT_NOT_FOUND' => ['code' => 10011, 'msg' => '产品找不到'],
+        'WAP_NOT_SUBSCRIBE' => ['code' => 10012, 'msg' => '未关注'],
+        'WAP_LACK_PARAM' => ['code' => 10013, 'msg' => '缺少参数'],
+        'WAP_BOOK_INSUFFICIENT_BALANCE' => ['code' => 10014, 'msg' => '单本余额不足'],
+        'WAP_CHAPTER_INSUFFICIENT_BALANCE' => ['code' => 10015, 'msg' => '章订余额不足'],
+        'WAP_CHAPTER_BUY' => ['code' => 10016, 'msg' => '购买章节'],
+        'WAP_BOOK_BUY' => ['code' => 10017, 'msg' => '购买图书'],
+        'WAP_OFF_SHELF' => ['code' => 10018, 'msg' => '图书下架'],
+        'WAP_BOOK_BALANCE_PAY' => ['code' => 10019, 'msg' => '购买图书'],
+        'WAP_BOOK_SECOND_BALANCE_PAY' => ['code' => 10020, 'msg' => '第二次图书订购余额不足'],
+        'WAP_CHAPTER_SECOND_BALANCE_PAY' => ['code' => 10021, 'msg' => '第二次章节订购余额不足'],
+        'WAP_DOMAIN_NOT_MATCH' => ['code' => 10022, 'msg' => '域名不匹配'],
+        'WAP_LINK_SUBSCRIBE' => ['code' => 10023, 'msg' => '链接强关'],
+        'WAP_HAD_ON_SHELF' => ['code' => 10024, 'msg' => '已经在书架上了'],
         //送礼
-        'WAP_SEND_GIFT_FAILED'=>['code'=>10028,'msg'=>'送礼失败!请稍后再试!'],
-        'WAP_BIND_PHONE_EXIST'=>['code'=>10029,'msg'=>'手机号码已经被绑定了'],
-        'WAP_SEND_OPENID_EXIST'=>['code'=>10030,'msg'=>'您已经绑定过'],
-        'WAP_SEND_CODE_ERROR'=>['code'=>10031,'msg'=>'验证码错误'],
+        'WAP_SEND_GIFT_FAILED' => ['code' => 10028, 'msg' => '送礼失败!请稍后再试!'],
+        'WAP_BIND_PHONE_EXIST' => ['code' => 10029, 'msg' => '手机号码已经被绑定了'],
+        'WAP_SEND_OPENID_EXIST' => ['code' => 10030, 'msg' => '您已经绑定过'],
+        'WAP_SEND_CODE_ERROR' => ['code' => 10031, 'msg' => '验证码错误'],
         //XCX小程序
-        'XCX_NOT_LOGIN'=>['code'=>10023,'msg'=>'未登录'],
-        'XCX_TOKEN_ERROR'=>['code'=>10023,'msg'=>'token失效'],
-        'XCX_NOT_ORDERED'=>['code'=>10002,'msg'=>'未订购'],
-        'XCX_PARAM_ERROR'=>['code'=>10003,'msg'=>'参数错误'],
-        'XCX_SYS_ERROR'=>['code'=>10004,'msg'=>'系统错误'],
-        'XCX_SIGN_ERROR'=>['code'=>10005,'msg'=>'签名有误'],
-        'XCX_NOT_EXIST'=>['code'=>10007,'msg'=>'资源不存在'],
-        'XCX_ADDED_SHELF'=>['code'=>10008,'msg'=>'已添加到书架'],
-        'XCX_INSUFFICIENT_BALANCE'=>['code'=>10009,'msg'=>'余额不足'],
-        'XCX_ORDER_FAILED'=>['code'=>10010,'msg'=>'订购失败'],
-        'XCX_PRODUCT_NOT_FOUND'=>['code'=>10011,'msg'=>'产品找不到'],
-        'XCX_NOT_SUBSCRIBE'=>['code'=>10012,'msg'=>'未关注'],
-        'XCX_LACK_PARAM'=>['code'=>10013,'msg'=>'缺少参数'],
-        'XCX_BOOK_INSUFFICIENT_BALANCE'=>['code'=>10014,'msg'=>'单本余额不足'],
-        'XCX_CHAPTER_INSUFFICIENT_BALANCE'=>['code'=>10015,'msg'=>'章订余额不足'],
-        'XCX_CHAPTER_BUY'=>['code'=>10016,'msg'=>'购买章节'],
-        'XCX_BOOK_BUY'=>['code'=>10017,'msg'=>'购买图书'],
-        'XCX_OFF_SHELF'=>['code'=>10018,'msg'=>'图书下架'],
-        'XCX_BOOK_BALANCE_PAY'=>['code'=>10019,'msg'=>'购买图书'],
-        'XCX_BOOK_SECOND_BALANCE_PAY'=>['code'=>10020,'msg'=>'第二次图书订购余额不足'],
-        'XCX_CHAPTER_SECOND_BALANCE_PAY'=>['code'=>10021,'msg'=>'第二次章节订购余额不足'],
-        'XCX_DOMAIN_NOT_MATCH'=>['code'=>10022,'msg'=>'域名不匹配'],
-
-];
+        'XCX_NOT_LOGIN' => ['code' => 10023, 'msg' => '未登录'],
+        'XCX_TOKEN_ERROR' => ['code' => 10023, 'msg' => 'token失效'],
+        'XCX_NOT_ORDERED' => ['code' => 10002, 'msg' => '未订购'],
+        'XCX_PARAM_ERROR' => ['code' => 10003, 'msg' => '参数错误'],
+        'XCX_SYS_ERROR' => ['code' => 10004, 'msg' => '系统错误'],
+        'XCX_SIGN_ERROR' => ['code' => 10005, 'msg' => '签名有误'],
+        'XCX_NOT_EXIST' => ['code' => 10007, 'msg' => '资源不存在'],
+        'XCX_ADDED_SHELF' => ['code' => 10008, 'msg' => '已添加到书架'],
+        'XCX_INSUFFICIENT_BALANCE' => ['code' => 10009, 'msg' => '余额不足'],
+        'XCX_ORDER_FAILED' => ['code' => 10010, 'msg' => '订购失败'],
+        'XCX_PRODUCT_NOT_FOUND' => ['code' => 10011, 'msg' => '产品找不到'],
+        'XCX_NOT_SUBSCRIBE' => ['code' => 10012, 'msg' => '未关注'],
+        'XCX_LACK_PARAM' => ['code' => 10013, 'msg' => '缺少参数'],
+        'XCX_BOOK_INSUFFICIENT_BALANCE' => ['code' => 10014, 'msg' => '单本余额不足'],
+        'XCX_CHAPTER_INSUFFICIENT_BALANCE' => ['code' => 10015, 'msg' => '章订余额不足'],
+        'XCX_CHAPTER_BUY' => ['code' => 10016, 'msg' => '购买章节'],
+        'XCX_BOOK_BUY' => ['code' => 10017, 'msg' => '购买图书'],
+        'XCX_OFF_SHELF' => ['code' => 10018, 'msg' => '图书下架'],
+        'XCX_BOOK_BALANCE_PAY' => ['code' => 10019, 'msg' => '购买图书'],
+        'XCX_BOOK_SECOND_BALANCE_PAY' => ['code' => 10020, 'msg' => '第二次图书订购余额不足'],
+        'XCX_CHAPTER_SECOND_BALANCE_PAY' => ['code' => 10021, 'msg' => '第二次章节订购余额不足'],
+        'XCX_DOMAIN_NOT_MATCH' => ['code' => 10022, 'msg' => '域名不匹配'],
+
+        //Quick App 快应用
+        'QAPP_NOT_LOGIN' => ['code' => 10023, 'msg' => '未登录'],
+        'QAPP_TOKEN_ERROR' => ['code' => 10023, 'msg' => 'token失效'],
+        'QAPP_NOT_ORDERED' => ['code' => 10002, 'msg' => '未订购'],
+        'QAPP_PARAM_ERROR' => ['code' => 10003, 'msg' => '参数错误'],
+        'QAPP_SYS_ERROR' => ['code' => 10004, 'msg' => '系统错误'],
+        'QAPP_SIGN_ERROR' => ['code' => 10005, 'msg' => '签名有误'],
+        'QAPP_NOT_EXIST' => ['code' => 10007, 'msg' => '资源不存在'],
+        'QAPP_ADDED_SHELF' => ['code' => 10008, 'msg' => '已添加到书架'],
+        'QAPP_INSUFFICIENT_BALANCE' => ['code' => 10009, 'msg' => '余额不足'],
+        'QAPP_ORDER_FAILED' => ['code' => 10010, 'msg' => '订购失败'],
+        'QAPP_PRODUCT_NOT_FOUND' => ['code' => 10011, 'msg' => '产品找不到'],
+        'QAPP_NOT_SUBSCRIBE' => ['code' => 10012, 'msg' => '未关注'],
+        'QAPP_LACK_PARAM' => ['code' => 10013, 'msg' => '缺少参数'],
+        'QAPP_BOOK_INSUFFICIENT_BALANCE' => ['code' => 10014, 'msg' => '单本余额不足'],
+        'QAPP_CHAPTER_INSUFFICIENT_BALANCE' => ['code' => 10015, 'msg' => '章订余额不足'],
+        'QAPP_CHAPTER_BUY' => ['code' => 10016, 'msg' => '购买章节'],
+        'QAPP_BOOK_BUY' => ['code' => 10017, 'msg' => '购买图书'],
+        'QAPP_OFF_SHELF' => ['code' => 10018, 'msg' => '图书下架'],
+        'QAPP_BOOK_BALANCE_PAY' => ['code' => 10019, 'msg' => '购买图书'],
+        'QAPP_BOOK_SECOND_BALANCE_PAY' => ['code' => 10020, 'msg' => '第二次图书订购余额不足'],
+        'QAPP_CHAPTER_SECOND_BALANCE_PAY' => ['code' => 10021, 'msg' => '第二次章节订购余额不足'],
+        'QAPP_DOMAIN_NOT_MATCH' => ['code' => 10022, 'msg' => '域名不匹配'],
+
+];

Fichier diff supprimé car celui-ci est trop grand
+ 3773 - 1
public/kyydoc/api_data.js


Fichier diff supprimé car celui-ci est trop grand
+ 3773 - 1
public/kyydoc/api_data.json