SystemLog.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. /*
  3. * FecShop file.
  4. *
  5. * @link http://www.fecshop.com/
  6. * @copyright Copyright (c) 2016 FecShop Software LLC
  7. * @license http://www.fecshop.com/license/
  8. */
  9. namespace fecshop\services\admin;
  10. //use fecshop\models\mysqldb\cms\StaticBlock;
  11. use Yii;
  12. use fec\helpers\CUrl;
  13. use fecshop\services\Service;
  14. /**
  15. * @author Terry Zhao <2358269014@qq.com>
  16. * @since 1.0
  17. */
  18. class SystemLog extends Service
  19. {
  20. public $enableLog = true;
  21. protected $_modelName = '\fecshop\models\mysqldb\admin\SystemLog';
  22. protected $_model;
  23. /**
  24. * language attribute.
  25. */
  26. protected $_lang_attr = [
  27. ];
  28. public function init()
  29. {
  30. parent::init();
  31. list($this->_modelName, $this->_model) = Yii::mapGet($this->_modelName);
  32. }
  33. public function getSystemLogModel(){
  34. return $this->_model;
  35. }
  36. public function getPrimaryKey()
  37. {
  38. return 'id';
  39. }
  40. public function getByPrimaryKey($primaryKey)
  41. {
  42. if ($primaryKey) {
  43. $one = $this->_model->findOne($primaryKey);
  44. foreach ($this->_lang_attr as $attrName) {
  45. if (isset($one[$attrName])) {
  46. $one[$attrName] = unserialize($one[$attrName]);
  47. }
  48. }
  49. return $one;
  50. } else {
  51. return new $this->_modelName();
  52. }
  53. }
  54. /*
  55. * example filter:
  56. * [
  57. * 'numPerPage' => 20,
  58. * 'pageNum' => 1,
  59. * 'orderBy' => ['_id' => SORT_DESC, 'sku' => SORT_ASC ],
  60. 'where' => [
  61. ['>','price',1],
  62. ['<=','price',10]
  63. * ['sku' => 'uk10001'],
  64. * ],
  65. * 'asArray' => true,
  66. * ]
  67. */
  68. public function coll($filter = '')
  69. {
  70. $query = $this->_model->find();
  71. $query = Yii::$service->helper->ar->getCollByFilter($query, $filter);
  72. $coll = $query->all();
  73. if (!empty($coll)) {
  74. foreach ($coll as $k => $one) {
  75. foreach ($this->_lang_attr as $attr) {
  76. $one[$attr] = $one[$attr] ? unserialize($one[$attr]) : '';
  77. }
  78. $coll[$k] = $one;
  79. }
  80. }
  81. //var_dump($one);
  82. return [
  83. 'coll' => $coll,
  84. 'count'=> $query->limit(null)->offset(null)->count(),
  85. ];
  86. }
  87. # 保存系统日志。
  88. public function save(){
  89. if (!$this->enableLog) {
  90. return false;
  91. }
  92. $systemLog = $this->_model;
  93. $user = Yii::$app->user->identity;
  94. if($user){
  95. $url_key = '/' . Yii::$app->controller->module->id . '/' . Yii::$app->controller->id . '/' . Yii::$app->controller->action->id;
  96. $username = $user['username'];
  97. $person = $user['person'];
  98. $currentData = date('Y-m-d H:i:s');
  99. $url = CUrl::getCurrentUrl();
  100. $systemLog->account = $username;
  101. $systemLog->person = $person;
  102. $systemLog->created_at = $currentData;
  103. $systemLog->url = $url;
  104. $systemLog->url_key = $url_key;
  105. $systemLog->menu = $this->getMenuByUrlKey($url_key);
  106. $systemLog->save();
  107. }
  108. }
  109. public function getMenuByUrlKey($url_key){
  110. if(!$url_key)
  111. return null;
  112. $menuArr = Yii::$service->admin->urlKey->getUrlKeyAndLabelArr();
  113. return isset($menuArr[$url_key]) ? $menuArr[$url_key] : null;
  114. }
  115. }