ApiLogController.java 5.2 KB
package com.huaheng.system.controller;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huaheng.common.core.utils.StringUtils;
import com.huaheng.common.core.utils.poi.ExcelUtil;
import com.huaheng.common.core.web.controller.BaseController;
import com.huaheng.common.core.web.domain.AjaxResult;
import com.huaheng.common.core.web.page.PageDomain;
import com.huaheng.common.core.web.page.TableDataInfo;
import com.huaheng.common.core.web.page.TableSupport;
import com.huaheng.common.security.annotation.PreAuthorize;
import com.huaheng.system.api.domain.ApiLog;
import com.huaheng.system.api.domain.SysOperLog;
import com.huaheng.system.service.ApiLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@RestController
@RequestMapping("/apiLog")
@Api(tags = "接口日志")
public class ApiLogController extends BaseController {

    @Resource
    private ApiLogService apiLogService;

    @PreAuthorize(hasPermi = "system:apiLog:list")
    @GetMapping
    public TableDataInfo list(ApiLog apiLog, String beginTime, String endTime) {
        LambdaQueryWrapper<ApiLog> wrapper = Wrappers.lambdaQuery();
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        wrapper.like(StrUtil.isNotEmpty(apiLog.getApiName()), ApiLog::getApiName, apiLog.getApiName())
                .like(StrUtil.isNotEmpty(apiLog.getApiMethod()), ApiLog::getApiMethod, apiLog.getApiMethod())
                .like(StrUtil.isNotEmpty(apiLog.getIp()), ApiLog::getIp, apiLog.getIp())
                .like(StrUtil.isNotEmpty(apiLog.getRequestFrom()), ApiLog::getRequestFrom, apiLog.getRequestFrom())
                .like(StrUtil.isNotEmpty(apiLog.getResponseBy()), ApiLog::getResponseBy, apiLog.getResponseBy())
                .like(StrUtil.isNotEmpty(apiLog.getUrl()), ApiLog::getUrl, apiLog.getUrl())
                .like(StrUtil.isNotEmpty(apiLog.getHttpCode()), ApiLog::getHttpCode, apiLog.getHttpCode())
                .like(StrUtil.isNotEmpty(apiLog.getRetCode()), ApiLog::getRetCode, apiLog.getRetCode())
                .gt(ObjectUtil.isNotEmpty(apiLog.getDuration()), ApiLog::getDuration, apiLog.getDuration())
                .apply(StringUtils.isNotEmpty(endTime),
                        "date_format (requestTime,'%Y-%m-%d') <= date_format('" + endTime + "','%Y-%m-%d')")
                .ge(StringUtils.isNotEmpty(beginTime), ApiLog::getRequestTime, beginTime);
        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
            Page<ApiLog> page = new Page<>(pageNum, pageSize);
            IPage<ApiLog> iPage = apiLogService.page(page, wrapper);
            return getMpDataTable(iPage.getRecords(), iPage.getTotal());
        } else {
            List<ApiLog> list = apiLogService.list(wrapper);
            return getDataTable(list);
        }
    }

    @PreAuthorize(hasPermi = "system:apiLog:export")
    @PostMapping("/export")
    @ApiOperation(value = "导出操作日志")
    public void export(HttpServletResponse response, ApiLog apiLog, String beginTime, String endTime) throws IOException {
        LambdaQueryWrapper<ApiLog> wrapper = Wrappers.lambdaQuery();
        wrapper.like(StrUtil.isNotEmpty(apiLog.getApiName()), ApiLog::getApiName, apiLog.getApiName())
                .like(StrUtil.isNotEmpty(apiLog.getApiMethod()), ApiLog::getApiMethod, apiLog.getApiMethod())
                .like(StrUtil.isNotEmpty(apiLog.getIp()), ApiLog::getIp, apiLog.getIp())
                .like(StrUtil.isNotEmpty(apiLog.getRequestFrom()), ApiLog::getRequestFrom, apiLog.getRequestFrom())
                .like(StrUtil.isNotEmpty(apiLog.getResponseBy()), ApiLog::getResponseBy, apiLog.getResponseBy())
                .like(StrUtil.isNotEmpty(apiLog.getUrl()), ApiLog::getUrl, apiLog.getUrl())
                .like(StrUtil.isNotEmpty(apiLog.getHttpCode()), ApiLog::getHttpCode, apiLog.getHttpCode())
                .like(StrUtil.isNotEmpty(apiLog.getRetCode()), ApiLog::getRetCode, apiLog.getRetCode())
                .gt(ObjectUtil.isNotEmpty(apiLog.getDuration()), ApiLog::getDuration, apiLog.getDuration())
                .apply(StringUtils.isNotEmpty(endTime),
                        "date_format (requestTime,'%Y-%m-%d') <= date_format('" + endTime + "','%Y-%m-%d')")
                .ge(StringUtils.isNotEmpty(beginTime), ApiLog::getRequestTime, beginTime);
        List<ApiLog> apiLogList = apiLogService.list(wrapper);
        ExcelUtil<ApiLog> util = new ExcelUtil<ApiLog>(ApiLog.class);
        util.exportExcel(response, apiLogList, "接口日志");
    }

    @ApiOperation(value = "根据id查询")
    @GetMapping("/{id}")
    public AjaxResult getById(@PathVariable("id") Integer id) {
        return AjaxResult.success(apiLogService.getById(id));
    }




}