| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- namespace api\behaviors;
- use common\enums\LoginEnum;
- use common\models\user\User;
- use Yii;
- use yii\base\Behavior;
- /**
- * Class BeforeSend
- * @package api\behaviors
- * @author qimall
- */
- class BeforeSend extends Behavior
- {
- /**
- * {@inheritdoc}
- */
- public function events()
- {
- return [
- 'beforeSend' => 'beforeSend',
- ];
- }
- /**
- * 格式化返回
- *
- * @param $event
- * @throws \yii\base\InvalidConfigException
- */
- public function beforeSend($event)
- {
- $response = $event->sender;
- if ($response->statusCode == 401) {
- $code = LoginEnum::checkMessage($response->data['message']);
- $replace_map = LoginEnum::getReplaceMap();
- $response = $event->sender;
- $response->format = yii\web\Response::FORMAT_JSON;
- $response->data['code'] = $code??401;
- $response->data['message'] = $replace_map[$response->data['message']] ? $replace_map[$response->data['message']] : $response->data['message'];
- //支付宝小程序 401状态码修改成200
- $platform = \Yii::$app->request->headers['x-app-platform'] ?? '';
- if($platform == User::PLATFORM_MP_ALI){
- $response->statusCode = 200;
- }
- return;
- }
- // if (YII_DEBUG && isset(Yii::$app->controller->module->id) && Yii::$app->controller->module->id === "debug") {
- // return;
- // }
- // // 不进行格式化出处理
- // if (Yii::$app->params['triggerBeforeSend'] == false) {
- // $response = $event->sender;
- // $response->format = yii\web\Response::FORMAT_JSON;
- // $response->statusCode = 200;
- // return;
- // }
- // $response = $event->sender;
- // $response->data = [
- // 'code' => $response->statusCode,
- // 'message' => $response->statusText,
- // 'data' => $response->data,
- // 'timestamp' => time(),
- // ];
- // // 记录日志
- // $errData = Yii::$app->services->log->record($response, true);
- // // 格式化报错输入格式
- // if ($response->statusCode >= 500) {
- // $response->data['data'] = YII_DEBUG ? $errData : '服务器打瞌睡了~';
- // }
- // // 提取系统 300-499 的报错信息
- // if ($response->statusCode >= 300 && $response->statusCode <= 499) {
- // if (isset($response->data['data']['message']) && isset($response->data['data']['status'])) {
- // $response->data['message'] = $response->data['data']['message'];
- // }
- // if (isset($errData['errorMessage'])) {
- // $response->data['message'] = $errData['errorMessage'];
- // $response->data['message'] == $response->data['data'] && $response->data['data'] = [];
- // }
- // }
- // // 加入ip黑名单
- // $response->statusCode == 429 && Yii::$app->services->ipBlacklist->create(Yii::$app->request->userIP, '请求频率过高');
- // $response->format = yii\web\Response::FORMAT_JSON;
- // // 考虑到了某些前端必须返回成功操作,所以这里可以设置为都返回200的状态码
- // $response->statusCode = 200;
- }
- }
|