package org.xyzh.system.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.xyzh.api.system.log.LoginLogService;
import org.xyzh.api.system.log.OperationLogService;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.core.page.PageParam;
import org.xyzh.common.core.page.PageRequest;
import org.xyzh.common.dto.system.TbSysLoginLog;
import org.xyzh.common.dto.system.TbSysOperationLog;

/**
 * @description 日志管理控制器
 * @filename LogController.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-10-30
 */
@RestController
@RequestMapping("/sys/log")
public class LogController {

    @Autowired
    private LoginLogService loginLogService;

    @Autowired
    private OperationLogService operationLogService;

    /**
     * @description 分页查询登录日志
     * 根据条件分页查询登录日志，superadmin可查看所有日志，其他用户只能查看本部门及子部门的日志
     * @param loginLog 查询条件
     * @param pageNum 页码（从1开始）
     * @param pageSize 每页大小
     * @return ResultDomain<TbSysLoginLog> 登录日志分页列表
     */
    @PostMapping("/login/page")
    public ResultDomain<TbSysLoginLog> getLoginLogPage(@RequestBody PageRequest<TbSysLoginLog> pageRequest) {
        
        return loginLogService.selectLoginLogPage(pageRequest.getFilter(), pageRequest.getPageParam());
    }

    /**
     * @description 分页查询操作日志
     * 根据条件分页查询操作日志，superadmin可查看所有日志，其他用户只能查看本部门及子部门的日志
     * @param operationLog 查询条件
     * @param pageNum 页码（从1开始）
     * @param pageSize 每页大小
     * @return ResultDomain<TbSysOperationLog> 操作日志分页列表
     */
    @PostMapping("/operation/page")
        public ResultDomain<TbSysOperationLog> getOperationLogPage(@RequestBody PageRequest<TbSysOperationLog> pageRequest) {
        
        return operationLogService.selectOperationLogPage(pageRequest.getFilter(), pageRequest.getPageParam());
    }
}

