Skip to content

Commit

Permalink
Merge branch 'week11' into prod
Browse files Browse the repository at this point in the history
  • Loading branch information
stopmin committed Nov 14, 2024
2 parents ab9134f + 0a5e67b commit 4b17beb
Show file tree
Hide file tree
Showing 35 changed files with 449 additions and 298 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
public class UserDetailsServiceImpl implements UserDetailsService {

private final MemberRepository memberRepository;

public UserDetailsServiceImpl(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

import jdk.jfr.Description;
import lombok.RequiredArgsConstructor;
import org.hibernate.annotations.Comment;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import poomasi.domain.farm.dto.response.FarmDetailResponse;
import poomasi.domain.farm.dto.response.FarmResponse;
import poomasi.domain.farm.service.FarmPlatformService;


Expand All @@ -22,7 +22,7 @@ public class FarmController {

@Description("Farm 단건 조회")
@GetMapping("/{farmId}")
public ResponseEntity<?> getFarm(@PathVariable Long farmId) {
public ResponseEntity<FarmResponse> getFarm(@PathVariable Long farmId) {
return ResponseEntity.ok(farmPlatformService.getFarmByFarmId(farmId));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.springframework.web.bind.annotation.*;
import poomasi.domain.auth.security.userdetail.UserDetailsImpl;
import poomasi.domain.farm.dto.request.FarmInfoRegisterRequest;
import poomasi.domain.farm.dto.request.FarmInfoUpdateRequest;
import poomasi.domain.farm.dto.request.FarmRegisterRequest;
import poomasi.domain.farm.dto.request.FarmUpdateRequest;
import poomasi.domain.farm.service.FarmFarmerService;
Expand All @@ -19,8 +20,6 @@
@RequestMapping("/api/farm")
public class FarmFarmerController {
private final FarmFarmerService farmFarmerService;
private final FarmScheduleService farmScheduleService;


@Secured("ROLE_FARMER")
@PostMapping("")
Expand All @@ -29,19 +28,18 @@ public ResponseEntity<?> registerFarm(
@Valid @RequestBody FarmRegisterRequest request) {
Member member = userDetails.getMember();
return ResponseEntity.ok(farmFarmerService.registerFarm(member, request));

}

@Secured("ROLE_FARMER")
@PostMapping("/info")
public ResponseEntity<?> registerFarmInfo(
@PostMapping("/info/update")
public ResponseEntity<?> updateFarmInfo(
@AuthenticationPrincipal UserDetailsImpl userDetails,
@Valid @RequestBody FarmInfoRegisterRequest request) {
@Valid @RequestBody FarmInfoUpdateRequest request) {
Member member = userDetails.getMember();
return ResponseEntity.ok(farmFarmerService.registerFarmInfo(member, request));

return ResponseEntity.ok(farmFarmerService.updateFarmInfo(member, request));
}


@Secured("ROLE_FARMER")
@PostMapping("/update")
public ResponseEntity<?> updateFarm(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package poomasi.domain.farm.dto.request;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Builder;
import poomasi.global.error.BusinessException;

import java.util.ArrayList;
import java.util.List;

import static poomasi.global.error.BusinessError.FARM_INFO_DETAIL_SIZE_MISMATCH;

@Builder
public record FarmInfoAggregateRequest(
@NotBlank(message = "제목은 필수 입력값입니다.")
String title,

@NotBlank(message = "대표 이미지는 필수 입력값입니다.")
String mainImage,

@NotNull(message = "세부 제목 리스트는 null일 수 없습니다.")
@Size(min = 3, max = 3, message = "세부 제목은 3개여야 합니다.")
List<String> detailTitles,

@NotNull(message = "세부 설명 리스트는 null일 수 없습니다.")
List<String> detailDescriptions,

@NotNull(message = "세부 이미지 리스트는 null일 수 없습니다.")
List<String> detailImages
) {
public List<FarmInfoRegisterRequest> toRequest() {
validateListsSize();

List<FarmInfoRegisterRequest> requests = new ArrayList<>();

requests.add(new FarmInfoRegisterRequest(
true,
title,
null,
mainImage
));

// Add detailed farm info requests
for (int i = 0; i < detailTitles.size(); i++) {
String detailTitle = detailTitles.get(i);
String detailDescription = (i < detailDescriptions.size()) ? detailDescriptions.get(i) : null;
String detailImage = (i < detailImages.size()) ? detailImages.get(i) : null;

requests.add(new FarmInfoRegisterRequest(
false,
detailTitle,
detailDescription,
detailImage
));
}

return requests;
}

private void validateListsSize() {
if (detailDescriptions.size() != detailTitles.size()) {
throw new BusinessException(FARM_INFO_DETAIL_SIZE_MISMATCH);
}
if (detailImages.size() != detailTitles.size()) {
throw new BusinessException(FARM_INFO_DETAIL_SIZE_MISMATCH);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package poomasi.domain.farm.dto.request;

public record FarmInfoUpdateRequest(
Long farmId,
String title,
String content,
String imageUrl
) {
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package poomasi.domain.farm.dto.request;

import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import poomasi.domain.farm.entity.Farm;

@Builder
public record FarmRegisterRequest(
@NotNull
String name,
Expand Down Expand Up @@ -30,7 +32,12 @@ public record FarmRegisterRequest(
@NotNull
String imageUrl,
@NotNull
int price
int price,

@NotNull
String businessNumber,

FarmInfoAggregateRequest info
) {
public Farm toEntity(Long memberId) {
return Farm.builder()
Expand All @@ -49,6 +56,7 @@ public Farm toEntity(Long memberId) {
.mainImage(imageUrl)
.growEnv(growEnv)
.experiencePrice(price)
.businessNumber(businessNumber)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@

import lombok.Builder;

import java.util.List;

@Builder
public record FarmDetailResponse(
FarmResponse farmResponse,
List<FarmInfoResponse> experienceResponses
FarmInfoAggregateResponse info
) {


Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package poomasi.domain.farm.dto.response;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import poomasi.domain.farm.entity.FarmInfo;

import java.util.List;

public record FarmInfoAggregateResponse(
@NotBlank(message = "제목은 필수 입력값입니다.")
String title,

@NotBlank(message = "대표 이미지는 필수 입력값입니다.")
String mainImage,

@NotNull(message = "세부 제목 리스트는 null일 수 없습니다.")
@Size(min = 3, max = 3, message = "세부 제목은 3개여야 합니다.")
List<String> detailTitles,

@NotNull(message = "세부 설명 리스트는 null일 수 없습니다.")
List<String> detailDescriptions,

@NotNull(message = "세부 이미지 리스트는 null일 수 없습니다.")
List<String> detailImages
) {
public static FarmInfoAggregateResponse fromEntity(List<FarmInfo> farmInfos) {
return new FarmInfoAggregateResponse(
farmInfos.get(0).getTitle(),
farmInfos.get(0).getImageUrl(),
List.of(farmInfos.get(1).getTitle(), farmInfos.get(2).getTitle(), farmInfos.get(3).getTitle()),
List.of(farmInfos.get(1).getContent(), farmInfos.get(2).getContent(), farmInfos.get(3).getContent()),
List.of(farmInfos.get(1).getImageUrl(), farmInfos.get(2).getImageUrl(), farmInfos.get(3).getImageUrl())
);
}
}
25 changes: 13 additions & 12 deletions src/main/java/poomasi/domain/farm/dto/response/FarmResponse.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package poomasi.domain.farm.dto.response;

import lombok.Builder;
import poomasi.domain.farm.entity.Farm;


@Builder
public record FarmResponse(
Long id,
String name,
Expand All @@ -16,16 +17,16 @@ public record FarmResponse(
) {

public static FarmResponse fromEntity(Farm farm) {
return new FarmResponse(
farm.getId(),
farm.getName(),
farm.getAddress(),
farm.getAddressDetail(),
farm.getLatitude(),
farm.getLongitude(),
farm.getDescription(),
farm.getExperiencePrice(),
farm.getAverageRating()
);
return FarmResponse
.builder()
.name(farm.getName())
.address(farm.getAddress())
.addressDetail(farm.getAddressDetail())
.latitude(farm.getLatitude())
.longitude(farm.getLongitude())
.description(farm.getDescription())
.experiencePrice(farm.getExperiencePrice())
.averageRating(farm.getAverageRating())
.build();
}
}
8 changes: 8 additions & 0 deletions src/main/java/poomasi/domain/farm/entity/FarmInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.*;
import poomasi.domain.farm.dto.request.FarmInfoUpdateRequest;

import java.time.LocalDateTime;

Expand All @@ -33,6 +34,7 @@ public class FarmInfo {
String title;

@Comment("설명")
@Column(nullable = true)
String content;

@Comment("메인 이미지 여부")
Expand Down Expand Up @@ -64,4 +66,10 @@ public boolean hasContent() {
return content != null && !content.isBlank() && !content.isEmpty() &&
title != null && !title.isBlank() && !title.isEmpty();
}

public void update(FarmInfoUpdateRequest request) {
this.imageUrl = request.imageUrl();
this.title = request.title();
this.content = request.content();
}
}
Loading

0 comments on commit 4b17beb

Please sign in to comment.