Skip to content

Commit

Permalink
Merge branch 'dev' into deploy
Browse files Browse the repository at this point in the history
  • Loading branch information
Byunseoyoon committed Jun 4, 2024
2 parents 32b600b + 6f67bbc commit c8ed553
Show file tree
Hide file tree
Showing 9 changed files with 115 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class HeartService {
private final HeartRepository HeartRepository;

public Boolean getIsLikedById( long popupId, long userId){
Boolean isLiked = HeartRepository.getIsLikedById(popupId, userId);
Boolean isLiked = HeartRepository.existsByPopupPopupIdAndMemberUserId(popupId, userId);

return isLiked;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public interface HeartRepository extends JpaRepository<Heart, Long> {
Long countHeartByPopup(Long popupId);

@Query("SELECT COUNT(h) > 0 FROM Heart h WHERE h.popup.id = :popupId AND h.member.id = :userId")
Boolean getIsLikedById(Long popupId, Long userId);
Boolean existsByPopupPopupIdAndMemberUserId(Long popupId, Long userId);

@Query("SELECT h.heartId FROM Heart h WHERE h.popup.id = :popupId AND h.member.id = :userId")
Long findHeartById(Long popupId, Long userId);
Expand All @@ -28,7 +28,7 @@ public interface HeartRepository extends JpaRepository<Heart, Long> {

@Modifying
@Transactional
@Query(" DELETE FROM Heart WHERE heartId = :heartId")
@Query("DELETE FROM Heart WHERE heartId = :heartId")
void deleteHeart(Long heartId);

}
Expand Down
6 changes: 2 additions & 4 deletions src/main/java/com/soongsil/poppin/popup/domain/Popup.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,13 @@
import com.soongsil.poppin.category.domain.Category;
import com.soongsil.poppin.heart.domain.Heart;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.*;

import java.time.LocalDateTime;
import java.util.List;

@Getter
@Setter
@Entity
@Table(name = "popup")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/com/soongsil/poppin/user/domain/UserRepository.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.soongsil.poppin.user.domain;

import jakarta.transaction.Transactional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
Expand All @@ -11,4 +13,13 @@ public interface UserRepository extends JpaRepository<Member, Long> {
Member getWithEmail(@Param("email") String email);

Member findBynickName(String nickName);

@Query("select m.point from Member m where m.userId = :userId")
Long getPointById(@Param("userId") Long userId);


@Modifying
@Transactional
@Query("update Member m set m.point = :point where m.userId = :userId")
void updatePayPoint(@Param("userId") Long userid, @Param("point") Long point);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package com.soongsil.poppin.userchat.application;

import com.soongsil.poppin.popup.domain.Popup;
import com.soongsil.poppin.popup.domain.PopupRepository;
import com.soongsil.poppin.user.domain.Member;
import com.soongsil.poppin.user.domain.UserRepository;
import com.soongsil.poppin.userchat.application.response.JoinUserChat;
import com.soongsil.poppin.userchat.application.response.UserChatInfo;
import com.soongsil.poppin.userchat.domain.UserChat;
import com.soongsil.poppin.userchat.domain.UserChatRepository;
Expand All @@ -17,6 +22,8 @@
@RequiredArgsConstructor
public class UserChatSearchService {
private final UserChatRepository userChatRepository;
private final UserRepository userRepository;
private final PopupRepository popupRepository;

// 유저 채팅 리스트 불러오기
public List<UserChatInfo> getUserChats(int page, int size, Long userId){
Expand All @@ -35,4 +42,42 @@ public List<UserChatInfo> getUserChats(int page, int size, Long userId){

return userChats;
}

public JoinUserChat joinLive(Long userId, Long popupId, Integer minusPoint){
JoinUserChat joinUserChat =null;
//참여하고 있는 채팅방인지 확인
Boolean isJoin = userChatRepository.existsByMemberUserIdAndPopupPopupId(userId, popupId);

//이미 참여 하고 있다면
if(isJoin) {
joinUserChat = new JoinUserChat(isJoin,null, popupId, null);
return joinUserChat;
}

// 포인트 충분한지 확인
Long userPoint = userRepository.getPointById(userId);
Long leftPoint = userPoint - minusPoint;
if(leftPoint < 0){ //포인트 부족하다면
joinUserChat = new JoinUserChat(isJoin, false, popupId, null);
return joinUserChat;
}


userRepository.updatePayPoint(userId,leftPoint); //채팅 방에서 값 차감

Member member = userRepository.findById(userId).orElseThrow(() -> new IllegalArgumentException("Invalid user ID"));
Popup popup = popupRepository.findById(popupId).orElseThrow(() -> new IllegalArgumentException("Invalid popup ID"));

UserChat userChat = UserChat.builder()
.member(member)
.popup(popup)
.price(minusPoint)
.build();

userChatRepository.save(userChat);
joinUserChat = new JoinUserChat(isJoin, true, popupId, leftPoint);


return joinUserChat;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.soongsil.poppin.userchat.application.response;

import lombok.Builder;
import lombok.Getter;

@Getter
public class JoinUserChat {
private final Boolean isJoin; //이미 가입 되어있는지?
private final Boolean isMoney; //돈이 있는지?
private final Long popupId;
private final Long leftPoint;

@Builder
public JoinUserChat(Boolean isJoin, Boolean isMoney, Long popupId, Long leftPoint) {
this.isJoin =isJoin;
this.isMoney =isMoney;
this.popupId = popupId;
this.leftPoint= leftPoint;
}

public Boolean getJoin() {
return isJoin;
}

public Boolean getMoney() {
return isMoney;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,12 @@
import com.soongsil.poppin.popup.domain.Popup;
import com.soongsil.poppin.user.domain.Member;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.*;

import java.time.LocalDateTime;

@Getter
@Setter
@Entity
@Table(name = "chat")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.soongsil.poppin.userchat.domain;

import jakarta.transaction.Transactional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jdbc.repository.query.Query;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
Expand All @@ -16,4 +19,11 @@ public interface UserChatRepository extends JpaRepository<UserChat, Long> {
"FROM UserChat uc " +
"WHERE uc.member.userId = :userId")
List<UserChat> findUserChatsByMemberUserId(Long userId);

//userId와 해당하는 팝업에 있는 채팅 리스트인지
@Query("SELECT COUNT(uc) > 0 FROM UserChat uc " +
"WHERE (uc.member.userId = :userId " +
"AND uc.popup.id = :popupId ) ")
Boolean existsByMemberUserIdAndPopupPopupId(Long userId, Long popupId);

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.soongsil.poppin.userchat.presentation;

import com.soongsil.poppin.global.response.ResponseDto;
import com.soongsil.poppin.heart.application.response.PostHeart;
import com.soongsil.poppin.userchat.application.UserChatSearchService;
import com.soongsil.poppin.userchat.application.response.JoinUserChat;
import com.soongsil.poppin.userchat.application.response.UserChatInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
Expand Down Expand Up @@ -35,4 +37,15 @@ public ResponseDto<List<UserChatInfo>> getUserChatList(@RequestParam(value = "us
return ResponseDto.map(HttpStatus.NOT_FOUND.value(), "getUserChatList 에러 발생.", null);
}
}

@PostMapping("/joinLive")
public ResponseDto<JoinUserChat> joinLive(@RequestParam(value = "userId") Long userId, @RequestParam(value = "popupId") Long popupId, @RequestParam(value = "minusPoint") Integer minusPoint) {
JoinUserChat joinUserChat = userChatSearchService.joinLive(userId, popupId, minusPoint);
if(joinUserChat.getJoin()){
return ResponseDto.map(HttpStatus.OK.value(), "이미 참가중인 채팅 방입니다.", joinUserChat);
}else if(!joinUserChat.getIsMoney()){
ResponseDto.map(HttpStatus.OK.value(), "포인트가 부족합니다.", joinUserChat);
}
return ResponseDto.map(HttpStatus.OK.value(), "결제가 성공적으로 이루어졌습니다.", joinUserChat);
}
}

0 comments on commit c8ed553

Please sign in to comment.