Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BE-53-Feat-STOMP-API #15

Merged
merged 6 commits into from
Jan 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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