Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
8c85b47
refactor/336 ์ž…๊ธˆ ํ™˜์ „ ๋‚ด์—ญ ์ˆ˜์ •
yoostill Oct 14, 2025
393dd85
refactor/336 ์ž…๊ธˆ ํ™˜์ „ ๋‚ด์—ญ ์ˆ˜์ •
yoostill Oct 14, 2025
c869590
refactor/336 ์ž‘๊ฐ€ ์ˆ˜์ต ํ…Œ์ŠคํŠธ ์ˆ˜์ •
yoostill Oct 14, 2025
ce4504d
refactor/336 ๋Œ€์‹œ๋ณด๋“œ ๋ฉ”์ธํ˜„ํ™ฉ ํŒ”๋กœ์šฐ์ˆ˜ ์ถ”๊ฐ€
yoostill Oct 14, 2025
f436577
refactor/336 ๋Œ€์‹œ๋ณด๋“œ ๋ฉ”์ธํ˜„ํ™ฉ ํŒ”๋กœ์šฐ์ˆ˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ
yoostill Oct 14, 2025
4d13af0
refactor/336 ๋Œ€์‹œ๋ณด๋“œ ํŒ”๋กœ์šฐ ์ž‘๊ฐ€ ์กฐํšŒ
yoostill Oct 14, 2025
3f4ccc9
refactor/336 ๋Œ€์‹œ๋ณด๋“œ ํŒ”๋กœ์šฐ ์ž‘๊ฐ€ ์กฐํšŒ
yoostill Oct 14, 2025
6b20d46
pull ์ถฉ๋Œ ํ•ด๊ฒฐ
yoostill Oct 14, 2025
b65e507
Merge branch 'develop' of https://github.com/prgrms-web-devcourse-finโ€ฆ
yoostill Oct 14, 2025
0b4d76d
refactor/336 Response ์ˆ˜์ •
yoostill Oct 14, 2025
d96f468
refactor/354๋ฆฌ๋ทฐ mock ์ œ๊ฑฐ ์‹ค์ œ db์—ฐ๋™
yoostill Oct 14, 2025
bd948e0
refactor/354 ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์— ์ฐœ ๊ธฐ๋Šฅ ์กฐํšŒ ์ถ”๊ฐ€
yoostill Oct 14, 2025
19b26b6
refactor/354 ์ฐœ ํ…Œ์ŠคํŠธ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ํ…Œ์ŠคํŠธ ์˜ค๋ฅ˜ ์ˆ˜์ •
yoostill Oct 14, 2025
89e3598
push์ „ ์ถฉ๋Œ์žก๊ธฐ
yoostill Oct 15, 2025
8e887ea
Merge branch 'develop' into refactir/354
yoostill Oct 15, 2025
ecf514f
refactor/354 ์ฐœ ๊ธฐ๋Šฅ ์ˆ˜์ • ๋ฐ ํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ ์ˆ˜์ •
yoostill Oct 15, 2025
6d94068
refactor/354 ์ฐœ ๊ธฐ๋Šฅ ์ˆ˜์ • ๋ฐ ํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ ์ˆ˜์ •
yoostill Oct 15, 2025
87642d2
refactor/354 ์ฐœ ๊ธฐ๋Šฅ ์ˆ˜์ • ๋ฐ ํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ ์ˆ˜์ •
yoostill Oct 15, 2025
e503676
merge: resolve conflicts
yoostill Oct 15, 2025
ce31604
refactor/367 ์ด๋ฏธ์ง€ ์‚ฌ์šฉ ์šฐ์„  ์ˆœ์œ„ ๋ณ€๊ฒฝ
yoostill Oct 15, 2025
b7ee52d
refactor/367 ์ƒํ’ˆ๋ช… ์ •๋ ฌ ์ˆ˜์ •
yoostill Oct 15, 2025
9d1b5dc
refactor/367 ๊ตํ™˜ ์š”์ฒญ ์กฐํšŒ ์ •๋ ฌ ๋ฉ”๋ชจ๋ฆฌ->db ์ •๋ ฌ๋กœ ๋ณ€๊ฒฝ
yoostill Oct 15, 2025
ccd719d
refactor/367 ๋ฉ”์ธํ˜„ํ™ฉ-์ƒํ’ˆ๋ช… ์ •๋ ฌ ์ถ”๊ฐ€,
yoostill Oct 15, 2025
fd4fb60
Merge branch 'develop' of https://github.com/prgrms-web-devcourse-finโ€ฆ
yoostill Oct 15, 2025
fec3a5a
refactor/367 ๊ด€๋ฆฌ์ž๋Œ€์‹œ๋ณด๋“œ-์นดํ…Œ๊ณ ๋ฆฌ ์กฐํšŒ ์ œ๊ฑฐ
yoostill Oct 15, 2025
44851be
refactor/367 ๊ด€๋ฆฌ์ž๋Œ€์‹œ๋ณด๋“œ-์‚ฌ์šฉ์ž๊ด€๋ฆฌ ์ˆ˜์ˆ˜๋ฃŒ์œจ ์ •๋ฆฌ ์ˆ˜์ •
yoostill Oct 15, 2025
c5d9b2a
refactor/367 ๊ด€๋ฆฌ์ž๋Œ€์‹œ๋ณด๋“œ-์ „์ฒด ํŽ€๋”ฉ ๋ชฉ๋ก๋ณด๊ธฐ Resoponse๊ฐ„์†Œํ™”
yoostill Oct 15, 2025
d40e491
refactor/367 ๊ด€๋ฆฌ์ž๋Œ€์‹œ๋ณด๋“œ-์ „์ฒด ํŽ€๋”ฉ ๋ชฉ๋ก๋ณด๊ธฐ Resoponse๊ฐ„์†Œํ™”
yoostill Oct 15, 2025
3dfda67
refactor/367 ๊ด€๋ฆฌ์ž๋Œ€์‹œ๋ณด๋“œ-์ž…์  ์Šน์ธ ์ •๋ ฌ ์ˆ˜์ •
yoostill Oct 15, 2025
eb82d72
Merge branch 'develop' of https://github.com/prgrms-web-devcourse-finโ€ฆ
yoostill Oct 15, 2025
ba9396d
Merge branch 'develop' of https://github.com/prgrms-web-devcourse-finโ€ฆ
yoostill Oct 15, 2025
1f0dbc7
refactor/367 ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€
yoostill Oct 16, 2025
80cc3d5
refactor/367 ๊ด€๋ฆฌ์ž ๋Œ€์‹œ๋ณด๋“œ null์ฒ˜๋ฆฌ ์ถ”๊ฐ€
yoostill Oct 16, 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
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ public AdminOverviewResponse getOverview(AdminOverviewRequest request) {
.getContent();

List<AdminOverviewResponse.ArtistApproval> artistApprovals = pendingApplications.stream()
.filter(app -> app.getUser() != null) // User๊ฐ€ null์ธ ๊ฒฝ์šฐ ํ•„ํ„ฐ๋ง
.map(app -> new AdminOverviewResponse.ArtistApproval(
app.getUser().getId(),
app.getArtistName(),
Expand All @@ -137,6 +138,7 @@ public AdminOverviewResponse getOverview(AdminOverviewRequest request) {
.getContent();

List<AdminOverviewResponse.FundingApproval> fundingApprovals = pendingFundings.stream()
.filter(funding -> funding.getUser() != null) // User๊ฐ€ null์ธ ๊ฒฝ์šฐ ํ•„ํ„ฐ๋ง
.map(funding -> new AdminOverviewResponse.FundingApproval(
funding.getId(),
funding.getTitle(),
Expand Down Expand Up @@ -649,6 +651,13 @@ public AdminFundingResponse getFundings(AdminFundingSearchRequest request) {
* Funding Entity โ†’ DTO ๋ณ€ํ™˜ (ํ™”๋ฉด ํ‘œ์‹œ ํ•„๋“œ๋งŒ, ํ‰๋ฉด ๊ตฌ์กฐ)
*/
private AdminFundingResponse.Funding convertToFundingDto(Funding funding) {
// User null ์ฒดํฌ (FK ์ œ์•ฝ์กฐ๊ฑด์ƒ ๋ฐœ์ƒํ•˜๋ฉด ์•ˆ๋˜์ง€๋งŒ ๋ฐฉ์–ด์  ์ฒ˜๋ฆฌ)
if (funding.getUser() == null) {
log.error("Funding์˜ User๊ฐ€ null์ž…๋‹ˆ๋‹ค - fundingId: {}", funding.getId());
throw new ServiceException("DATA_INTEGRITY_ERROR",
"ํŽ€๋”ฉ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์˜ค๋ฅ˜ - fundingId: " + funding.getId());
}

// ๋‹ฌ์„ฑ๋ฅ  ๊ณ„์‚ฐ
int achievementRate = funding.getTargetAmount() > 0
? (int) ((funding.getCollectedAmount() * 100) / funding.getTargetAmount())
Expand Down Expand Up @@ -791,6 +800,13 @@ public AdminArtistApplicationResponse getArtistApplications(AdminArtistApplicati
* ArtistApplication Entity โ†’ DTO ๋ณ€ํ™˜
*/
private AdminArtistApplicationResponse.Application convertToApplicationDto(ArtistApplication application) {
// User null ์ฒดํฌ (FK ์ œ์•ฝ์กฐ๊ฑด์ƒ ๋ฐœ์ƒํ•˜๋ฉด ์•ˆ๋˜์ง€๋งŒ ๋ฐฉ์–ด์  ์ฒ˜๋ฆฌ)
if (application.getUser() == null) {
log.error("ArtistApplication์˜ User๊ฐ€ null์ž…๋‹ˆ๋‹ค - applicationId: {}", application.getId());
throw new ServiceException("DATA_INTEGRITY_ERROR",
"์ž…์  ์‹ ์ฒญ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์˜ค๋ฅ˜ - applicationId: " + application.getId());
}

DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

return new AdminArtistApplicationResponse.Application(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,18 @@ private OrderResponse.Summary convertToOrderSummary(com.back.domain.order.order.
*/
private OrderResponse.Product convertToProductDto(com.back.domain.order.orderItem.entity.OrderItem orderItem) {
com.back.domain.product.product.entity.Product product = orderItem.getProduct();

// ์ƒํ’ˆ์ด ์‚ญ์ œ๋˜์—ˆ๊ฑฐ๋‚˜ null์ธ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ
if (product == null) {
log.warn("OrderItem์˜ Product๊ฐ€ null์ž…๋‹ˆ๋‹ค - orderItemId: {}", orderItem.getId());
return new OrderResponse.Product(
null,
"์‚ญ์ œ๋œ ์ƒํ’ˆ",
orderItem.getQuantity(),
orderItem.getPrice().intValue(),
null
);
}

return new OrderResponse.Product(
product.getId(),
Expand All @@ -388,6 +400,19 @@ private OrderResponse.Product convertToProductDto(com.back.domain.order.orderIte
*/
private OrderResponse.OrderItem convertToOrderItemDto(com.back.domain.order.orderItem.entity.OrderItem orderItem) {
com.back.domain.product.product.entity.Product product = orderItem.getProduct();

// ์ƒํ’ˆ์ด ์‚ญ์ œ๋˜์—ˆ๊ฑฐ๋‚˜ null์ธ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ
if (product == null) {
log.warn("OrderItem์˜ Product๊ฐ€ null์ž…๋‹ˆ๋‹ค - orderItemId: {}", orderItem.getId());
return new OrderResponse.OrderItem(
orderItem.getId(),
null,
"์‚ญ์ œ๋œ ์ƒํ’ˆ",
orderItem.getQuantity(),
orderItem.getPrice().intValue(),
null
);
}

return new OrderResponse.OrderItem(
orderItem.getId(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -298,11 +298,6 @@ public ShareLinkResponse generateShareLink(UUID productUuid, String platform, Cu
// ๋ฒ ์ด์Šค URL ์ƒ์„ฑ (ํ”„๋ก ํŠธ์—”๋“œ URL)
String baseUrl = frontendUrl + "/product/" + productUuid;

// UTM ํŒŒ๋ผ๋ฏธํ„ฐ ์ƒ์„ฑ
// utm_source: ์œ ์ž… ๊ฒฝ๋กœ (instagram, youtube ๋“ฑ)
// utm_medium: ๋งค์ฒด ํƒ€์ž… (social ๊ณ ์ •)
// utm_campaign: ์บ ํŽ˜์ธ (์ž‘๊ฐ€ ID ํฌํ•จ)
// utm_content: ์ถ”๊ฐ€ ์ •๋ณด (product_share ๊ณ ์ •)
String utmParams = String.format(
"?utm_source=%s&utm_medium=social&utm_campaign=artist_%d&utm_content=product_share",
normalizedPlatform,
Expand All @@ -319,7 +314,7 @@ public ShareLinkResponse generateShareLink(UUID productUuid, String platform, Cu
normalizedPlatform,
artistId,
productUuid,
product.getName() // ์ƒํ’ˆ๋ช…์„ ์„ค๋ช…์œผ๋กœ ์‚ฌ์šฉ
product.getName()
);
}

Expand Down