diff --git a/admin/foundation/JsonResponseFormatter.php b/admin/foundation/JsonResponseFormatter.php index e4901ca..394d881 100644 --- a/admin/foundation/JsonResponseFormatter.php +++ b/admin/foundation/JsonResponseFormatter.php @@ -7,6 +7,7 @@ namespace admin\foundation; +use common\jobs\LogJob; use Yii; use yii\base\UserException; use yii\helpers\Json; @@ -31,18 +32,25 @@ class JsonResponseFormatter extends \yii\web\JsonResponseFormatter 'patient', 'patient_mobile' ]; + private static $param = [ + 'param' => [], + 'result' => [], + 'url' => '', + ]; private $defaultErrorCode = -1; public static function formatData($data, $errno = 0, $msg = '') { + // if(empty($data)) $data = new \stdClass(); - if (empty($data)) { - $data = []; - } else { - if (array_key_exists('list', $data)) { - $data['list'] = self::aseEncode($data['list']); - } - } + // TODO 加密后续再完善 + // if (empty($data)) { + // $data = []; + // } else { + // if (array_key_exists('list', $data)) { + // $data['list'] = self::aseEncode($data['list']); + // } + // } $result['data'] = $data; $result['msg'] = $msg; $result['errcode'] = $errno; @@ -100,6 +108,30 @@ class JsonResponseFormatter extends \yii\web\JsonResponseFormatter $data = $response->data; } + if (Yii::$app->request->getMethod() == 'GET') { + self::$param['param'] = Yii::$app->request->get(); + } else { + self::$param['param'] = Yii::$app->request->post(); + } + + self::$param['result'] = $data; + self::$param['url'] = Yii::$app->request->getUrl(); + self::$param['type'] = $response->statusCode == 200? 0: 1; + self::$param['platform_type'] = Yii::$app->store == 0? 0: 1; + self::$param['platform_id'] = Yii::$app->store; + $op = get_device_type(); + self::$param['ip'] = $op['ip']; + self::$param['equipment'] = $op['equipment']; + self::$param['browser'] = $op['browser']; + if (Yii::$app->user->isGuest) { + self::$param['user_id'] = 0; + } else { + self::$param['user_id'] = Yii::$app->user->id; + } + \Yii::$app->queue->push(new LogJob([ + 'params' => self::$param + ])); + $response->data = self::formatData($data, $errcode, $msg); $response->content = Json::encode($response->data, $options); diff --git a/common/jobs/LogJob.php b/common/jobs/LogJob.php new file mode 100644 index 0000000..7a3794d --- /dev/null +++ b/common/jobs/LogJob.php @@ -0,0 +1,53 @@ +setRequest(); + $param = $this->params; + $opLogModel = new OpLog(); + $opLogModel->user_id = $param['user_id']; + $opLogModel->url = $param['url']; + $opLogModel->type = $param['type']; + $opLogModel->ip = $param['ip']; + $opLogModel->param = json_encode($param['param']); + $opLogModel->result = json_encode($param['result']); + $opLogModel->platform_type = $param['platform_type']; + $opLogModel->platform_id = $param['platform_id']; + $opLogModel->equipment = $param['equipment']; + $opLogModel->browser = $param['browser']; + $opLogModel->created_at = date('Y-m-d H:i:s'); + if (!$opLogModel->save()) { + echo '日志队列异常:'. "\r\n"; + return; + } + + PrescriptionLog::saveLog(1,'处方自动失效队列end'. json_encode($this->params)); + } catch (\Exception $exception) { + echo '日志队列异常:'. $exception->getMessage(). "\r\n"; + return; + } + } +} \ No newline at end of file diff --git a/common/models/OpLog.php b/common/models/OpLog.php new file mode 100644 index 0000000..b1f634e --- /dev/null +++ b/common/models/OpLog.php @@ -0,0 +1,21 @@ + TimestampBehavior::class, + 'attributes' => [ + ActiveRecord::EVENT_BEFORE_INSERT => ['created_at'], + ], + ], + ]; + } +} \ No newline at end of file diff --git a/common/modelsgii/OpLog.php b/common/modelsgii/OpLog.php new file mode 100644 index 0000000..1329cb2 --- /dev/null +++ b/common/modelsgii/OpLog.php @@ -0,0 +1,74 @@ + 'ID', + 'user_id' => 'User ID', + 'name' => 'Name', + 'mobile' => 'Mobile', + 'province' => 'Province', + 'city' => 'city', + 'area' => 'area', + 'region' => 'Region', + 'detail_address' => 'Detail Address', + 'is_default' => 'Is Default', + 'created_at' => 'Created At', + 'updated_at' => 'Updated At', + 'is_delete' => 'Is Delete', + ]; + } +}