Log.php 3.7 KB

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