From ae763025fc43b7b51dfcb8e31e77aa1ab9d61f46 Mon Sep 17 00:00:00 2001 From: lq Date: Wed, 4 Dec 2024 09:28:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=97=A5=E5=BF=97=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/foundation/JsonResponseFormatter.php | 46 ++++++++++++-- common/jobs/LogJob.php | 53 ++++++++++++++++ common/models/OpLog.php | 21 ++++++ common/modelsgii/OpLog.php | 74 ++++++++++++++++++++++ 4 files changed, 187 insertions(+), 7 deletions(-) create mode 100644 common/jobs/LogJob.php create mode 100644 common/models/OpLog.php create mode 100644 common/modelsgii/OpLog.php 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', + ]; + } +}