92 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						||
// +----------------------------------------------------------------------
 | 
						||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
 | 
						||
// +----------------------------------------------------------------------
 | 
						||
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
 | 
						||
// +----------------------------------------------------------------------
 | 
						||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
 | 
						||
// +----------------------------------------------------------------------
 | 
						||
// | Author: CRMEB Team <admin@crmeb.com>
 | 
						||
// +----------------------------------------------------------------------
 | 
						||
 | 
						||
namespace app\services\system\log;
 | 
						||
 | 
						||
 | 
						||
use app\dao\system\log\SystemLogDao;
 | 
						||
use app\services\BaseServices;
 | 
						||
use app\services\system\admin\SystemAdminServices;
 | 
						||
use app\services\system\SystemMenusServices;
 | 
						||
 | 
						||
/**
 | 
						||
 * 系统日志
 | 
						||
 * Class SystemLogServices
 | 
						||
 * @package app\services\system\log
 | 
						||
 * @method deleteLog() 定期删除日志
 | 
						||
 */
 | 
						||
class SystemLogServices extends BaseServices
 | 
						||
{
 | 
						||
 | 
						||
    /**
 | 
						||
     * 构造方法
 | 
						||
     * SystemLogServices constructor.
 | 
						||
     * @param SystemLogDao $dao
 | 
						||
     */
 | 
						||
    public function __construct(SystemLogDao $dao)
 | 
						||
    {
 | 
						||
        $this->dao = $dao;
 | 
						||
    }
 | 
						||
 | 
						||
    /**
 | 
						||
     * 记录访问日志
 | 
						||
     * @param int $adminId
 | 
						||
     * @param string $adminName
 | 
						||
     * @param string $type
 | 
						||
     * @return bool
 | 
						||
     */
 | 
						||
    public function recordAdminLog(int $adminId, string $adminName, string $type)
 | 
						||
    {
 | 
						||
        $request = app()->request;
 | 
						||
        $module = app('http')->getName();
 | 
						||
        $rule = trim(strtolower($request->rule()->getRule()));
 | 
						||
 | 
						||
        /** @var SystemMenusServices $service */
 | 
						||
        $service = app()->make(SystemMenusServices::class);
 | 
						||
        $data = [
 | 
						||
            'method' => $module,
 | 
						||
            'admin_id' => $adminId,
 | 
						||
            'add_time' => time(),
 | 
						||
            'admin_name' => $adminName,
 | 
						||
            'path' => $rule,
 | 
						||
            'page' => $service->getVisitName($rule) ?: '未知',
 | 
						||
            'ip' => $request->ip(),
 | 
						||
            'type' => $type
 | 
						||
        ];
 | 
						||
        if ($this->dao->save($data)) {
 | 
						||
            return true;
 | 
						||
        } else {
 | 
						||
            return false;
 | 
						||
        }
 | 
						||
    }
 | 
						||
 | 
						||
    /**
 | 
						||
     * 获取系统日志列表
 | 
						||
     * @param array $where
 | 
						||
     * @return array
 | 
						||
     * @throws \think\db\exception\DataNotFoundException
 | 
						||
     * @throws \think\db\exception\DbException
 | 
						||
     * @throws \think\db\exception\ModelNotFoundException
 | 
						||
     */
 | 
						||
    public function getLogList(array $where, int $level)
 | 
						||
    {
 | 
						||
        [$page, $limit] = $this->getPageValue();
 | 
						||
        if (!$where['admin_id']) {
 | 
						||
            /** @var SystemAdminServices $service */
 | 
						||
            $service = app()->make(SystemAdminServices::class);
 | 
						||
            $where['admin_id'] = $service->getAdminIds($level);
 | 
						||
        }
 | 
						||
        $list = $this->dao->getLogList($where, $page, $limit);
 | 
						||
        $count = $this->dao->count($where);
 | 
						||
        return compact('list', 'count');
 | 
						||
    }
 | 
						||
}
 |