AsyncSystem.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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 AsyncSystem extends AbstractOperate {
  17. /**
  18. * 请求内容
  19. * @var
  20. */
  21. public $requestContent;
  22. /**
  23. * 响应内容
  24. * @var
  25. */
  26. public $responseContent;
  27. /**
  28. * 操作类型
  29. * 调用[call],被调用[called]
  30. * @var
  31. */
  32. public $optType;
  33. /**
  34. * 接口名称
  35. * @var
  36. */
  37. public $apiName;
  38. /**
  39. * 对象编号
  40. * @var
  41. */
  42. public $optTargetName;
  43. /**
  44. * @var
  45. */
  46. public $requestRoute;
  47. /**
  48. * @var array
  49. */
  50. public $columns = [];
  51. /**
  52. * Factory constructor.
  53. * @param array $config
  54. */
  55. public function __construct($config = []) {
  56. parent::__construct($config);
  57. if(!$this->logModel){
  58. $this->logModel = LogSystem::class;
  59. }
  60. if(!$this->logForm){
  61. $this->logForm = LogSystemForm::class;
  62. }
  63. }
  64. /**
  65. * @param $name
  66. * @return $this
  67. */
  68. public function setApiName($name){
  69. $this->apiName = $name;
  70. return $this;
  71. }
  72. /**
  73. * @param $name
  74. * @return $this
  75. */
  76. public function setOptTargetName($name){
  77. $this->optTargetName = $name;
  78. return $this;
  79. }
  80. /**
  81. * @param $route
  82. * @return $this
  83. */
  84. public function setRequestRoute($route){
  85. $this->requestRoute = $route;
  86. return $this;
  87. }
  88. /**
  89. * @param $content
  90. * @return $this
  91. */
  92. public function setRequestContent($content){
  93. $this->requestContent = Json::encode($content);
  94. return $this;
  95. }
  96. /**
  97. * @param $content
  98. * @return $this
  99. */
  100. public function setResponseContent($content){
  101. $this->responseContent = Json::encode($content);
  102. return $this;
  103. }
  104. /**
  105. * @param array $params
  106. * @return $this
  107. */
  108. public function setColumn(array $params = []){
  109. if(isset($params['apiName']) && !empty($params['apiName'])){
  110. $this->apiName = $params['apiName'];
  111. }
  112. $period = Period::instance();
  113. $periodNum = $period->getNowPeriodNum();
  114. $this->columns[] = [
  115. 'user_agent' => null,
  116. 'created_at' => intval(Date::nowTime()),
  117. 'period_num' => intval($periodNum),
  118. 'request_content' => $this->requestContent,
  119. 'response_content' => $this->responseContent,
  120. 'ip' => null,
  121. 'request_route' => $this->requestRoute ? $this->requestRoute : Yii::$app->requestedRoute,
  122. 'is_batch' => $this->_isBatch ? 1 : 0,
  123. 'device' => null,
  124. 'opt_obj_id' => isset($params['userId']) ? $params['userId'] : null,
  125. 'opt_obj_name' => isset($params['userName']) ? $params['userName'] : null,
  126. 'opt_type' => 'called',
  127. 'opt_target_name' => $this->apiName,
  128. 'opt_user' => isset($params['optUser']) ? $params['optUser'] : null,
  129. ];
  130. return $this;
  131. }
  132. }