package com.xzx.log.controller; import cn.hutool.core.util.StrUtil; import com.xzx.log.dto.IntefaceAdminLogDto; import com.xzx.log.dto.OperLogDto; import com.xzx.log.dto.base.PageDTO; import com.xzx.log.dto.base.Result; import com.xzx.log.entity.IntefaceAdminLog; import com.xzx.log.entity.OperationAppLog; import com.xzx.log.mapper.IntefaceAdminLogMapper; import com.xzx.log.mapper.OperationAppLogMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.SearchQuery; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Api(tags = "操作日志管理") @RestController @RequestMapping("/operLog") @Slf4j public class OperAppController { @Autowired private OperationAppLogMapper operationAppLogMapper; @ApiOperation( value = "操作日志查询") @PostMapping("/find") public Result> find(@RequestBody OperLogDto operLogDto) { String startTime = operLogDto.getStartTime(); String endTime = operLogDto.getEndTime(); String userId = operLogDto.getUserId(); String type = operLogDto.getType(); int pageNo=operLogDto.getPageNo()-1; PageRequest pageable = PageRequest.of(pageNo, operLogDto.getPageSize(), Sort.by("createTime").descending()); BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder(); if(StrUtil.isNotBlank(userId)){ boolQueryBuilder.must(QueryBuilders.wildcardQuery("opreateName", "*"+userId+"*")); } if(StrUtil.isNotBlank(startTime)){ boolQueryBuilder.must(QueryBuilders.rangeQuery("createTime").gte(startTime +" 00:00:00")); } if(StrUtil.isNotBlank(endTime)){ boolQueryBuilder.must(QueryBuilders.rangeQuery("createTime").lte(endTime+" 00:00:00")); } if(StrUtil.isNotBlank(type)){ boolQueryBuilder.must(QueryBuilders.matchQuery("appPrograme", type)); } SearchQuery searchQuery = new NativeSearchQueryBuilder() .withPageable(pageable) .withQuery(boolQueryBuilder) .build(); Page pageInfo = operationAppLogMapper.search(searchQuery); PageDTO pageDTO=new PageDTO<>(); pageDTO.setPages(pageInfo.getTotalPages()); pageDTO.setTotal(pageInfo.getTotalElements()); pageDTO.setList(pageInfo.getContent()); return Result.success(pageDTO); } }