Adminlog.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. namespace app\user\controller;
  3. use think\Lang;
  4. class Adminlog extends AdminControl
  5. {
  6. const EXPORT_SIZE = 5000;
  7. public function _initialize()
  8. {
  9. parent::_initialize(); // TODO: Change the autogenerated stub
  10. Lang::load(APP_PATH . 'admin/lang/' . config('default_lang') . '/adminlog.lang.php');
  11. }
  12. /**
  13. * 日志列表
  14. *
  15. */
  16. public function index()
  17. {
  18. $condition = array();
  19. $time1 = '';
  20. $time2 = '';
  21. if (!empty(input('param.admin_name'))) {
  22. $condition['admin_name'] = input('param.admin_name');
  23. }
  24. if (!empty(input('param.time_from'))) {
  25. $time1 = strtotime(input('param.time_from'));
  26. }
  27. if (!empty(input('param.time_to'))) {
  28. $time2 = strtotime(input('param.time_to'));
  29. if ($time2 !== false)
  30. $time2 = $time2 + 86400;
  31. }
  32. if ($time1 && $time2) {
  33. $condition['createtime'] = array('between', array($time1, $time2));
  34. } elseif ($time1) {
  35. $condition['createtime'] = array('egt', $time1);
  36. } elseif ($time2) {
  37. $condition['createtime'] = array('elt', $time2);
  38. }
  39. $list = db('adminlog')->where($condition)->order('adminlog_id desc')->paginate(9, false, ['query' => request()->param()]);
  40. $page = $list->render();
  41. $allpower = $this->qxhans();
  42. $this->assign('allpower',$allpower);
  43. $this->assign('list', $list);
  44. $this->assign('page', $page);
  45. $this->setAdminCurItem('loglist');
  46. return $this->fetch();
  47. }
  48. /**
  49. * 删除日志
  50. *
  51. */
  52. public function list_del()
  53. {
  54. $adminlog_id = input('param.adminlog_id');
  55. $adminlog_id_array = ds_delete_param($adminlog_id);
  56. if ($adminlog_id_array == FALSE) {
  57. $this->error(lang('param_error'));
  58. }
  59. $condition = array();
  60. $condition['adminlog_id'] = array('in', $adminlog_id_array);
  61. if (db('adminlog')->where($condition)->delete()) {
  62. $this->log(lang('ds_adminlog').'-'.lang('del_succ').'->' .lang('ds_number_id'). '[' . $adminlog_id . ']', null);
  63. $this->success(lang('admin_log_del_succ'), url('adminlog/index'));
  64. } else {
  65. $this->error(lang('admin_log_del_fail'));
  66. }
  67. }
  68. /**
  69. * 导出第一步
  70. */
  71. public function export_step1()
  72. {
  73. $time1 = '';
  74. $time2 = '';
  75. $condition = array();
  76. if (!empty(input('param.admin_name'))) {
  77. $condition['admin_name'] = input('param.admin_name');
  78. }
  79. if (!empty(input('param.time_from'))) {
  80. $time1 = strtotime(input('param.time_from'));
  81. }
  82. if (!empty(input('param.time_to'))) {
  83. $time2 = strtotime(input('param.time_to'));
  84. if ($time2 !== false)
  85. $time2 = $time2 + 86400;
  86. }
  87. if ($time1 && $time2) {
  88. $condition['createtime'] = array('between', array($time1, $time2));
  89. } elseif ($time1) {
  90. $condition['createtime'] = array('egt', $time1);
  91. } elseif ($time2) {
  92. $condition['createtime'] = array('elt', $time2);
  93. }
  94. if (!is_numeric(input('param.curpage'))) {
  95. $count = db('adminlog')->where($condition)->count();
  96. $array = array();
  97. if ($count > self::EXPORT_SIZE) { //显示下载链接
  98. $page = ceil($count / self::EXPORT_SIZE);
  99. for ($i = 1; $i <= $page; $i++) {
  100. $limit1 = ($i - 1) * self::EXPORT_SIZE + 1;
  101. $limit2 = $i * self::EXPORT_SIZE > $count ? $count : $i * self::EXPORT_SIZE;
  102. $array[$i] = $limit1 . ' ~ ' . $limit2;
  103. }
  104. $this->assign('list', $array);
  105. $this->assign('murl', url('adminlog/list'));
  106. return $this->fetch('excel');
  107. } else { //如果数量小,直接下载
  108. $data = db('adminlog')->where($condition)->order('adminlog_id desc')->limit(self::EXPORT_SIZE)->select();
  109. $this->createExcel($data);
  110. }
  111. } else { //下载
  112. $limit1 = (input('param.curpage') - 1) * self::EXPORT_SIZE;
  113. $limit2 = self::EXPORT_SIZE;
  114. $data = db('adminlog')->where($condition)->order('adminlog_id desc')->limit("{$limit1},{$limit2}")->select();
  115. $this->createExcel($data);
  116. }
  117. }
  118. /**
  119. * 生成excel
  120. *
  121. * @param array $data
  122. */
  123. private function createExcel($data = array())
  124. {
  125. Lang::load(APP_PATH . 'admin/lang/zh-cn/export.php');
  126. $excel_obj = new \excel\Excel();
  127. $excel_data = array();
  128. //设置样式
  129. $excel_obj->setStyle(array(
  130. 'id' => 's_title', 'Font' => array('FontName' => '宋体', 'Size' => '12', 'Bold' => '1')
  131. ));
  132. //header
  133. $excel_data[0][] = array('styleid' => 's_title', 'data' => lang('admin_log_man'));
  134. $excel_data[0][] = array('styleid' => 's_title', 'data' => lang('admin_log_do'));
  135. $excel_data[0][] = array('styleid' => 's_title', 'data' => lang('admin_log_dotime'));
  136. $excel_data[0][] = array('styleid' => 's_title', 'data' => 'IP');
  137. foreach ((array)$data as $k => $v) {
  138. $tmp = array();
  139. $tmp[] = array('data' => $v['admin_name']);
  140. $tmp[] = array('data' => $v['content']);
  141. $tmp[] = array('data' => date('Y-m-d H:i:s', $v['createtime']));
  142. $tmp[] = array('data' => $v['ip']);
  143. $excel_data[] = $tmp;
  144. }
  145. $excel_data = $excel_obj->charset($excel_data, CHARSET);
  146. $excel_obj->addArray($excel_data);
  147. $excel_obj->addWorksheet($excel_obj->charset(lang('admin_log'), CHARSET));
  148. $excel_obj->generateXML($excel_obj->charset(lang('admin_log'), CHARSET) . input('param.curpage') . '-' . date('Y-m-d-H', time()));
  149. }
  150. protected function getAdminItemList()
  151. {
  152. $menu_array = array(
  153. array(
  154. 'name' => 'loglist',
  155. 'text' => lang('admin_log'),
  156. 'url' => url('adminlog/loglist')
  157. )
  158. );
  159. return $menu_array;
  160. }
  161. }