Skip to content

Commit

Permalink
Refactor :: change damageResponse get value
Browse files Browse the repository at this point in the history
  • Loading branch information
priverg committed Oct 17, 2024
1 parent 582be29 commit b169337
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
@Mapper(componentModel = "spring")
public interface DamageMapper {

DamageResponseDto entityToDto(Damage damage);
@Mapping(source = "nfcCode", target = "code")
DamageResponseDto entityToDto(Damage damage, String nfcCode);

@Mapping(target = "reportDate", expression = "java(java.time.LocalDateTime.now())")
Damage dtoToEntity(DamageCreateRequest damageCreateRequest);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.keepgoing.keepserver.domain.damage.service;

import com.keepgoing.keepserver.domain.book.domain.repository.BookRepository;
import com.keepgoing.keepserver.domain.damage.entity.Damage;
import com.keepgoing.keepserver.domain.damage.enums.IssueType;
import com.keepgoing.keepserver.domain.damage.mapper.DamageMapper;
Expand All @@ -9,6 +10,7 @@
import com.keepgoing.keepserver.global.common.BaseResponse;
import com.keepgoing.keepserver.global.exception.damage.DamageError;
import com.keepgoing.keepserver.global.exception.damage.DamageException;
import com.keepgoing.keepserver.global.util.NfcValidator;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
Expand All @@ -22,6 +24,8 @@ public class DamageServiceImpl implements DamageService {

private final DamageRepository damageRepository;
private final DamageMapper damageMapper;
private final NfcValidator validator;
private final BookRepository bookRepository;

@Override
@Transactional
Expand All @@ -35,9 +39,11 @@ public BaseResponse reportDamage(DamageCreateRequest request) {
@Override
@Transactional(readOnly = true)
public BaseResponse getAllDamages() {
List<DamageResponseDto> damages = damageRepository.findAll().stream()
.map(damageMapper::entityToDto)
.toList();
List<DamageResponseDto> damages = damageRepository.findAll().stream().map(damage -> {
String nfcCode = getBookTitleIfBookNfc(damage.getCode());
return damageMapper.entityToDto(damage, nfcCode);
}).toList();

if (damages.isEmpty()) {
throw new DamageException(DamageError.INVALID_DAMAGE);
}
Expand All @@ -48,7 +54,8 @@ public BaseResponse getAllDamages() {
@Transactional(readOnly = true)
public BaseResponse getDamage(Long id) {
Damage damage = damageRepository.findById(id).orElseThrow(DamageException::invalidDamage);
return new BaseResponse(HttpStatus.OK, "선택한 신고 내역 조회 성공", damageMapper.entityToDto(damage));
String nfcCode = getBookTitleIfBookNfc(damage.getCode());
return new BaseResponse(HttpStatus.OK, "선택한 신고 내역 조회 성공", damageMapper.entityToDto(damage, nfcCode));
}

@Override
Expand All @@ -59,6 +66,13 @@ public BaseResponse deleteDamage(Long id) {
return new BaseResponse(HttpStatus.OK, "신고 내역 삭제 성공");
}

private String getBookTitleIfBookNfc(String nfcValue) {
if (validator.isBookNfc(nfcValue)) {
return bookRepository.findBookByNfcCode(nfcValue).getBookName();
}
return nfcValue;
}

private void validateDuplicate(String code, IssueType issueType) {
boolean isDuplicate = damageRepository.existsByCodeAndIssueType(code, issueType);
if (isDuplicate) {
Expand All @@ -68,6 +82,6 @@ private void validateDuplicate(String code, IssueType issueType) {

private void findDamageById(Long id) {
damageRepository.findById(id)
.orElseThrow(() -> new DamageException(DamageError.INVALID_DAMAGE));
.orElseThrow(() -> new DamageException(DamageError.INVALID_DAMAGE));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@
@Setter
@Component
public class NfcManageUtils {
private final String characterTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
private static final String CHARACTER_TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
private static final String BOOK_NFC_PATTERN = "^[A-Z0-9]{8}$";
private static final int CERT_CHAR_LENGTH = 8; // NFC 길이

private int certCharLength = 8;
private final SecureRandom random;

public NfcManageUtils() {
Expand All @@ -26,11 +27,11 @@ public NfcManageUtils() {
}

public String executeGenerate() {
int tableLength = characterTable.length();
int tableLength = CHARACTER_TABLE.length();
StringBuilder sb = new StringBuilder();

for (int i = 0; i < certCharLength; i++) {
sb.append(characterTable.charAt(random.nextInt(tableLength)));
for (int i = 0; i < CERT_CHAR_LENGTH; i++) {
sb.append(CHARACTER_TABLE.charAt(random.nextInt(tableLength)));
}

return sb.toString();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.keepgoing.keepserver.global.util;

import org.springframework.stereotype.Component;

@Component
public class NfcValidator {
private static final String BOOK_NFC_PATTERN = "^[A-Z0-9]{8}$";

public boolean isBookNfc(String nfcValue) {
return nfcValue.matches(BOOK_NFC_PATTERN);
}
}

0 comments on commit b169337

Please sign in to comment.