Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ff33bf2
Merge branch 'develop' into chatting
Leeyoujin00 Jan 18, 2025
63306de
Merge pull request #22 from Treen-app/feature/user
JiwonLee42 Jan 18, 2025
0cc97fb
[TEST] μ±„νŒ… Test API
Leeyoujin00 Jan 19, 2025
a22ca47
Merge branch 'develop' into chatting
Leeyoujin00 Jan 19, 2025
e9bc4f8
Merge pull request #23 from Treen-app/feature/user
JiwonLee42 Jan 19, 2025
84989b0
Merge branch 'develop' into chatting
Leeyoujin00 Jan 19, 2025
66d8201
[REFACTOR] User ν•„λ“œλͺ… μˆ˜μ •
Leeyoujin00 Jan 19, 2025
50f7da2
Merge pull request #25 from Treen-app/feature/user
JiwonLee42 Jan 19, 2025
ab17240
Merge branch 'develop' into chatting
Leeyoujin00 Jan 19, 2025
fb9dc68
[REFACTOR] μ±„νŒ… Redis ꡬ성 μˆ˜μ •
Leeyoujin00 Jan 21, 2025
cb83d54
[CHORE] 파일 μ‚­μ œ
Leeyoujin00 Jan 21, 2025
5528326
Merge branch 'chat' into develop
Leeyoujin00 Jan 21, 2025
937df4f
[FEAT] application.yml μˆ˜μ •
JiwonLee42 Jan 21, 2025
7f19792
[FEAT] μƒν’ˆ 등둝 μ—λŸ¬ μˆ˜μ •
JiwonLee42 Jan 22, 2025
a05ad7d
[FEAT] μƒν’ˆ 등둝 μ—λŸ¬ μˆ˜μ •
JiwonLee42 Jan 22, 2025
dcb6b5d
[FEAT] κ΅ν™˜ μƒν’ˆ 등둝 μ—λŸ¬ μˆ˜μ •
JiwonLee42 Jan 22, 2025
6308823
[FEAT] κ΅ν™˜ μƒν’ˆ 등둝 μ—λŸ¬ μˆ˜μ •
JiwonLee42 Jan 22, 2025
8596325
Merge pull request #28 from Treen-app/feature/user
JiwonLee42 Jan 22, 2025
f430333
[FEAT] μƒν’ˆκ±°λž˜ μ˜ˆμ•½ 생성, μ‚­μ œ #31
Leeyoujin00 Jan 23, 2025
7a1d6fc
[CHORE] .gitignore μˆ˜μ •
Leeyoujin00 Jan 23, 2025
f9accb5
Merge branch 'develop' into transactions
Leeyoujin00 Jan 23, 2025
7f6cf4a
Merge pull request #33 from Treen-app/feature/transactions
Leeyoujin00 Jan 23, 2025
a9f2ca0
Merge branch 'feature/user' into transactions
Leeyoujin00 Jan 28, 2025
107f1a5
[FEAT] μƒν’ˆκ±°λž˜ μ˜ˆμ•½ 생성, 쑰회, μ·¨μ†Œ
Leeyoujin00 Jan 28, 2025
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
Empty file removed .env
Empty file.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ build/
!**/src/test/**/build/
h2/
src/main/resources/application.yaml
src/main/resources/application.yml

### STS ###
.apt_generated
Expand All @@ -29,7 +30,7 @@ out/
!**/src/test/**/out/

### env ###
src/main/java/com/app/treen/.env
.env

### NetBeans ###
/nbproject/private/
Expand Down
Binary file modified .gradle/8.11.1/executionHistory/executionHistory.bin
Binary file not shown.
Binary file modified .gradle/8.11.1/executionHistory/executionHistory.lock
Binary file not shown.
Binary file modified .gradle/8.11.1/fileHashes/fileHashes.bin
Binary file not shown.
Binary file modified .gradle/8.11.1/fileHashes/fileHashes.lock
Binary file not shown.
Binary file modified .gradle/8.11.1/fileHashes/resourceHashesCache.bin
Binary file not shown.
Binary file modified .gradle/buildOutputCleanup/buildOutputCleanup.lock
Binary file not shown.
Binary file modified .gradle/file-system.probe
Binary file not shown.
Binary file modified build/classes/java/main/com/app/treen/TreenApplication.class
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
18 changes: 12 additions & 6 deletions build/resources/main/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
# username: ${DB_USERNAME:root}
# password: ${DB_PASSWORD:password}
spring:
redis:
host: localhost
port: 6379
config:
import: optional:file:.env[.properties] # .env νŒŒμΌμ„ 직접 λ‘œλ“œ
datasource:
Expand All @@ -13,16 +16,15 @@ spring:
username: sa # κΈ°λ³Έ μ‚¬μš©μžλͺ…
password:
jpa:
hibernate.ddl-auto: create
hibernate.ddl-auto: update
show-sql: true
properties:
hibernate:
format_sql: true
database-platform: org.hibernate.dialect.H2Dialect # H2Dialect μ„€μ •
data:
mongodb:
uri: mongodb+srv://cymn6032:leeujin0309%40@cluster0.q68ku.mongodb.net/
database: treen_dev
uri: ${MONGO_DB_URI}
database: ${MONGO_DB_DATABASE}
# database-platform: org.hibernate.dialect.MySQL8Dialect
cloud:
aws:
Expand All @@ -36,5 +38,9 @@ cloud:
auto: false
jwt:
secret:
key: 780f7e25c9e36b276459459a13b081bbe121af603c2d039b4228739a690d399c75386d3d89f63a099ba817e3764fbf1c7bf744c060c24d2e812e10d511cc3b64
refresh: 4dedc73032e5574ca6133ddfd6c767b4d7567012482d21f3a268248209997fc52af16f46a3624da10116d9e3e6cacd2ae0750b468738d15e12ba9952d710a7af
key: ${JWT_SECRET_KEY}
refresh: ${JWT_REFRESH_KEY}
coolsms:
apiKey: ${COOL_SMS_KEY}
apiSecret: ${COOL_SMS_SECRET_KEY}
senderNumber: ${COOL_SMS_SEND_NUMBER}
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ public class QTransProduct extends EntityPathBase<TransProduct> {

public final NumberPath<Long> id = createNumber("id", Long.class);

public final ListPath<TransPImg, QTransPImg> images = this.<TransPImg, QTransPImg>createList("images", TransPImg.class, QTransPImg.class, PathInits.DIRECT2);

public final NumberPath<Long> likedCount = createNumber("likedCount", Long.class);

public final EnumPath<com.app.treen.products.entity.enumeration.Method> method = createEnum("method", com.app.treen.products.entity.enumeration.Method.class);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/app/treen/TreenApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

@EnableJpaAuditing
@EnableJpaRepositories(basePackages = "com.app.treen.jpa.repository")
@EnableMongoRepositories(basePackages = "com.app.treen.mongo")
@EnableMongoRepositories(basePackages = "com.app.treen.mongo.repository")
@SpringBootApplication
public class TreenApplication {

Expand Down
170 changes: 65 additions & 105 deletions src/main/java/com/app/treen/chat_room/controller/ChatRoomController.java
Original file line number Diff line number Diff line change
@@ -1,124 +1,57 @@
//package com.app.treen.chat_room.controller;
//
//import com.app.treen.chat_room.dto.request.ChatRoomRequestDto;
//import com.app.treen.chat_room.dto.request.MessageRequestDto;
//import com.app.treen.chat_room.dto.response.*;
//import com.app.treen.chat_room.service.ChatRoomService;
//import com.app.treen.common.jwt.service.dto.CustomUserDetails;
//import com.app.treen.common.response.ResponseEntity;
//import jakarta.validation.Valid;
//import lombok.RequiredArgsConstructor;
//import org.springframework.http.ResponseEntity;
//import org.springframework.messaging.handler.annotation.MessageMapping;
//import org.springframework.messaging.simp.SimpMessageSendingOperations;
//import org.springframework.security.core.annotation.AuthenticationPrincipal;
//import org.springframework.web.bind.annotation.*;
//import reactor.core.publisher.Flux;
//import reactor.core.publisher.Mono;
//
//import java.util.List;
//
//@RestController
//@RequiredArgsConstructor
//public class ChatRoomController {
//
// private final SimpMessageSendingOperations template;
// private final ChatRoomService chatRoomService;
//
// // μ±„νŒ…λ¦¬μŠ€νŠΈ λ°˜ν™˜
//// @GetMapping("/chat/{id}")
//// public ResponseEntity<List<ChatMessageResponseDto>> getChatMessages(@PathVariable Long id) {
//// // μž„μ‹œλ‘œ 리슀트 ν˜•μ‹μœΌλ‘œ κ΅¬ν˜„, μ‹€μ œλ‘œλŠ” DB μ ‘κ·Ό ν•„μš”
//// ChatMessageResponseDto test = new ChatMessageResponseDto(1L, "test", "test");
//// return ResponseEntity.ok().body(List.of(test));
//// }
//
// // λ©”μ‹œμ§€ 솑신 및 μˆ˜μ‹ , /pubκ°€ μƒλž΅λœ λͺ¨μŠ΅. ν΄λΌμ΄μ–ΈνŠΈ λ‹¨μ—μ„œλŠ” /pub/message 둜 μš”μ²­
//// @MessageMapping("/message")
//// public ResponseEntity<Void> receiveMessage(@RequestBody MessageResponseDto chat) {
//// // λ©”μ‹œμ§€λ₯Ό ν•΄λ‹Ή μ±„νŒ…λ°© κ΅¬λ…μžλ“€μ—κ²Œ 전솑
//// template.convertAndSend("/sub/chatroom/1", chat);
//// return ResponseEntity.ok().build();
//// }
//
// // μ±„νŒ…λ°© λͺ©λ‘ 쑰회
// @GetMapping("/auth/chat-list")
// public ResponseEntity<ChatRoomsResponse> getChatRooms(@AuthenticationPrincipal CustomUserDetails userDetails) {
//
// ChatRoomsResponse chatRoomsResponse = ChatRoomsResponse.builder()
// .chatRooms(chatRoomService.getChatRooms(userDetails.getMember().getId()))
// .build();
//
// return ResponseEntity.onSuccess(chatRoomsResponse);
// }
//
// // μ±„νŒ…λ°© 쑰회
// @GetMapping("auth/{chatRoomId}")
// public Mono<ResponseEntity<ChatRoomDetailResponse>> getChatRoomDetail(@AuthenticationPrincipal CustomUserDetails userDetails,
// @PathVariable Long chatRoomId) {
//
// return chatRoomService.getChatRoomDetail(userDetails.getMember().getId(), chatRoomId)
// .map(ResponseEntity::onSuccess);
// }
//
// // μ±„νŒ…λ°© 생성
// @PostMapping("auth/create")
// public ResponseEntity<ChatRoomCreateResponse> createChatRoom(@AuthenticationPrincipal CustomUserDetails userDetails,
// @Valid @RequestBody ChatRoomRequestDto dto) {
// Long chatRoomId = chatRoomService.saveChatRoom(userDetails.getMember().getId(),
// dto.getSellerId(), dto.getProductId());
// return ResponseEntity.onSuccess(ChatRoomCreateResponse.builder()
// .chatRoomId(chatRoomId)
// .build());
// }
//
// // 이전 μ±„νŒ… λ©”μ‹œμ§€λ“€ 쑰회
// @GetMapping("/find/chat/list/{id}")
// public Mono<ResponseEntity<List<MessageResponseDto>>> findMessages(@PathVariable("id") Long id) {
// Flux<MessageResponseDto> response = chatRoomService.findChatMessages(id);
// return response.collectList().map(ResponseEntity::onSuccess);
// }
//
// // λ©”μ‹œμ§€ 솑신 및 μˆ˜μ‹ 
// @MessageMapping("/message")
// public Mono<ResponseEntity<Void>> receiveMessage(@RequestBody MessageRequestDto chat) {
// return chatRoomService.saveChatMessage(chat).doOnNext(message -> {
// // λ©”μ‹œμ§€λ₯Ό ν•΄λ‹Ή μ±„νŒ…λ°© κ΅¬λ…μžλ“€μ—κ²Œ 전솑
// template.convertAndSend("/sub/chatroom/" + chat.getRoomId(),
// MessageResponseDto.of(message));
//
// }).thenReturn(ResponseEntity.ok().build());
// }
//
//}
/*
package com.app.treen.chat_room.controller;

import com.app.treen.chat_room.dto.request.ChatRoomRequestDto;
import com.app.treen.chat_room.dto.request.MessageRequestDto;
import com.app.treen.chat_room.dto.response.*;
import com.app.treen.chat_room.service.ChatRoomService;
import com.app.treen.user.service.CustomUserDetails;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.simp.SimpMessageSendingOperations;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.List;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/chatroom")
public class ChatRoomController {

private final SimpMessageSendingOperations template;
private final ChatRoomService chatRoomService;

// μ±„νŒ…λ°© λͺ©λ‘ 쑰회
@GetMapping("/auth/chat-list")
public ResponseEntity<ChatRoomsResponse> getChatRooms(@AuthenticationPrincipal CustomUserDetails userDetails) {

ChatRoomsResponse chatRoomsResponse = ChatRoomsResponse.builder()
.chatRooms(chatRoomService.getChatRooms(userDetails.getMember().getId()))
.chatRooms(chatRoomService.getChatRooms(userDetails.getUser().getId()))
.build();

return ResponseEntity.onSuccess(chatRoomsResponse);
return ResponseEntity.ok(chatRoomsResponse);
}

// μ±„νŒ…λ°© 쑰회
@GetMapping("auth/{chatRoomId}")
public Mono<ResponseEntity<ChatRoomDetailResponse>> getChatRoomDetail(@AuthenticationPrincipal CustomUserDetails userDetails,
@PathVariable Long chatRoomId) {
@PathVariable Long chatRoomId) {

return chatRoomService.getChatRoomDetail(userDetails.getMember().getId(), chatRoomId)
.map(ResponseEntity::onSuccess);
return chatRoomService.getChatRoomDetail(userDetails.getUser().getId(), chatRoomId)
.map(ResponseEntity::ok);
}

// μ±„νŒ…λ°© 생성
@PostMapping("auth/create")
public ResponseEntity<ChatRoomCreateResponse> createChatRoom(@AuthenticationPrincipal CustomUserDetails userDetails,
@Valid @RequestBody ChatRoomRequestDto dto) {
Long chatRoomId = chatRoomService.saveChatRoom(userDetails.getMember().getId(),
@Valid @RequestBody ChatRoomRequestDto dto) {
Long chatRoomId = chatRoomService.saveChatRoom(userDetails.getUser().getId(),
dto.getSellerId(), dto.getProductId());
return ResponseEntity.onSuccess(ChatRoomCreateResponse.builder()
return ResponseEntity.ok(ChatRoomCreateResponse.builder()
.chatRoomId(chatRoomId)
.build());
}
Expand All @@ -127,12 +60,39 @@ public ResponseEntity<ChatRoomCreateResponse> createChatRoom(@AuthenticationPrin
@GetMapping("/find/chat/list/{id}")
public Mono<ResponseEntity<List<MessageResponseDto>>> findMessages(@PathVariable("id") Long id) {
Flux<MessageResponseDto> response = chatRoomService.findChatMessages(id);
return response.collectList().map(ResponseEntity::onSuccess);
return response.collectList().map(ResponseEntity::ok);
}

// ======== ν…ŒμŠ€νŠΈ API μž‘μ„± ==========

// μ±„νŒ…λ°© 쑰회
@GetMapping("test/{chatRoomId}")
public Mono<ResponseEntity<ChatRoomDetailResponse>> getChatRoomDetailTest(
@PathVariable("chatRoomId") Long chatRoomId) {

return chatRoomService.getChatRoomDetail(1L, chatRoomId)
.map(ResponseEntity::ok);
}

@PostMapping("test/create")
public ResponseEntity<ChatRoomCreateResponse> createChatRoomTest(
@Valid @RequestBody ChatRoomRequestDto dto) {
Long chatRoomId = chatRoomService.saveChatRoom(1L,
dto.getSellerId(), dto.getProductId());
return ResponseEntity.ok(ChatRoomCreateResponse.builder()
.chatRoomId(chatRoomId)
.build());
}

@GetMapping("test/find/chat/list/{id}")
public Mono<ResponseEntity<List<MessageResponseDto>>> findMessagesTest(@PathVariable("id") Long id) {
Flux<MessageResponseDto> response = chatRoomService.findChatMessages(id);
return response.collectList().map(ResponseEntity::ok);
}

*/
}

// // λ©”μ‹œμ§€ 솑신 및 μˆ˜μ‹ 
// λ©”μ‹œμ§€ 솑신 및 μˆ˜μ‹ 
// @MessageMapping("/message")
// public Mono<ResponseEntity<Void>> receiveMessage(@RequestBody MessageRequestDto chat) {
// return chatRoomService.saveChatMessage(chat).doOnNext(message -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
package com.app.treen.chat_room.dto.response;

import com.app.treen.message.document.Message;
import com.app.treen.products.entity.TransProduct;
import com.app.treen.products.entity.enumeration.Gender;
import com.app.treen.products.entity.enumeration.Method;
import com.app.treen.products.entity.enumeration.Size;
import com.app.treen.products.entity.enumeration.UsedRank;
import com.app.treen.transactions.entity.Transactions;
import com.app.treen.user.entity.User;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Builder;
Expand All @@ -17,6 +23,8 @@ public class ChatRoomDetailResponse {
private List<MessageDto> messages;
private MemberDto buyer;
private MemberDto seller;
private TransProductDto transProduct;
private TransactionsDto transaction;

@Data
@Builder
Expand Down Expand Up @@ -52,4 +60,56 @@ public static MessageDto from(Message message) {
}
}

@Data
@Builder
public static class TransProductDto {
private Long id;
private String name;
private String usedTerm;
private Size size;
private UsedRank usedRank;
private Long point;
private Method method;
private String category;
private String imageUrls;

public static TransProductDto from(TransProduct transProduct) {
return TransProductDto.builder()
.id(transProduct.getId())
.name(transProduct.getName())
.usedTerm(transProduct.getUsedTerm())
.size(transProduct.getSize())
.point(transProduct.getPoint())
.method(transProduct.getMethod())
.category(transProduct.getCategory().toString())
//.imageUrls(transProduct.)
.build();
}
}

@Data
@Builder
public static class TransactionsDto {

private Long id;
private LocalDateTime transDate;
private boolean isDirect;
private String place;
private String deliveryAddress;
private String deliveryRequest;
private String deliveryFeeAccount;

public static TransactionsDto from(Transactions transaction) {
return TransactionsDto.builder()
.id(transaction.getId())
.transDate(transaction.getTransDate())
.isDirect(transaction.isDirect())
.place(transaction.getPlace())
.deliveryAddress(transaction.getDeliveryAddress())
.deliveryRequest(transaction.getDeliveryRequest())
.deliveryFeeAccount(transaction.getDeliveryFeeAccount())
.build();
}
}

}
1 change: 1 addition & 0 deletions src/main/java/com/app/treen/chat_room/entity/ChatRoom.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public class ChatRoom extends BaseTimeEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "chat_room_id")
private Long id;
private String title;
private boolean isReserved; // 거래 μ˜ˆμ•½ μ—¬λΆ€
Expand Down
Loading