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