www.lightcourse.com/app/admin/controller/Adminlog.php

193 lines
7.2 KiB
PHP

<?php
namespace app\admin\controller;
use think\facade\View;
use think\facade\Db;
use think\facade\Lang;
/**
* ============================================================================
* 联课教育商城系统
* ============================================================================
* 版权所有 2022 刻羽互动科技有限公司,并保留所有权利。
* 网站地址: http://www.o1h.cn
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
* 不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* 控制器
*/
class Adminlog extends AdminControl
{
const EXPORT_SIZE = 5000;
public function initialize()
{
parent::initialize(); // TODO: Change the autogenerated stub
Lang::load(base_path() . 'admin/lang/'.config('lang.default_lang').'/adminlog.lang.php');
}
/**
* 日志列表
*
*/
public function loglist()
{
$condition = array();
$time1='';
$time2='';
if (!empty(input('param.admin_name'))) {
$condition[] = array('admin_name','=',input('param.admin_name'));
}
if (!empty(input('param.time_from'))) {
$time1 = strtotime(input('param.time_from'));
}
if (!empty(input('param.time_to'))) {
$time2 = strtotime(input('param.time_to'));
if ($time2 !== false)
$time2 = $time2 + 86400;
}
if ($time1 && $time2) {
$condition[] = array('adminlog_time','between', array($time1, $time2));
}
elseif ($time1) {
$condition[] = array('adminlog_time','>=', $time1);
}
elseif ($time2) {
$condition[] = array('adminlog_time','<=', $time2);
}
$adminlog_model= model('adminlog');
$order='adminlog_id desc';
$adminlog_list = $adminlog_model->getAdminlogList($condition,10,$order);
View::assign('adminlog_list', $adminlog_list);
View::assign('show_page', $adminlog_model->page_info->render());
View::assign('filtered', $condition ? 1 : 0); //是否有查询条件
$this->setAdminCurItem('loglist');
return View::fetch();
}
/**
* 删除日志
*
*/
public function list_del()
{
$adminlog_id = input('param.adminlog_id');
$adminlog_id_array = ds_delete_param($adminlog_id);
if ($adminlog_id_array == FALSE) {
ds_json_encode('10001', lang('param_error'));
}
$condition = array();
$condition[] = array('adminlog_id','in',$adminlog_id_array);
$adminlog_model=model('adminlog');
if (!$adminlog_model->delAdminlog($condition)) {
$this->log(lang('ds_del').lang('admin_log'), 0);
ds_json_encode('10001', lang('ds_common_del_fail'));
}
else {
$this->log(lang('ds_del').lang('admin_log'), 1);
ds_json_encode('10000', lang('ds_common_del_succ'));
}
}
/**
* 导出第一步
*/
public function export_step1()
{
$time1='';
$time2='';
$condition = array();
if (!empty(input('param.admin_name'))) {
$condition[] = array('admin_name','=',input('param.admin_name'));
}
if (!empty(input('param.time_from'))) {
$time1 = strtotime(input('param.time_from'));
}
if (!empty(input('param.time_to'))) {
$time2 = strtotime(input('param.time_to'));
if ($time2 !== false)
$time2 = $time2 + 86400;
}
if ($time1 && $time2) {
$condition[] = array('createtime','between', array($time1, $time2));
}
elseif ($time1) {
$condition[] = array('createtime','>=', $time1);
}
elseif ($time2) {
$condition[] = array('createtime','<=', $time2);
}
if (!is_numeric(input('param.page'))) {
$adminlog_model=model('adminlog');
$count = $adminlog_model->getAdminlogCount($condition);
$export_list = array();
if ($count > self::EXPORT_SIZE) { //显示下载链接
$page = ceil($count / self::EXPORT_SIZE);
for ($i = 1; $i <= $page; $i++) {
$limit1 = ($i - 1) * self::EXPORT_SIZE + 1;
$limit2 = $i * self::EXPORT_SIZE > $count ? $count : $i * self::EXPORT_SIZE;
$export_list[$i] = $limit1 . ' ~ ' . $limit2;
}
View::assign('export_list', $export_list);
return View::fetch('/public/excel');
}
else { //如果数量小,直接下载
$data = Db::name('adminlog')->where($condition)->order('adminlog_id desc')->limit(self::EXPORT_SIZE)->select()->toArray();
$this->createExcel($data);
}
}
else { //下载
$limit1 = (input('param.page') - 1) * self::EXPORT_SIZE;
$limit2 = self::EXPORT_SIZE;
$data = Db::name('adminlog')->where($condition)->order('adminlog_id desc')->limit($limit1,$limit2)->select()->toArray();
$this->createExcel($data);
}
}
/**
* 生成excel
*
* @param array $data
*/
private function createExcel($data = array())
{
Lang::load(base_path() .'admin/lang/'.config('lang.default_lang').'/export.lang.php');
$excel_obj = new \excel\Excel();
$excel_data = array();
//设置样式
$excel_obj->setStyle(array(
'id' => 's_title', 'Font' => array('FontName' => lang('ds_song_typeface'), 'Size' => '12', 'Bold' => '1')
));
//header
$excel_data[0][] = array('styleid' => 's_title', 'data' => lang('admin_log_man'));
$excel_data[0][] = array('styleid' => 's_title', 'data' => lang('admin_log_do'));
$excel_data[0][] = array('styleid' => 's_title', 'data' => lang('admin_log_dotime'));
$excel_data[0][] = array('styleid' => 's_title', 'data' => 'IP');
foreach ((array)$data as $k => $v) {
$tmp = array();
$tmp[] = array('data' => $v['admin_name']);
$tmp[] = array('data' => $v['adminlog_content']);
$tmp[] = array('data' => date('Y-m-d H:i:s', $v['adminlog_time']));
$tmp[] = array('data' => $v['adminlog_ip']);
$excel_data[] = $tmp;
}
$excel_data = $excel_obj->charset($excel_data, CHARSET);
$excel_obj->addArray($excel_data);
$excel_obj->addWorksheet($excel_obj->charset(lang('admin_log'), CHARSET));
$excel_obj->generateXML($excel_obj->charset(lang('admin_log'), CHARSET) . input('param.page') . '-' . date('Y-m-d-H', TIMESTAMP));
}
protected function getAdminItemList()
{
$menu_array = array(
array(
'name' => 'loglist',
'text' => lang('admin_log'),
'url' => url('Adminlog/loglist')
)
);
return $menu_array;
}
}