Skip to content

Commit

Permalink
Merge pull request #14 from FinalDoubleTen/BE-54-STOMP-API-dev
Browse files Browse the repository at this point in the history
Be 54 stomp api dev
  • Loading branch information
Kim-Dong-Jun99 authored Jan 10, 2024
2 parents 10bc59a + 08fb437 commit 1a30565
Show file tree
Hide file tree
Showing 38 changed files with 716 additions and 151 deletions.
2 changes: 1 addition & 1 deletion .http/NaverMap.http
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ X-NCP-APIGW-API-KEY: {{naver-map-client-secret}}


### 자동차 경로 계산 api
GET https://naveropenapi.apigw.ntruss.com/map-direction-15/v1/driving?start=127.1058342,37.359708&goal=126.9284261,37.5258975
GET https://naveropenapi.apigw.ntruss.com/map-direction-15/v1/driving?start=128.5175868107,36.5376537450&goal=128.5163479914,36.5390674494
X-NCP-APIGW-API-KEY-ID: {{naver-map-client-id}}
X-NCP-APIGW-API-KEY: {{naver-map-client-secret}}
7 changes: 7 additions & 0 deletions .http/Odsay.http
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,10 @@ Origin: https://weplanplans.site
GET https://api.odsay.com/v1/api/searchPubTransPathT?apiKey={{odsay-key}}&SX=127.1051573&SY=37.3718141&EX=227.124206&EY=37.495701
Origin: https://weplanplans.site

### 대중교통 길 찾기
GET https://api.odsay.com/v1/api/searchPubTransPathT?apiKey={{odsay-key}}&SX=128.5163479914&SY=36.5390674494&EX=128.5163479914&EY=36.5390674494
Origin: https://weplanplans.site

### 대중교통 길 찾기
GET https://api.odsay.com/v1/api/searchPubTransPathT?apiKey={{odsay-key}}&SX=128.5163479914&SY=36.5390674494&EX=128.3383767680&EY=38.0731872541
Origin: https://weplanplans.site
8 changes: 8 additions & 0 deletions .json/AddTripItems.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"visitDate": "2024-01-04",
"newTripItems": [
{
"tourItemId": 72
}
]
}
3 changes: 3 additions & 0 deletions .json/GetPathAndItems.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"visitDate": "2024-01-03"
}
3 changes: 3 additions & 0 deletions .json/TripItemPriceUpdateMsg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"price": 50000
}
3 changes: 3 additions & 0 deletions .json/TripItemTransportationUpdateMsg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"transportation": "CAR"
}
3 changes: 3 additions & 0 deletions .json/TripItemVistDateUpdateMsg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"visitDate": "2024-01-04"
}
21 changes: 21 additions & 0 deletions .json/UpdateTripItemOrder.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"visitDate": "2024-01-03",
"tripItemOrder": [
{
"tripItemId": 1,
"seqNum": 3
},
{
"tripItemId": 3,
"seqNum": 4
},
{
"tripItemId": 4,
"seqNum": 1
},
{
"tripItemId": 6,
"seqNum": 2
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,4 @@ public class Member extends BaseTimeEntity {
@OneToMany(mappedBy = "member", fetch = LAZY, cascade = REMOVE)
private final List<LikedItem> likedItems = new ArrayList<>();

@OneToMany(mappedBy = "creator", fetch = LAZY, cascade = REMOVE)
private final List<TripItem> tripItems = new ArrayList<>();
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
package org.tenten.tentenstomp.domain.member.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.tenten.tentenstomp.domain.member.entity.Member;
import org.tenten.tentenstomp.domain.trip.dto.response.TripMemberInfoMsg;

import java.util.List;
import java.util.Optional;

public interface MemberRepository extends JpaRepository<Member, Long> {
@Query("SELECT NEW org.tenten.tentenstomp.domain.trip.dto.response.TripMemberInfoMsg(m.id, m.nickname, m.profileImageUrl) " +
"FROM TripMember tm LEFT OUTER JOIN Member m ON tm.member.id = m.id WHERE tm.trip.id = :tripId")
List<TripMemberInfoMsg> findTripMemberInfoByTripId(@Param("tripId") Long tripId);
@Query("SELECT NEW org.tenten.tentenstomp.domain.trip.dto.response.TripMemberInfoMsg(m.id, m.nickname, m.profileImageUrl) FROM Member m WHERE m.id = :memberId")
Optional<TripMemberInfoMsg> findTripMemberInfoByMemberId(@Param("memberId") Long memberId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,21 @@ public void testKafka(@Payload TripUpdateMsg tripUpdateMsg) {
kafkaProducer.send("kafka", tripUpdateMsg);
}

@MessageMapping("/trips/{tripId}/connectMember")
public void connectMember(@DestinationVariable String tripId, @Payload MemberConnectMsg memberConnectMsg) {
tripService.connectMember(tripId, memberConnectMsg);
}

@MessageMapping("/trips/{tripId}/disconnectMember")
public void disconnectMember(@DestinationVariable String tripId, @Payload MemberDisconnectMsg memberDisconnectMsg) {
tripService.disconnectMember(tripId, memberDisconnectMsg);
}

@MessageMapping("/trips/{tripId}/enterMember")
public void enterMember(@DestinationVariable String tripId, @Payload MemberConnectMsg memberConnectMsg) {
tripService.enterMember(tripId, memberConnectMsg);
}

@MessageMapping("/trips/{tripId}/info")
public void editPlan(@DestinationVariable String tripId, @Payload TripUpdateMsg tripUpdateMsg) {
tripService.updateTrip(tripId, tripUpdateMsg);
Expand All @@ -36,13 +51,8 @@ public void updateTripItemOrder(@DestinationVariable String tripId, @Payload Tri
tripService.updateTripItemOrder(tripId, orderUpdateMsg);
}

@MessageMapping("/trips/{tripId}/connectMember")
public void connectMember(@DestinationVariable String tripId, @Payload MemberConnectMsg memberConnectMsg) {
tripService.connectMember(tripId, memberConnectMsg);
}

@MessageMapping("/trips/{tripId}/disconnectMember")
public void disconnectMember(@DestinationVariable String tripId, @Payload MemberDisconnectMsg memberDisconnectMsg) {
tripService.disconnectMember(tripId, memberDisconnectMsg);
@MessageMapping("/trips/{tripId}/getPathAndItems")
public void getPathAndItems(@DestinationVariable String tripId, @Payload PathAndItemRequestMsg pathAndItemRequestMsg) {
tripService.getPathAndItems(tripId, pathAndItemRequestMsg);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.web.bind.annotation.RestController;
import org.tenten.tentenstomp.domain.trip.dto.request.TripItemPriceUpdateMsg;
import org.tenten.tentenstomp.domain.trip.dto.request.TripItemTransportationUpdateMsg;
import org.tenten.tentenstomp.domain.trip.dto.request.TripItemVisitDateUpdateMsg;
import org.tenten.tentenstomp.domain.trip.service.TripItemService;

Expand All @@ -24,6 +25,11 @@ public void updateTripItemVisitDate(@DestinationVariable String tripItemId, @Pay
tripItemService.updateTripItemVisitDate(tripItemId, visitDateUpdateMsg);
}

@MessageMapping("/tripItems/{tripItemId}/updateTransportation")
public void updateTripItemTransportation(@DestinationVariable String tripItemId, @Payload TripItemTransportationUpdateMsg tripItemTransportationUpdateMsg) {
tripItemService.updateTripItemTransportation(tripItemId, tripItemTransportationUpdateMsg);
}

@MessageMapping("/tripItems/{tripItemId}/deleteItem")
public void deleteTripItem(@DestinationVariable String tripItemId) {
tripItemService.deleteTripItem(tripItemId);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package org.tenten.tentenstomp.domain.trip.dto.request;
public record PathAndItemRequestMsg(
String visitDate
) {
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,32 @@
package org.tenten.tentenstomp.domain.trip.dto.request;

import org.tenten.tentenstomp.domain.tour.entity.TourItem;
import org.tenten.tentenstomp.domain.trip.entity.Trip;
import org.tenten.tentenstomp.domain.trip.entity.TripItem;
import org.tenten.tentenstomp.global.common.enums.Transportation;

import java.time.LocalDate;
import java.util.List;

import static org.tenten.tentenstomp.global.common.enums.Transportation.PUBLIC_TRANSPORTATION;

public record TripItemAddMsg(
String visitDate,
List<TripItemCreateRequest> newTripItems
) {
public record TripItemCreateRequest(
Long tourItemId,
Transportation transportation,
Long seqNum,
Long price
Long tourItemId
) {
public static TripItem toEntity(TourItem tourItem, Trip trip, Long seqNum, LocalDate visitDate) {

return TripItem.builder()
.transportation(PUBLIC_TRANSPORTATION)
.trip(trip)
.price(0L)
.seqNum(seqNum)
.tourItem(tourItem)
.visitDate(visitDate)
.build();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.tenten.tentenstomp.domain.trip.dto.request;

import org.tenten.tentenstomp.global.common.enums.Transportation;

public record TripItemTransportationUpdateMsg(
Transportation transportation
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.tenten.tentenstomp.domain.trip.dto.response;

public record TripBudgetMsg(
Long tripId,
Long budget,
Long calculatedPrice
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.tenten.tentenstomp.domain.trip.dto.response;

import org.tenten.tentenstomp.global.common.enums.Transportation;

import java.time.LocalDate;

public record TripItemInfo(
Long tripItemId,
Long tourItemId,
String name,
String thumbnailUrl,
Long contentTypeId,
Transportation transportation,
Long seqNum,
LocalDate visitDate,
Long price
) {

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import org.tenten.tentenstomp.global.common.enums.Transportation;

import java.time.LocalDate;

public record TripItemInfoMsg(
Long tripItemId,
Long tourItemId,
Expand All @@ -13,4 +15,5 @@ public record TripItemInfoMsg(
String visitDate,
Long price
) {

}
Original file line number Diff line number Diff line change
@@ -1,11 +1,32 @@
package org.tenten.tentenstomp.domain.trip.dto.response;

import org.tenten.tentenstomp.domain.trip.dto.request.TripItemPriceUpdateMsg;
import org.tenten.tentenstomp.domain.trip.entity.Trip;
import org.tenten.tentenstomp.domain.trip.entity.TripItem;
import org.tenten.tentenstomp.global.common.enums.Category;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

public record TripItemMsg(
Long tripId,
String visitDate,
List<TripItemInfoMsg> tripItems
) {
public static TripItemMsg fromTripItemList(Long tripId, String visitDate, List<TripItem> tripItems) {
return new TripItemMsg(tripId, visitDate, tripItems.stream().map(t-> new TripItemInfoMsg(t.getId(), t.getTourItem().getId(), t.getTourItem().getTitle(), t.getTourItem().getOriginalThumbnailUrl(), Category.fromCode(t.getTourItem().getContentTypeId()).toString(), t.getTransportation(), t.getSeqNum(), t.getVisitDate().toString(), t.getPrice())).toList());
}

public static TripItemMsg fromTripItemList(Long tripId, String visitDate, List<TripItem> tripItems, Long tripItemId, TripItemPriceUpdateMsg updateMsg) {
List<TripItemInfoMsg> tripItemInfoMsgs = new ArrayList<>();
for (TripItem t : tripItems) {
if (t.getId().equals(tripItemId)) {
tripItemInfoMsgs.add(new TripItemInfoMsg(t.getId(), t.getTourItem().getId(), t.getTourItem().getTitle(), t.getTourItem().getOriginalThumbnailUrl(), Category.fromCode(t.getTourItem().getContentTypeId()).toString(), t.getTransportation(), t.getSeqNum(), t.getVisitDate().toString(), updateMsg.price()));
} else {
tripItemInfoMsgs.add(new TripItemInfoMsg(t.getId(), t.getTourItem().getId(), t.getTourItem().getTitle(), t.getTourItem().getOriginalThumbnailUrl(), Category.fromCode(t.getTourItem().getContentTypeId()).toString(), t.getTransportation(), t.getSeqNum(), t.getVisitDate().toString(), t.getPrice()));
}
}
return new TripItemMsg(tripId, visitDate, tripItemInfoMsgs);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

public record TripMemberMsg(
Long tripId,
List<TripMemberInfoMsg> connectedMembers
List<TripMemberInfoMsg> connectedMembers,
List<TripMemberInfoMsg> tripMembers
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public record TripPathInfoMsg(

) {
public record PathInfo(
Long price,
Integer price,
Double totalDistance,
Long totalTime
){}
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/org/tenten/tentenstomp/domain/trip/entity/Trip.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,17 @@
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.ColumnDefault;
import org.tenten.tentenstomp.domain.trip.dto.request.TripUpdateMsg;
import org.tenten.tentenstomp.domain.trip.dto.response.TripInfoMsg;
import org.tenten.tentenstomp.global.common.BaseTimeEntity;
import org.tenten.tentenstomp.global.common.enums.TripStatus;
import org.tenten.tentenstomp.global.converter.MapConverter;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import static jakarta.persistence.CascadeType.REMOVE;
import static jakarta.persistence.EnumType.STRING;
Expand Down Expand Up @@ -41,6 +44,13 @@ public class Trip extends BaseTimeEntity {
private Boolean isDeleted;
private String tripName;
private Long budget;
@ColumnDefault("0")
private Long tripItemPriceSum;
@ColumnDefault("0")
private Integer transportationPriceSum;
@Convert(converter = MapConverter.class)
@Column(columnDefinition = "JSON")
private Map<String, Integer> tripPathPriceMap;

@OneToMany(mappedBy = "trip", fetch = LAZY, cascade = REMOVE)
private final List<TripMember> tripMembers = new ArrayList<>();
Expand All @@ -64,4 +74,19 @@ public TripInfoMsg changeTripInfo(TripUpdateMsg request) {
return new TripInfoMsg(this.getId(), request.startDate(), request.endDate(), this.getNumberOfPeople(), this.getTripName(), this.getTripStatus(),
this.getArea(), this.getSubarea(), this.getBudget());
}

public TripInfoMsg toTripInfo() {
return new TripInfoMsg(this.getId(), this.startDate.toString(), this.endDate.toString(), this.getNumberOfPeople(), this.getTripName(), this.getTripStatus(),
this.getArea(), this.getSubarea(), this.getBudget());
}

public void updateTransportationPriceSum(Integer oldVisitDateTransportationPriceSum, Integer newVisitDateTransportationPriceSum) {
this.transportationPriceSum -= oldVisitDateTransportationPriceSum;
this.transportationPriceSum += newVisitDateTransportationPriceSum;
}

public void updateTripItemPriceSum(Long oldTripItemPrice, Long newTripItemPrice) {
this.tripItemPriceSum -= oldTripItemPrice;
this.tripItemPriceSum += newTripItemPrice;
}
}
Loading

0 comments on commit 1a30565

Please sign in to comment.