From 46f4809092fdf29a96d574075b8ae6b9a47b0087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8A=9B?= Date: Thu, 18 Aug 2022 10:07:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LoginLogController.java | 32 +++++++++++ .../java/com/storeroom/domain/LoginLog.java | 55 +++++++++++++++++++ .../repository/LoginLogRepository.java | 8 +++ .../storeroom/service/LoginLogService.java | 23 ++++++++ .../service/dto/LoginLogQueryCriteria.java | 21 +++++++ .../service/impl/LoginLogServiceImpl.java | 32 +++++++++++ .../device/service/impl/DeviceImpl.java | 3 +- .../controller/AlarmInfoController.java | 2 +- .../storeroom3d/domain/DisplayConfig.java | 4 ++ .../repository/DisplayConfigRepository.java | 5 +- .../controller/AuthorizationController.java | 13 +++++ 11 files changed, 195 insertions(+), 3 deletions(-) create mode 100644 logging/src/main/java/com/storeroom/controller/LoginLogController.java create mode 100644 logging/src/main/java/com/storeroom/domain/LoginLog.java create mode 100644 logging/src/main/java/com/storeroom/repository/LoginLogRepository.java create mode 100644 logging/src/main/java/com/storeroom/service/LoginLogService.java create mode 100644 logging/src/main/java/com/storeroom/service/dto/LoginLogQueryCriteria.java create mode 100644 logging/src/main/java/com/storeroom/service/impl/LoginLogServiceImpl.java diff --git a/logging/src/main/java/com/storeroom/controller/LoginLogController.java b/logging/src/main/java/com/storeroom/controller/LoginLogController.java new file mode 100644 index 0000000..2f3db2f --- /dev/null +++ b/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 list(LoginLogQueryCriteria criteria, Pageable pageable) { + + return ApiResponse.success(loginLogService.queryAll(criteria, pageable)); + } + + +} diff --git a/logging/src/main/java/com/storeroom/domain/LoginLog.java b/logging/src/main/java/com/storeroom/domain/LoginLog.java new file mode 100644 index 0000000..baffc7c --- /dev/null +++ b/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); + } +} diff --git a/logging/src/main/java/com/storeroom/repository/LoginLogRepository.java b/logging/src/main/java/com/storeroom/repository/LoginLogRepository.java new file mode 100644 index 0000000..5de8d45 --- /dev/null +++ b/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, JpaSpecificationExecutor { +} diff --git a/logging/src/main/java/com/storeroom/service/LoginLogService.java b/logging/src/main/java/com/storeroom/service/LoginLogService.java new file mode 100644 index 0000000..b0465da --- /dev/null +++ b/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); +} diff --git a/logging/src/main/java/com/storeroom/service/dto/LoginLogQueryCriteria.java b/logging/src/main/java/com/storeroom/service/dto/LoginLogQueryCriteria.java new file mode 100644 index 0000000..e004e1e --- /dev/null +++ b/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 createTime; +} diff --git a/logging/src/main/java/com/storeroom/service/impl/LoginLogServiceImpl.java b/logging/src/main/java/com/storeroom/service/impl/LoginLogServiceImpl.java new file mode 100644 index 0000000..3996425 --- /dev/null +++ b/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 page = loginLogRepository.findAll(((root, query, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)), pageable); + return PageUtil.toPage(page); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java index 5e6d594..0c18633 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java +++ b/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 diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java index b564f17..854098c 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java +++ b/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 queryStoreroomId(@RequestParam String storeroomId) { if (StringUtils.isEmpty(storeroomId)) { diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java index 348bccd..1ee62d7 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java +++ b/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; diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/DisplayConfigRepository.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/DisplayConfigRepository.java index ea11328..b43b666 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/DisplayConfigRepository.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/DisplayConfigRepository.java @@ -14,14 +14,17 @@ public interface DisplayConfigRepository extends JpaRepository findByStoreroomId(String storeroomId); /** * 根据设备id查询 - * @param / + * + * @param / * @return / */ diff --git a/system/src/main/java/com/storeroom/modules/security/controller/AuthorizationController.java b/system/src/main/java/com/storeroom/modules/security/controller/AuthorizationController.java index f4cef7b..75a2767 100644 --- a/system/src/main/java/com/storeroom/modules/security/controller/AuthorizationController.java +++ b/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); }