Browse Source

登录日志

master
刘力 3 years ago
parent
commit
46f4809092
  1. 32
      logging/src/main/java/com/storeroom/controller/LoginLogController.java
  2. 55
      logging/src/main/java/com/storeroom/domain/LoginLog.java
  3. 8
      logging/src/main/java/com/storeroom/repository/LoginLogRepository.java
  4. 23
      logging/src/main/java/com/storeroom/service/LoginLogService.java
  5. 21
      logging/src/main/java/com/storeroom/service/dto/LoginLogQueryCriteria.java
  6. 32
      logging/src/main/java/com/storeroom/service/impl/LoginLogServiceImpl.java
  7. 3
      storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java
  8. 2
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java
  9. 4
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java
  10. 3
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/DisplayConfigRepository.java
  11. 13
      system/src/main/java/com/storeroom/modules/security/controller/AuthorizationController.java

32
logging/src/main/java/com/storeroom/controller/LoginLogController.java

@ -0,0 +1,32 @@
package com.storeroom.controller;
import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.service.LoginLogService;
import com.storeroom.service.dto.LoginLogQueryCriteria;
import com.storeroom.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/loginlogs/")
@Api(tags = "系统:登录日志")
public class LoginLogController {
private final LoginLogService loginLogService;
@ApiOperation("获取登录日志列表")
@AnonymousGetMapping("list")
public ApiResponse<Object> list(LoginLogQueryCriteria criteria, Pageable pageable) {
return ApiResponse.success(loginLogService.queryAll(criteria, pageable));
}
}

55
logging/src/main/java/com/storeroom/domain/LoginLog.java

@ -0,0 +1,55 @@
package com.storeroom.domain;
import com.storeroom.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Objects;
@Entity
@Getter
@Setter
@Table(name = "login_log")
public class LoginLog extends BaseEntity implements Serializable {
@Id
@Column(name = "id")
@NotNull(groups = Update.class)
@ApiModelProperty(value = "ID", hidden = true)
private String id;
@Column(name = "account")
private String account;
@Column(name = "username")
private String username;
@Column(name = "role")
private String role;
@Column(name = "det")
private String det;
@Column(name = "requestIp")
private String requestIp;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
LoginLog loginLog = (LoginLog) o;
return Objects.equals(id, loginLog.id) && Objects.equals(account, loginLog.account) && Objects.equals(username, loginLog.username) && Objects.equals(role, loginLog.role) && Objects.equals(det, loginLog.det) && Objects.equals(requestIp, loginLog.requestIp);
}
@Override
public int hashCode() {
return Objects.hash(id, account, username, role, det, requestIp);
}
}

8
logging/src/main/java/com/storeroom/repository/LoginLogRepository.java

@ -0,0 +1,8 @@
package com.storeroom.repository;
import com.storeroom.domain.LoginLog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface LoginLogRepository extends JpaRepository<LoginLog, Integer>, JpaSpecificationExecutor<LoginLog> {
}

23
logging/src/main/java/com/storeroom/service/LoginLogService.java

@ -0,0 +1,23 @@
package com.storeroom.service;
import com.storeroom.domain.LoginLog;
import com.storeroom.service.dto.LoginLogQueryCriteria;
import org.springframework.data.domain.Pageable;
public interface LoginLogService {
/**
* 保存登录日志
* @param log
*/
void save(LoginLog log);
/**
*
* @param criteria /
* @param pageable /
* @return /
*/
Object queryAll(LoginLogQueryCriteria criteria, Pageable pageable);
}

21
logging/src/main/java/com/storeroom/service/dto/LoginLogQueryCriteria.java

@ -0,0 +1,21 @@
package com.storeroom.service.dto;
import com.storeroom.annotaion.Query;
import lombok.Data;
import java.sql.Timestamp;
import java.util.List;
@Data
public class LoginLogQueryCriteria {
@Query(blurry = "username,account,det")
private String blurry;
@Query
private String logType;
@Query(type = Query.Type.BETWEEN)
private List<Timestamp> createTime;
}

32
logging/src/main/java/com/storeroom/service/impl/LoginLogServiceImpl.java

@ -0,0 +1,32 @@
package com.storeroom.service.impl;
import com.storeroom.domain.LoginLog;
import com.storeroom.repository.LoginLogRepository;
import com.storeroom.service.LoginLogService;
import com.storeroom.service.dto.LoginLogQueryCriteria;
import com.storeroom.utils.PageUtil;
import com.storeroom.utils.QueryHelp;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class LoginLogServiceImpl implements LoginLogService {
private final LoginLogRepository loginLogRepository;
@Override
public void save(LoginLog log) {
loginLogRepository.save(log);
}
@Override
public Object queryAll(LoginLogQueryCriteria criteria, Pageable pageable) {
Page<LoginLog> page = loginLogRepository.findAll(((root, query, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)), pageable);
return PageUtil.toPage(page);
}
}

3
storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java

@ -421,7 +421,8 @@ public class DeviceImpl implements DeviceService {
return 0;
});
return deviceInfoList2.stream().sorted(Comparator.comparing(DeviceInfo::getSequence)).collect(Collectors.toList());
//deviceInfoList2.stream().sorted(Comparator.comparing(DeviceInfo::getSequence)).collect(Collectors.toList());
return deviceInfoList2;
}
@Override

2
storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java

@ -38,7 +38,7 @@ public class AlarmInfoController {
@Log(value = "报警处理",apiAddress = "/api/alarm")
// @Log(value = "报警处理",apiAddress = "/api/alarm")
@AnonymousGetMapping("info")
public ApiResponse<Object> queryStoreroomId(@RequestParam String storeroomId) {
if (StringUtils.isEmpty(storeroomId)) {

4
storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java

@ -8,6 +8,8 @@ import com.storeroom.modules.device.domain.Storeroom;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
@ -31,10 +33,12 @@ public class DisplayConfig extends BaseEntity implements Serializable {
@ManyToOne(targetEntity = DeviceInfo.class)
@ApiModelProperty(value = "设备信息")
@JoinColumn(name = "device_info_id")
@NotFound(action= NotFoundAction.IGNORE)
private DeviceInfo deviceInfo;
@ManyToOne(targetEntity = Storeroom.class)
@ApiModelProperty(value = "库房id")
@NotFound(action= NotFoundAction.IGNORE)
@JoinColumn(name = "storeroom_id")
private Storeroom storeroom;

3
storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/DisplayConfigRepository.java

@ -14,13 +14,16 @@ public interface DisplayConfigRepository extends JpaRepository<DisplayConfig, St
/**
* 根据库房查询
*
* @param storeroomId /
* @return /
*/
@Query(value = "SELECT * FROM display_config WHERE storeroom_id =?1", nativeQuery = true)
List<DisplayConfig> findByStoreroomId(String storeroomId);
/**
* 根据设备id查询
*
* @param /
* @return /
*/

13
system/src/main/java/com/storeroom/modules/security/controller/AuthorizationController.java

@ -6,7 +6,9 @@ import com.storeroom.annotaion.rest.AnonymousDeleteMapping;
import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.annotaion.rest.AnonymousPostMapping;
import com.storeroom.config.RsaProperties;
import com.storeroom.domain.LoginLog;
import com.storeroom.exception.BaseException;
import com.storeroom.service.LoginLogService;
import com.storeroom.utils.enums.ResponseStatus;
import com.storeroom.modules.security.config.bean.LoginCodeEnum;
import com.storeroom.modules.security.config.bean.LoginProperties;
@ -46,6 +48,7 @@ public class AuthorizationController {
private final OnlineUserService onlineUserService;
private final TokenProvider tokenProvider;
private final AuthenticationManagerBuilder authenticationManagerBuilder;
private final LoginLogService loginLogService;
@Resource
private LoginProperties loginProperties;
@ -83,6 +86,16 @@ public class AuthorizationController {
//踢掉之前已经登录的token
onlineUserService.checkLoginOnUser(authUser.getUsername(), token);
}
//保存登录日志
LoginLog loginLog = new LoginLog();
loginLog.setId(NanoIdUtils.randomNanoId());
loginLog.setAccount(jwtUserDto.getUser().getUsername());
loginLog.setUsername(jwtUserDto.getUser().getNickName());
loginLog.setDet(jwtUserDto.getUser().getDept().getName());
loginLog.setRole(jwtUserDto.getUser().getRoles().toString());
String ip = StringUtils.getIp(request);
loginLog.setRequestIp(ip);
loginLogService.save(loginLog);
return ApiResponse.success(authInfo);
}

Loading…
Cancel
Save