// +---------------------------------------------------------------------- namespace app\common\repositories\system\admin; use app\common\dao\BaseDao; use app\common\dao\system\admin\LogDao; use app\common\repositories\BaseRepository; use app\Request; use think\db\exception\DataNotFoundException; use think\db\exception\DbException; use think\db\exception\ModelNotFoundException; use think\Model; /** * 管理员操作记录 */ class AdminLogRepository extends BaseRepository { /** * AdminLogRepository constructor. * @param LogDao $dao */ public function __construct(LogDao $dao) { $this->dao = $dao; } /** * @param $merId * @param array $where * @param $page * @param $limit * @return array * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException * @author xaboy * @day 2020-04-16 */ public function lst($merId, array $where, $page, $limit) { $query = $this->dao->search($where, $merId)->with([ 'menu' => function($query){ $query->field('menu_name,route'); } ]); $count = $query->count($this->dao->getPk()); $list = $query->setOption('field', [])->field(['create_time', 'log_id', 'admin_name', 'route', 'method', 'url', 'ip', 'admin_id']) ->page($page, $limit)->order('create_time DESC')->select(); return compact('count', 'list'); } /** * @param Request $request * @param int $merId * @return BaseDao|Model * @author xaboy * @day 2020-04-15 */ public function addLog(Request $request, int $merId = 0) { return $this->create($merId, self::parse($request)); } /** * @param int $merId * @param array $data * @return BaseDao|Model * @author xaboy * @day 2020-04-16 */ public function create(int $merId, array $data) { $data['mer_id'] = $merId; return $this->dao->create($data); } /** * @param Request $request * @return array * @author xaboy * @day 2020-04-16 */ public static function parse(Request $request) { return [ 'admin_id' => $request->adminId(), 'admin_name' => $request->adminInfo()->real_name ?: '未定义', 'route' => $request->rule()->getName(), 'ip' => $request->ip(), 'url' => $request->url(true), 'method' => $request->method() ]; } }