Commit a3b1e0bd by hzc

首次上传操作日志接口

parent 76d53e82
package com.keymobile.indicators.api.hytobacco;
import com.keymobile.indicators.model.entity.dataenter.TaskIndValue;
import com.keymobile.indicators.model.entity.indicators.LogQuery;
import com.keymobile.indicators.model.entity.indicators.LogStatistics;
import com.keymobile.indicators.model.entity.indicators.LoggingEvent;
import com.keymobile.indicators.service.LoggingEventService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
@RequestMapping("/log")
@Api(tags = {"系统管理-操作日志管理接口"})
public class LoggingEventCtrl {
@Autowired
private LoggingEventService loggingEventService;
@PostMapping ("/findClassCount")
@ApiOperation(value = "查询访问模块的总数",notes = "如果模块数大于五就取五个")
public List<LogStatistics> findClassNameAndCount(@RequestBody LogQuery logQuery){
return loggingEventService.findClassNameAndCount(logQuery);
}
@ApiOperation(value = "查询访问次数折线图数据",notes = "根据时间查询访问次数折线图数据")
@PostMapping("/findVisitCount")
public List<LogStatistics> findVisitCount(@RequestBody LogQuery logQuery){
return loggingEventService.findVisitCount(logQuery);
}
@ApiOperation(value = "查询访问人数折线图数据",notes = "根据时间查询访问人数折线图数据")
@PostMapping("/findVisitUserCount")
public List<LogStatistics> findVisitUserCount(@RequestBody LogQuery logQuery){
return loggingEventService.findVisitUserCount(logQuery);
}
@ApiOperation(value = "分页查询访问信息",notes = "分页查询访问信息")
@PostMapping("/findVisitMsg")
public Page<LoggingEvent> findVisitMsg(@RequestBody LogQuery logQuery){
Integer pageNo = logQuery.getPageNo();
Integer pageSize = logQuery.getPageSize();
if(pageNo==null){
pageNo=1;
}
if(pageSize==null){
pageSize=10;
}
List<LoggingEvent> list = new ArrayList<>();
long total = loggingEventService.findCountByLogQuery(logQuery);
PageRequest request = PageRequest.of(pageNo - 1, pageSize);
logQuery.setPageOff(request.getOffset());
if (total > 0) {
list = loggingEventService.findVisitMsg(logQuery);
}
Page<LoggingEvent> pageResult = new PageImpl<>(list, request, total);
return pageResult;
}
}
package com.keymobile.indicators.model.entity.indicators;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
@ApiModel
@Data
public class LogQuery implements Serializable {
@ApiModelProperty("页数,从1开始")
private Integer pageNo;
@ApiModelProperty("每页条数")
private Integer pageSize;
private Long pageOff;
@ApiModelProperty("起时间 如2020-7-29")
private String startDateStr;
@ApiModelProperty("尾时间 如2020-7-29")
private String endDateStr;
@ApiModelProperty("模块名")
private String loggerName;
@ApiModelProperty("路径")
private String url;
@ApiModelProperty("员工id")
private String employeeId;
private Long startTime;
private Long endTime;
}
package com.keymobile.indicators.model.entity.indicators;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel
public class LogStatistics {
@ApiModelProperty("模块名英文")
private String loggerName;
@ApiModelProperty("模块名中文")
private String loggerNameChinese;
@ApiModelProperty("时间")
private String dateTime;
@ApiModelProperty("访问数")
private Long count;
}
package com.keymobile.indicators.model.entity.indicators;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* @Description
* @Author Hunter
* @Date 2020-07-28
*/
@ApiModel
@Setter
@Getter
@ToString
public class LoggingEvent implements Serializable {
private static final long serialVersionUID = 2666592461886676797L;
@ApiModelProperty("日期")
private String dateTime;
@ApiModelProperty("描述信息")
private String formattedMessage;
@ApiModelProperty("模块名英文")
private String loggerName;
@ApiModelProperty("模块名中文")
private String loggerNameChinese;
@ApiModelProperty("员工工号")
private String employeeId;
@ApiModelProperty("访问ip")
private String loginIp;
@ApiModelProperty("路径")
private String url;
@ApiModelProperty("注解ID")
private Long eventId;
}
package com.keymobile.indicators.model.mapper.indicators;
import com.keymobile.indicators.model.entity.indicators.LogQuery;
import com.keymobile.indicators.model.entity.indicators.LogStatistics;
import com.keymobile.indicators.model.entity.indicators.LoggingEvent;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface LoggingEventMapper {
List<LogStatistics> findClassNameAndCount(LogQuery logQuery);
List<LogStatistics> findVisitCount(LogQuery logQuery);
List<LogStatistics> findVisitUserCount(LogQuery logQuery);
long findCountByLogQuery(LogQuery logQuery);
List<LoggingEvent> findVisitMsg(LogQuery logQuery);
}
package com.keymobile.indicators.service;
import com.keymobile.indicators.model.entity.indicators.LogQuery;
import com.keymobile.indicators.model.entity.indicators.LogStatistics;
import com.keymobile.indicators.model.entity.indicators.LoggingEvent;
import java.util.List;
public interface LoggingEventService {
List<LogStatistics> findClassNameAndCount(LogQuery logQuery);
List<LogStatistics> findVisitCount(LogQuery logQuery);
List<LogStatistics> findVisitUserCount(LogQuery logQuery);
long findCountByLogQuery(LogQuery logQuery);
List<LoggingEvent> findVisitMsg(LogQuery logQuery);
}
package com.keymobile.indicators.service.impl;
import com.keymobile.indicators.model.entity.indicators.LogQuery;
import com.keymobile.indicators.model.entity.indicators.LogStatistics;
import com.keymobile.indicators.model.entity.indicators.LoggingEvent;
import com.keymobile.indicators.model.mapper.indicators.LoggingEventMapper;
import com.keymobile.indicators.service.LoggingEventService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
@Service
public class LoggingEventServiceImpl implements LoggingEventService {
@Autowired
private LoggingEventMapper loggingEventMapper;
@Override
public List<LogStatistics> findClassNameAndCount(LogQuery logQuery) {
if(logQuery!=null){
logQuery.setStartTime(this.getDateTime(logQuery.getStartDateStr()));
logQuery.setEndTime(this.getDateTime(logQuery.getEndDateStr()));
}
List<LogStatistics> LogStatisticsList = loggingEventMapper.findClassNameAndCount(logQuery);
//如果大于五个取五个
if (LogStatisticsList!=null&&LogStatisticsList.size()>5){
return LogStatisticsList.subList(0,5);
}
return LogStatisticsList;
}
@Override
public List<LogStatistics> findVisitCount(LogQuery logQuery) {
Long startDateTime=null;
Long endDateTime=null;
if(logQuery!=null){
startDateTime=this.getDateTime(logQuery.getStartDateStr());
endDateTime=this.getDateTime(logQuery.getEndDateStr());
}
if(endDateTime==null){
endDateTime = new Date().getTime();
}
if(startDateTime==null){
Calendar calendar = new GregorianCalendar();
calendar.setTimeInMillis(endDateTime);
calendar.add(calendar.DATE,-30);
startDateTime = calendar.getTimeInMillis();
}
logQuery.setStartTime(startDateTime);
logQuery.setEndTime(endDateTime);
//查出符合条件的数据然后再判断具体天数的数量
List<LogStatistics> logStatisticsList=loggingEventMapper.findVisitCount(logQuery);
return logStatisticsList;
}
@Override
public List<LogStatistics> findVisitUserCount(LogQuery logQuery) {
Long startDateTime=null;
Long endDateTime=null;
if(logQuery!=null){
startDateTime=this.getDateTime(logQuery.getStartDateStr());
endDateTime=this.getDateTime(logQuery.getEndDateStr());
}
if(endDateTime==null){
endDateTime = new Date().getTime();
}
if(startDateTime==null){
Calendar calendar = new GregorianCalendar();
calendar.setTimeInMillis(endDateTime);
calendar.add(calendar.DATE,-30);
startDateTime = calendar.getTimeInMillis();
}
logQuery.setStartTime(startDateTime);
logQuery.setEndTime(endDateTime);
List<LogStatistics> LogStatisticsList = loggingEventMapper.findVisitUserCount(logQuery);
return LogStatisticsList;
}
@Override
public long findCountByLogQuery(LogQuery logQuery) {
if(logQuery!=null){
logQuery.setStartTime(this.getDateTime(logQuery.getStartDateStr()));
logQuery.setEndTime(this.getDateTime(logQuery.getEndDateStr()));
}
return loggingEventMapper.findCountByLogQuery(logQuery);
}
@Override
public List<LoggingEvent> findVisitMsg(LogQuery logQuery) {
if(logQuery!=null){
logQuery.setStartTime(this.getDateTime(logQuery.getStartDateStr()));
logQuery.setEndTime(this.getDateTime(logQuery.getEndDateStr()));
}
return loggingEventMapper.findVisitMsg(logQuery);
}
private Long getDateTime(String dateStr){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Long dateTime=null;
try {
Date date = simpleDateFormat.parse(dateStr);
dateTime= date.getTime();
} catch (Exception e) {
e.printStackTrace();
}
return dateTime;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.keymobile.indicators.model.mapper.indicators.LoggingEventMapper">
<select id="findClassNameAndCount" resultType="com.keymobile.indicators.model.entity.indicators.LogStatistics">
SELECT logger_name ,count(*)AS count from logging_event
<include refid="findWhereSql"></include>
GROUP BY logger_name
</select>
<select id="findVisitCount" resultType="com.keymobile.indicators.model.entity.indicators.LogStatistics">
SELECT FROM_UNIXTIME(timestmp/1000,'%Y-%m-%d') as date_time ,count(*) as count FROM logging_event
<include refid="findWhereSql"></include>
GROUP BY date_time
</select>
<select id="findVisitUserCount" resultType="com.keymobile.indicators.model.entity.indicators.LogStatistics">
SELECT FROM_UNIXTIME(timestmp/1000,'%Y-%m-%d') as date_time ,count(DISTINCT arg0) as count FROM logging_event
<include refid="findWhereSql"></include>
GROUP BY date_time
</select>
<select id="findCountByLogQuery" resultType="java.lang.Long">
SELECT count(*) AS count from logging_event
<include refid="findWhereSql"></include>
</select>
<select id="findVisitMsg" resultType="com.keymobile.indicators.model.entity.indicators.LoggingEvent">
SELECT FROM_UNIXTIME(timestmp/1000,'%Y-%m-%d %H:%m:%s') as date_time, formatted_message, logger_name, arg0 as employee_id, arg2 as login_ip, arg3 as url, event_id
FROM logging_event
<include refid="findWhereSql"></include>
limit #{pageOff}, #{pageSize}
</select>
<sql id="findWhereSql">
where 1 = 1
<if test="startTime != null and startTime != ''">
and timestmp &gt;= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
and timestmp &lt;= #{endTime}
</if>
<if test="loggerName != null and loggerName!=''">
and logger_name = #{loggerName}
</if>
<if test="employeeId != null and employeeId!=''">
and arg0 = #{employeeId}
</if>
<if test="url != null and url!=''">
and arg3 = #{url}
</if>
</sql>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment