diff --git a/src/main/java/capstone/checkIT/DTO/LocationDTO/LocationRequestDTO.java b/src/main/java/capstone/checkIT/DTO/LocationDTO/LocationRequestDTO.java index dfb0a37..76cecf4 100644 --- a/src/main/java/capstone/checkIT/DTO/LocationDTO/LocationRequestDTO.java +++ b/src/main/java/capstone/checkIT/DTO/LocationDTO/LocationRequestDTO.java @@ -15,5 +15,4 @@ public class LocationRequestDTO { private BigDecimal longitude; // 경도 private BigDecimal velocity; // 속도 private Timestamp time; // 기록 시간 - private Timestamp startTime; // 시작 시간 } \ No newline at end of file diff --git a/src/main/java/capstone/checkIT/service/deviceLocationService/DeviceLocationServiceImpl.java b/src/main/java/capstone/checkIT/service/deviceLocationService/DeviceLocationServiceImpl.java index ab267a5..0594ef1 100644 --- a/src/main/java/capstone/checkIT/service/deviceLocationService/DeviceLocationServiceImpl.java +++ b/src/main/java/capstone/checkIT/service/deviceLocationService/DeviceLocationServiceImpl.java @@ -3,9 +3,11 @@ import capstone.checkIT.apipayLoad.code.status.ErrorStatus; import capstone.checkIT.config.JwtManager; import capstone.checkIT.entity.Location; +import capstone.checkIT.entity.Member; import capstone.checkIT.exception.GeneralException; import capstone.checkIT.repository.DeviceLocationRepository; import capstone.checkIT.repository.LocationRepository; +import capstone.checkIT.repository.MemberRepository; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -21,6 +23,7 @@ public class DeviceLocationServiceImpl implements DeviceLocationService{ private final DeviceLocationRepository deviceLocationRepository; private final LocationRepository locationRepository; private final JwtManager jwtManager; + private final MemberRepository memberRepository; public void stopLocation(String accessToken, Timestamp startTime) { log.info("Stopping location tracking for startTime: {}", startTime); @@ -37,6 +40,17 @@ public void stopLocation(String accessToken, Timestamp startTime) { // 3. Location과 연결된 DeviceLocation의 isFinished 업데이트 int updatedRows = deviceLocationRepository.updateIsFinishedByStartTimeAndMemberId(startTime, memberId); + // 4. member의 isStart true -> false + Member member = memberRepository.findById(memberId) + .orElseThrow(() -> new GeneralException(ErrorStatus.LOGIN_ERROR_EMAIL)); + + if (member.getIsStart() != null && member.getIsStart()) { + member.setIsStart(false); + memberRepository.save(member); + member.setEndTime(new Timestamp(System.currentTimeMillis())); // 현재 시간 설정 + log.info("Member's isStart updated to false for memberId: {}", memberId); + } + log.info("Updated {} rows for startTime: {}", updatedRows, startTime); } } diff --git a/src/main/java/capstone/checkIT/service/locationService/LocationServiceImpl.java b/src/main/java/capstone/checkIT/service/locationService/LocationServiceImpl.java index 13cd1f6..9495e9e 100644 --- a/src/main/java/capstone/checkIT/service/locationService/LocationServiceImpl.java +++ b/src/main/java/capstone/checkIT/service/locationService/LocationServiceImpl.java @@ -59,7 +59,7 @@ public void saveLocation(String accessToken, LocationRequestDTO request) { .longitude(request.getLongitude()) .velocity(request.getVelocity()) .time(request.getTime()) - .startTime(request.getStartTime()) + .startTime(member.getStartTime()) .build(); // Device와 Location의 연관 관계 설정