diff --git a/src/main/generated/com/tasksprints/auction/auction/domain/entity/QAuction.java b/src/main/generated/com/tasksprints/auction/auction/domain/entity/QAuction.java new file mode 100644 index 00000000..162d6bf4 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/auction/domain/entity/QAuction.java @@ -0,0 +1,73 @@ +package com.tasksprints.auction.auction.domain.entity; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QAuction is a Querydsl query type for Auction + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QAuction extends EntityPathBase { + + private static final long serialVersionUID = -1453712251L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QAuction auction = new QAuction("auction"); + + public final com.tasksprints.auction.common.entity.QBaseEntity _super = new com.tasksprints.auction.common.entity.QBaseEntity(this); + + public final EnumPath auctionCategory = createEnum("auctionCategory", AuctionCategory.class); + + public final EnumPath auctionStatus = createEnum("auctionStatus", AuctionStatus.class); + + public final ListPath bids = this.createList("bids", com.tasksprints.auction.bid.domain.entity.Bid.class, com.tasksprints.auction.bid.domain.entity.QBid.class, PathInits.DIRECT2); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final DateTimePath endTime = createDateTime("endTime", java.time.LocalDateTime.class); + + public final NumberPath id = createNumber("id", Long.class); + + public final com.tasksprints.auction.product.domain.entity.QProduct product; + + public final com.tasksprints.auction.user.domain.entity.QUser seller; + + public final NumberPath startingBid = createNumber("startingBid", java.math.BigDecimal.class); + + public final DateTimePath startTime = createDateTime("startTime", java.time.LocalDateTime.class); + + public final NumberPath viewCount = createNumber("viewCount", Long.class); + + public QAuction(String variable) { + this(Auction.class, forVariable(variable), INITS); + } + + public QAuction(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QAuction(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QAuction(PathMetadata metadata, PathInits inits) { + this(Auction.class, metadata, inits); + } + + public QAuction(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.product = inits.isInitialized("product") ? new com.tasksprints.auction.product.domain.entity.QProduct(forProperty("product"), inits.get("product")) : null; + this.seller = inits.isInitialized("seller") ? new com.tasksprints.auction.user.domain.entity.QUser(forProperty("seller"), inits.get("seller")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/auth/domain/model/QRefreshToken.java b/src/main/generated/com/tasksprints/auction/auth/domain/model/QRefreshToken.java new file mode 100644 index 00000000..cd89bc1a --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/auth/domain/model/QRefreshToken.java @@ -0,0 +1,39 @@ +package com.tasksprints.auction.auth.domain.model; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; + + +/** + * QRefreshToken is a Querydsl query type for RefreshToken + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QRefreshToken extends EntityPathBase { + + private static final long serialVersionUID = 230608025L; + + public static final QRefreshToken refreshToken = new QRefreshToken("refreshToken"); + + public final StringPath id = createString("id"); + + public final NumberPath userId = createNumber("userId", Long.class); + + public QRefreshToken(String variable) { + super(RefreshToken.class, forVariable(variable)); + } + + public QRefreshToken(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QRefreshToken(PathMetadata metadata) { + super(RefreshToken.class, metadata); + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/bid/domain/entity/QBid.java b/src/main/generated/com/tasksprints/auction/bid/domain/entity/QBid.java new file mode 100644 index 00000000..fa533166 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/bid/domain/entity/QBid.java @@ -0,0 +1,63 @@ +package com.tasksprints.auction.bid.domain.entity; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QBid is a Querydsl query type for Bid + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QBid extends EntityPathBase { + + private static final long serialVersionUID = 1095317369L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QBid bid = new QBid("bid"); + + public final com.tasksprints.auction.common.entity.QBaseEntity _super = new com.tasksprints.auction.common.entity.QBaseEntity(this); + + public final NumberPath amount = createNumber("amount", java.math.BigDecimal.class); + + public final com.tasksprints.auction.auction.domain.entity.QAuction auction; + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final com.tasksprints.auction.user.domain.entity.QUser user; + + public final StringPath uuid = createString("uuid"); + + public QBid(String variable) { + this(Bid.class, forVariable(variable), INITS); + } + + public QBid(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QBid(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QBid(PathMetadata metadata, PathInits inits) { + this(Bid.class, metadata, inits); + } + + public QBid(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.auction = inits.isInitialized("auction") ? new com.tasksprints.auction.auction.domain.entity.QAuction(forProperty("auction"), inits.get("auction")) : null; + this.user = inits.isInitialized("user") ? new com.tasksprints.auction.user.domain.entity.QUser(forProperty("user"), inits.get("user")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/chat/domain/model/QChatRoom.java b/src/main/generated/com/tasksprints/auction/chat/domain/model/QChatRoom.java new file mode 100644 index 00000000..1d123902 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/chat/domain/model/QChatRoom.java @@ -0,0 +1,57 @@ +package com.tasksprints.auction.chat.domain.model; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QChatRoom is a Querydsl query type for ChatRoom + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QChatRoom extends EntityPathBase { + + private static final long serialVersionUID = -371521474L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QChatRoom chatRoom = new QChatRoom("chatRoom"); + + public final StringPath chatRoomId = createString("chatRoomId"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath name = createString("name"); + + public final com.tasksprints.auction.user.domain.entity.QUser owner; + + public final ListPath users = this.createList("users", com.tasksprints.auction.user.domain.entity.User.class, com.tasksprints.auction.user.domain.entity.QUser.class, PathInits.DIRECT2); + + public QChatRoom(String variable) { + this(ChatRoom.class, forVariable(variable), INITS); + } + + public QChatRoom(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QChatRoom(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QChatRoom(PathMetadata metadata, PathInits inits) { + this(ChatRoom.class, metadata, inits); + } + + public QChatRoom(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.owner = inits.isInitialized("owner") ? new com.tasksprints.auction.user.domain.entity.QUser(forProperty("owner"), inits.get("owner")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/domain/auction/model/QAuction.java b/src/main/generated/com/tasksprints/auction/domain/auction/model/QAuction.java new file mode 100644 index 00000000..b8391358 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/domain/auction/model/QAuction.java @@ -0,0 +1,73 @@ +package com.tasksprints.auction.domain.auction.model; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QAuction is a Querydsl query type for Auction + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QAuction extends EntityPathBase { + + private static final long serialVersionUID = -698942437L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QAuction auction = new QAuction("auction"); + + public final com.tasksprints.auction.common.entity.QBaseEntity _super = new com.tasksprints.auction.common.entity.QBaseEntity(this); + + public final EnumPath auctionCategory = createEnum("auctionCategory", AuctionCategory.class); + + public final EnumPath auctionStatus = createEnum("auctionStatus", AuctionStatus.class); + + public final ListPath bids = this.createList("bids", com.tasksprints.auction.domain.bid.model.Bid.class, com.tasksprints.auction.domain.bid.model.QBid.class, PathInits.DIRECT2); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final DateTimePath endTime = createDateTime("endTime", java.time.LocalDateTime.class); + + public final NumberPath id = createNumber("id", Long.class); + + public final com.tasksprints.auction.domain.product.model.QProduct product; + + public final com.tasksprints.auction.domain.user.model.QUser seller; + + public final NumberPath startingBid = createNumber("startingBid", java.math.BigDecimal.class); + + public final DateTimePath startTime = createDateTime("startTime", java.time.LocalDateTime.class); + + public final NumberPath viewCount = createNumber("viewCount", Long.class); + + public QAuction(String variable) { + this(Auction.class, forVariable(variable), INITS); + } + + public QAuction(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QAuction(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QAuction(PathMetadata metadata, PathInits inits) { + this(Auction.class, metadata, inits); + } + + public QAuction(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.product = inits.isInitialized("product") ? new com.tasksprints.auction.domain.product.model.QProduct(forProperty("product"), inits.get("product")) : null; + this.seller = inits.isInitialized("seller") ? new com.tasksprints.auction.domain.user.model.QUser(forProperty("seller"), inits.get("seller")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/domain/bid/model/QBid.java b/src/main/generated/com/tasksprints/auction/domain/bid/model/QBid.java new file mode 100644 index 00000000..22e6e393 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/domain/bid/model/QBid.java @@ -0,0 +1,63 @@ +package com.tasksprints.auction.domain.bid.model; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QBid is a Querydsl query type for Bid + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QBid extends EntityPathBase { + + private static final long serialVersionUID = -531916529L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QBid bid = new QBid("bid"); + + public final com.tasksprints.auction.common.entity.QBaseEntity _super = new com.tasksprints.auction.common.entity.QBaseEntity(this); + + public final NumberPath amount = createNumber("amount", java.math.BigDecimal.class); + + public final com.tasksprints.auction.domain.auction.model.QAuction auction; + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final com.tasksprints.auction.domain.user.model.QUser user; + + public final StringPath uuid = createString("uuid"); + + public QBid(String variable) { + this(Bid.class, forVariable(variable), INITS); + } + + public QBid(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QBid(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QBid(PathMetadata metadata, PathInits inits) { + this(Bid.class, metadata, inits); + } + + public QBid(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.auction = inits.isInitialized("auction") ? new com.tasksprints.auction.domain.auction.model.QAuction(forProperty("auction"), inits.get("auction")) : null; + this.user = inits.isInitialized("user") ? new com.tasksprints.auction.domain.user.model.QUser(forProperty("user"), inits.get("user")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/domain/chat/model/QChatRoom.java b/src/main/generated/com/tasksprints/auction/domain/chat/model/QChatRoom.java index 4ee59d1d..d54287f6 100644 --- a/src/main/generated/com/tasksprints/auction/domain/chat/model/QChatRoom.java +++ b/src/main/generated/com/tasksprints/auction/domain/chat/model/QChatRoom.java @@ -50,7 +50,7 @@ public QChatRoom(PathMetadata metadata, PathInits inits) { public QChatRoom(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); - this.owner = inits.isInitialized("owner") ? new com.tasksprints.auction.domain.user.model.QUser(forProperty("owner")) : null; + this.owner = inits.isInitialized("owner") ? new com.tasksprints.auction.domain.user.model.QUser(forProperty("owner"), inits.get("owner")) : null; } } diff --git a/src/main/generated/com/tasksprints/auction/domain/payment/model/QPayment.java b/src/main/generated/com/tasksprints/auction/domain/payment/model/QPayment.java new file mode 100644 index 00000000..60bb9b47 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/domain/payment/model/QPayment.java @@ -0,0 +1,75 @@ +package com.tasksprints.auction.domain.payment.model; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QPayment is a Querydsl query type for Payment + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QPayment extends EntityPathBase { + + private static final long serialVersionUID = -1228254623L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QPayment payment = new QPayment("payment"); + + public final com.tasksprints.auction.common.entity.QBaseEntityWithUpdate _super = new com.tasksprints.auction.common.entity.QBaseEntityWithUpdate(this); + + public final NumberPath amount = createNumber("amount", java.math.BigDecimal.class); + + public final StringPath cancelReason = createString("cancelReason"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final StringPath failReason = createString("failReason"); + + public final StringPath orderName = createString("orderName"); + + public final NumberPath paymentId = createNumber("paymentId", Long.class); + + public final EnumPath payStatus = createEnum("payStatus", PayStatus.class); + + public final EnumPath payType = createEnum("payType", PayType.class); + + public final StringPath tossOrderId = createString("tossOrderId"); + + public final StringPath tossPaymentKey = createString("tossPaymentKey"); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public final com.tasksprints.auction.domain.wallet.model.QWallet wallet; + + public QPayment(String variable) { + this(Payment.class, forVariable(variable), INITS); + } + + public QPayment(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QPayment(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QPayment(PathMetadata metadata, PathInits inits) { + this(Payment.class, metadata, inits); + } + + public QPayment(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.wallet = inits.isInitialized("wallet") ? new com.tasksprints.auction.domain.wallet.model.QWallet(forProperty("wallet"), inits.get("wallet")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/domain/product/model/QProduct.java b/src/main/generated/com/tasksprints/auction/domain/product/model/QProduct.java new file mode 100644 index 00000000..e69ae9d0 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/domain/product/model/QProduct.java @@ -0,0 +1,67 @@ +package com.tasksprints.auction.domain.product.model; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QProduct is a Querydsl query type for Product + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProduct extends EntityPathBase { + + private static final long serialVersionUID = -1668563853L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QProduct product = new QProduct("product"); + + public final com.tasksprints.auction.common.entity.QBaseEntity _super = new com.tasksprints.auction.common.entity.QBaseEntity(this); + + public final com.tasksprints.auction.domain.auction.model.QAuction auction; + + public final EnumPath category = createEnum("category", ProductCategory.class); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final StringPath description = createString("description"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath name = createString("name"); + + public final com.tasksprints.auction.domain.user.model.QUser owner; + + public final ListPath productImageList = this.createList("productImageList", ProductImage.class, QProductImage.class, PathInits.DIRECT2); + + public QProduct(String variable) { + this(Product.class, forVariable(variable), INITS); + } + + public QProduct(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QProduct(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QProduct(PathMetadata metadata, PathInits inits) { + this(Product.class, metadata, inits); + } + + public QProduct(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.auction = inits.isInitialized("auction") ? new com.tasksprints.auction.domain.auction.model.QAuction(forProperty("auction"), inits.get("auction")) : null; + this.owner = inits.isInitialized("owner") ? new com.tasksprints.auction.domain.user.model.QUser(forProperty("owner"), inits.get("owner")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/domain/review/model/QReview.java b/src/main/generated/com/tasksprints/auction/domain/review/model/QReview.java new file mode 100644 index 00000000..fff0acd6 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/domain/review/model/QReview.java @@ -0,0 +1,58 @@ +package com.tasksprints.auction.domain.review.model; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QReview is a Querydsl query type for Review + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QReview extends EntityPathBase { + + private static final long serialVersionUID = -1171556645L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QReview review = new QReview("review"); + + public final com.tasksprints.auction.domain.auction.model.QAuction auction; + + public final StringPath content = createString("content"); + + public final NumberPath id = createNumber("id", Long.class); + + public final NumberPath rating = createNumber("rating", Integer.class); + + public final com.tasksprints.auction.domain.user.model.QUser writer; + + public QReview(String variable) { + this(Review.class, forVariable(variable), INITS); + } + + public QReview(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QReview(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QReview(PathMetadata metadata, PathInits inits) { + this(Review.class, metadata, inits); + } + + public QReview(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.auction = inits.isInitialized("auction") ? new com.tasksprints.auction.domain.auction.model.QAuction(forProperty("auction"), inits.get("auction")) : null; + this.writer = inits.isInitialized("writer") ? new com.tasksprints.auction.domain.user.model.QUser(forProperty("writer"), inits.get("writer")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/domain/user/model/QUser.java b/src/main/generated/com/tasksprints/auction/domain/user/model/QUser.java new file mode 100644 index 00000000..97e847f8 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/domain/user/model/QUser.java @@ -0,0 +1,71 @@ +package com.tasksprints.auction.domain.user.model; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QUser is a Querydsl query type for User + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QUser extends EntityPathBase { + + private static final long serialVersionUID = -738054213L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QUser user = new QUser("user"); + + public final com.tasksprints.auction.common.entity.QBaseEntityWithUpdate _super = new com.tasksprints.auction.common.entity.QBaseEntityWithUpdate(this); + + public final ListPath auctions = this.createList("auctions", com.tasksprints.auction.domain.auction.model.Auction.class, com.tasksprints.auction.domain.auction.model.QAuction.class, PathInits.DIRECT2); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final DateTimePath deletedAt = createDateTime("deletedAt", java.time.LocalDateTime.class); + + public final StringPath email = createString("email"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath name = createString("name"); + + public final StringPath nickName = createString("nickName"); + + public final StringPath password = createString("password"); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public final com.tasksprints.auction.domain.wallet.model.QWallet wallet; + + public QUser(String variable) { + this(User.class, forVariable(variable), INITS); + } + + public QUser(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QUser(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QUser(PathMetadata metadata, PathInits inits) { + this(User.class, metadata, inits); + } + + public QUser(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.wallet = inits.isInitialized("wallet") ? new com.tasksprints.auction.domain.wallet.model.QWallet(forProperty("wallet"), inits.get("wallet")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/domain/wallet/model/QWallet.java b/src/main/generated/com/tasksprints/auction/domain/wallet/model/QWallet.java new file mode 100644 index 00000000..15a57908 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/domain/wallet/model/QWallet.java @@ -0,0 +1,65 @@ +package com.tasksprints.auction.domain.wallet.model; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QWallet is a Querydsl query type for Wallet + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QWallet extends EntityPathBase { + + private static final long serialVersionUID = -1929591685L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QWallet wallet = new QWallet("wallet"); + + public final com.tasksprints.auction.common.entity.QBaseEntityWithUpdate _super = new com.tasksprints.auction.common.entity.QBaseEntityWithUpdate(this); + + public final NumberPath balance = createNumber("balance", java.math.BigDecimal.class); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final ListPath payments = this.createList("payments", com.tasksprints.auction.domain.payment.model.Payment.class, com.tasksprints.auction.domain.payment.model.QPayment.class, PathInits.DIRECT2); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public final com.tasksprints.auction.domain.user.model.QUser user; + + public final StringPath userName = createString("userName"); + + public QWallet(String variable) { + this(Wallet.class, forVariable(variable), INITS); + } + + public QWallet(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QWallet(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QWallet(PathMetadata metadata, PathInits inits) { + this(Wallet.class, metadata, inits); + } + + public QWallet(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.user = inits.isInitialized("user") ? new com.tasksprints.auction.domain.user.model.QUser(forProperty("user"), inits.get("user")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/payment/domain/entity/QPayment.java b/src/main/generated/com/tasksprints/auction/payment/domain/entity/QPayment.java new file mode 100644 index 00000000..ba93229d --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/payment/domain/entity/QPayment.java @@ -0,0 +1,75 @@ +package com.tasksprints.auction.payment.domain.entity; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QPayment is a Querydsl query type for Payment + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QPayment extends EntityPathBase { + + private static final long serialVersionUID = -844087349L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QPayment payment = new QPayment("payment"); + + public final com.tasksprints.auction.common.entity.QBaseEntityWithUpdate _super = new com.tasksprints.auction.common.entity.QBaseEntityWithUpdate(this); + + public final NumberPath amount = createNumber("amount", java.math.BigDecimal.class); + + public final StringPath cancelReason = createString("cancelReason"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final StringPath failReason = createString("failReason"); + + public final StringPath orderName = createString("orderName"); + + public final NumberPath paymentId = createNumber("paymentId", Long.class); + + public final EnumPath payStatus = createEnum("payStatus", PayStatus.class); + + public final EnumPath payType = createEnum("payType", PayType.class); + + public final StringPath tossOrderId = createString("tossOrderId"); + + public final StringPath tossPaymentKey = createString("tossPaymentKey"); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public final com.tasksprints.auction.wallet.domain.entity.QWallet wallet; + + public QPayment(String variable) { + this(Payment.class, forVariable(variable), INITS); + } + + public QPayment(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QPayment(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QPayment(PathMetadata metadata, PathInits inits) { + this(Payment.class, metadata, inits); + } + + public QPayment(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.wallet = inits.isInitialized("wallet") ? new com.tasksprints.auction.wallet.domain.entity.QWallet(forProperty("wallet"), inits.get("wallet")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/product/domain/entity/QProduct.java b/src/main/generated/com/tasksprints/auction/product/domain/entity/QProduct.java new file mode 100644 index 00000000..a3d688d6 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/product/domain/entity/QProduct.java @@ -0,0 +1,67 @@ +package com.tasksprints.auction.product.domain.entity; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QProduct is a Querydsl query type for Product + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProduct extends EntityPathBase { + + private static final long serialVersionUID = 153645277L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QProduct product = new QProduct("product"); + + public final com.tasksprints.auction.common.entity.QBaseEntity _super = new com.tasksprints.auction.common.entity.QBaseEntity(this); + + public final com.tasksprints.auction.auction.domain.entity.QAuction auction; + + public final EnumPath category = createEnum("category", ProductCategory.class); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final StringPath description = createString("description"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath name = createString("name"); + + public final com.tasksprints.auction.user.domain.entity.QUser owner; + + public final ListPath productImageList = this.createList("productImageList", ProductImage.class, QProductImage.class, PathInits.DIRECT2); + + public QProduct(String variable) { + this(Product.class, forVariable(variable), INITS); + } + + public QProduct(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QProduct(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QProduct(PathMetadata metadata, PathInits inits) { + this(Product.class, metadata, inits); + } + + public QProduct(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.auction = inits.isInitialized("auction") ? new com.tasksprints.auction.auction.domain.entity.QAuction(forProperty("auction"), inits.get("auction")) : null; + this.owner = inits.isInitialized("owner") ? new com.tasksprints.auction.user.domain.entity.QUser(forProperty("owner"), inits.get("owner")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/product/domain/entity/QProductImage.java b/src/main/generated/com/tasksprints/auction/product/domain/entity/QProductImage.java new file mode 100644 index 00000000..e2108108 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/product/domain/entity/QProductImage.java @@ -0,0 +1,39 @@ +package com.tasksprints.auction.product.domain.entity; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; + + +/** + * QProductImage is a Querydsl query type for ProductImage + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProductImage extends EntityPathBase { + + private static final long serialVersionUID = 200559230L; + + public static final QProductImage productImage = new QProductImage("productImage"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath imageUrl = createString("imageUrl"); + + public QProductImage(String variable) { + super(ProductImage.class, forVariable(variable)); + } + + public QProductImage(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QProductImage(PathMetadata metadata) { + super(ProductImage.class, metadata); + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/review/domain/entity/QReview.java b/src/main/generated/com/tasksprints/auction/review/domain/entity/QReview.java new file mode 100644 index 00000000..1ae87f5f --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/review/domain/entity/QReview.java @@ -0,0 +1,58 @@ +package com.tasksprints.auction.review.domain.entity; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QReview is a Querydsl query type for Review + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QReview extends EntityPathBase { + + private static final long serialVersionUID = 584911101L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QReview review = new QReview("review"); + + public final com.tasksprints.auction.auction.domain.entity.QAuction auction; + + public final StringPath content = createString("content"); + + public final NumberPath id = createNumber("id", Long.class); + + public final NumberPath rating = createNumber("rating", Integer.class); + + public final com.tasksprints.auction.user.domain.entity.QUser writer; + + public QReview(String variable) { + this(Review.class, forVariable(variable), INITS); + } + + public QReview(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QReview(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QReview(PathMetadata metadata, PathInits inits) { + this(Review.class, metadata, inits); + } + + public QReview(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.auction = inits.isInitialized("auction") ? new com.tasksprints.auction.auction.domain.entity.QAuction(forProperty("auction"), inits.get("auction")) : null; + this.writer = inits.isInitialized("writer") ? new com.tasksprints.auction.user.domain.entity.QUser(forProperty("writer"), inits.get("writer")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/user/domain/entity/QUser.java b/src/main/generated/com/tasksprints/auction/user/domain/entity/QUser.java new file mode 100644 index 00000000..a5de7559 --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/user/domain/entity/QUser.java @@ -0,0 +1,71 @@ +package com.tasksprints.auction.user.domain.entity; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QUser is a Querydsl query type for User + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QUser extends EntityPathBase { + + private static final long serialVersionUID = -192086307L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QUser user = new QUser("user"); + + public final com.tasksprints.auction.common.entity.QBaseEntityWithUpdate _super = new com.tasksprints.auction.common.entity.QBaseEntityWithUpdate(this); + + public final ListPath auctions = this.createList("auctions", com.tasksprints.auction.auction.domain.entity.Auction.class, com.tasksprints.auction.auction.domain.entity.QAuction.class, PathInits.DIRECT2); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final DateTimePath deletedAt = createDateTime("deletedAt", java.time.LocalDateTime.class); + + public final StringPath email = createString("email"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath name = createString("name"); + + public final StringPath nickName = createString("nickName"); + + public final StringPath password = createString("password"); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public final com.tasksprints.auction.wallet.domain.entity.QWallet wallet; + + public QUser(String variable) { + this(User.class, forVariable(variable), INITS); + } + + public QUser(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QUser(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QUser(PathMetadata metadata, PathInits inits) { + this(User.class, metadata, inits); + } + + public QUser(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.wallet = inits.isInitialized("wallet") ? new com.tasksprints.auction.wallet.domain.entity.QWallet(forProperty("wallet"), inits.get("wallet")) : null; + } + +} + diff --git a/src/main/generated/com/tasksprints/auction/wallet/domain/entity/QWallet.java b/src/main/generated/com/tasksprints/auction/wallet/domain/entity/QWallet.java new file mode 100644 index 00000000..b3f665ab --- /dev/null +++ b/src/main/generated/com/tasksprints/auction/wallet/domain/entity/QWallet.java @@ -0,0 +1,65 @@ +package com.tasksprints.auction.wallet.domain.entity; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QWallet is a Querydsl query type for Wallet + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QWallet extends EntityPathBase { + + private static final long serialVersionUID = 2028529565L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QWallet wallet = new QWallet("wallet"); + + public final com.tasksprints.auction.common.entity.QBaseEntityWithUpdate _super = new com.tasksprints.auction.common.entity.QBaseEntityWithUpdate(this); + + public final NumberPath balance = createNumber("balance", java.math.BigDecimal.class); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final ListPath payments = this.createList("payments", com.tasksprints.auction.payment.domain.entity.Payment.class, com.tasksprints.auction.payment.domain.entity.QPayment.class, PathInits.DIRECT2); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public final com.tasksprints.auction.user.domain.entity.QUser user; + + public final StringPath userName = createString("userName"); + + public QWallet(String variable) { + this(Wallet.class, forVariable(variable), INITS); + } + + public QWallet(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QWallet(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QWallet(PathMetadata metadata, PathInits inits) { + this(Wallet.class, metadata, inits); + } + + public QWallet(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.user = inits.isInitialized("user") ? new com.tasksprints.auction.user.domain.entity.QUser(forProperty("user"), inits.get("user")) : null; + } + +} + diff --git a/src/main/java/com/tasksprints/auction/auction/domain/entity/Auction.java b/src/main/java/com/tasksprints/auction/auction/domain/entity/Auction.java index d9e9d694..fc0c3991 100644 --- a/src/main/java/com/tasksprints/auction/auction/domain/entity/Auction.java +++ b/src/main/java/com/tasksprints/auction/auction/domain/entity/Auction.java @@ -54,6 +54,7 @@ public class Auction extends BaseEntity { @Builder.Default private List bids = new ArrayList<>(); + @Builder.Default //초기화 값 적용 위함 -> @Builder만 사용할 경우 초기화 값이 무시될 가능성 존재 @Column(nullable = false) private long viewCount = 0L; @@ -82,6 +83,4 @@ public void addUser(User seller) { public void incrementViewCount() { this.viewCount += 1; } - - } diff --git a/src/main/java/com/tasksprints/auction/bid/application/annotation/BidValidation.java b/src/main/java/com/tasksprints/auction/bid/application/annotation/BidValidation.java new file mode 100644 index 00000000..db87d3ed --- /dev/null +++ b/src/main/java/com/tasksprints/auction/bid/application/annotation/BidValidation.java @@ -0,0 +1,11 @@ +package com.tasksprints.auction.bid.application.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.PARAMETER) +@Retention(RetentionPolicy.RUNTIME) +public @interface BidValidation { +} diff --git a/src/main/java/com/tasksprints/auction/bid/application/resolver/BidValidationResolver.java b/src/main/java/com/tasksprints/auction/bid/application/resolver/BidValidationResolver.java new file mode 100644 index 00000000..eda10523 --- /dev/null +++ b/src/main/java/com/tasksprints/auction/bid/application/resolver/BidValidationResolver.java @@ -0,0 +1,59 @@ +package com.tasksprints.auction.bid.application.resolver; + +import com.tasksprints.auction.bid.application.annotation.BidValidation; +import com.tasksprints.auction.bid.application.service.BidService; +import com.tasksprints.auction.bid.domain.dto.BidRequest; +import com.tasksprints.auction.chat.application.service.ChatService; +import org.springframework.core.MethodParameter; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.support.WebDataBinderFactory; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.method.support.ModelAndViewContainer; + +import java.math.BigDecimal; +import java.util.Objects; + +@Component +public class BidValidationResolver implements HandlerMethodArgumentResolver { + + private final ChatService chatService; + private final BidService bidService; + + public BidValidationResolver(ChatService chatService, BidService bidService) { + this.chatService = chatService; + this.bidService = bidService; + } + + @Override + public boolean supportsParameter(MethodParameter parameter) { + return parameter.getParameterType().isAnnotationPresent(BidValidation.class); + } + + @Override + public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container, NativeWebRequest webRequest, WebDataBinderFactory webDataBinderFactory) { + long userId = Long.parseLong(Objects.requireNonNull(webRequest.getParameter("userId"))); + long auctionId = Long.parseLong(Objects.requireNonNull(webRequest.getParameter("auctionId"))); + String chatRoomId = webRequest.getParameter("chatRoomId"); + BigDecimal amount = new BigDecimal(Objects.requireNonNull(webRequest.getParameter("amount"))); + + BidRequest bidRequest = new BidRequest(); + bidRequest.setUserId(userId); + bidRequest.setAuctionId(auctionId); + bidRequest.setChatRoomId(chatRoomId); + bidRequest.setAmount(amount); + + validate(bidRequest); + + return bidRequest; + } + + private void validate(BidRequest bidRequest) { + if (chatService.isUserOwner(bidRequest.getChatRoomId(), bidRequest.getUserId())) { + throw new IllegalArgumentException("Owner can't enter any chatting"); + } + if (bidService.isBidEnd(bidRequest.getAuctionId())) { + throw new IllegalArgumentException("Bid Already Ended."); + } + } +} diff --git a/src/main/java/com/tasksprints/auction/bid/application/service/BidService.java b/src/main/java/com/tasksprints/auction/bid/application/service/BidService.java index 7ef99a30..7270f9e2 100644 --- a/src/main/java/com/tasksprints/auction/bid/application/service/BidService.java +++ b/src/main/java/com/tasksprints/auction/bid/application/service/BidService.java @@ -3,6 +3,7 @@ import com.tasksprints.auction.bid.domain.dto.BidResponse; import java.math.BigDecimal; +import java.util.List; public interface BidService { /** @@ -18,4 +19,6 @@ public interface BidService { BidResponse getBidByUuid(String uuid); boolean isBidEnd(Long auctionId); + + List findAllBids(); } diff --git a/src/main/java/com/tasksprints/auction/bid/application/service/BidServiceImpl.java b/src/main/java/com/tasksprints/auction/bid/application/service/BidServiceImpl.java index 8a3906c3..ace333ac 100644 --- a/src/main/java/com/tasksprints/auction/bid/application/service/BidServiceImpl.java +++ b/src/main/java/com/tasksprints/auction/bid/application/service/BidServiceImpl.java @@ -104,4 +104,11 @@ public boolean isBidEnd(Long auctionId) { return auction.getEndTime().isBefore(LocalDateTime.now()); } + + @Override + public List findAllBids() { + return bidRepository.findAll() + .stream().map(BidResponse::of) + .toList(); + } } diff --git a/src/main/java/com/tasksprints/auction/bid/domain/dto/BidResponse.java b/src/main/java/com/tasksprints/auction/bid/domain/dto/BidResponse.java index 56b12302..2849c7eb 100644 --- a/src/main/java/com/tasksprints/auction/bid/domain/dto/BidResponse.java +++ b/src/main/java/com/tasksprints/auction/bid/domain/dto/BidResponse.java @@ -6,6 +6,7 @@ import lombok.NoArgsConstructor; import java.math.BigDecimal; +import java.util.UUID; @Data @Builder @@ -24,6 +25,7 @@ public static BidResponse of(Bid bid) { .name(bid.getUser().getName()) .auctionId(bid.getAuction().getId()) .amount(bid.getAmount()) + .uuid(bid.getUuid()) .build(); /** 아이템 목록 추가**/ } diff --git a/src/main/java/com/tasksprints/auction/bid/domain/entity/Bid.java b/src/main/java/com/tasksprints/auction/bid/domain/entity/Bid.java index e011318e..e898d817 100644 --- a/src/main/java/com/tasksprints/auction/bid/domain/entity/Bid.java +++ b/src/main/java/com/tasksprints/auction/bid/domain/entity/Bid.java @@ -10,6 +10,7 @@ import lombok.NoArgsConstructor; import java.math.BigDecimal; +import java.util.UUID; @Entity(name = "bids") @AllArgsConstructor @@ -31,16 +32,16 @@ public class Bid extends BaseEntity { @Builder.Default private Auction auction = null; - @ManyToOne(fetch = FetchType.LAZY) //지연 로딩 설정 이유 ? -> N + 1 문제 발생 가능성 있으므로 fetch join 으로 개선 필요 + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") @Builder.Default - private User user = null; //null 설정한 이유가 무엇인지? + private User user = null; public static Bid create(BigDecimal amount, User user, Auction auction) { Bid newBid = Bid.builder() .amount(amount) + .uuid(UUID.randomUUID().toString()) .build(); - newBid.addUserAndAuction(user, auction); return newBid; } @@ -50,7 +51,6 @@ public static Bid create(BigDecimal amount, User user, Auction auction) { */ public void addUser(User user) { this.user = user; - } public void addAuction(Auction auction) { diff --git a/src/main/java/com/tasksprints/auction/bid/presentation/BidController.java b/src/main/java/com/tasksprints/auction/bid/presentation/BidController.java index ad7babaf..bbd94224 100644 --- a/src/main/java/com/tasksprints/auction/bid/presentation/BidController.java +++ b/src/main/java/com/tasksprints/auction/bid/presentation/BidController.java @@ -1,31 +1,28 @@ package com.tasksprints.auction.bid.presentation; +import com.tasksprints.auction.bid.application.annotation.BidValidation; +import com.tasksprints.auction.bid.application.service.BidService; import com.tasksprints.auction.bid.domain.dto.BidRequest; import com.tasksprints.auction.bid.domain.dto.BidResponse; -import com.tasksprints.auction.bid.application.service.BidService; import com.tasksprints.auction.chat.application.service.ChatService; -import com.tasksprints.auction.chat.domain.dto.AddChatRoomDto; import com.tasksprints.auction.common.constant.ApiResponseMessages; import com.tasksprints.auction.common.response.ApiResult; +import com.tasksprints.auction.user.application.service.UserService; import com.tasksprints.auction.user.domain.dto.response.UserDetailResponse; import com.tasksprints.auction.user.domain.entity.User; -import com.tasksprints.auction.user.application.service.UserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.responses.ApiResponse; -import java.math.BigDecimal; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.simp.SimpMessageSendingOperations; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.List; @Controller @RequiredArgsConstructor @@ -38,19 +35,10 @@ public class BidController { private final SimpMessageSendingOperations simpMessageSendingOperations; @MessageMapping("/apply") - public void handleBid(BidRequest bidRequest) { + public void handleBid(@BidValidation BidRequest bidRequest) { /** * 입찰하는거 여기다가 추가하면 좋을 듯 합니다. */ - UserDetailResponse userDetailResponse = userService.getUserDetailsById(bidRequest.getUserId()); - if (chatService.isUserOwner(bidRequest.getChatRoomId(), userDetailResponse.getId())) { - return; - } - - if (bidService.isBidEnd(bidRequest.getAuctionId())) { - return; - } //경매가 종료되었을 경우 채팅 입력 금지 - BidResponse bidResponse = bidService.updateBidAmount(bidRequest.getUserId(), bidRequest.getAuctionId(), bidRequest.getAmount()); simpMessageSendingOperations.convertAndSend("/bid/" + bidResponse.getUuid(), bidResponse); @@ -65,7 +53,7 @@ public ResponseEntity> submitBid( @Parameter(description = "Bid amount") @RequestParam BigDecimal amount) { BidResponse bid = bidService.submitBid(userId, auctionId, amount); User user = userService.getUserById(userId); - chatService.createRoom(new AddChatRoomDto(bid.getName(), user)); //입찰 생성 시 채팅방 생성 후 저장 + chatService.createRoom(bid.getName(), user); //입찰 생성 시 채팅방 생성 후 저장 return ResponseEntity.ok(ApiResult.success(ApiResponseMessages.BID_SUBMITTED_SUCCESS, bid)); } @@ -76,7 +64,7 @@ public ResponseEntity> updateBid( @Parameter(description = "auctionId") @RequestParam Long auctionId, @Parameter(description = "ID of the user updating the bid") @RequestParam Long userId, @Parameter(description = "New bid amount") @RequestParam BigDecimal amount) { - log.info("a"); + log.info("a"); //삭제 필요 BidResponse updatedBid = bidService.updateBidAmount(userId, auctionId, amount); return ResponseEntity.ok(ApiResult.success(ApiResponseMessages.BID_UPDATED_SUCCESS, updatedBid)); } @@ -95,6 +83,14 @@ public ResponseEntity> updateBid( @ApiResponse(responseCode = "200", description = "Bid status retrieved successfully") public ResponseEntity> getBidByUuid(@PathVariable(value = "uuid") String uuid) { BidResponse bid = bidService.getBidByUuid(uuid); - return ResponseEntity.ok(ApiResult.success(ApiResponseMessages.AUCTION_RETRIEVED, bid)); + return ResponseEntity.ok(ApiResult.success(ApiResponseMessages.BID_RETRIEVED, bid)); + } + + @GetMapping() + @Operation(summary = "Get All bids", description = "Get All bids") + @ApiResponse(responseCode = "200", description = "All bids retrieved successfully") + public ResponseEntity>> getAllBids() { + List bids = bidService.findAllBids(); + return ResponseEntity.ok(ApiResult.success(ApiResponseMessages.ALL_BIDS_RETRIEVED, bids)); } } diff --git a/src/main/java/com/tasksprints/auction/chat/application/annotation/ChatValidation.java b/src/main/java/com/tasksprints/auction/chat/application/annotation/ChatValidation.java new file mode 100644 index 00000000..6c43986f --- /dev/null +++ b/src/main/java/com/tasksprints/auction/chat/application/annotation/ChatValidation.java @@ -0,0 +1,11 @@ +package com.tasksprints.auction.chat.application.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.PARAMETER) //파라미터에서 사용 +@Retention(RetentionPolicy.RUNTIME) //런타임에 참조 +public @interface ChatValidation { +} diff --git a/src/main/java/com/tasksprints/auction/chat/application/annotation/WhisperValidation.java b/src/main/java/com/tasksprints/auction/chat/application/annotation/WhisperValidation.java new file mode 100644 index 00000000..d5f2d89f --- /dev/null +++ b/src/main/java/com/tasksprints/auction/chat/application/annotation/WhisperValidation.java @@ -0,0 +1,12 @@ +package com.tasksprints.auction.chat.application.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.PARAMETER) +@Retention(RetentionPolicy.RUNTIME) +public @interface WhisperValidation { +} + diff --git a/src/main/java/com/tasksprints/auction/chat/application/resolver/ChatValidationResolver.java b/src/main/java/com/tasksprints/auction/chat/application/resolver/ChatValidationResolver.java new file mode 100644 index 00000000..fec7c95b --- /dev/null +++ b/src/main/java/com/tasksprints/auction/chat/application/resolver/ChatValidationResolver.java @@ -0,0 +1,55 @@ +package com.tasksprints.auction.chat.application.resolver; + +import com.tasksprints.auction.chat.application.service.ChatService; +import com.tasksprints.auction.chat.application.annotation.ChatValidation; +import com.tasksprints.auction.chat.domain.dto.MessageDto; +import org.springframework.core.MethodParameter; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.support.WebDataBinderFactory; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.method.support.ModelAndViewContainer; + +import java.util.Objects; + +@Component +public class ChatValidationResolver implements HandlerMethodArgumentResolver { + + private final ChatService chatService; + + public ChatValidationResolver(ChatService chatService) { + this.chatService = chatService; + } + + @Override + public boolean supportsParameter(MethodParameter parameter) { + return parameter.getParameterType().isAnnotationPresent(ChatValidation.class); + } + + @Override + public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, + NativeWebRequest webRequest, WebDataBinderFactory binderFactory) { + + String type = webRequest.getParameter("type"); + String roomId = webRequest.getParameter("roomId"); + Long sender = Long.valueOf(Objects.requireNonNull(webRequest.getParameter("sender"))); + String msg = webRequest.getParameter("message"); + + MessageDto messageDto = new MessageDto(); + messageDto.setType(type); + messageDto.setRoomId(roomId); + messageDto.setSender(sender); + messageDto.setMessage(msg); + + validate(messageDto); //메시지 검증 + + return messageDto; + } + + private void validate(MessageDto messageDto) { + if (chatService.isUserOwner(messageDto.getRoomId(), messageDto.getSender())) { + throw new IllegalArgumentException("Owner can't enter any chatting"); + } + //이외의 메시지 검증 로직 추가 + } +} diff --git a/src/main/java/com/tasksprints/auction/chat/application/resolver/WhisperValidationResolver.java b/src/main/java/com/tasksprints/auction/chat/application/resolver/WhisperValidationResolver.java new file mode 100644 index 00000000..3e5892f8 --- /dev/null +++ b/src/main/java/com/tasksprints/auction/chat/application/resolver/WhisperValidationResolver.java @@ -0,0 +1,54 @@ +package com.tasksprints.auction.chat.application.resolver; + +import com.tasksprints.auction.chat.application.service.ChatService; +import com.tasksprints.auction.chat.application.annotation.WhisperValidation; +import com.tasksprints.auction.chat.domain.dto.WhisperDto; +import org.springframework.core.MethodParameter; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.support.WebDataBinderFactory; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.method.support.ModelAndViewContainer; + +import java.util.Objects; + +@Component +public class WhisperValidationResolver implements HandlerMethodArgumentResolver { + + private final ChatService chatService; + + public WhisperValidationResolver(ChatService chatService) { + this.chatService = chatService; + } + + @Override + public boolean supportsParameter(MethodParameter parameter) { + return parameter.getParameterType().isAnnotationPresent(WhisperValidation.class); + } + + @Override + public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) { + + String roomId = webRequest.getParameter("roomId"); + long sender = Long.parseLong(Objects.requireNonNull(webRequest.getParameter("sender"))); + long receiver = Long.parseLong(Objects.requireNonNull(webRequest.getParameter("receiver"))); + String message = webRequest.getParameter("message"); + + WhisperDto whisperDto = new WhisperDto(); + whisperDto.setRoomId(roomId); + whisperDto.setSender(sender); + whisperDto.setReceiver(receiver); + whisperDto.setMessage(message); + + validate(whisperDto); + + return whisperDto; + } + + private void validate(WhisperDto whisperDto) { + if (chatService.isUserOwner(whisperDto.getRoomId(), whisperDto.getSender())) { + throw new IllegalArgumentException("Owner can't enter any chatting"); + } + //이외의 메시지 검증 로직 추가 + } +} diff --git a/src/main/java/com/tasksprints/auction/chat/application/service/ChatService.java b/src/main/java/com/tasksprints/auction/chat/application/service/ChatService.java index b9e7cff3..4f67542c 100644 --- a/src/main/java/com/tasksprints/auction/chat/application/service/ChatService.java +++ b/src/main/java/com/tasksprints/auction/chat/application/service/ChatService.java @@ -1,21 +1,23 @@ package com.tasksprints.auction.chat.application.service; - -import com.tasksprints.auction.chat.domain.dto.AddChatRoomDto; -import com.tasksprints.auction.chat.domain.model.ChatRoom; +import com.tasksprints.auction.chat.domain.dto.ChatRoomResponse; +import com.tasksprints.auction.chat.domain.dto.MessageDto; +import com.tasksprints.auction.user.domain.dto.response.UserResponse; import com.tasksprints.auction.user.domain.entity.User; import java.util.List; public interface ChatService { - List findAllRoom(); + List findAllRoom(); - ChatRoom findRoomById(String id); + ChatRoomResponse findRoomById(String id); - User findOwnerById(String id); + UserResponse findOwnerById(String id); boolean isUserOwner(String id, Long user); - void createRoom(AddChatRoomDto addChatRoomDto); + void processMessage(String sender, MessageDto messageDto); + + void createRoom(String name, User owner); } diff --git a/src/main/java/com/tasksprints/auction/chat/application/service/ChatServiceImpl.java b/src/main/java/com/tasksprints/auction/chat/application/service/ChatServiceImpl.java index f754cbcc..5dcb0ae1 100644 --- a/src/main/java/com/tasksprints/auction/chat/application/service/ChatServiceImpl.java +++ b/src/main/java/com/tasksprints/auction/chat/application/service/ChatServiceImpl.java @@ -1,9 +1,12 @@ package com.tasksprints.auction.chat.application.service; import com.fasterxml.jackson.databind.ObjectMapper; -import com.tasksprints.auction.chat.domain.dto.AddChatRoomDto; + +import com.tasksprints.auction.chat.domain.dto.ChatRoomResponse; +import com.tasksprints.auction.chat.domain.dto.MessageDto; import com.tasksprints.auction.chat.domain.model.ChatRoom; import com.tasksprints.auction.chat.infrastructure.ChatRoomRepository; +import com.tasksprints.auction.user.domain.dto.response.UserResponse; import com.tasksprints.auction.user.domain.entity.User; import jakarta.annotation.PostConstruct; import jakarta.transaction.Transactional; @@ -29,18 +32,22 @@ private void init() { chatRoomMap = new ConcurrentHashMap<>(); } + @Transactional @Override - public List findAllRoom() { - return new ArrayList<>(chatRoomMap.values()); + public List findAllRoom() { + List chatRooms = new ArrayList<>(chatRoomMap.values()); + return chatRooms.stream().map(ChatRoomResponse::of).toList(); } + @Transactional @Override - public ChatRoom findRoomById(String id) { - return chatRoomMap.get(id); + public ChatRoomResponse findRoomById(String id) { + ChatRoom chatRoom = chatRoomMap.get(id); + return ChatRoomResponse.of(chatRoom); } @Override - public User findOwnerById(String id) { + public UserResponse findOwnerById(String id) { return findRoomById(id).getOwner(); } @@ -49,10 +56,29 @@ public boolean isUserOwner(String id, Long user) { return findOwnerById(id).getId().equals(user); } + @Override + public void processMessage(String sender, MessageDto messageDto) { + switch (messageDto.getType()) { + case ENTER -> { + messageDto.setMessage(sender + "님이 입장하셨습니다."); + break; + } + case LEAVE -> { + messageDto.setMessage(sender + "님이 퇴장하셨습니다."); + break; + } + default -> messageDto.setMessage(sender + " : " + messageDto.getMessage()); + } + } + @Transactional @Override - public void createRoom(AddChatRoomDto addChatRoomDto) { - ChatRoom chatRoom = chatRoomRepository.save(addChatRoomDto.toEntity()); + public void createRoom(String name, User owner) { + ChatRoom chatRoom = ChatRoom.builder() + .name(name) + .owner(owner) + .build(); + chatRoomRepository.save(chatRoom); log.info("Create Room : {} {}", chatRoom.getId(), chatRoom.getName()); chatRoomMap.put(chatRoom.getChatRoomId(), chatRoom); } diff --git a/src/main/java/com/tasksprints/auction/chat/domain/dto/AddChatRoomDto.java b/src/main/java/com/tasksprints/auction/chat/domain/dto/AddChatRoomDto.java deleted file mode 100644 index 0faac74b..00000000 --- a/src/main/java/com/tasksprints/auction/chat/domain/dto/AddChatRoomDto.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.tasksprints.auction.chat.domain.dto; - -import com.tasksprints.auction.chat.domain.model.ChatRoom; -import com.tasksprints.auction.user.domain.entity.User; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@AllArgsConstructor -@NoArgsConstructor -public class AddChatRoomDto { - - private String name; - private User owner; - - public ChatRoom toEntity() { - return new ChatRoom(name, owner); - } -} diff --git a/src/main/java/com/tasksprints/auction/chat/domain/dto/ChatRoomResponse.java b/src/main/java/com/tasksprints/auction/chat/domain/dto/ChatRoomResponse.java new file mode 100644 index 00000000..75ca2190 --- /dev/null +++ b/src/main/java/com/tasksprints/auction/chat/domain/dto/ChatRoomResponse.java @@ -0,0 +1,39 @@ +package com.tasksprints.auction.chat.domain.dto; + +import com.tasksprints.auction.chat.domain.model.ChatRoom; +import com.tasksprints.auction.user.domain.dto.response.UserResponse; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.stream.Collectors; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ChatRoomResponse { + String chatRoomId; + String name; + UserResponse owner; + List users; + + public static ChatRoomResponse of(ChatRoom chatRoom) { + return ChatRoomResponse.builder() + .chatRoomId(chatRoom.getChatRoomId()) + .name(chatRoom.getName()) + .owner(UserResponse.builder() + .id(chatRoom.getOwner().getId()) + .nickName(chatRoom.getOwner().getNickName()) + .build()) + .users(chatRoom.getUsers().stream() + .map(user -> UserResponse.builder() + .id(user.getId()) + .nickName(user.getNickName()) + .build()) + .collect(Collectors.toList())) + .build(); + } +} diff --git a/src/main/java/com/tasksprints/auction/chat/domain/dto/MessageDto.java b/src/main/java/com/tasksprints/auction/chat/domain/dto/MessageDto.java index b0749e5e..230a199d 100644 --- a/src/main/java/com/tasksprints/auction/chat/domain/dto/MessageDto.java +++ b/src/main/java/com/tasksprints/auction/chat/domain/dto/MessageDto.java @@ -1,11 +1,8 @@ package com.tasksprints.auction.chat.domain.dto; +import lombok.*; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter +@Data @AllArgsConstructor @NoArgsConstructor public class MessageDto { @@ -18,7 +15,7 @@ public enum MessageType { private Long sender; private String message; - public void setMessage(String s) { - this.message = s; + public void setType(String type) { + this.type = MessageType.valueOf(type); } } diff --git a/src/main/java/com/tasksprints/auction/chat/domain/dto/WhisperDto.java b/src/main/java/com/tasksprints/auction/chat/domain/dto/WhisperDto.java index 5a2fee36..1599a827 100644 --- a/src/main/java/com/tasksprints/auction/chat/domain/dto/WhisperDto.java +++ b/src/main/java/com/tasksprints/auction/chat/domain/dto/WhisperDto.java @@ -1,20 +1,17 @@ package com.tasksprints.auction.chat.domain.dto; import lombok.AllArgsConstructor; +import lombok.Data; import lombok.Getter; import lombok.NoArgsConstructor; -@Getter +@Data @AllArgsConstructor @NoArgsConstructor public class WhisperDto { private String roomId; - private Long sender; - private Long receiver; + private long sender; + private long receiver; private String message; - - public void setMessage(String message) { - this.message = message; - } } diff --git a/src/main/java/com/tasksprints/auction/chat/domain/model/ChatRoom.java b/src/main/java/com/tasksprints/auction/chat/domain/model/ChatRoom.java index 273eeaa1..5ee5ee42 100644 --- a/src/main/java/com/tasksprints/auction/chat/domain/model/ChatRoom.java +++ b/src/main/java/com/tasksprints/auction/chat/domain/model/ChatRoom.java @@ -24,11 +24,11 @@ public class ChatRoom { private String chatRoomId; @Column(name = "name") - private String name; //채팅방 이름은 상품 이름으로 하면 좋을 것 같습니다. + private String name; @ManyToOne @JoinColumn(name = "owner_id") - private User owner; //입찰자 -> 입찰 불가하도록 ? 설정 후 메시지 보내기 금지 + private User owner; @OneToMany @Column(name = "chat_users") diff --git a/src/main/java/com/tasksprints/auction/chat/presentation/ChatController.java b/src/main/java/com/tasksprints/auction/chat/presentation/ChatController.java index b68bc3b5..c03ea107 100644 --- a/src/main/java/com/tasksprints/auction/chat/presentation/ChatController.java +++ b/src/main/java/com/tasksprints/auction/chat/presentation/ChatController.java @@ -1,7 +1,10 @@ package com.tasksprints.auction.chat.presentation; + import com.tasksprints.auction.chat.application.service.ChatService; import com.tasksprints.auction.chat.domain.dto.MessageDto; import com.tasksprints.auction.chat.domain.dto.WhisperDto; +import com.tasksprints.auction.chat.application.annotation.ChatValidation; +import com.tasksprints.auction.chat.application.annotation.WhisperValidation; import com.tasksprints.auction.user.application.service.UserService; import lombok.RequiredArgsConstructor; import org.springframework.messaging.handler.annotation.MessageMapping; @@ -17,27 +20,14 @@ public class ChatController { private final ChatService chatService; @MessageMapping("/chat/message") - public void message(MessageDto messageDto) { - if (chatService.isUserOwner(messageDto.getRoomId(), messageDto.getSender())) { - return; - } //메시지 전송자가 경매자라면 메시지 전송 금지 + public void message(@ChatValidation MessageDto messageDto) { String sender = userService.getUserDetailsById(messageDto.getSender()).getNickName(); - - if (MessageDto.MessageType.ENTER.equals(messageDto.getType())) { - messageDto.setMessage(sender + "님이 입장하셨습니다."); - } - if (MessageDto.MessageType.LEAVE.equals(messageDto.getType())) { - messageDto.setMessage(sender + "님이 퇴장하셨습니다."); - } + chatService.processMessage(sender, messageDto); simpMessageSendingOperations.convertAndSend("/topic/chat/room/" + messageDto.getRoomId(), messageDto); } @MessageMapping("/chat/message/whisper") - public void messageToOne(WhisperDto whisperDto) { - if (chatService.isUserOwner(whisperDto.getRoomId(), whisperDto.getSender())) { - return; - } //메시지 전송자가 경매자라면 메시지 전송 금지 - + public void messageToOne(@WhisperValidation WhisperDto whisperDto) { String sender = userService.getUserDetailsById(whisperDto.getSender()).getNickName(); whisperDto.setMessage("[귓속말] " + sender + " : " + whisperDto.getMessage()); simpMessageSendingOperations.convertAndSend("/whisper/" + whisperDto.getReceiver(), whisperDto); diff --git a/src/main/java/com/tasksprints/auction/chat/presentation/ChatRoomController.java b/src/main/java/com/tasksprints/auction/chat/presentation/ChatRoomController.java index 893d7f9e..71cfd7d6 100644 --- a/src/main/java/com/tasksprints/auction/chat/presentation/ChatRoomController.java +++ b/src/main/java/com/tasksprints/auction/chat/presentation/ChatRoomController.java @@ -1,31 +1,25 @@ package com.tasksprints.auction.chat.presentation; import com.tasksprints.auction.chat.application.service.ChatService; -import com.tasksprints.auction.chat.domain.model.ChatRoom; +import com.tasksprints.auction.chat.domain.dto.ChatRoomResponse; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.List; @RequiredArgsConstructor -@Controller -@ResponseBody +@RestController +@RequestMapping("/api/v1/chat") public class ChatRoomController { private final ChatService chatService; - @GetMapping("/chat/room/all") - public List chatRoomAll() { + @GetMapping("/all") + public List chatRoomAll() { return chatService.findAllRoom(); } //채팅방 목록 조회 -// @PostMapping("/chat/room") -// public ChatRoom createChatRoom(AddChatRoomDto addChatRoomDto) { -// return chatService.createRoom(addChatRoomDto); -// } //채팅방 생성 - - @GetMapping("/chat/room/{chatRoomId}") - public ChatRoom chatRoom(@PathVariable(value = "chatRoomId") String chatRoomId) { + @GetMapping("/{chatRoomId}") + public ChatRoomResponse chatRoom(@PathVariable(value = "chatRoomId") String chatRoomId) { return chatService.findRoomById(chatRoomId); } //채팅방 조회 } diff --git a/src/main/java/com/tasksprints/auction/common/config/ClockConfig.java b/src/main/java/com/tasksprints/auction/common/config/ClockConfig.java index 1757f93a..9764216b 100644 --- a/src/main/java/com/tasksprints/auction/common/config/ClockConfig.java +++ b/src/main/java/com/tasksprints/auction/common/config/ClockConfig.java @@ -9,6 +9,6 @@ public class ClockConfig { @Bean public Clock clock() { - return Clock.system(ZoneId.of("Asia/seoul")); + return Clock.system(ZoneId.of("Asia/Seoul")); } } diff --git a/src/main/java/com/tasksprints/auction/common/config/JwtConfig.java b/src/main/java/com/tasksprints/auction/common/config/JwtConfig.java index f272e578..349a1f0c 100644 --- a/src/main/java/com/tasksprints/auction/common/config/JwtConfig.java +++ b/src/main/java/com/tasksprints/auction/common/config/JwtConfig.java @@ -1,24 +1,21 @@ package com.tasksprints.auction.common.config; import lombok.Getter; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; -@Component @Getter -@RequiredArgsConstructor +@Setter +@Configuration +@ConfigurationProperties(prefix = "jwt") public class JwtConfig { - @Value("${jwt.expire-ms}") - private final Long accessExpireMs; + private Long accessExpireMs; - @Value("${jwt.expire-ms}") - private final Long refreshExpireMs; + private Long refreshExpireMs; - @Value("${jwt.issuer}") - private final String issuer; + private String issuer; - @Value("${jwt.secret}") - private final String secretKey; + private String secretKey; } diff --git a/src/main/java/com/tasksprints/auction/common/config/WebConfig.java b/src/main/java/com/tasksprints/auction/common/config/WebConfig.java index 41c255ec..6b84516a 100644 --- a/src/main/java/com/tasksprints/auction/common/config/WebConfig.java +++ b/src/main/java/com/tasksprints/auction/common/config/WebConfig.java @@ -1,5 +1,6 @@ package com.tasksprints.auction.common.config; +import com.tasksprints.auction.chat.application.resolver.ChatValidationResolver; import com.tasksprints.auction.auction.application.resolver.SearchConditionResolver; import com.tasksprints.auction.auth.application.resolver.AuthenticationResolver; import org.springframework.context.annotation.Configuration; @@ -12,16 +13,19 @@ @Configuration public class WebConfig implements WebMvcConfigurer { private final SearchConditionResolver searchConditionResolver; + private final ChatValidationResolver chatValidationResolver; private final AuthenticationResolver authenticationResolver; - public WebConfig(SearchConditionResolver searchConditionResolver, AuthenticationResolver authenticationResolver) { + public WebConfig(SearchConditionResolver searchConditionResolver, ChatValidationResolver chatValidationResolver, AuthenticationResolver authenticationResolver) { this.searchConditionResolver = searchConditionResolver; + this.chatValidationResolver = chatValidationResolver; this.authenticationResolver = authenticationResolver; } @Override public void addArgumentResolvers(List resolvers) { resolvers.add(searchConditionResolver); + resolvers.add(chatValidationResolver); resolvers.add(authenticationResolver); } diff --git a/src/main/java/com/tasksprints/auction/common/config/WebSockConfig.java b/src/main/java/com/tasksprints/auction/common/config/WebSockConfig.java index 2fd79b21..c28f793d 100644 --- a/src/main/java/com/tasksprints/auction/common/config/WebSockConfig.java +++ b/src/main/java/com/tasksprints/auction/common/config/WebSockConfig.java @@ -26,6 +26,7 @@ public void configureMessageBroker(MessageBrokerRegistry brokerRegistry) { @Override public void registerStompEndpoints(StompEndpointRegistry registry) { - registry.addEndpoint("/ws-stomp").setAllowedOriginPatterns("http://localhost:8080").withSockJS(); + registry.addEndpoint("/ws").setAllowedOriginPatterns("*"); + registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS(); } } diff --git a/src/main/java/com/tasksprints/auction/common/constant/ApiResponseMessages.java b/src/main/java/com/tasksprints/auction/common/constant/ApiResponseMessages.java index 00aa3e75..0b6d04f0 100644 --- a/src/main/java/com/tasksprints/auction/common/constant/ApiResponseMessages.java +++ b/src/main/java/com/tasksprints/auction/common/constant/ApiResponseMessages.java @@ -24,6 +24,8 @@ public class ApiResponseMessages { public static final String BID_SUBMITTED_SUCCESS = "Bid successfully submitted"; public static final String BID_UPDATED_SUCCESS = "Bid amount successfully updated"; public static final String BID_STATUS_CHECKED = "Bid status successfully checked"; + public static final String ALL_BIDS_RETRIEVED = "All bids successfully retrieved"; + public static final String BID_RETRIEVED = "Bid successfully retrieved"; // REVIEW public static final String REVIEW_CREATED_SUCCESS = "Review successfully created"; diff --git a/src/main/java/com/tasksprints/auction/common/properties/PaymentProperties.java b/src/main/java/com/tasksprints/auction/common/properties/PaymentProperties.java index ca6a1650..6a9a2ba1 100644 --- a/src/main/java/com/tasksprints/auction/common/properties/PaymentProperties.java +++ b/src/main/java/com/tasksprints/auction/common/properties/PaymentProperties.java @@ -2,6 +2,7 @@ import lombok.Getter; +import lombok.Setter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @@ -10,6 +11,7 @@ @Component @ConfigurationProperties(prefix = "payment.toss") @Getter +@Setter public class PaymentProperties { private String testClientApiKey; private String testSecretApiKey; diff --git a/src/main/java/com/tasksprints/auction/user/domain/dto/response/UserResponse.java b/src/main/java/com/tasksprints/auction/user/domain/dto/response/UserResponse.java index a3ccb44e..1a92cfc8 100644 --- a/src/main/java/com/tasksprints/auction/user/domain/dto/response/UserResponse.java +++ b/src/main/java/com/tasksprints/auction/user/domain/dto/response/UserResponse.java @@ -1,4 +1,15 @@ package com.tasksprints.auction.user.domain.dto.response; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor public class UserResponse { + Long id; + String nickName; } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 67ef9efc..aa8ede58 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -35,8 +35,8 @@ spring: cache: false profiles: include: - -jwt - -payment + - jwt + - payment springdoc: api-docs: @@ -50,8 +50,8 @@ springdoc: logging: level: org.hibernate.SQL: DEBUG - org.hibernate.type.descriptor.sql.BasicBinder: TRACE - root: debug + org.hibernate.type.descriptor.sql.BasicBinder: INFO + root: INFO server: port: 8080