From 61f5950b4fbc0c9d59ac755314c0d1a9efb702bc Mon Sep 17 00:00:00 2001
From: 648540858 <18010473990@163.com>
Date: 星期六, 07 八月 2021 14:05:42 +0800
Subject: [PATCH] 添加日志存储与查询功能 登录接口返回用户详细信息
---
src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java | 2
src/main/java/com/genersoft/iot/vmp/conf/ApiAccessFilter.java | 114 ++++++++++
src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java | 10
src/main/java/com/genersoft/iot/vmp/vmanager/log/LogController.java | 93 ++++++++
src/main/resources/wvp.sqlite | 0
src/main/resources/all-application.yml | 2
src/main/java/com/genersoft/iot/vmp/service/ILogService.java | 34 +++
src/main/java/com/genersoft/iot/vmp/service/impl/LogServiceImpl.java | 36 +++
sql/mysql.sql | 14 +
src/main/java/com/genersoft/iot/vmp/common/ApiSaveConstant.java | 172 +++++++++++++++
src/main/java/com/genersoft/iot/vmp/conf/security/SecurityUtils.java | 2
src/main/java/com/genersoft/iot/vmp/storager/dao/LogMapper.java | 39 +++
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java | 6
src/main/java/com/genersoft/iot/vmp/storager/dao/dto/LogDto.java | 86 +++++++
src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java | 18 +
15 files changed, 617 insertions(+), 11 deletions(-)
diff --git a/sql/mysql.sql b/sql/mysql.sql
index ba78cd2..9a41b82 100644
--- a/sql/mysql.sql
+++ b/sql/mysql.sql
@@ -74,7 +74,19 @@
alarmType varchar(50)
);
-
+create table log
+(
+ id int auto_increment
+ primary key,
+ name varchar(50) not null,
+ type varchar(50) not null,
+ uri varchar(200) not null,
+ address varchar(50) not null,
+ result varchar(50) not null,
+ timing bigint not null,
+ username varchar(50) not null,
+ createTime varchar(50) not null
+);
create table device_mobile_position
(
diff --git a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
index 027efaf..56038bd 100644
--- a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
+++ b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
@@ -4,6 +4,7 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.oas.annotations.EnableOpenApi;
@@ -11,6 +12,7 @@
/**
*
*/
+@ServletComponentScan("com.genersoft.iot.vmp.conf")
@SpringBootApplication
@EnableScheduling
@EnableOpenApi
diff --git a/src/main/java/com/genersoft/iot/vmp/common/ApiSaveConstant.java b/src/main/java/com/genersoft/iot/vmp/common/ApiSaveConstant.java
new file mode 100644
index 0000000..ec2a725
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/common/ApiSaveConstant.java
@@ -0,0 +1,172 @@
+package com.genersoft.iot.vmp.common;
+
+public class ApiSaveConstant {
+
+ public static String getVal(String key) {
+ String[] keyItemArray = key.split("/");
+ if (keyItemArray.length <= 1 || !"api".equals(keyItemArray[1])) {
+ return null;
+ }
+ if (keyItemArray.length >= 4) {
+ switch (keyItemArray[2]) {
+ case "alarm":
+ if ("delete".equals(keyItemArray[3])) {
+ return "鍒犻櫎鎶ヨ";
+ }
+ break;
+ case "device":
+ switch (keyItemArray[3]) {
+ case "config":
+ if (keyItemArray.length >= 5 && "basicParam".equals(keyItemArray[4])) {
+ return "[璁惧閰嶇疆] 鍩烘湰閰嶇疆璁剧疆鍛戒护";
+ }
+ break;
+ case "control":
+ switch (keyItemArray[4]) {
+ case "teleboot":
+ return "[璁惧鎺у埗] 杩滅▼鍚姩";
+ case "record":
+ return "[璁惧鎺у埗] 褰曞儚鎺у埗";
+ case "guard":
+ return "[璁惧鎺у埗] 甯冮槻/鎾ら槻鍛戒护";
+ case "reset_alarm":
+ return "[璁惧鎺у埗] 鎶ヨ澶嶄綅";
+ case "i_frame":
+ return "[璁惧鎺у埗] 寮哄埗鍏抽敭甯�";
+ case "home_position":
+ return "[璁惧鎺у埗] 鐪嬪畧浣嶆帶鍒�";
+ }
+ break;
+ case "query":
+ if (keyItemArray.length <= 5) return null;
+ switch (keyItemArray[4]) {
+ case "devices":
+ if (keyItemArray.length < 7) return null;
+ switch (keyItemArray[6]) {
+ case "sync":
+ return "[璁惧鏌ヨ] 鍚屾璁惧閫氶亾";
+ case "delete":
+ return "[璁惧鏌ヨ] 绉婚櫎璁惧";
+ }
+ break;
+ case "channel":
+ return "[璁惧鏌ヨ] 鏇存柊閫氶亾淇℃伅";
+ case "transport":
+ return "[璁惧鏌ヨ] 淇敼鏁版嵁娴佷紶杈撴ā寮�";
+ }
+ break;
+ }
+ case "gbStream":
+ switch (keyItemArray[3]) {
+ case "del":
+ return "绉婚櫎閫氶亾涓庡浗鏍囩殑鍏宠仈";
+ case "add":
+ return "娣诲姞閫氶亾涓庡浗鏍囩殑鍏宠仈";
+ }
+ break;
+ case "media":
+ break;
+ case "position":
+ if ("subscribe".equals(keyItemArray[3])) {
+ return "璁㈤槄浣嶇疆淇℃伅";
+ }
+ break;
+ case "platform":
+ switch (keyItemArray[3]) {
+ case "save":
+ return "娣诲姞涓婄骇骞冲彴";
+ case "delete":
+ return "绉婚櫎涓婄骇骞冲彴";
+ case "update_channel_for_gb":
+ return "鍚戜笂绾у钩鍙版坊鍔犲浗鏍囬�氶亾";
+ case "del_channel_for_gb":
+ return "浠庝笂绾у钩鍙扮Щ闄ゅ浗鏍囬�氶亾";
+ }
+ break;
+ case "platform_gb_stream":
+ break;
+ case "play":
+ switch (keyItemArray[3]) {
+ case "start":
+ return "寮�濮嬬偣鎾�";
+ case "stop":
+ return "鍋滄鐐规挱";
+ case "convert":
+ return "杞爜";
+ case "convertStop":
+ return "缁撴潫杞爜";
+ case "broadcast":
+ return "璇煶骞挎挱";
+ }
+ break;
+ case "download":
+ switch (keyItemArray[3]) {
+ case "start":
+ return "寮�濮嬪巻鍙插獟浣撲笅杞�";
+ case "stop":
+ return "鍋滄鍘嗗彶濯掍綋涓嬭浇";
+ }
+ break;
+ case "playback":
+ switch (keyItemArray[3]) {
+ case "start":
+ return "寮�濮嬭棰戝洖鏀�";
+ case "stop":
+ return "鍋滄瑙嗛鍥炴斁";
+ }
+ break;
+ case "ptz":
+ switch (keyItemArray[3]) {
+ case "control":
+ return "浜戝彴鎺у埗";
+ case "front_end_command":
+ return "閫氱敤鍓嶇鎺у埗鍛戒护";
+ }
+ break;
+ case "gb_record":
+ break;
+ case "onvif":
+ break;
+ case "server":
+ if ("restart".equals(keyItemArray[3])) {
+ return "閲嶅惎娴佸獟浣撴湇鍔�";
+ }
+ break;
+ case "proxy":
+ switch (keyItemArray[3]) {
+ case "save":
+ return "淇濆瓨浠g悊";
+ case "del":
+ return "绉婚櫎浠g悊";
+ case "start":
+ return "鍚敤浠g悊";
+ case "stop":
+ return "鍋滅敤浠g悊";
+ }
+ break;
+ case "push":
+ switch (keyItemArray[3]) {
+ case "save_to_gb":
+ return "灏嗘帹娴佹坊鍔犲埌鍥芥爣";
+ case "remove_form_gb":
+ return "灏嗘帹娴佺Щ鍑哄埌鍥芥爣";
+ }
+ break;
+ case "user":
+ switch (keyItemArray[3]) {
+ case "login":
+ return "鐧诲綍";
+ case "changePassword":
+ return "淇敼瀵嗙爜";
+ case "add":
+ return "娣诲姞鐢ㄦ埛";
+ case "delete":
+ return "鍒犻櫎鐢ㄦ埛";
+ }
+ break;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/ApiAccessFilter.java b/src/main/java/com/genersoft/iot/vmp/conf/ApiAccessFilter.java
new file mode 100644
index 0000000..9831ddb
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/conf/ApiAccessFilter.java
@@ -0,0 +1,114 @@
+package com.genersoft.iot.vmp.conf;
+
+import com.genersoft.iot.vmp.common.ApiSaveConstant;
+import com.genersoft.iot.vmp.conf.security.SecurityUtils;
+import com.genersoft.iot.vmp.service.ILogService;
+import com.genersoft.iot.vmp.storager.dao.dto.LogDto;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+
+@WebFilter(filterName = "ApiAccessFilter", urlPatterns = "/api/*", asyncSupported=true)
+public class ApiAccessFilter extends OncePerRequestFilter {
+
+ private final static Logger logger = LoggerFactory.getLogger(ApiAccessFilter.class);
+
+ private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Autowired
+ private UserSetup userSetup;
+
+ @Autowired
+ private ILogService logService;
+
+
+ @Override
+ protected void doFilterInternal(HttpServletRequest servletRequest, HttpServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException {
+ String username = null;
+ if (SecurityUtils.getUserInfo() == null) {
+ username = servletRequest.getParameter("username");
+ }else {
+ username = SecurityUtils.getUserInfo().getUsername();
+ }
+ long start = System.currentTimeMillis(); // 璇锋眰杩涘叆鏃堕棿
+ String uriName = ApiSaveConstant.getVal(servletRequest.getRequestURI());
+
+ filterChain.doFilter(servletRequest, servletResponse);
+
+ if (uriName != null && userSetup.getLogInDatebase()) {
+
+ LogDto logDto = new LogDto();
+ logDto.setName(uriName);
+ logDto.setUsername(username);
+ logDto.setAddress(servletRequest.getRemoteAddr());
+ logDto.setResult(HttpStatus.valueOf(servletResponse.getStatus()).toString());
+ logDto.setTiming(System.currentTimeMillis() - start);
+ logDto.setType(servletRequest.getMethod());
+ logDto.setUri(servletRequest.getRequestURI());
+ logDto.setCreateTime(format.format(System.currentTimeMillis()));
+ logService.add(logDto);
+// logger.warn("[Api Access] [{}] [{}] [{}] [{}] [{}] {}ms",
+// uriName, servletRequest.getMethod(), servletRequest.getRequestURI(), servletRequest.getRemoteAddr(), HttpStatus.valueOf(servletResponse.getStatus()),
+// System.currentTimeMillis() - start);
+
+ }
+ }
+
+ /**
+ * 鑾峰彇IP鍦板潃
+ *
+ * @param request 璇锋眰
+ * @return request鍙戣捣瀹㈡埛绔殑IP鍦板潃
+ */
+ private String getIP(HttpServletRequest request) {
+ if (request == null) {
+ return "0.0.0.0";
+ }
+
+ String Xip = request.getHeader("X-Real-IP");
+ String XFor = request.getHeader("X-Forwarded-For");
+
+ String UNKNOWN_IP = "unknown";
+ if (StringUtils.isNotEmpty(XFor) && !UNKNOWN_IP.equalsIgnoreCase(XFor)) {
+ //澶氭鍙嶅悜浠g悊鍚庝細鏈夊涓猧p鍊硷紝绗竴涓猧p鎵嶆槸鐪熷疄ip
+ int index = XFor.indexOf(",");
+ if (index != -1) {
+ return XFor.substring(0, index);
+ } else {
+ return XFor;
+ }
+ }
+
+ XFor = Xip;
+ if (StringUtils.isNotEmpty(XFor) && !UNKNOWN_IP.equalsIgnoreCase(XFor)) {
+ return XFor;
+ }
+
+ if (StringUtils.isBlank(XFor) || UNKNOWN_IP.equalsIgnoreCase(XFor)) {
+ XFor = request.getHeader("Proxy-Client-IP");
+ }
+ if (StringUtils.isBlank(XFor) || UNKNOWN_IP.equalsIgnoreCase(XFor)) {
+ XFor = request.getHeader("WL-Proxy-Client-IP");
+ }
+ if (StringUtils.isBlank(XFor) || UNKNOWN_IP.equalsIgnoreCase(XFor)) {
+ XFor = request.getHeader("HTTP_CLIENT_IP");
+ }
+ if (StringUtils.isBlank(XFor) || UNKNOWN_IP.equalsIgnoreCase(XFor)) {
+ XFor = request.getHeader("HTTP_X_FORWARDED_FOR");
+ }
+ if (StringUtils.isBlank(XFor) || UNKNOWN_IP.equalsIgnoreCase(XFor)) {
+ XFor = request.getRemoteAddr();
+ }
+ return XFor;
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java b/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java
index 87ad01a..8b1b5b0 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/UserSetup.java
@@ -25,6 +25,8 @@
private Boolean recordPushLive = Boolean.FALSE;
+ private Boolean logInDatebase = Boolean.TRUE;
+
private List<String> interfaceAuthenticationExcludes = new ArrayList<>();
public Boolean getSavePositionHistory() {
@@ -94,4 +96,12 @@
public void setInterfaceAuthenticationExcludes(List<String> interfaceAuthenticationExcludes) {
this.interfaceAuthenticationExcludes = interfaceAuthenticationExcludes;
}
+
+ public Boolean getLogInDatebase() {
+ return logInDatebase;
+ }
+
+ public void setLogInDatebase(Boolean logInDatebase) {
+ this.logInDatebase = logInDatebase;
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/SecurityUtils.java b/src/main/java/com/genersoft/iot/vmp/conf/security/SecurityUtils.java
index 81b3408..fd29d11 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/security/SecurityUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/security/SecurityUtils.java
@@ -48,7 +48,7 @@
Authentication authentication = getAuthentication();
if(authentication!=null){
Object principal = authentication.getPrincipal();
- if(principal!=null){
+ if(principal!=null && !"anonymousUser".equals(principal)){
LoginUser user = (LoginUser) authentication.getPrincipal();
return user;
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/ILogService.java b/src/main/java/com/genersoft/iot/vmp/service/ILogService.java
new file mode 100644
index 0000000..b7a67ed
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/service/ILogService.java
@@ -0,0 +1,34 @@
+package com.genersoft.iot.vmp.service;
+
+import com.genersoft.iot.vmp.storager.dao.dto.LogDto;
+import com.github.pagehelper.PageInfo;
+
+/**
+ * 绯荤粺鏃ュ織
+ */
+public interface ILogService {
+
+ /**
+ * 鏌ヨ鏃ュ織
+ * @param page 褰撳墠椤�
+ * @param count 姣忛〉鏁伴噺
+ * @param query 鎼滅储鍐呭
+ * @param type 绫诲瀷
+ * @param startTime 寮�濮嬫椂闂�
+ * @param endTime 缁撴潫鏃堕棿
+ * @return 鏃ュ織鍒楄〃
+ */
+ PageInfo<LogDto> getAll(int page, int count, String query, String type, String startTime, String endTime);
+
+ /**
+ * 娣诲姞鏃ュ織
+ * @param logDto 鏃ュ織
+ */
+ void add(LogDto logDto);
+
+ /**
+ * 娓呯┖
+ */
+ int clear();
+
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/LogServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/LogServiceImpl.java
new file mode 100644
index 0000000..92fa596
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/LogServiceImpl.java
@@ -0,0 +1,36 @@
+package com.genersoft.iot.vmp.service.impl;
+
+import com.genersoft.iot.vmp.gb28181.bean.DeviceAlarm;
+import com.genersoft.iot.vmp.service.ILogService;
+import com.genersoft.iot.vmp.storager.dao.LogMapper;
+import com.genersoft.iot.vmp.storager.dao.dto.LogDto;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class LogServiceImpl implements ILogService {
+
+ @Autowired
+ private LogMapper logMapper;
+
+ @Override
+ public PageInfo<LogDto> getAll(int page, int count, String query, String type, String startTime, String endTime) {
+ PageHelper.startPage(page, count);
+ List<LogDto> all = logMapper.query(query, type, startTime, endTime);
+ return new PageInfo<>(all);
+ }
+
+ @Override
+ public void add(LogDto logDto) {
+ logMapper.add(logDto);
+ }
+
+ @Override
+ public int clear() {
+ return logMapper.clear();
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
index 6234073..d928d87 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -342,12 +342,14 @@
if (redisUtil.zSize(key) == null || redisUtil.zSize(key) == 0) {
logger.info("鑾峰彇璐熻浇鏈�浣庣殑鑺傜偣鏃舵棤鍦ㄧ嚎鑺傜偣");
+ return null;
}
// 鑾峰彇鍒嗘暟鏈�浣庣殑锛屽強骞跺彂鏈�浣庣殑
Set<Object> objects = redisUtil.ZRange(key, 0, -1);
- ArrayList<Object> MediaServerObjectS = new ArrayList<>(objects);
- String mediaServerId = (String)MediaServerObjectS.get(0);
+ ArrayList<Object> mediaServerObjectS = new ArrayList<>(objects);
+
+ String mediaServerId = (String)mediaServerObjectS.get(0);
return getOne(mediaServerId);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/LogMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/LogMapper.java
new file mode 100644
index 0000000..18fa91b
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/LogMapper.java
@@ -0,0 +1,39 @@
+package com.genersoft.iot.vmp.storager.dao;
+
+import com.genersoft.iot.vmp.gb28181.bean.DeviceAlarm;
+import com.genersoft.iot.vmp.storager.dao.dto.LogDto;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 鐢ㄤ簬瀛樺偍璁炬湇鍔$殑鏃ュ織
+ */
+@Mapper
+@Repository
+public interface LogMapper {
+
+ @Insert("insert into log ( name, type, uri, address, result, timing, username, createTime) " +
+ "values ('${name}', '${type}', '${uri}', '${address}', '${result}', ${timing}, '${username}', '${createTime}')")
+ int add(LogDto logDto);
+
+
+ @Select(value = {"<script>" +
+ " SELECT * FROM log " +
+ " WHERE 1=1 " +
+ " <if test=\"query != null\"> AND (name LIKE '%${query}%')</if> " +
+ " <if test=\"type != null\" > AND type = '${type}'</if>" +
+ " <if test=\"startTime != null\" > AND createTime >= '${startTime}' </if>" +
+ " <if test=\"endTime != null\" > AND createTime <= '${endTime}' </if>" +
+ " ORDER BY createTime DESC " +
+ " </script>"})
+ List<LogDto> query(String query, String type, String startTime, String endTime);
+
+
+ @Delete("DELETE FROM log")
+ int clear();
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/dto/LogDto.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/dto/LogDto.java
new file mode 100644
index 0000000..cfe29f5
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/dto/LogDto.java
@@ -0,0 +1,86 @@
+package com.genersoft.iot.vmp.storager.dao.dto;
+
+public class LogDto {
+
+ private int id;
+ private String name;
+ private String type;
+ private String uri;
+ private String address;
+ private String result;
+ private long timing;
+ private String username;
+ private String createTime;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getUri() {
+ return uri;
+ }
+
+ public void setUri(String uri) {
+ this.uri = uri;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getResult() {
+ return result;
+ }
+
+ public void setResult(String result) {
+ this.result = result;
+ }
+
+ public long getTiming() {
+ return timing;
+ }
+
+ public void setTiming(long timing) {
+ this.timing = timing;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/log/LogController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/log/LogController.java
new file mode 100644
index 0000000..6dfb569
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/log/LogController.java
@@ -0,0 +1,93 @@
+package com.genersoft.iot.vmp.vmanager.log;
+
+import com.genersoft.iot.vmp.service.ILogService;
+import com.genersoft.iot.vmp.storager.dao.dto.LogDto;
+import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
+import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+@Api(tags = "鏃ュ織绠$悊")
+@CrossOrigin
+@RestController
+@RequestMapping("/api/log")
+public class LogController {
+
+ @Autowired
+ private ILogService logService;
+
+ private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ /**
+ * 鍒嗛〉鏌ヨ鏃ュ織
+ *
+ * @param query 鏌ヨ鍐呭
+ * @param page 褰撳墠椤�
+ * @param count 姣忛〉鏌ヨ鏁伴噺
+ * @param type 绫诲瀷
+ * @param startTime 寮�濮嬫椂闂�
+ * @param endTime 缁撴潫鏃堕棿
+ * @return
+ */
+ @ApiOperation("鍒嗛〉鏌ヨ鎶ヨ")
+ @GetMapping("/all")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name="query", value = "鏌ヨ鍐呭", dataTypeClass = String.class),
+ @ApiImplicitParam(name="page", value = "褰撳墠椤�", required = true ,dataTypeClass = Integer.class),
+ @ApiImplicitParam(name="count", value = "姣忛〉鏌ヨ鏁伴噺", required = true ,dataTypeClass = Integer.class),
+ @ApiImplicitParam(name="type", value = "绫诲瀷" ,dataTypeClass = String.class),
+ @ApiImplicitParam(name="startTime", value = "鏌ヨ鍐呭" ,dataTypeClass = String.class),
+ @ApiImplicitParam(name="endTime", value = "鏌ヨ鍐呭" ,dataTypeClass = String.class),
+ })
+ public ResponseEntity<PageInfo<LogDto>> getAll(
+ @RequestParam int page,
+ @RequestParam int count,
+ @RequestParam(required = false) String query,
+ @RequestParam(required = false) String type,
+ @RequestParam(required = false) String startTime,
+ @RequestParam(required = false) String endTime
+ ) {
+ if (StringUtils.isEmpty(query)) query = null;
+ if (StringUtils.isEmpty(startTime)) startTime = null;
+ if (StringUtils.isEmpty(endTime)) endTime = null;
+
+
+ try {
+ if (startTime != null) format.parse(startTime);
+ if (endTime != null) format.parse(endTime);
+ } catch (ParseException e) {
+ return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST);
+ }
+
+ PageInfo<LogDto> allLog = logService.getAll(page, count, query, type, startTime, endTime);
+ return new ResponseEntity<>(allLog, HttpStatus.OK);
+ }
+
+ /**
+ * 娓呯┖鏃ュ織
+ *
+ */
+ @ApiOperation("娓呯┖鏃ュ織")
+ @DeleteMapping("/clear")
+ @ApiImplicitParams({})
+ public ResponseEntity<WVPResult<String>> clear() {
+
+ int count = logService.clear();
+ WVPResult wvpResult = new WVPResult();
+ wvpResult.setCode(0);
+ wvpResult.setMsg("success");
+ wvpResult.setData(count);
+ return new ResponseEntity<WVPResult<String>>(wvpResult, HttpStatus.OK);
+ }
+
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java
index de40c2c..6e4c416 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java
@@ -17,9 +17,7 @@
import org.springframework.web.bind.annotation.*;
import javax.security.sasl.AuthenticationException;
-import javax.xml.crypto.Data;
import java.text.SimpleDateFormat;
-import java.util.Date;
import java.util.List;
@Api(tags = "鐢ㄦ埛绠$悊")
@@ -42,19 +40,25 @@
@ApiImplicitParam(name = "password", required = true, value = "瀵嗙爜锛�32浣峬d5鍔犲瘑锛�", dataTypeClass = String.class),
})
@GetMapping("/login")
- public String login(@RequestParam String username, @RequestParam String password){
- LoginUser user;
+ public WVPResult<LoginUser> login(@RequestParam String username, @RequestParam String password){
+ LoginUser user = null;
+ WVPResult<LoginUser> result = new WVPResult<>();
try {
user = SecurityUtils.login(username, password, authenticationManager);
} catch (AuthenticationException e) {
e.printStackTrace();
- return "fail";
+ result.setCode(-1);
+ result.setMsg("fail");
}
if (user != null) {
- return "success";
+ result.setCode(0);
+ result.setMsg("success");
+ result.setData(user);
}else {
- return "fail";
+ result.setCode(-1);
+ result.setMsg("fail");
}
+ return result;
}
@ApiOperation("淇敼瀵嗙爜")
diff --git a/src/main/resources/all-application.yml b/src/main/resources/all-application.yml
index fdd81b1..140ef0a 100644
--- a/src/main/resources/all-application.yml
+++ b/src/main/resources/all-application.yml
@@ -150,6 +150,8 @@
- /api/v1/**
# 鎺ㄦ祦鐩存挱鏄惁褰曞埗
record-push-live: true
+ # 鏄惁灏嗘棩蹇楀瓨鍌ㄨ繘鏁版嵁搴�
+ logInDatebase: true
# 鍦ㄧ嚎鏂囨。锛� swagger-ui锛堢敓浜х幆澧冨缓璁叧闂級
swagger-ui:
diff --git a/src/main/resources/wvp.sqlite b/src/main/resources/wvp.sqlite
index a76d7ee..908d585 100644
--- a/src/main/resources/wvp.sqlite
+++ b/src/main/resources/wvp.sqlite
Binary files differ
--
Gitblit v1.8.0