package cn.meowrain.aioj.backend.upms.biz.controller;

import cn.hutool.core.collection.CollUtil;
import cn.meowrain.aioj.backend.framework.core.web.Result;
import cn.meowrain.aioj.backend.framework.core.web.Results;
import cn.meowrain.aioj.backend.upms.api.dto.SysLogDTO;
import cn.meowrain.aioj.backend.upms.api.entity.SysLog;
import cn.meowrain.aioj.backend.upms.biz.service.SysLogService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/log")
@Tag(description = "log", name = "日志管理模块")
@RequiredArgsConstructor
public class SysLogController {

    private final SysLogService sysLogService;


    /**
     * 分页查询系统日志
     *
     * @param page   分页参数对象
     * @param sysLog 系统日志查询条件
     * @return 包含分页结果的响应对象
     */
    @GetMapping("/page")
    @Operation(summary = "分页查询系统日志", description = "分页查询系统日志")
    public Result<Page> getLogPage(@ParameterObject Page page, @ParameterObject SysLogDTO sysLog) {
        return Results.success(sysLogService.getLogPage(page, sysLog));
    }

    /**
     * 批量删除日志
     *
     * @param ids 要删除的日志ID数组
     * @return 操作结果，成功返回success，失败返回false
     */
    @DeleteMapping
//    @HasPermission("sys_log_del")
    @Operation(summary = "批量删除日志", description = "批量删除日志")
    public Result<Boolean> removeByIds(@RequestBody Long[] ids) {
        return Results.success(sysLogService.removeBatchByIds(CollUtil.toList(ids)));
    }

    /**
     * 保存日志
     *
     * @param sysLog 日志实体
     * @return 操作结果，成功返回success，失败返回false
     */

    @PostMapping("/save")
    @Operation(summary = "保存日志", description = "保存日志")
    public Result<Boolean> saveLog(@Valid @RequestBody SysLog sysLog) {
        return Results.success(sysLogService.saveLog(sysLog));
    }

    /**
     * 导出系统日志到Excel表格
     * @param sysLog 系统日志查询条件DTO
     * @return 符合查询条件的系统日志列表
     */
//    @ResponseExcel
//    @GetMapping("/export")
//    @HasPermission("sys_log_export")
//    @Operation(summary = "导出系统日志到Excel表格", description = "导出系统日志到Excel表格")
//    public List<SysLog> exportLogs(SysLogDTO sysLog) {
//        return sysLogService.listLogs(sysLog);
//    }

}
