Skip to content

Commit

Permalink
Merge pull request #19 from Journey-Together/feat/#17
Browse files Browse the repository at this point in the history
[Feat/#17] 메인페이지 조회
  • Loading branch information
mmihye authored Jun 2, 2024
2 parents ce4e571 + 5596f09 commit 775b113
Show file tree
Hide file tree
Showing 15 changed files with 380 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package Journey.Together.domain.place.controller;

import Journey.Together.domain.member.dto.LoginReq;
import Journey.Together.domain.member.dto.MemberRes;
import Journey.Together.domain.member.service.MemberService;
import Journey.Together.domain.place.dto.response.MainRes;
import Journey.Together.domain.place.service.PlaceService;
import Journey.Together.global.common.ApiResponse;
import Journey.Together.global.exception.Success;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
@RequestMapping("/v1/place")
@Tag(name = "Place", description = "여행지 정보 API")
public class PlaceController {

private final PlaceService placeService;

@GetMapping("/main")
public ApiResponse<MainRes> getMain(@RequestHeader("Authorization") String accesstoken,
@RequestParam String areacode, @RequestParam String sigungucode) {
return ApiResponse.success(Success.GET_MAIN_SUCCESS, placeService.getMainPage(areacode, sigungucode));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package Journey.Together.domain.place.dto.response;

import java.util.List;

public record MainRes(
List<PlaceRes> recommendPlaceList,
List<PlaceRes> aroundPlaceList
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package Journey.Together.domain.place.dto.response;

import Journey.Together.domain.place.entity.Place;

import java.util.List;

public record PlaceRes(
Long placeId,
String name,
String image,
List<String> disability,
String address
) {
public static PlaceRes of(Place place, List<String> disability){

return new PlaceRes(place.getId(), place.getName(), place.getFirstImg(), disability,place.getAddress());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package Journey.Together.domain.place.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class DisabilityCategory {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String name;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package Journey.Together.domain.place.entity;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class DisabilityPlaceCategory {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "place_id")
private Place place;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "subCategory_id")
private DisabilitySubCategory subCategory;

@Builder
public DisabilityPlaceCategory(Place place, DisabilitySubCategory subCategory){
this.place=place;
this.subCategory=subCategory;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package Journey.Together.domain.place.entity;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class DisabilitySubCategory {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String subname;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "category_id")
private DisabilityCategory category;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package Journey.Together.domain.place.entity;

import org.springframework.data.jpa.repository.JpaRepository;

public interface DisabilitySubCategoryRepository extends JpaRepository<DisabilitySubCategory,Long> {
}
75 changes: 75 additions & 0 deletions src/main/java/Journey/Together/domain/place/entity/Place.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package Journey.Together.domain.place.entity;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.HashSet;
import java.util.Set;

@Entity
@Getter
@Table(name = "place")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Place {

@Id
private Long id;

private String name;

private String address;
@Column(columnDefinition = "TEXT")
private String firstImg;
private String category;
private String mapX;
private String mapY;
private String createdAt;
@Column(columnDefinition = "TEXT")
private String overview;

private String areaCode;

private String sigunguCode;


private Boolean settingDisability;


@OneToMany(mappedBy = "place", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<DisabilityPlaceCategory> placeDisabilityCategories = new HashSet<>();

public void setArea(String areaCode, String sigunguCode) {
this.areaCode = areaCode;
this.sigunguCode = sigunguCode;
}

public void setOverview(String overview){
this.overview = overview;
}

public void setting(){
this.settingDisability = true;
}

@Builder
public Place(Long id, String name, String address, String firstImg, String category, String mapX, String mapY, String createdAt, String areaCode, String sigunguCode){
this.id =id;
this.name=name;
this.address=address;
this.firstImg=firstImg;
this.category=category;
this.mapX=mapX;
this.mapY=mapY;
this.createdAt=createdAt;
this.areaCode = areaCode;
this.sigunguCode = sigunguCode;
}

public Long getId() {
return id;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package Journey.Together.domain.place.repository;

import Journey.Together.domain.place.entity.DisabilityPlaceCategory;
import Journey.Together.domain.place.entity.Place;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface DisabilityPlaceCategoryRepository extends JpaRepository<DisabilityPlaceCategory, Long> {

List<DisabilityPlaceCategory> findAllByPlace(Place place);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package Journey.Together.domain.place.repository;


import Journey.Together.domain.place.entity.Place;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface PlaceRepository extends JpaRepository<Place, Long> {

@Query(value = "SELECT * FROM place p ORDER BY RAND() LIMIT :count", nativeQuery = true)
List<Place> findRandomProducts(@Param("count") int count);

@Query(value = "SELECT * FROM place p WHERE area_code = :areacode AND sigungu_code = :sigungucode " +
"ORDER BY RAND() LIMIT :count", nativeQuery = true)
List<Place> findAroundProducts(@Param("areacode") String areacode, @Param("sigungucode") String sigungucode,
@Param("count") int count);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package Journey.Together.domain.place.service;

import Journey.Together.domain.place.dto.response.MainRes;
import Journey.Together.domain.place.dto.response.PlaceRes;
import Journey.Together.domain.place.entity.DisabilityPlaceCategory;
import Journey.Together.domain.place.entity.Place;
import Journey.Together.domain.place.repository.DisabilityPlaceCategoryRepository;
import Journey.Together.domain.place.repository.PlaceRepository;
import Journey.Together.global.common.ApiResponse;
import Journey.Together.global.exception.Success;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import software.amazon.awssdk.services.s3.endpoints.internal.Value;

import java.util.*;

@Service
@RequiredArgsConstructor
public class PlaceService {
private final PlaceRepository placeRepository;
private final DisabilityPlaceCategoryRepository disabilityPlaceCategoryRepository;
private final Integer recommnedPlaceNum = 4;
private final Integer aroundPlaceNum = 2;

// 메인페이지 가져오기
public MainRes getMainPage(String areacode, String sigungucode){

List<Place> recommondPlaces = placeRepository.findRandomProducts(recommnedPlaceNum);
List<Place> aroundPlaces = placeRepository.findAroundProducts(areacode, sigungucode, aroundPlaceNum);


return new MainRes(getPlaceRes(recommondPlaces), getPlaceRes(aroundPlaces));
}

private List<PlaceRes> getPlaceRes(List<Place> list){
List<PlaceRes> placeList = new ArrayList<>();

for(Place place : list){
Set<String> disability = new HashSet<>();
disabilityPlaceCategoryRepository.findAllByPlace(place)
.forEach(disabilityPlaceCategory -> {
disability.add(disabilityPlaceCategory.getSubCategory().getCategory().getId().toString());
});
placeList.add(PlaceRes.of(place, new ArrayList<>(disability)));
}

return placeList;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package Journey.Together.domain.placeBookbark.entity;

import Journey.Together.domain.member.entity.Member;
import Journey.Together.domain.place.entity.Place;
import jakarta.persistence.*;
import lombok.*;

@Getter
@Setter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class PlaceBookmark {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "place_id")
Place place;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package Journey.Together.domain.placeReview.entity;

import Journey.Together.domain.member.entity.Member;
import Journey.Together.domain.place.entity.Place;
import Journey.Together.global.common.BaseTimeEntity;
import com.fasterxml.jackson.databind.ser.Serializers;
import jakarta.persistence.*;
import lombok.*;

import java.time.LocalDateTime;

@Getter
@Setter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class PlaceReview extends BaseTimeEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "place_review_id")
Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "place_id")
Place place;

Float grade;

String content;



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package Journey.Together.domain.placeReview.entity;

import jakarta.persistence.*;
import lombok.*;

@Getter
@Setter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class PlaceReviewImg {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "place_review_id")
PlaceReview placeReview;

String imgUrl;
}
Loading

0 comments on commit 775b113

Please sign in to comment.