<?php
// +----------------------------------------------------------------------
// | ThinkAdmin
// +----------------------------------------------------------------------
// | 版权所有 2014~2017 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
// +----------------------------------------------------------------------
// | 官方网站: http://think.ctolog.com
// +----------------------------------------------------------------------
// | 开源协议 ( https://mit-license.org )
// +----------------------------------------------------------------------
// | github开源项目:https://github.com/zoujingli/ThinkAdmin
// +----------------------------------------------------------------------
namespace app\admin\controller;
use controller\BasicAdmin;
use service\DataService;
use think\Db;
/**
* 系统日志管理
* Class Log
* @package app\admin\controller
* @author Anyon <zoujingli@qq.com>
* @date 2017/02/15 18:12
*/
class Log extends BasicAdmin
{
/**
* 指定当前数据表
* @var string
*/
public $table = 'SystemLog';
/**
* 日志列表
* @return array|string
* @throws \think\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function index()
{
// 日志行为类别
$actions = Db::name($this->table)->group('action')->column('action');
$this->assign('actions', $actions);
// 日志数据库对象
list($this->title, $get) = ['系统操作日志', $this->request->get()];
$db = Db::name($this->table)->order('id desc');
foreach (['action', 'content', 'username'] as $key) {
(isset($get[$key]) && $get[$key] !== '') && $db->whereLike($key, "%{$get[$key]}%");
}
if (isset($get['create_at']) && $get['create_at'] !== '') {
list($start, $end) = explode(' - ', $get['create_at']);
$db->whereBetween('create_at', ["{$start} 00:00:00", "{$end} 23:59:59"]);
}
return parent::_list($db);
}
/**
* 短信发送记录
* @return array|string
* @throws \think\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function sms()
{
// 日志数据库对象
$this->title = '短信发送日志';
$get = $this->request->get();
$db = Db::name('MemberSmsHistory');
foreach (['phone', 'content', 'result'] as $key) {
(isset($get[$key]) && $get[$key] !== '') && $db->whereLike($key, "%{$get[$key]}%");
}
if (isset($get['date']) && $get['date'] !== '') {
list($start, $end) = explode(' - ', $get['date']);
$db->whereBetween('create_at', ["{$start} 00:00:00", "{$end} 23:59:59"]);
}
return parent::_list($db->order('id desc'));
}
/**
* 日志删除操作
* @throws \think\Exception
* @throws \think\exception\PDOException
*/
public function del()
{
if (DataService::update($this->table)) {
$this->success("日志删除成功!", '');
}
$this->error("日志删除失败, 请稍候再试!");
}
/**
* 列表数据处理
* @param array $data
* @throws \Exception
*/
protected function _index_data_filter(&$data)
{
$ip = new \Ip2Region();
foreach ($data as &$vo) {
$result = $ip->btreeSearch($vo['ip']);
$vo['isp'] = isset($result['region']) ? $result['region'] : '';
$vo['isp'] = str_replace(['内网IP', '0', '|'], '', $vo['isp']);
}
}
}