Skip to content

Commit

Permalink
Merge pull request #130 from softeerbootcamp4th/fix/124-cannot-add-2-…
Browse files Browse the repository at this point in the history
…eventitem

[fix] 이벤트 수정 시 fcfs / draw에서 2개 이상의 객체 추가 시 예외 발생하는 현상 수정(#124)
  • Loading branch information
blaxsior authored Aug 22, 2024
2 parents bc48c1b + 94ed23b commit c273c3f
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,13 @@ public void editEventField(EventMetadata metadata, EventDto dto) {
private void editDrawEventMetadata(DrawEvent drawEvent, DrawEventDto drawEventDto) {
List<DrawEventMetadata> deMetadata = drawEvent.getMetadataList();

Map<Boolean, Map<Long, DrawEventMetadataDto>> deMetadataDtos = drawEventDto.getMetadata().stream()
.collect(Collectors.partitioningBy(it -> it.getId() == null, Collectors.toMap(DrawEventMetadataDto::getId, it-> it)));
// true이면 created / false이면 updated
Map<Long, DrawEventMetadataDto> createdDtos = deMetadataDtos.get(true);
Map<Long, DrawEventMetadataDto> updatedDtos = deMetadataDtos.get(false);
List<DrawEventMetadataDto> createdDtos = new ArrayList<>();
Map<Long, DrawEventMetadataDto> updatedDtos = new HashMap<>();

drawEventDto.getMetadata().forEach(it -> {
if(it.getId() == null) createdDtos.add(it);
else updatedDtos.put(it.getId(), it);
});

Set<Long> updated = new HashSet<>(updatedDtos.keySet());
Set<Long> deleted = deMetadata.stream().map(DrawEventMetadata::getId).collect(Collectors.toSet());
Expand All @@ -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(),
Expand All @@ -149,11 +151,13 @@ else if(deleted.contains(metadata.getId())) {
private void editDrawEventScorePolicy(DrawEvent drawEvent, DrawEventDto drawEventDto) {
List<DrawEventScorePolicy> policies = drawEvent.getPolicyList();

Map<Boolean, Map<Long, DrawEventScorePolicyDto>> deMetadataDtos = drawEventDto.getPolicies().stream()
.collect(Collectors.partitioningBy(it -> it.getId() == null, Collectors.toMap(DrawEventScorePolicyDto::getId, it-> it)));
// true이면 created / false이면 updated
Map<Long, DrawEventScorePolicyDto> createdDtos = deMetadataDtos.get(true);
Map<Long, DrawEventScorePolicyDto> updatedDtos = deMetadataDtos.get(false);
List<DrawEventScorePolicyDto> createdDtos = new ArrayList<>();
Map<Long, DrawEventScorePolicyDto> updatedDtos = new HashMap<>();

drawEventDto.getPolicies().forEach(it -> {
if(it.getId() == null) createdDtos.add(it);
else updatedDtos.put(it.getId(), it);
});

Set<Long> updated = new HashSet<>(updatedDtos.keySet());
Set<Long> deleted = policies.stream().map(DrawEventScorePolicy::getId).collect(Collectors.toSet());
Expand All @@ -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(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,14 @@ public void fetchToDto(EventMetadata metadata, EventDto eventDto) {
@Override
public void editEventField(EventMetadata metadata, EventDto eventDto) {
List<FcfsEvent> fcfsEvents = metadata.getFcfsEventList();
// 집합을 이용해서 created / updated / deleted 를 구분
Map<Boolean, Map<Long, FcfsEventDto>> fcfsAllDtos = eventDto.getFcfs().stream()
.collect(Collectors.partitioningBy(it -> it.getId() == null, Collectors.toMap(FcfsEventDto::getId, it-> it)));
// true이면 created / false이면 updated
Map<Long, FcfsEventDto> createdDtos = fcfsAllDtos.get(true);
Map<Long, FcfsEventDto> updatedDtos = fcfsAllDtos.get(false);
List<FcfsEventDto> createdDtos = new ArrayList<>();
Map<Long, FcfsEventDto> 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());
Expand All @@ -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(),
Expand Down
Original file line number Diff line number Diff line change
@@ -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 {
}
2 changes: 1 addition & 1 deletion src/test/resources/sql/RefreshTable.sql
Original file line number Diff line number Diff line change
@@ -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;
Expand Down

0 comments on commit c273c3f

Please sign in to comment.