1、统计服务根据日期统计apiLog实现

pull/254/head
xjs 4 years ago
parent 771c524ae6
commit 02881dd139

@ -7,8 +7,13 @@ import com.xjs.business.log.domain.TaskLog;
import com.xjs.business.log.domain.WebmagicLog;
import com.xjs.business.log.factory.RemoteLogFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/**
* rpc
@ -23,6 +28,9 @@ public interface RemoteLogFeign {
@PostMapping("/apilog/forPRC")
R<Object> saveApiLog(@RequestBody ApiLog apiLog);
@GetMapping("/apilog/byDateForRPC")
R<Map<String, List>> statisticsByDate(@RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate);
@PostMapping("reptileLog/saveForPRC")
R<Object> saveReptileLog(@RequestBody WebmagicLog webmagicLog);

@ -10,6 +10,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* rpc
* @author xiejs
@ -28,6 +31,12 @@ public class RemoteLogFactory implements FallbackFactory<RemoteLogFeign> {
return R.fail("日志模块api日志服务添加调用失败" + cause.getMessage());
}
@Override
public R<Map<String, List>> statisticsByDate(String startDate, String endDate) {
log.error("日志模块api日志服务根据时间查询调用失败");
return R.fail("日志模块api日志服务根据时间查询调用失败" + cause.getMessage());
}
@Override
public R<Object> saveReptileLog(WebmagicLog webmagicLog) {
log.error("日志模块爬虫日志服务添加调用失败");

@ -16,3 +16,12 @@ export function getStatisticsTodayApi() {
method: 'get',
})
}
// 根据时间查询API记录统计
export function statisticsByDate(param) {
return request({
url: '/statistics/apistatistics/byDate',
method: 'get',
params:param
})
}

@ -4,10 +4,36 @@
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)">
<div ref="historyChart" style="height: 400px;width: 100%;margin-top: 25px">
<el-form :model="historyApiLogParams" ref="historyApiLogParams"
:inline="true"
label-width="70px"
style="margin-left: 150px">
<el-form-item label="">
<el-date-picker
v-model="daterangeCreateTime"
size="small"
style="width: 320px"
value-format="yyyy-MM-dd"
format="yyyy 年 MM 月 dd 日"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"
@change="dateQuery"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<div ref="historyChart" style="height: 372px;width: 100%;margin-top: 25px">
</div>
<div ref="todayChart" style="height: 400px;width: 100%">
<div ref="todayChart" style="height: 372px;width: 100%">
</div>
@ -18,7 +44,11 @@
<script>
import {getStatisticsHistoryApi, getStatisticsTodayApi} from "@/api/business/statistics/apistatistics";
import {
getStatisticsHistoryApi,
getStatisticsTodayApi,
statisticsByDate
} from "@/api/business/statistics/apistatistics";
import * as echarts from 'echarts/core';
@ -29,11 +59,13 @@ import {CanvasRenderer} from 'echarts/renderers';
import {TitleComponent} from 'echarts/components';
import {BarChart} from 'echarts/charts';
import { TooltipComponent } from 'echarts/components';
import {pickerOptions} from "@/layout/mixin/PickerOptions";
echarts.use([GridComponent, LineChart, CanvasRenderer, UniversalTransition, TitleComponent, BarChart,TooltipComponent]);
export default {
name: "ApiStatistics",
mixins: [pickerOptions],
data() {
return {
@ -42,6 +74,13 @@ export default {
//
loading: false,
historyApiLogParams: {
startDate: null,
endDate: null,
},
//
daterangeCreateTime: [],
}
},
@ -73,7 +112,6 @@ export default {
},
yAxis: {
splitNumber: 10,
max: 2000,
},
series: [{
name: '次数',
@ -102,7 +140,6 @@ export default {
},
yAxis: {
splitNumber: 10,
max: 60,
},
series: [{
name: '次数',
@ -133,6 +170,40 @@ export default {
})
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeCreateTime = [];
this.historyApiLogParams.startDate = null
this.historyApiLogParams.endDate = null
this.handleQuery();
},
/** 搜索按钮操作 */
handleQuery() {
this.getStatisticsTodayApi();
},
dateQuery() {
//
this.historyApiLogParams.startDate=null
this.historyApiLogParams.endDate=null
this.statisticsByDate();
},
statisticsByDate() {
this.loading = true
if (null != this.daterangeCreateTime && '' !== this.daterangeCreateTime) {
this.historyApiLogParams.startDate = this.daterangeCreateTime[0];
this.historyApiLogParams.endDate = this.daterangeCreateTime[1];
}
statisticsByDate(this.historyApiLogParams).then(res =>{
this.loading = false
this.todayApiData=res.data
this.initToday()
}).catch(err =>{
this.loading = false
})
}
},
}

@ -174,7 +174,7 @@ export default {
//
getHistoryWeather() {
if (null != this.daterangeCreateTime && '' != this.daterangeCreateTime) {
if (null != this.daterangeCreateTime && '' !== this.daterangeCreateTime) {
this.historyWeatherParams.startDate = this.daterangeCreateTime[0];
this.historyWeatherParams.endDate = this.daterangeCreateTime[1];
}

@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* Controller
@ -34,6 +35,17 @@ public class ApiLogController extends BaseController {
private IApiLogService apiLogService;
@GetMapping("getApiName")
@ApiOperation("获取所有Api名称")
@RequiresPermissions("log:apilog:list")
public AjaxResult getApiName() {
List<String> apiNameList = apiLogService.getApiName();
return AjaxResult.success(apiNameList);
}
//----------------------------远程调用--------------------------------
@PostMapping("forPRC")
@ApiOperation("供AOP切面RPC远程调用")
public R<Object> saveApiLog(@RequestBody ApiLog apiLog) {
@ -42,13 +54,11 @@ public class ApiLogController extends BaseController {
return save ? R.ok() : R.fail();
}
@GetMapping("getApiName")
@ApiOperation("获取所有Api名称")
@RequiresPermissions("log:apilog:list")
public AjaxResult getApiName() {
List<String> apiNameList = apiLogService.getApiName();
return AjaxResult.success(apiNameList);
@GetMapping("byDateForRPC")
@ApiOperation("根据时间查询API记录")
public R<Map<String, List>> statisticsByDate(@RequestParam String startDate, @RequestParam String endDate) {
Map<String, List> map = apiLogService.statisticsByDate(startDate,endDate);
return R.ok(map);
}

@ -2,6 +2,8 @@ package com.xjs.apilog.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xjs.apilog.domain.ApiLog;
import com.xjs.apilog.vo.ApiLogVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -13,6 +15,15 @@ import java.util.List;
*/
public interface ApiLogMapper extends BaseMapper<ApiLog> {
/**
*API
* @param startDate
* @param endDate
* @return list
*/
List<ApiLogVo> statisticsByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);
//------------------------代码自动生成-----------------------------------
/**
@ -46,4 +57,6 @@ public interface ApiLogMapper extends BaseMapper<ApiLog> {
* @return
*/
public int deleteApiLogByIds(Long[] ids);
}

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.xjs.apilog.domain.ApiLog;
import java.util.List;
import java.util.Map;
/**
* Service
@ -52,4 +53,12 @@ public interface IApiLogService extends IService<ApiLog> {
* @return
*/
List<String> getApiName();
/**
* API
* @param startDate
* @param endDate
* @return map
*/
Map<String, List> statisticsByDate(String startDate, String endDate);
}

@ -6,12 +6,16 @@ import com.ruoyi.common.core.domain.R;
import com.xjs.apilog.domain.ApiLog;
import com.xjs.apilog.mapper.ApiLogMapper;
import com.xjs.apilog.service.IApiLogService;
import com.xjs.apilog.vo.ApiLogVo;
import com.xjs.business.warning.RemoteWarningCRUDFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Service
@ -21,7 +25,7 @@ import java.util.List;
*/
@Service
public class ApiLogServiceImpl extends ServiceImpl<ApiLogMapper,ApiLog> implements IApiLogService {
@Autowired
@Resource
private ApiLogMapper apiLogMapper;
@Autowired
private RemoteWarningCRUDFeign remoteWarningCRUDFeign;
@ -80,4 +84,19 @@ public class ApiLogServiceImpl extends ServiceImpl<ApiLogMapper,ApiLog> implemen
}
return new ArrayList<String>();
}
@Override
public Map<String, List> statisticsByDate(String startDate, String endDate) {
List<ApiLogVo> recordList =apiLogMapper.statisticsByDate(startDate, endDate);
Map<String, List> map = new HashMap<>();
List<String> apiNames = new ArrayList<>();
List<Long> count = new ArrayList<>();
recordList.forEach(record ->{
apiNames.add(record.getApiName());
count.add(record.getCount());
});
map.put("apiNames", apiNames);
map.put("count", count);
return map;
}
}

@ -0,0 +1,23 @@
package com.xjs.apilog.vo;
import lombok.Data;
/**
* apivo
* @author xiejs
* @since 2022-04-06
*/
@Data
public class ApiLogVo {
/**
* api
*/
private String apiName;
/**
*
*/
private Long count;
}

@ -36,6 +36,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectApiLogVo"/>
where id = #{id}
</select>
<select id="statisticsByDate" resultType="com.xjs.apilog.vo.ApiLogVo">
select api_name ,count(api_name) count FROM
(select api_name from api_log where
create_time BETWEEN #{startDate} and #{endDate}) t
GROUP BY api_name
</select>
<delete id="deleteApiLogById" parameterType="Long">
delete from api_log where id = #{id}

@ -8,6 +8,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@ -42,4 +43,12 @@ public class ApiStatisticsController {
return R.ok(map);
}
@GetMapping("byDate")
@ApiOperation("根据时间查询API记录统计")
@RequiresPermissions("statistics:apistatistics:list")
public R<Map<String, List>> statisticsByDate(@RequestParam String startDate,@RequestParam String endDate) {
Map<String, List> map = apiStatisticsService.statisticsByDate(startDate,endDate);
return R.ok(map);
}
}

@ -24,4 +24,11 @@ public interface ApiStatisticsService {
*/
Map<String, List> statisticsTodayApi();
/**
* API
* @param startDate
* @param endDate
* @return map
*/
Map<String, List> statisticsByDate(String startDate, String endDate);
}

@ -1,6 +1,8 @@
package com.xjs.service.impl;
import com.ruoyi.common.core.constant.HttpStatus;
import com.ruoyi.common.core.domain.R;
import com.xjs.business.log.RemoteLogFeign;
import com.xjs.business.warning.RemoteWarningCRUDFeign;
import com.xjs.business.warning.domain.ApiRecord;
import com.xjs.service.ApiStatisticsService;
@ -14,6 +16,7 @@ import java.util.Map;
/**
* api
*
* @author xiejs
* @since 2022-01-25
*/
@ -23,6 +26,8 @@ public class ApiStatisticsServiceImpl implements ApiStatisticsService {
@Autowired
private RemoteWarningCRUDFeign remoteWarningCRUDFeign;
@Autowired
private RemoteLogFeign remoteLogFeign;
@Override
public Map<String, List> statisticsHistoryApi() {
@ -54,13 +59,28 @@ public class ApiStatisticsServiceImpl implements ApiStatisticsService {
return map;
}
@Override
public Map<String, List> statisticsByDate(String startDate, String endDate) {
R<Map<String, List>> r = remoteLogFeign.statisticsByDate(startDate, endDate);
if (r.getCode() == HttpStatus.SUCCESS) {
return r.getData();
}else {
return new HashMap<>();
}
}
/**
* Rdata
*
* @return List
*/
private List<ApiRecord> getData() {
R<List<ApiRecord>> listR = remoteWarningCRUDFeign.selectApiRecordListForRPC();
if (listR.getCode() == HttpStatus.SUCCESS) {
return listR.getData();
} else {
return new ArrayList<>();
}
}
}

Loading…
Cancel
Save