基础控制器的修改


上一篇 : 账号登录 下一篇: 创建发布任务



ApiBaseController.php

<?php
/**
* Created by PhpStorm.
* User: [一秋]
* Date: 2018/3/28
* Time: 15:03
* Desc: 成功源于点滴
*/

namespace app\index\controller;
use think\Config;
use think\Db;
use think\exception\HttpResponseException;
use think\Log;
use think\Request;
use think\Response;

class ApiBaseController
{
   protected $token = '';

   protected $userId = 0;

   //用户
   protected $user;

   protected $request;



   public function __construct(Request $request = null)
   {
       if (is_null($request)) {
           $request = Request::instance();
       }

       $this->request = $request;

       // 用户验证初始化
       $this->_initUser();

       // 控制器初始化
       $this->_initialize();

   }

   // 初始化
   protected function _initialize()
   {
   }

   protected function _initUser(){
       if($this->request->isPost()){
           Log::info($this->request->post());
       }

       $token      = $this->request->header('token');

       if (empty($token)) {
           return;
       }

       $this->token      = $token;

       $user = Db::name('user_token')
           ->alias('a')
           ->field('b.*')
           ->where(['token' => $token])
           ->join('__USER__ b', 'a.user_id = b.id')
           ->find();

       if (!empty($user)) {
           $this->user     = $user;
           $this->userId   = $user['id'];
           $this->status = $user['status'];
       }
   }

   /**
    * 操作错误跳转的快捷方法
    * @access protected
    * @param mixed $msg 提示信息,若要指定错误码,可以传数组,格式为['code'=>您的错误码,'msg'=>'您的错误消息']
    * @param mixed $data 返回的数据
    * @param array $header 发送的Header信息
    * @return void
    */
   protected function error($msg = '',  $data = "", array $header = [])
   {
       $code = 0;

       if (is_array($msg)) {
           $code = $msg['code'];
           $msg  = $msg['msg'];
       }
       $result = [
           'code' => $code,
           'msg'  => $msg,
//            'data' => $data,
       ];

       $type                                   = $this->getResponseType();
       $header['Access-Control-Allow-Origin']  = '*';
       $header['Access-Control-Allow-Headers'] = 'X-Requested-With,Content-Type,token';
       $header['Access-Control-Allow-Headers'] = 'X-Requested-With,Content-Type';
       $header['Access-Control-Allow-Methods'] = 'GET,POST,PATCH,PUT,DELETE,OPTIONS';
       $response                               = Response::create($result, $type)->header($header);
       throw new HttpResponseException($response);
   }

   /**
    * 操作成功跳转的快捷方法
    * @access protected
    * @param mixed $msg 提示信息
    * @param mixed $data 返回的数据
    * @param array $header 发送的Header信息
    * @return void
    */
   protected function success($msg = '', $data = [], array $header = [])
   {
       $code   = 1;

       $result = [
           'code' => $code,
           'msg'  => $msg,
           'data' => $data,
       ];

       $type                                   = $this->getResponseType();
       $header['Access-Control-Allow-Origin']  = '*';
       $header['Access-Control-Allow-Headers'] = 'X-Requested-With,Content-Type,token';
       $header['Access-Control-Allow-Headers'] = 'X-Requested-With,Content-Type';
       $header['Access-Control-Allow-Methods'] = 'GET,POST,PATCH,PUT,DELETE,OPTIONS';
       $response                               = Response::create($result, $type)->header($header);

       throw new HttpResponseException($response);
   }


   /**
    * 获取当前的response 输出类型
    * @access protected
    * @return string
    */
   protected function getResponseType()
   {
       return Config::get('default_return_type');
   }

   /**
    * 获取当前登录用户的id
    * @return int
    */
   public function getUserId()
   {
       if (empty($this->userId)) {
           $this->error(['code' => 10001, 'msg' => '用户未登录']);
       }
       return $this->userId;
   }

}

这里需要把前面处理的统一数据返回方法修改一下  



新建一个用户需要用户登录接口的基础控制器


UserBaseController.php


<?php
/**
* Created by PhpStorm.
* User: [一秋]
* Date: 2018/3/29
* Time: 9:57
* Desc: 成功源于点滴
*/

namespace app\index\controller;

class UserBaseController extends ApiBaseController
{

   public function _initialize()
   {
       if (empty($this->user)) {
           $this->error(['code' => 10001, 'msg' => '登录已失效!']);
       }
   }
}


上一篇 : 账号登录 下一篇: 创建发布任务