Log.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | [ WE CAN DO IT MORE SIMPLE ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2018-2020 rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: TABLE ME
  8. // +----------------------------------------------------------------------
  9. // | Date: 2020-08-31 20:43
  10. // +----------------------------------------------------------------------
  11. namespace app\system\controller\v1;
  12. use app\BaseController;
  13. use app\model\system\SystemAdmin;
  14. use app\model\system\SystemLog;
  15. use library\services\UtilService;
  16. use library\utils\IpLocation;
  17. class Log extends BaseController
  18. {
  19. public function list()
  20. {
  21. $pageSize = 50;
  22. $post = UtilService::getMore([
  23. ['page',1],
  24. ['data',''],
  25. ['action',''],
  26. ['username',''],
  27. ['ip','']
  28. ]);
  29. list($pageCount,$data) = (new SystemLog())
  30. ->getList($post['page'],[function($query) use($post){
  31. if($post['data'] == "lately7") {
  32. $sTime = date('Y-m-d',strtotime('-7 day'));
  33. $eTime = date('Y-m-d');
  34. $query->whereBetweenTime('time',$sTime,$eTime);
  35. }else if($post['data'] == "lately30") {
  36. $sTime = date('Y-m-d',strtotime('-30 day'));
  37. $eTime = date('Y-m-d');
  38. $query->whereBetweenTime('time',$sTime,$eTime);
  39. }else if($post['data'] == "today") {
  40. $query->whereTime('time','today');
  41. }else if($post['data'] == "yesterday") {
  42. $query->whereTime('time','yesterday');
  43. } else if($post['data'] == "month") {
  44. $query->whereMonth('time');
  45. }else if($post['data'] == "year") {
  46. $query->whereYear('time');
  47. } else {
  48. $split = explode('-',$post['data']);
  49. if(count($split) == 2) {
  50. $sTime = $split[0];
  51. $eTime = $split[1];
  52. $query->whereBetweenTime('time', $sTime, $eTime);
  53. }
  54. }
  55. if(!empty($post['username'])) {
  56. $query->whereLike('admin_username',"%{$post['username']}%");
  57. }
  58. if(!empty($post['action'])) {
  59. $query->whereLike('action',"%{$post['action']}%");
  60. }
  61. if(!empty($post['ip'])) {
  62. $query->whereLike('ip',"%{$post['ip']}%");
  63. }
  64. }
  65. ],$pageSize,'*','id desc');
  66. //echo (new SystemLog)->getLastSql();
  67. $result = UtilService::getParam([
  68. 'id',
  69. 'ip',
  70. 'admin_username',
  71. 'action',
  72. 'title',
  73. ['time','time','date("Y-m-d H:i:s",$1)'],
  74. ['ipara','ip',function($item){
  75. return (new IpLocation())->getlocation($item)['country'];
  76. }]
  77. ],$data);
  78. return app('json')->success([
  79. 'list' => $result,
  80. 'pageCount' => $pageCount,
  81. 'pageSize' => $pageSize,
  82. 'page' => $post['page']
  83. ]);
  84. }
  85. /**
  86. * 清理一个月之前的数据
  87. */
  88. public function delMonth(){
  89. $time = strtotime('- 1 month');
  90. SystemLog::where('time','<',$time)->delete();
  91. return app('json')->success('清理成功');
  92. }
  93. }