added bookmarked to scan history

This commit is contained in:
heyethereum
2024-07-22 00:48:23 +08:00
parent 77541c2a9d
commit 7cb68e2ec0
7 changed files with 33 additions and 13 deletions

View File

@@ -8,9 +8,9 @@ public class APIConstants {
public static final String API_URL_QRCODE_GET_ALL = "/qrcodetypes"; public static final String API_URL_QRCODE_GET_ALL = "/qrcodetypes";
public static final String API_URL_QRCODE_SCAN = "/qrcodetypes/scan"; public static final String API_URL_QRCODE_SCAN = "/qrcodetypes/scan";
public static final String API_URL_QRCODE_DETECT = "/qrcodetypes/detect"; public static final String API_URL_QRCODE_DETECT = "/qrcodetypes/detect";
public static final String API_URL_QRCODE_VERIFY_URL = "/qrcodetypes/verifyurl"; public static final String API_URL_QRCODE_VERIFY_URL = "/qrcodetypes/verifyURL";
public static final String API_URL_QRCODE_VIRUS_TOTAL_CHECK = "/qrcodetypes/virustotalcheck"; public static final String API_URL_QRCODE_VIRUS_TOTAL_CHECK = "/qrcodetypes/virusTotalCheck";
public static final String API_URL_QRCODE_REDIRECT_COUNT = "/qrcodetypes/redirectcount"; public static final String API_URL_QRCODE_REDIRECT_COUNT = "/qrcodetypes/checkRedirects";
public static final String API_URL_QRCODE_GET_QR_DETAILS = "/qrcodetypes/getQRDetails"; public static final String API_URL_QRCODE_GET_QR_DETAILS = "/qrcodetypes/getQRDetails";

View File

@@ -35,6 +35,9 @@ public class ScanHistoryEntity {
@Column(name = "date_updated") @Column(name = "date_updated")
private OffsetDateTime dateUpdated; private OffsetDateTime dateUpdated;
@Column(name = "bookmarked")
private boolean bookmarked;
public enum ScanStatus { public enum ScanStatus {
ACTIVE, ACTIVE,
INACTIVE INACTIVE

View File

@@ -1,10 +1,11 @@
package com.safeqr.app.qrcode.repository; package com.safeqr.app.qrcode.repository;
import com.safeqr.app.qrcode.entity.QRCodeEntity;
import com.safeqr.app.qrcode.entity.ScanHistoryEntity; import com.safeqr.app.qrcode.entity.ScanHistoryEntity;
import com.safeqr.app.user.dto.ScannedHistoriesDto;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@@ -12,8 +13,9 @@ import java.util.UUID;
@Repository @Repository
public interface ScanHistoryRepository extends JpaRepository<ScanHistoryEntity, Long> { public interface ScanHistoryRepository extends JpaRepository<ScanHistoryEntity, Long> {
@Query("SELECT sh.qrCodeEntity FROM ScanHistoryEntity sh WHERE sh.userId = :userId AND sh.scanStatus = 'ACTIVE'") @Query("SELECT new com.safeqr.app.user.dto.ScannedHistoriesDto(sh.qrCodeEntity, sh.bookmarked) " +
List<QRCodeEntity> findAllQRCodesByUserId(String userId); "FROM ScanHistoryEntity sh WHERE sh.userId = :userId AND sh.scanStatus = 'ACTIVE' ORDER BY sh.dateCreated DESC")
List<ScannedHistoriesDto> findAllQRCodesByUserId(@Param("userId") String userId);
@Modifying @Modifying
@Query("UPDATE ScanHistoryEntity sh SET sh.scanStatus = com.safeqr.app.qrcode.entity.ScanHistoryEntity$ScanStatus.INACTIVE, sh.dateUpdated = CURRENT_TIMESTAMP WHERE sh.userId = :userId AND sh.scanStatus = com.safeqr.app.qrcode.entity.ScanHistoryEntity$ScanStatus.ACTIVE AND sh.qrCodeId = :qrCodeId") @Query("UPDATE ScanHistoryEntity sh SET sh.scanStatus = com.safeqr.app.qrcode.entity.ScanHistoryEntity$ScanStatus.INACTIVE, sh.dateUpdated = CURRENT_TIMESTAMP WHERE sh.userId = :userId AND sh.scanStatus = com.safeqr.app.qrcode.entity.ScanHistoryEntity$ScanStatus.ACTIVE AND sh.qrCodeId = :qrCodeId")

View File

@@ -6,6 +6,7 @@ import static com.safeqr.app.constants.CommonConstants.HEADER_USER_ID;
import com.safeqr.app.qrcode.entity.QRCodeEntity; import com.safeqr.app.qrcode.entity.QRCodeEntity;
import com.safeqr.app.user.dto.BaseResponse; import com.safeqr.app.user.dto.BaseResponse;
import com.safeqr.app.user.dto.BookmarkRequestDto; import com.safeqr.app.user.dto.BookmarkRequestDto;
import com.safeqr.app.user.dto.ScannedHistoriesDto;
import com.safeqr.app.user.dto.UserResponseDto; import com.safeqr.app.user.dto.UserResponseDto;
import com.safeqr.app.user.service.UserService; import com.safeqr.app.user.service.UserService;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -41,7 +42,7 @@ public class UserController {
} }
@GetMapping(value = API_URL_USER_GET_SCANNED_HISTORIES, produces = MediaType.APPLICATION_JSON_VALUE) @GetMapping(value = API_URL_USER_GET_SCANNED_HISTORIES, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<QRCodeEntity>> getUserScannedHistories(@RequestHeader(name = HEADER_USER_ID) String userId) { public ResponseEntity<List<ScannedHistoriesDto>> getUserScannedHistories(@RequestHeader(name = HEADER_USER_ID) String userId) {
logger.info("Invoking GET User Scanned Histories endpoint"); logger.info("Invoking GET User Scanned Histories endpoint");
return ResponseEntity.ok(userService.getUserScannedHistories(userId)); return ResponseEntity.ok(userService.getUserScannedHistories(userId));
} }

View File

@@ -0,0 +1,18 @@
package com.safeqr.app.user.dto;
import com.safeqr.app.qrcode.entity.QRCodeEntity;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class ScannedHistoriesDto {
private QRCodeEntity data;
private boolean bookmarked;
public ScannedHistoriesDto(QRCodeEntity qrCodeEntity, boolean bookmarked) {
this.data = qrCodeEntity;
this.bookmarked = bookmarked;
}
}

View File

@@ -1,4 +0,0 @@
package com.safeqr.app.user.dto;
public class ScannedHistoriesResponse {
}

View File

@@ -6,8 +6,8 @@ import com.safeqr.app.qrcode.entity.QRCodeEntity;
import com.safeqr.app.qrcode.entity.ScanBookmarkEntity; import com.safeqr.app.qrcode.entity.ScanBookmarkEntity;
import com.safeqr.app.qrcode.repository.ScanBookmarkRepository; import com.safeqr.app.qrcode.repository.ScanBookmarkRepository;
import com.safeqr.app.qrcode.repository.ScanHistoryRepository; import com.safeqr.app.qrcode.repository.ScanHistoryRepository;
import com.safeqr.app.user.controller.UserController;
import com.safeqr.app.user.dto.BaseResponse; import com.safeqr.app.user.dto.BaseResponse;
import com.safeqr.app.user.dto.ScannedHistoriesDto;
import com.safeqr.app.user.dto.UserResponseDto; import com.safeqr.app.user.dto.UserResponseDto;
import com.safeqr.app.user.entity.UserEntity; import com.safeqr.app.user.entity.UserEntity;
import com.safeqr.app.user.repository.UserRepository; import com.safeqr.app.user.repository.UserRepository;
@@ -54,7 +54,7 @@ public class UserService {
.status(userEntity.getStatus()) .status(userEntity.getStatus())
.build(); .build();
} }
public List<QRCodeEntity> getUserScannedHistories(String userId) { public List<ScannedHistoriesDto> getUserScannedHistories(String userId) {
return scanHistoryRepository.findAllQRCodesByUserId(userId); return scanHistoryRepository.findAllQRCodesByUserId(userId);
} }
@Transactional @Transactional