ApiSystem.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sunmoon<i@liming.me>
  5. * Date: 2019-08-01
  6. * Time: 09:51
  7. */
  8. namespace common\libs\logging\system;
  9. use common\helpers\Date;
  10. use common\libs\logging\operate\AbstractOperate;
  11. use common\models\forms\LogSystemForm;
  12. use common\models\LogSystem;
  13. use common\models\Period;
  14. use Yii;
  15. use yii\helpers\Json;
  16. class ApiSystem extends AbstractOperate {
  17. const OPT_TYPE_CALL = 'call';
  18. const OPT_TYPE_CALLED = 'called';
  19. /**
  20. * 请求内容
  21. * @var
  22. */
  23. public $requestContent;
  24. /**
  25. * 响应内容
  26. * @var
  27. */
  28. public $responseContent;
  29. /**
  30. * 操作类型
  31. * 调用[call],被调用[called]
  32. * @var
  33. */
  34. public $optType;
  35. /**
  36. * 接口名称
  37. * @var
  38. */
  39. public $apiName;
  40. /**
  41. * 对象编号
  42. * @var
  43. */
  44. public $optTargetName;
  45. /**
  46. * @var
  47. */
  48. public $requestRoute;
  49. /**
  50. * @var array
  51. */
  52. public $columns = [];
  53. /**
  54. * Factory constructor.
  55. * @param array $config
  56. */
  57. public function __construct($config = []) {
  58. parent::__construct($config);
  59. if(!$this->logModel){
  60. $this->logModel = LogSystem::class;
  61. }
  62. if(!$this->logForm){
  63. $this->logForm = LogSystemForm::class;
  64. }
  65. }
  66. /**
  67. * @param $name
  68. * @return $this
  69. */
  70. public function setApiName($name){
  71. $this->apiName = $name;
  72. return $this;
  73. }
  74. /**
  75. * @param $name
  76. * @return $this
  77. */
  78. public function setOptTargetName($name){
  79. $this->optTargetName = $name;
  80. return $this;
  81. }
  82. /**
  83. * @param $route
  84. * @return $this
  85. */
  86. public function setRequestRoute($route){
  87. $this->requestRoute = $route;
  88. return $this;
  89. }
  90. /**
  91. * @param $content
  92. * @return $this
  93. */
  94. public function setRequestContent($content){
  95. $this->requestContent = Json::encode($content);
  96. return $this;
  97. }
  98. /**
  99. * @param $content
  100. * @return $this
  101. */
  102. public function setResponseContent($content){
  103. $this->responseContent = Json::encode($content);
  104. return $this;
  105. }
  106. /**
  107. * @param array $params
  108. * @return $this
  109. */
  110. public function setColumn(array $params = []){
  111. if(isset($params['apiName']) && !empty($params['apiName'])){
  112. $this->apiName = $params['apiName'];
  113. }
  114. if($params['optType'] == self::OPT_TYPE_CALL){
  115. $this->optType = self::OPT_TYPE_CALL;
  116. } else {
  117. $this->optType = self::OPT_TYPE_CALLED;
  118. }
  119. $period = Period::instance();
  120. $periodNum = $period->getNowPeriodNum();
  121. $this->columns[] = [
  122. 'user_agent' => Yii::$app->request->getUserAgent(),
  123. 'created_at' => intval(Date::nowTime()),
  124. 'period_num' => intval($periodNum),
  125. 'request_content' => $this->requestContent,
  126. 'response_content' => $this->responseContent,
  127. 'ip' => Yii::$app->request->getUserIP(),
  128. 'request_route' => $this->requestRoute ? $this->requestRoute : Yii::$app->requestedRoute,
  129. 'is_batch' => $this->_isBatch ? 1 : 0,
  130. 'device' => null,
  131. 'opt_obj_id' => isset($params['userId']) ? $params['userId'] : null,
  132. 'opt_obj_name' => isset($params['userName']) ? $params['userName'] : null,
  133. 'opt_type' => $this->optType,
  134. 'opt_target_name' => $this->apiName,
  135. 'opt_user' => isset($params['optUser']) ? $params['optUser'] : null,
  136. ];
  137. return $this;
  138. }
  139. }