카테고리 리스트 저장 및 삭제, 순서변경 추가

This commit is contained in:
dev-Hoony-93
2022-02-09 22:08:33 +09:00
parent fea2b8bbd8
commit f43520b883
19 changed files with 864 additions and 17 deletions

View File

@@ -80,7 +80,7 @@
</div> </div>
<script> <script>
let deletedList =[];
function init(){ function init(){
dragInit(); dragInit();
@@ -95,14 +95,16 @@
} }
function initCategoryList(){ function initCategoryList(){
$("#categoryList").empty(); $("#categoryList").empty();
deletedList = [];
$.ajax({ $.ajax({
type: 'get' type: 'get'
, url: '/store-service/category' , url: '/store-service/category'
, success: function (ajaxData, status, request) { , success: function (ajaxData, status, request) {
console.log(ajaxData)
$(ajaxData.data).each(function (index,element) { $(ajaxData.data).each(function (index,element) {
$("#categoryList").append("<li class=\"list-group-item d-flex justify-content-between align-items-center\" role=\"button\">\n" + $("#categoryList").append("<li class=\"list-group-item d-flex justify-content-between align-items-center\" role=\"button\">\n" +
" <span class=\"list-element\" contenteditable=\"true\" data-value=\""+element.order+"\" > "+element.name+"</span>\n" + " <span class=\"list-element\" contenteditable=\"true\" data-id=\""+element.categoryId+"\" >"+element.name+"</span>\n" +
" <span class=\"badge badge-danger badge-pill remove-element \" role=\"button\" >삭제</span>\n" + " <span class=\"badge badge-danger badge-pill remove-element \" role=\"button\" >삭제</span>\n" +
" </li>"); " </li>");
@@ -129,22 +131,44 @@
} }
function clickSave(){ function clickSave(){
alert("저장되었습니다.");
let categoryArr =[]; let categoryArr =[];
let order = 1; let order = 1;
$("#categoryList li .list-element").each(function (index,element) { $("#categoryList li .list-element").each(function (index,element) {
let category = { let category = {
categoryId : $(element).attr('data-value'), categoryId : $(element).attr('data-id'),
categoryName : $(element).text(), name : $(element).text(),
ordered : order++ order : order++
} }
categoryArr.push(category) categoryArr.push(category)
}); });
console.log(categoryArr);
let data = {
storeId : "1",
categoryList: categoryArr,
deletedList: deletedList
}
console.log(data)
$.ajax({
type: 'put'
, async: true
, url: '/store-service/category'
, data: JSON.stringify(data)
,dataType : "text"
, beforeSend: function(xhr) {
xhr.setRequestHeader("Content-type","application/json; charset=utf-8");
}
, success: function (ajaxData, status, request) {
alert("저장 성공");
}
, error: function(request, status, err) {
alert("저장 실패");
}
, complete: function(request, status) { }
});
$("#myModal").modal('toggle'); $("#myModal").modal('toggle');
} }
function dblclickCategoryList(ele) { function dblclickCategoryList(ele) {
@@ -159,7 +183,14 @@
selection.addRange(newRange); selection.addRange(newRange);
} }
function clickRemoveElement(item){ function clickRemoveElement(item){
$(item).parent().remove()
let category = {
categoryId : $(item).parent().children(".list-element").attr('data-id'),
name : $(item).parent().children(".list-element").text(),
order:""
}
deletedList.push(category)
$(item).parent().remove();
} }

View File

@@ -4,6 +4,7 @@ build/
!gradle/wrapper/gradle-wrapper.jar !gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/ !**/src/main/**/build/
!**/src/test/**/build/ !**/src/test/**/build/
**/src/main/generated/
### STS ### ### STS ###
.apt_generated .apt_generated
@@ -26,6 +27,7 @@ out/
!**/src/main/**/out/ !**/src/main/**/out/
!**/src/test/**/out/ !**/src/test/**/out/
### NetBeans ### ### NetBeans ###
/nbproject/private/ /nbproject/private/
/nbbuild/ /nbbuild/

View File

@@ -0,0 +1,71 @@
package com.justpickup.storeservice.domain.category.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;
/**
* QCategory is a Querydsl query type for Category
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QCategory extends EntityPathBase<Category> {
private static final long serialVersionUID = -1430562590L;
private static final PathInits INITS = PathInits.DIRECT2;
public static final QCategory category = new QCategory("category");
public final com.justpickup.storeservice.global.entity.QBaseEntity _super = new com.justpickup.storeservice.global.entity.QBaseEntity(this);
//inherited
public final DateTimePath<java.time.LocalDateTime> createdAt = _super.createdAt;
//inherited
public final NumberPath<Long> createdBy = _super.createdBy;
public final NumberPath<Long> id = createNumber("id", Long.class);
public final ListPath<com.justpickup.storeservice.domain.item.entity.Item, com.justpickup.storeservice.domain.item.entity.QItem> items = this.<com.justpickup.storeservice.domain.item.entity.Item, com.justpickup.storeservice.domain.item.entity.QItem>createList("items", com.justpickup.storeservice.domain.item.entity.Item.class, com.justpickup.storeservice.domain.item.entity.QItem.class, PathInits.DIRECT2);
//inherited
public final DateTimePath<java.time.LocalDateTime> lastModifiedAt = _super.lastModifiedAt;
//inherited
public final NumberPath<Long> lastModifiedBy = _super.lastModifiedBy;
public final StringPath name = createString("name");
public final NumberPath<Integer> order = createNumber("order", Integer.class);
public final com.justpickup.storeservice.domain.store.entity.QStore store;
public QCategory(String variable) {
this(Category.class, forVariable(variable), INITS);
}
public QCategory(Path<? extends Category> path) {
this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS));
}
public QCategory(PathMetadata metadata) {
this(metadata, PathInits.getFor(metadata, INITS));
}
public QCategory(PathMetadata metadata, PathInits inits) {
this(Category.class, metadata, inits);
}
public QCategory(Class<? extends Category> type, PathMetadata metadata, PathInits inits) {
super(type, metadata, inits);
this.store = inits.isInitialized("store") ? new com.justpickup.storeservice.domain.store.entity.QStore(forProperty("store"), inits.get("store")) : null;
}
}

View File

@@ -0,0 +1,67 @@
package com.justpickup.storeservice.domain.favoritestore.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;
/**
* QFavoriteStore is a Querydsl query type for FavoriteStore
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QFavoriteStore extends EntityPathBase<FavoriteStore> {
private static final long serialVersionUID = -356764916L;
private static final PathInits INITS = PathInits.DIRECT2;
public static final QFavoriteStore favoriteStore = new QFavoriteStore("favoriteStore");
public final com.justpickup.storeservice.global.entity.QBaseEntity _super = new com.justpickup.storeservice.global.entity.QBaseEntity(this);
//inherited
public final DateTimePath<java.time.LocalDateTime> createdAt = _super.createdAt;
//inherited
public final NumberPath<Long> createdBy = _super.createdBy;
public final NumberPath<Long> id = createNumber("id", Long.class);
//inherited
public final DateTimePath<java.time.LocalDateTime> lastModifiedAt = _super.lastModifiedAt;
//inherited
public final NumberPath<Long> lastModifiedBy = _super.lastModifiedBy;
public final com.justpickup.storeservice.domain.store.entity.QStore store;
public final NumberPath<Long> userId = createNumber("userId", Long.class);
public QFavoriteStore(String variable) {
this(FavoriteStore.class, forVariable(variable), INITS);
}
public QFavoriteStore(Path<? extends FavoriteStore> path) {
this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS));
}
public QFavoriteStore(PathMetadata metadata) {
this(metadata, PathInits.getFor(metadata, INITS));
}
public QFavoriteStore(PathMetadata metadata, PathInits inits) {
this(FavoriteStore.class, metadata, inits);
}
public QFavoriteStore(Class<? extends FavoriteStore> type, PathMetadata metadata, PathInits inits) {
super(type, metadata, inits);
this.store = inits.isInitialized("store") ? new com.justpickup.storeservice.domain.store.entity.QStore(forProperty("store"), inits.get("store")) : null;
}
}

View File

@@ -0,0 +1,79 @@
package com.justpickup.storeservice.domain.item.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;
/**
* QItem is a Querydsl query type for Item
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QItem extends EntityPathBase<Item> {
private static final long serialVersionUID = -2047337460L;
private static final PathInits INITS = PathInits.DIRECT2;
public static final QItem item = new QItem("item");
public final com.justpickup.storeservice.global.entity.QBaseEntity _super = new com.justpickup.storeservice.global.entity.QBaseEntity(this);
public final com.justpickup.storeservice.domain.category.entity.QCategory category;
//inherited
public final DateTimePath<java.time.LocalDateTime> createdAt = _super.createdAt;
//inherited
public final NumberPath<Long> createdBy = _super.createdBy;
public final NumberPath<Long> id = createNumber("id", Long.class);
public final ListPath<com.justpickup.storeservice.domain.itemoption.entity.ItemOption, com.justpickup.storeservice.domain.itemoption.entity.QItemOption> itemOptions = this.<com.justpickup.storeservice.domain.itemoption.entity.ItemOption, com.justpickup.storeservice.domain.itemoption.entity.QItemOption>createList("itemOptions", com.justpickup.storeservice.domain.itemoption.entity.ItemOption.class, com.justpickup.storeservice.domain.itemoption.entity.QItemOption.class, PathInits.DIRECT2);
//inherited
public final DateTimePath<java.time.LocalDateTime> lastModifiedAt = _super.lastModifiedAt;
//inherited
public final NumberPath<Long> lastModifiedBy = _super.lastModifiedBy;
public final StringPath name = createString("name");
public final com.justpickup.storeservice.global.entity.QPhoto photo;
public final NumberPath<Long> price = createNumber("price", Long.class);
public final EnumPath<com.justpickup.storeservice.global.entity.Yn> salesYn = createEnum("salesYn", com.justpickup.storeservice.global.entity.Yn.class);
public final com.justpickup.storeservice.domain.store.entity.QStore store;
public QItem(String variable) {
this(Item.class, forVariable(variable), INITS);
}
public QItem(Path<? extends Item> path) {
this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS));
}
public QItem(PathMetadata metadata) {
this(metadata, PathInits.getFor(metadata, INITS));
}
public QItem(PathMetadata metadata, PathInits inits) {
this(Item.class, metadata, inits);
}
public QItem(Class<? extends Item> type, PathMetadata metadata, PathInits inits) {
super(type, metadata, inits);
this.category = inits.isInitialized("category") ? new com.justpickup.storeservice.domain.category.entity.QCategory(forProperty("category"), inits.get("category")) : null;
this.photo = inits.isInitialized("photo") ? new com.justpickup.storeservice.global.entity.QPhoto(forProperty("photo")) : null;
this.store = inits.isInitialized("store") ? new com.justpickup.storeservice.domain.store.entity.QStore(forProperty("store"), inits.get("store")) : null;
}
}

View File

@@ -0,0 +1,71 @@
package com.justpickup.storeservice.domain.itemoption.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;
/**
* QItemOption is a Querydsl query type for ItemOption
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QItemOption extends EntityPathBase<ItemOption> {
private static final long serialVersionUID = -374806570L;
private static final PathInits INITS = PathInits.DIRECT2;
public static final QItemOption itemOption = new QItemOption("itemOption");
public final com.justpickup.storeservice.global.entity.QBaseEntity _super = new com.justpickup.storeservice.global.entity.QBaseEntity(this);
//inherited
public final DateTimePath<java.time.LocalDateTime> createdAt = _super.createdAt;
//inherited
public final NumberPath<Long> createdBy = _super.createdBy;
public final NumberPath<Long> id = createNumber("id", Long.class);
public final com.justpickup.storeservice.domain.item.entity.QItem item;
//inherited
public final DateTimePath<java.time.LocalDateTime> lastModifiedAt = _super.lastModifiedAt;
//inherited
public final NumberPath<Long> lastModifiedBy = _super.lastModifiedBy;
public final StringPath name = createString("name");
public final EnumPath<OptionType> optionType = createEnum("optionType", OptionType.class);
public final NumberPath<Long> price = createNumber("price", Long.class);
public QItemOption(String variable) {
this(ItemOption.class, forVariable(variable), INITS);
}
public QItemOption(Path<? extends ItemOption> path) {
this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS));
}
public QItemOption(PathMetadata metadata) {
this(metadata, PathInits.getFor(metadata, INITS));
}
public QItemOption(PathMetadata metadata, PathInits inits) {
this(ItemOption.class, metadata, inits);
}
public QItemOption(Class<? extends ItemOption> type, PathMetadata metadata, PathInits inits) {
super(type, metadata, inits);
this.item = inits.isInitialized("item") ? new com.justpickup.storeservice.domain.item.entity.QItem(forProperty("item"), inits.get("item")) : null;
}
}

View File

@@ -0,0 +1,51 @@
package com.justpickup.storeservice.domain.map.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;
/**
* QMap is a Querydsl query type for Map
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QMap extends EntityPathBase<Map> {
private static final long serialVersionUID = -1253033268L;
public static final QMap map = new QMap("map");
public final com.justpickup.storeservice.global.entity.QBaseEntity _super = new com.justpickup.storeservice.global.entity.QBaseEntity(this);
//inherited
public final DateTimePath<java.time.LocalDateTime> createdAt = _super.createdAt;
//inherited
public final NumberPath<Long> createdBy = _super.createdBy;
public final NumberPath<Long> id = createNumber("id", Long.class);
//inherited
public final DateTimePath<java.time.LocalDateTime> lastModifiedAt = _super.lastModifiedAt;
//inherited
public final NumberPath<Long> lastModifiedBy = _super.lastModifiedBy;
public QMap(String variable) {
super(Map.class, forVariable(variable));
}
public QMap(Path<? extends Map> path) {
super(path.getType(), path.getMetadata());
}
public QMap(PathMetadata metadata) {
super(Map.class, metadata);
}
}

View File

@@ -0,0 +1,79 @@
package com.justpickup.storeservice.domain.review.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<Review> {
private static final long serialVersionUID = -573894826L;
private static final PathInits INITS = PathInits.DIRECT2;
public static final QReview review = new QReview("review");
public final com.justpickup.storeservice.global.entity.QBaseEntity _super = new com.justpickup.storeservice.global.entity.QBaseEntity(this);
public final StringPath content = createString("content");
//inherited
public final DateTimePath<java.time.LocalDateTime> createdAt = _super.createdAt;
//inherited
public final NumberPath<Long> createdBy = _super.createdBy;
public final NumberPath<Long> id = createNumber("id", Long.class);
//inherited
public final DateTimePath<java.time.LocalDateTime> lastModifiedAt = _super.lastModifiedAt;
//inherited
public final NumberPath<Long> lastModifiedBy = _super.lastModifiedBy;
public final NumberPath<Long> orderId = createNumber("orderId", Long.class);
public final com.justpickup.storeservice.global.entity.QPhoto photo;
public final com.justpickup.storeservice.domain.reviewreply.entity.QReviewReply reviewReply;
public final NumberPath<Integer> starRating = createNumber("starRating", Integer.class);
public final com.justpickup.storeservice.domain.store.entity.QStore store;
public final NumberPath<Long> userId = createNumber("userId", Long.class);
public QReview(String variable) {
this(Review.class, forVariable(variable), INITS);
}
public QReview(Path<? extends Review> 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<? extends Review> type, PathMetadata metadata, PathInits inits) {
super(type, metadata, inits);
this.photo = inits.isInitialized("photo") ? new com.justpickup.storeservice.global.entity.QPhoto(forProperty("photo")) : null;
this.reviewReply = inits.isInitialized("reviewReply") ? new com.justpickup.storeservice.domain.reviewreply.entity.QReviewReply(forProperty("reviewReply")) : null;
this.store = inits.isInitialized("store") ? new com.justpickup.storeservice.domain.store.entity.QStore(forProperty("store"), inits.get("store")) : null;
}
}

View File

@@ -0,0 +1,53 @@
package com.justpickup.storeservice.domain.reviewreply.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;
/**
* QReviewReply is a Querydsl query type for ReviewReply
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QReviewReply extends EntityPathBase<ReviewReply> {
private static final long serialVersionUID = -1004430868L;
public static final QReviewReply reviewReply = new QReviewReply("reviewReply");
public final com.justpickup.storeservice.global.entity.QBaseEntity _super = new com.justpickup.storeservice.global.entity.QBaseEntity(this);
public final StringPath content = createString("content");
//inherited
public final DateTimePath<java.time.LocalDateTime> createdAt = _super.createdAt;
//inherited
public final NumberPath<Long> createdBy = _super.createdBy;
public final NumberPath<Long> id = createNumber("id", Long.class);
//inherited
public final DateTimePath<java.time.LocalDateTime> lastModifiedAt = _super.lastModifiedAt;
//inherited
public final NumberPath<Long> lastModifiedBy = _super.lastModifiedBy;
public QReviewReply(String variable) {
super(ReviewReply.class, forVariable(variable));
}
public QReviewReply(Path<? extends ReviewReply> path) {
super(path.getType(), path.getMetadata());
}
public QReviewReply(PathMetadata metadata) {
super(ReviewReply.class, metadata);
}
}

View File

@@ -0,0 +1,83 @@
package com.justpickup.storeservice.domain.store.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;
/**
* QStore is a Querydsl query type for Store
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QStore extends EntityPathBase<Store> {
private static final long serialVersionUID = 358375596L;
private static final PathInits INITS = PathInits.DIRECT2;
public static final QStore store = new QStore("store");
public final com.justpickup.storeservice.global.entity.QBaseEntity _super = new com.justpickup.storeservice.global.entity.QBaseEntity(this);
public final com.justpickup.storeservice.global.entity.QAddress address;
public final DateTimePath<java.time.LocalDateTime> businessEndTime = createDateTime("businessEndTime", java.time.LocalDateTime.class);
public final DateTimePath<java.time.LocalDateTime> businessStartTime = createDateTime("businessStartTime", java.time.LocalDateTime.class);
public final ListPath<com.justpickup.storeservice.domain.category.entity.Category, com.justpickup.storeservice.domain.category.entity.QCategory> categories = this.<com.justpickup.storeservice.domain.category.entity.Category, com.justpickup.storeservice.domain.category.entity.QCategory>createList("categories", com.justpickup.storeservice.domain.category.entity.Category.class, com.justpickup.storeservice.domain.category.entity.QCategory.class, PathInits.DIRECT2);
//inherited
public final DateTimePath<java.time.LocalDateTime> createdAt = _super.createdAt;
//inherited
public final NumberPath<Long> createdBy = _super.createdBy;
public final NumberPath<Long> id = createNumber("id", Long.class);
public final ListPath<com.justpickup.storeservice.domain.item.entity.Item, com.justpickup.storeservice.domain.item.entity.QItem> items = this.<com.justpickup.storeservice.domain.item.entity.Item, com.justpickup.storeservice.domain.item.entity.QItem>createList("items", com.justpickup.storeservice.domain.item.entity.Item.class, com.justpickup.storeservice.domain.item.entity.QItem.class, PathInits.DIRECT2);
//inherited
public final DateTimePath<java.time.LocalDateTime> lastModifiedAt = _super.lastModifiedAt;
//inherited
public final NumberPath<Long> lastModifiedBy = _super.lastModifiedBy;
public final com.justpickup.storeservice.domain.map.entity.QMap map;
public final StringPath phoneNumber = createString("phoneNumber");
public final com.justpickup.storeservice.global.entity.QPhoto photo;
public final NumberPath<Long> userId = createNumber("userId", Long.class);
public QStore(String variable) {
this(Store.class, forVariable(variable), INITS);
}
public QStore(Path<? extends Store> path) {
this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS));
}
public QStore(PathMetadata metadata) {
this(metadata, PathInits.getFor(metadata, INITS));
}
public QStore(PathMetadata metadata, PathInits inits) {
this(Store.class, metadata, inits);
}
public QStore(Class<? extends Store> type, PathMetadata metadata, PathInits inits) {
super(type, metadata, inits);
this.address = inits.isInitialized("address") ? new com.justpickup.storeservice.global.entity.QAddress(forProperty("address")) : null;
this.map = inits.isInitialized("map") ? new com.justpickup.storeservice.domain.map.entity.QMap(forProperty("map")) : null;
this.photo = inits.isInitialized("photo") ? new com.justpickup.storeservice.global.entity.QPhoto(forProperty("photo")) : null;
}
}

View File

@@ -0,0 +1,41 @@
package com.justpickup.storeservice.global.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;
/**
* QAddress is a Querydsl query type for Address
*/
@Generated("com.querydsl.codegen.DefaultEmbeddableSerializer")
public class QAddress extends BeanPath<Address> {
private static final long serialVersionUID = -1606742445L;
public static final QAddress address = new QAddress("address");
public final StringPath city = createString("city");
public final StringPath street = createString("street");
public final StringPath zipcode = createString("zipcode");
public QAddress(String variable) {
super(Address.class, forVariable(variable));
}
public QAddress(Path<? extends Address> path) {
super(path.getType(), path.getMetadata());
}
public QAddress(PathMetadata metadata) {
super(Address.class, metadata);
}
}

View File

@@ -0,0 +1,43 @@
package com.justpickup.storeservice.global.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;
/**
* QBaseEntity is a Querydsl query type for BaseEntity
*/
@Generated("com.querydsl.codegen.DefaultSupertypeSerializer")
public class QBaseEntity extends EntityPathBase<BaseEntity> {
private static final long serialVersionUID = -1618660523L;
public static final QBaseEntity baseEntity = new QBaseEntity("baseEntity");
public final DateTimePath<java.time.LocalDateTime> createdAt = createDateTime("createdAt", java.time.LocalDateTime.class);
public final NumberPath<Long> createdBy = createNumber("createdBy", Long.class);
public final DateTimePath<java.time.LocalDateTime> lastModifiedAt = createDateTime("lastModifiedAt", java.time.LocalDateTime.class);
public final NumberPath<Long> lastModifiedBy = createNumber("lastModifiedBy", Long.class);
public QBaseEntity(String variable) {
super(BaseEntity.class, forVariable(variable));
}
public QBaseEntity(Path<? extends BaseEntity> path) {
super(path.getType(), path.getMetadata());
}
public QBaseEntity(PathMetadata metadata) {
super(BaseEntity.class, metadata);
}
}

View File

@@ -0,0 +1,39 @@
package com.justpickup.storeservice.global.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;
/**
* QPhoto is a Querydsl query type for Photo
*/
@Generated("com.querydsl.codegen.DefaultEmbeddableSerializer")
public class QPhoto extends BeanPath<Photo> {
private static final long serialVersionUID = 329628753L;
public static final QPhoto photo = new QPhoto("photo");
public final StringPath name = createString("name");
public final StringPath path = createString("path");
public QPhoto(String variable) {
super(Photo.class, forVariable(variable));
}
public QPhoto(Path<? extends Photo> path) {
super(path.getType(), path.getMetadata());
}
public QPhoto(PathMetadata metadata) {
super(Photo.class, metadata);
}
}

View File

@@ -1,12 +1,10 @@
package com.justpickup.storeservice.domain.category.dto; package com.justpickup.storeservice.domain.category.dto;
import com.justpickup.storeservice.domain.category.entity.Category; import com.justpickup.storeservice.domain.category.entity.Category;
import com.justpickup.storeservice.domain.category.web.CategoryController;
import com.justpickup.storeservice.domain.item.entity.Item; import com.justpickup.storeservice.domain.item.entity.Item;
import com.justpickup.storeservice.domain.store.entity.Store; import com.justpickup.storeservice.domain.store.entity.Store;
import lombok.AllArgsConstructor; import lombok.*;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
@@ -16,16 +14,36 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
public class CategoryDto { public class CategoryDto {
private Long id;
private String name; private String name;
private Integer order; private Integer order;
private Store store; private Store store;
private List<Item> items; private List<Item> items;
public CategoryDto(Category category) { public CategoryDto(Category category) {
this.id = category.getId();
this.name = category.getName(); this.name = category.getName();
this.order = category.getOrder(); this.order = category.getOrder();
this.store = category.getStore(); this.store = category.getStore();
this.items = category.getItems(); this.items = category.getItems();
}
public CategoryDto(CategoryController.PutCategoryRequest.Category category) {
this.id = category.getCategoryId();
this.name = category.getName(); this.name = category.getName();
this.order = category.getOrder();
}
public static Category createCategory(CategoryDto categoryDto){
Category category = Category.createCategory(
categoryDto.getId()
,categoryDto.getName()
, categoryDto.getOrder()
, categoryDto.getStore());
return category;
}
public void setStore(Store store){
this.store=store;
} }
} }

View File

@@ -43,4 +43,21 @@ public class Category extends BaseEntity {
items.add(item); items.add(item);
item.setCategory(this); item.setCategory(this);
} }
public void changeNameAndOrder(String name , Integer order){
this.name = name;
this.order = order;
}
private Category (Long id , String name, Integer order, Store store){
this.id = id;
this.name = name;
this.order = order;
this.store = store;
}
public static Category createCategory(Long id ,String name, Integer order, Store store){
return new Category(id,name,order,store);
}
} }

View File

@@ -0,0 +1,11 @@
package com.justpickup.storeservice.domain.category.exception;
import com.justpickup.storeservice.global.exception.CustomException;
import org.springframework.http.HttpStatus;
public class NotFoundStoreException extends CustomException {
public NotFoundStoreException(HttpStatus status, String message){
super(status,message);
}
}

View File

@@ -1,9 +1,15 @@
package com.justpickup.storeservice.domain.category.service; package com.justpickup.storeservice.domain.category.service;
import com.justpickup.storeservice.domain.category.dto.CategoryDto; import com.justpickup.storeservice.domain.category.dto.CategoryDto;
import com.justpickup.storeservice.domain.category.entity.Category;
import com.justpickup.storeservice.domain.category.exception.NotFoundStoreException;
import com.justpickup.storeservice.domain.category.repository.CategoryRepository; import com.justpickup.storeservice.domain.category.repository.CategoryRepository;
import com.justpickup.storeservice.domain.store.entity.Store;
import com.justpickup.storeservice.domain.store.repository.StoreRepository;
import com.justpickup.storeservice.global.exception.CustomException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -17,6 +23,7 @@ import java.util.stream.Collectors;
public class CategoryService { public class CategoryService {
private final CategoryRepository categoryRepository; private final CategoryRepository categoryRepository;
private final StoreRepository storeRepository;
public List<CategoryDto> getCategoryList(Long storeId){ public List<CategoryDto> getCategoryList(Long storeId){
@@ -25,4 +32,46 @@ public class CategoryService {
.map(CategoryDto::new) .map(CategoryDto::new)
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@Transactional(readOnly = false)
public void putCategoryList(Long storeId , List<CategoryDto> categoryDtoList , List<CategoryDto> deletedCategoryDtoList ){
Store store = storeRepository.findById(storeId)
.orElseThrow(() -> new NotFoundStoreException(HttpStatus.BAD_REQUEST,"존재하지않는 Store"));
List<Category> categoryList =categoryDtoList.stream()
.map(categoryDto -> {
categoryDto.setStore(store);
return CategoryDto.createCategory(categoryDto);
})
.collect(Collectors.toList());
List<Category> deletedCategoryList =deletedCategoryDtoList.stream()
.map(categoryDto -> {
categoryDto.setStore(store);
return CategoryDto.createCategory(categoryDto);
})
.collect(Collectors.toList());
categoryList.forEach(
category -> {
if (category.getId() ==null)
categoryRepository.save(category);
else {
categoryRepository.findById(category.getId())
.orElseThrow(() -> new NotFoundStoreException(HttpStatus.BAD_REQUEST,"존재하지않는 Category"))
.changeNameAndOrder(category.getName(),category.getOrder());
}
}
);
deletedCategoryList.forEach(
category -> {
if (category.getId() !=null)
categoryRepository.delete(categoryRepository.findById(category.getId())
.orElseThrow(() -> new NotFoundStoreException(HttpStatus.BAD_REQUEST,"존재하지않는 Category")));
}
);
}
} }

View File

@@ -3,13 +3,11 @@ package com.justpickup.storeservice.domain.category.web;
import com.justpickup.storeservice.domain.category.dto.CategoryDto; import com.justpickup.storeservice.domain.category.dto.CategoryDto;
import com.justpickup.storeservice.domain.category.service.CategoryService; import com.justpickup.storeservice.domain.category.service.CategoryService;
import com.justpickup.storeservice.global.dto.Result; import com.justpickup.storeservice.global.dto.Result;
import lombok.Data; import lombok.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -23,6 +21,7 @@ public class CategoryController {
@GetMapping("/category") @GetMapping("/category")
public ResponseEntity getCategoryList( ){ public ResponseEntity getCategoryList( ){
// TODO: 2022-02-09 storeId hard coding 변경해야함
Long storeId = 1L; Long storeId = 1L;
List<CategoryDto> categoryList = categoryService.getCategoryList(storeId); List<CategoryDto> categoryList = categoryService.getCategoryList(storeId);
@@ -38,13 +37,47 @@ public class CategoryController {
@Data @Data
static class CategoryResponse{ static class CategoryResponse{
private Long categoryId;
private String name; private String name;
private Integer order; private Integer order;
public CategoryResponse (CategoryDto categoryDto){ public CategoryResponse (CategoryDto categoryDto){
this.categoryId = categoryDto.getId();
this.name= categoryDto.getName(); this.name= categoryDto.getName();
this.order= categoryDto.getOrder(); this.order= categoryDto.getOrder();
} }
} }
@PutMapping("/category")
public ResponseEntity putCategoryList( @RequestBody PutCategoryRequest categoryRequest){
List<CategoryDto> categoryList = categoryRequest.getCategoryList().stream()
.map(CategoryDto::new)
.collect(Collectors.toList());
List<CategoryDto> deletedList = categoryRequest.getDeletedList().stream()
.map(CategoryDto::new)
.collect(Collectors.toList());
categoryService.putCategoryList(categoryRequest.getStoreId(),categoryList,deletedList);
return ResponseEntity.status(HttpStatus.NO_CONTENT)
.body(Result.createSuccessResult(null));
}
@Data @NoArgsConstructor @AllArgsConstructor
public static class PutCategoryRequest{
private Long storeId;
private List<Category> categoryList;
private List<Category> deletedList;
@Data
public static class Category{
private Long categoryId;
private String name;
private Integer order;
}
}
} }

View File

@@ -0,0 +1,9 @@
package com.justpickup.storeservice.domain.store.repository;
import com.justpickup.storeservice.domain.store.entity.Store;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface StoreRepository extends JpaRepository<Store,Long> {
}