diff --git a/src/main/java/hyundai/softeer/orange/event/common/component/eventFieldMapper/mapper/DrawEventFieldMapper.java b/src/main/java/hyundai/softeer/orange/event/common/component/eventFieldMapper/mapper/DrawEventFieldMapper.java index fee8a2f3..7c581bcc 100644 --- a/src/main/java/hyundai/softeer/orange/event/common/component/eventFieldMapper/mapper/DrawEventFieldMapper.java +++ b/src/main/java/hyundai/softeer/orange/event/common/component/eventFieldMapper/mapper/DrawEventFieldMapper.java @@ -107,11 +107,13 @@ public void editEventField(EventMetadata metadata, EventDto dto) { private void editDrawEventMetadata(DrawEvent drawEvent, DrawEventDto drawEventDto) { List deMetadata = drawEvent.getMetadataList(); - Map> deMetadataDtos = drawEventDto.getMetadata().stream() - .collect(Collectors.partitioningBy(it -> it.getId() == null, Collectors.toMap(DrawEventMetadataDto::getId, it-> it))); - // true이면 created / false이면 updated - Map createdDtos = deMetadataDtos.get(true); - Map updatedDtos = deMetadataDtos.get(false); + List createdDtos = new ArrayList<>(); + Map updatedDtos = new HashMap<>(); + + drawEventDto.getMetadata().forEach(it -> { + if(it.getId() == null) createdDtos.add(it); + else updatedDtos.put(it.getId(), it); + }); Set updated = new HashSet<>(updatedDtos.keySet()); Set deleted = deMetadata.stream().map(DrawEventMetadata::getId).collect(Collectors.toSet()); @@ -135,7 +137,7 @@ else if(deleted.contains(metadata.getId())) { deMetadata.removeIf(it -> deleted.contains(it.getId())); // 객체 생성 처리 - for(DrawEventMetadataDto createdDto : createdDtos.values()) { + for(DrawEventMetadataDto createdDto : createdDtos) { DrawEventMetadata drawEventMetadata = DrawEventMetadata.of( createdDto.getGrade(), createdDto.getCount(), @@ -149,11 +151,13 @@ else if(deleted.contains(metadata.getId())) { private void editDrawEventScorePolicy(DrawEvent drawEvent, DrawEventDto drawEventDto) { List policies = drawEvent.getPolicyList(); - Map> deMetadataDtos = drawEventDto.getPolicies().stream() - .collect(Collectors.partitioningBy(it -> it.getId() == null, Collectors.toMap(DrawEventScorePolicyDto::getId, it-> it))); - // true이면 created / false이면 updated - Map createdDtos = deMetadataDtos.get(true); - Map updatedDtos = deMetadataDtos.get(false); + List createdDtos = new ArrayList<>(); + Map updatedDtos = new HashMap<>(); + + drawEventDto.getPolicies().forEach(it -> { + if(it.getId() == null) createdDtos.add(it); + else updatedDtos.put(it.getId(), it); + }); Set updated = new HashSet<>(updatedDtos.keySet()); Set deleted = policies.stream().map(DrawEventScorePolicy::getId).collect(Collectors.toSet()); @@ -176,7 +180,7 @@ else if(deleted.contains(policy.getId())) { policies.removeIf(it -> deleted.contains(it.getId())); // 객체 생성 처리 - for(DrawEventScorePolicyDto createdDto : createdDtos.values()) { + for(DrawEventScorePolicyDto createdDto : createdDtos) { DrawEventScorePolicy policy = DrawEventScorePolicy.of( createdDto.getAction(), createdDto.getScore(), diff --git a/src/main/java/hyundai/softeer/orange/event/common/component/eventFieldMapper/mapper/FcfsEventFieldMapper.java b/src/main/java/hyundai/softeer/orange/event/common/component/eventFieldMapper/mapper/FcfsEventFieldMapper.java index 3046b931..f079f80c 100644 --- a/src/main/java/hyundai/softeer/orange/event/common/component/eventFieldMapper/mapper/FcfsEventFieldMapper.java +++ b/src/main/java/hyundai/softeer/orange/event/common/component/eventFieldMapper/mapper/FcfsEventFieldMapper.java @@ -89,12 +89,14 @@ public void fetchToDto(EventMetadata metadata, EventDto eventDto) { @Override public void editEventField(EventMetadata metadata, EventDto eventDto) { List fcfsEvents = metadata.getFcfsEventList(); - // 집합을 이용해서 created / updated / deleted 를 구분 - Map> fcfsAllDtos = eventDto.getFcfs().stream() - .collect(Collectors.partitioningBy(it -> it.getId() == null, Collectors.toMap(FcfsEventDto::getId, it-> it))); // true이면 created / false이면 updated - Map createdDtos = fcfsAllDtos.get(true); - Map updatedDtos = fcfsAllDtos.get(false); + List createdDtos = new ArrayList<>(); + Map updatedDtos = new HashMap<>(); + + eventDto.getFcfs().forEach(it -> { + if(it.getId() == null) createdDtos.add(it); + else updatedDtos.put(it.getId(), it); + }); // 저장되는 데이터는 모두 deleted에 존재 validateEventTimes(eventDto.getFcfs(), metadata.getStartTime(), metadata.getEndTime()); @@ -121,7 +123,7 @@ else if(deleted.contains(event.getId())) { fcfsEvents.removeIf(it -> deleted.contains(it.getId())); // 객체 생성 처리 - for(FcfsEventDto createdDto : createdDtos.values()) { + for(FcfsEventDto createdDto : createdDtos) { FcfsEvent newEvent = FcfsEvent.of( createdDto.getStartTime(), createdDto.getEndTime(), diff --git a/src/main/java/hyundai/softeer/orange/event/dto/group/EventEditGroup.java b/src/main/java/hyundai/softeer/orange/event/dto/group/EventEditGroup.java index 0ca20167..c26f310e 100644 --- a/src/main/java/hyundai/softeer/orange/event/dto/group/EventEditGroup.java +++ b/src/main/java/hyundai/softeer/orange/event/dto/group/EventEditGroup.java @@ -1,4 +1,7 @@ package hyundai.softeer.orange.event.dto.group; -public interface EventEditGroup { +import jakarta.validation.groups.Default; + +// default 그룹 = 비어있을 때 모두 포함을 함께 적용할 수 있음. +public interface EventEditGroup extends Default { } diff --git a/src/test/resources/sql/RefreshTable.sql b/src/test/resources/sql/RefreshTable.sql index d312e01d..be59314c 100644 --- a/src/test/resources/sql/RefreshTable.sql +++ b/src/test/resources/sql/RefreshTable.sql @@ -1,6 +1,6 @@ +SET FOREIGN_KEY_CHECKS = 0; TRUNCATE TABLE url; TRUNCATE TABLE admin_user; - TRUNCATE TABLE draw_event_score_policy; TRUNCATE TABLE draw_event_metadata; TRUNCATE TABLE draw_event_winning_info;