_header = $this->request->header(); if (defined('IS_WEIQIN')) { global $_GPC, $_W; $this->_uniacid = $_W[ 'uniacid' ]; $this->_user = $_W['user']; $role_map = [ 'founder' => 'admin', 'operator' => 'guest', ]; $this->_role = $role_map[$_W['role']] ?? 'guest'; if (empty($this->_user)) { echo json_encode(['code' => 401, 'error' => '用户没有登录']); exit; } if (!$_W['isfounder']) { echo json_encode(['code' => 401, 'error' => '非超级管理员']); exit; } $this->_user['role_name']='admin'; } else { //获取token if ( isset( $this->_header[ 'token' ] ) ) $this->_token = $this->_header[ 'token' ]; //获取用户信息 if ( !empty( $this->_token ) ) $this->_user = getUserForToken( $this->_token ); //获取角色名称 if ( !empty( $this->_user ) && isset( $this->_user[ 'role_name' ] ) ) $this->_role = $this->_user[ 'role_name' ]; if ($this->_user == null) { echo json_encode(['code' => 401, 'error' => '用户没有登录']); exit; } $this->_uniacid = !empty( $this->_user ) && isset( $this->_user[ 'uniacid' ] ) ? $this->_user[ 'uniacid' ] : -1; // if ($this->_user['role_name'] != 'admin') { // echo json_encode(['code' => 401, 'error' => '非超级管理员']); // exit; // } } //获取app名称 // $this->_app = $this->request->app(); $this->_app = $app->http->getName(); //获取controller $this->_controller = $this->request->controller(); //获取action名称 $this->_action = $this->request->action(); //获取method $this->_method = $this->request->method( true ); //获取param $this->_param = $this->request->param(); //获取配置信息 $this->_config = Db::name( 'longbing_card_config' ) ->where( [ 'uniacid' => $this->_uniacid ] ) ->find(); if(in_array($this->_method,['options','Options','OPTIONS'])){ echo true;exit; } //获取body参数 $this->_input = json_decode( $this->request->getInput(), true ); // //判断是否为json // if(!isset($this->request->header()['Content-Type'])) { // $this->_header['Content-Type'] = 'application/json'; // $this->app->request->withHeader($this->_header); // } //获取该应用下面所有的uniacid $this->_uniacid_arr = $this->getUniacid(); //语言 if ( isset( $this->_header[ 'lang' ] ) ) $this->_token = $this->_header[ 'lang' ]; //获取请求host $this->_host = $this->_header[ 'host' ]; //获取访问ip $this->_ip = $_SERVER[ 'REMOTE_ADDR' ]; // 控制器初始化 $this->initialize(); //是否是微擎 $this->_is_weiqin = longbingIsWeiqin(); } //返回请求成功的数据 public function success ( $data, $code = 200 ) { $result[ 'data' ] = $data; $result[ 'code' ] = $code; $result[ 'sign' ] = null; //复杂的签名 // if(isset($this->_user['keys'])){ // $result['sign'] = rsa2CreateSign($this->_user['keys'] ,json_encode($data)); // } //简单的签名 if ( !empty( $this->_token ) ) $result[ 'sign' ] = createSimpleSign( $this->_token, is_string( $data ) ? $data : json_encode( $data ) ); return $this->response( $result, 'json', $code ); } //返回错误数据 public function error ( $msg, $code = 400 ) { // dd($this->request);die; // var_dump($this->_app ,$this->_controller ,$this->_action);die; $result[ 'error' ] = Lang::get($msg); $result[ 'code' ] = $code; return $this->response( $result, 'json', 200 ); } /** * 输出返回数据 * @access protected * @param mixed $data 要返回的数据 * @param String $type 返回类型 JSON XML * @param integer $code HTTP状态码 * @return Response */ protected function response ( $data, $type = 'json', $code = 200 ) { return Response::create( $data, $type )->code( $code ); } /** * REST 调用 * @access public * @param string $method 方法名 * @return mixed * @throws \Exception */ public function _empty ( $method ) { if ( method_exists( $this, $method . '_' . $this->method . '_' . $this->type ) ) { // RESTFul方法支持 $fun = $method . '_' . $this->method . '_' . $this->type; } elseif ( $this->method == $this->restDefaultMethod && method_exists( $this, $method . '_' . $this->type ) ) { $fun = $method . '_' . $this->type; } elseif ( $this->type == $this->restDefaultType && method_exists( $this, $method . '_' . $this->method ) ) { $fun = $method . '_' . $this->method; } if ( isset( $fun ) ) { return App::invokeMethod( [ $this, $fun ] ); } else { // 抛出异常 throw new \Exception( 'error action :' . $method ); } } /** * @Purpose: 获取formId * * @Author: zzf * * @Return: mixed 查询返回值(结果集对象) */ public function getFormId ( $to_uid ) { // 七天前开始的的时间戳 // $beginTime = mktime( 0, 0, 0, date( 'm' ), date( 'd' ) - 6, date( 'Y' ) ); $beginTime = strtotime(date('Y-m-d',time()))-86400*6; $formId = Db::name( 'longbing_card_formId' ) ->where( [ 'user_id' => $to_uid ] ) ->order( 'id desc' ) ->select(); if ( empty( $formId ) ) { return false; } if ( $formId[ 0 ][ 'create_time' ] < $beginTime ) { Db::name( 'longbing_card_formId' ) ->where( [ 'id' => $formId[ 0 ][ 'id' ] ] ) ->delete(); $this->getFormId( $to_uid ); } else { Db::name( 'longbing_card_formId' ) ->where( [ 'id' => $formId[ 0 ][ 'id' ] ] ) ->delete(); return $formId[ 0 ][ 'formId' ]; } } /** * * 获取支付信息 */ public function payConfig (){ $pay = Db::name('longbing_card_config_pay')->where(['uniacid'=>$this->_uniacid])->find(); if(empty($pay)){ $this->errorMsg('no config of pay'); } $setting[ 'payment' ][ 'merchant_id' ] = $pay[ 'mch_id' ]; $setting[ 'payment' ][ 'key' ] = $pay[ 'pay_key' ]; $setting[ 'payment' ][ 'cert_path' ] = $pay[ 'cert_path' ]; $setting[ 'payment' ][ 'key_path' ] = $pay[ 'key_path' ]; $setting[ 'app_id' ] = $this->_config['appid']; $setting[ 'secret' ] = $this->_config['app_secret']; return $setting; } /** * User: chenniang * Date: 2019-09-12 20:37 * @param string $msg * @return void * descption:直接抛出异常 */ protected function errorMsg($msg = '',$code = 400){ $msg = Lang::get($msg); $this->results($msg,$code); } /** * 返回封装后的 API 数据到客户端 * @access protected * @param mixed $msg 提示信息 * @param mixed $data 要返回的数据 * @param int $code 错误码,默认为0 * @param string $type 输出类型,支持json/xml/jsonp * @param array $header 发送的 Header 信息 * @return void * @throws HttpResponseException */ protected function results($msg, $code, array $header = []) { $result = [ 'error' => $msg, 'code' => $code, ]; $response = Response::create($result, 'json', 200)->header($header); throw new HttpResponseException($response); } /** * @author chenniang * @DataTime: 2020-06-05 09:13 * @功能说明:获取微擎的uniacid(同应用下面的)array */ public function getUniacid(){ if(defined('IS_WEIQIN')){ //模块名字 $app_model_name = APP_MODEL_NAME; $dis[] = ['modules','like','%'.$app_model_name.'%']; //获取该应用下面的所有uniacid $uniacid = Db::name('wxapp_versions')->where($dis)->column('uniacid'); }else{ $uniacid = [$this->_user['uniacid']]; } return $uniacid; } }