Skip to content
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
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,29 @@
import org.springframework.web.bind.annotation.RestController;

import com.brainpix.api.ApiResponse;
import com.brainpix.api.swagger.SwaggerPageable;
import com.brainpix.joining.dto.AcceptedCollaborationDto;
import com.brainpix.joining.dto.RejectedCollaborationDto;
import com.brainpix.joining.service.SupportCollaborationService;
import com.brainpix.security.authorization.AllUser;
import com.brainpix.security.authorization.UserId;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;

@RestController
@RequestMapping("/supports/collaborations")
@RequiredArgsConstructor
@Tag(name = "지원 현황 -협업광장 조회 API", description = "협업 광장 지원 현황을 조회합니다.")
public class SupportCollaborationController {

private final SupportCollaborationService supportCollaborationService;

@Operation(summary = "지원 거절된 협업광장 게시글", description = "본인이 지원한 협업광장 게시글 중 거절된 목록들을 조회합니다.")
@AllUser
@GetMapping("/rejected")
@SwaggerPageable
public ResponseEntity<ApiResponse<Page<RejectedCollaborationDto>>> getRejectedList(
@UserId Long userId,
Pageable pageable) {
Expand All @@ -40,6 +44,7 @@ public ResponseEntity<ApiResponse<Page<RejectedCollaborationDto>>> getRejectedLi
@Operation(summary = "지원 승낙된 협업광장 게시글", description = "본인이 지원한 협업광장 게시글 중 승낙된 목록들을 조회합니다.")
@AllUser
@GetMapping("/accepted")
@SwaggerPageable
public ResponseEntity<ApiResponse<Page<AcceptedCollaborationDto>>> getAcceptedList(
@UserId Long userId,
Pageable pageable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,28 @@

import com.brainpix.api.ApiResponse;
import com.brainpix.api.CommonPageResponse;
import com.brainpix.api.swagger.SwaggerPageable;
import com.brainpix.joining.dto.IdeaMarketPurchaseDto;
import com.brainpix.joining.service.SupportIdeaMarketService;
import com.brainpix.security.authorization.AllUser;
import com.brainpix.security.authorization.UserId;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;

@RestController
@RequestMapping("/supports/idea-market")
@RequiredArgsConstructor
@Tag(name = "지원 현황 -아이디어마켓 조회 API", description = "아이디어 마켓 구매내역을 조회합니다.")
public class SupportIdeaMarketController {

private final SupportIdeaMarketService supportIdeaMarketService;

@Operation(summary = "구매 내역 조회", description = "현재 로그인한 사용자의 아이디어 마켓 구매 내역을 조회합니다.")
@AllUser
@GetMapping("/purchases")
@SwaggerPageable
public ResponseEntity<ApiResponse<CommonPageResponse<IdeaMarketPurchaseDto>>> getPurchases(
@UserId Long userId,
Pageable pageable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,29 @@

import com.brainpix.api.ApiResponse;
import com.brainpix.api.CommonPageResponse;
import com.brainpix.api.swagger.SwaggerPageable;
import com.brainpix.joining.dto.AcceptedRequestTaskPurchasingDto;
import com.brainpix.joining.dto.RejectedRequestTaskPurchasingDto;
import com.brainpix.joining.service.SupportRequestTaskService;
import com.brainpix.security.authorization.AllUser;
import com.brainpix.security.authorization.UserId;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;

@RestController
@RequestMapping("/supports/request-tasks")
@RequiredArgsConstructor
@Tag(name = "지원 현황 -요청과제 조회 API", description = "요청 과제 지원 내역을 조회합니다.")
public class SupportRequestTaskController {

private final SupportRequestTaskService supportRequestTaskService;

@Operation(summary = "지원 거절된 요청 과제 게시글", description = "본인이 지원한 요청과제 게시글 중 거절된 목록들을 조회합니다.")
@AllUser
@GetMapping("/rejected")
@SwaggerPageable
public ResponseEntity<ApiResponse<CommonPageResponse<RejectedRequestTaskPurchasingDto>>> getRejectedList(
@UserId Long userId,
Pageable pageable
Expand All @@ -41,6 +45,7 @@ public ResponseEntity<ApiResponse<CommonPageResponse<RejectedRequestTaskPurchasi
@Operation(summary = "지원 승낙된 요청 과제 게시글", description = "본인이 지원한 요청과제 게시글 중 승낙된 목록들을 조회합니다.")
@AllUser
@GetMapping("/accepted")
@SwaggerPageable
public ResponseEntity<ApiResponse<CommonPageResponse<AcceptedRequestTaskPurchasingDto>>> getAcceptedList(
@UserId Long userId,
Pageable pageable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public RejectedCollaborationDto toRejectedDto(CollectionGathering cg) {
.firstImage(hub.getFirstImage()) // Post#getFirstImage()
.postCreatedAt(hub.getCreatedAt()) // BaseTimeEntity
.postTitle(hub.getTitle())
.postCategory("협업 광장 > " + hub.getSpecialization())
.specialization(hub.getSpecialization())
.domain(recruitment.getDomain())
.build();
}
Expand All @@ -54,7 +54,7 @@ public AcceptedCollaborationDto toAcceptedDto(CollectionGathering cg,
.firstImage(hub.getFirstImage())
.postCreatedAt(hub.getCreatedAt())
.postTitle(hub.getTitle())
.postCategory("협업 광장 > " + hub.getSpecialization())
.specialization(hub.getSpecialization())
.domain(recruitment.getDomain())
.writerName(writerName)
.writerType(writerType)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@

import com.brainpix.joining.dto.IdeaMarketPurchaseDto;
import com.brainpix.joining.entity.purchasing.IdeaMarketPurchasing;
import com.brainpix.joining.entity.quantity.Price;
import com.brainpix.post.entity.idea_market.IdeaMarket;
import com.brainpix.post.entity.idea_market.IdeaMarketType;
import com.brainpix.profile.entity.Specialization;
import com.brainpix.user.entity.Individual;
import com.brainpix.user.entity.User;

Expand All @@ -21,38 +20,27 @@ public IdeaMarketPurchaseDto toPurchaseDto(IdeaMarketPurchasing purchasing) {

// 게시글
IdeaMarket ideaMarket = purchasing.getIdeaMarket();
String category = "아이디어마켓 > " + ideaMarket.getSpecialization();
Specialization category = ideaMarket.getSpecialization();
String title = ideaMarket.getTitle();

// 작성자
User writer = ideaMarket.getWriter();
String writerName = writer.getName();
String writerType = (writer instanceof Individual) ? "개인" : "회사";

// 아이디어마켓 타입
IdeaMarketType type = ideaMarket.getIdeaMarketType();

// 수량 결정 (IDEA_SOLUTION → 1, MARKET_PLACE → price.totalQuantity)
Price priceEntity = ideaMarket.getPrice();
Long quantity = (type == IdeaMarketType.IDEA_SOLUTION)
? 1L
: priceEntity.getTotalQuantity();

// 금액 계산
long basePrice = priceEntity.getPrice() * quantity;
long fee = (long)(basePrice * 0.01); // 1% 예시
long finalPrice = basePrice + fee;
Long itemPrice = ideaMarket.getPrice().getPrice();

return IdeaMarketPurchaseDto.builder()
.purchasingId(purchasingId)
.purchasedAt(purchasedAt)
.category(category)
.specialization(category)
.title(title)
.writerName(writerName)
.writerType(writerType)
.quantity(quantity)
.fee(fee)
.finalPrice(finalPrice)
.middlePrice(itemPrice)
.quantity(purchasing.getQuantity())
.fee(purchasing.getVat())
.finalPrice(purchasing.getPrice())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ public class RequestTaskPurchasingConverter {
public RejectedRequestTaskPurchasingDto toRejectedDto(RequestTaskPurchasing p) {

RequestTaskRecruitment recruitment = p.getRequestTaskRecruitment();

RequestTask requestTask = recruitment.getRequestTask();

return RejectedRequestTaskPurchasingDto.builder()
.purchasingId(p.getId())
.firstImage(requestTask.getFirstImage())
.postCreatedAt(requestTask.getCreatedAt())
.postTitle(requestTask.getTitle())
.postCategory("요청 과제 > " + requestTask.getSpecialization())
.specialization(requestTask.getSpecialization())
.domain(recruitment.getDomain())
.build();
}
Expand All @@ -48,7 +48,7 @@ public AcceptedRequestTaskPurchasingDto toAcceptedDto(RequestTaskPurchasing p) {
.firstImage(requestTask.getFirstImage())
.postCreatedAt(requestTask.getCreatedAt())
.postTitle(requestTask.getTitle())
.postCategory("요청 과제 > " + requestTask.getSpecialization())
.specialization(requestTask.getSpecialization())
.domain(recruitment.getDomain())
.writerName(writerName)
.writerType(writerType)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
import java.time.LocalDateTime;
import java.util.List;

import org.springframework.format.annotation.DateTimeFormat;

import com.brainpix.profile.entity.Specialization;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -16,9 +21,11 @@ public class AcceptedCollaborationDto {

private Long collectionGatheringId; // CollectionGathering PK
private String firstImage; // 게시글 대표 이미지
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime postCreatedAt; // 게시글 작성일
private String postTitle; // 게시글 제목
private String postCategory; // "협업 광장 > 디자인"
private Specialization specialization;
private String domain; // 내가 지원한 파트 (ex: "PM")

// 게시글 관리자
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

import java.time.LocalDateTime;

import org.springframework.format.annotation.DateTimeFormat;

import com.brainpix.profile.entity.Specialization;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -14,12 +19,14 @@
public class AcceptedRequestTaskPurchasingDto {
private Long purchasingId; // RequestTaskPurchasing PK
private String firstImage; // 게시글 대표 이미지
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime postCreatedAt; // 게시글 작성일
private String postTitle; // 게시글 제목
private String postCategory; // "요청 과제 > 디자인"
private Specialization specialization;
private String domain; // 지원 파트

// 게시물 작성자 정보 (이름 + 개인/회사)
private String writerName;
private String writerType; // "개인" or "회사"
}
}
13 changes: 10 additions & 3 deletions src/main/java/com/brainpix/joining/dto/IdeaMarketPurchaseDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

import java.time.LocalDateTime;

import org.springframework.format.annotation.DateTimeFormat;

import com.brainpix.profile.entity.Specialization;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -13,20 +18,22 @@
@Builder
public class IdeaMarketPurchaseDto {
private Long purchasingId;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime purchasedAt;

// 게시글 정보
private String category; // "아이디어마켓 > IT_TECH"
private Specialization specialization;
private String title;
private String writerName;
private String writerType; // "개인"/"회사"

private Long middlePrice; //원가 *수량
// 수량
private Long quantity;

// 결제금액 계산
private Long fee; // 수수료
private Long finalPrice; // (price × quantity) + fee

}

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

import java.time.LocalDateTime;

import org.springframework.format.annotation.DateTimeFormat;

import com.brainpix.profile.entity.Specialization;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -14,8 +19,10 @@
public class RejectedCollaborationDto {
private Long collectionGatheringId; // CollectionGathering PK
private String firstImage; // 게시글 대표 이미지
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime postCreatedAt; // 게시글 작성일
private String postTitle; // 게시글 제목
private String postCategory; // "협업 광장 > 디자인" 등
private Specialization specialization;
private String domain; // 지원한 파트
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

import java.time.LocalDateTime;

import org.springframework.format.annotation.DateTimeFormat;

import com.brainpix.profile.entity.Specialization;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -14,8 +19,10 @@
public class RejectedRequestTaskPurchasingDto {
private Long purchasingId; // RequestTaskPurchasing PK
private String firstImage; // 게시글 대표 이미지
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDateTime postCreatedAt; // 게시글 작성일 (BaseTimeEntity)
private String postTitle; // 게시글 제목
private String postCategory; // 예: "요청 과제 > 디자인"
private Specialization specialization;
private String domain; // 지원 파트 (ex: "디자이너")
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,29 @@

import com.brainpix.api.ApiResponse;
import com.brainpix.api.CommonPageResponse;
import com.brainpix.api.swagger.SwaggerPageable;
import com.brainpix.post.dto.PostCollaborationResponse;
import com.brainpix.post.dto.mypostdto.MyCollaborationHubDetailResponse;
import com.brainpix.post.service.mypost.MyCollaborationHubService;
import com.brainpix.security.authorization.AllUser;
import com.brainpix.security.authorization.UserId;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;

@RestController
@RequestMapping("/post-management/collaboration")
@RequiredArgsConstructor
@Tag(name = "나의 협업 광장 조회", description = "내가 작성한 협업 광장 조회 API")
public class MyCollaborationController {

private final MyCollaborationHubService myCollaborationHubService;

@Operation(summary = "나의 협업 광장 조회", description = "현재 로그인한 사용자가 본인이 작성한 협업광장 리스트를 조회합니다.")
@AllUser
@GetMapping
@SwaggerPageable
public ResponseEntity<ApiResponse<CommonPageResponse<PostCollaborationResponse>>> getSavedIdeaMarkets(
@UserId Long userId, Pageable pageable) {
Page<PostCollaborationResponse> result = myCollaborationHubService.findCollaborationPosts(userId, pageable);
Expand Down
Loading