diff --git a/jpress-model/src/main/java/io/jpress/model/UserFavorite.java b/jpress-model/src/main/java/io/jpress/model/UserFavorite.java index 8b60313d9b3704e3e513ba3b81a9b3741cf76e5c..7a28b96ee13f2d4787172d198ff6f655d3721bf0 100644 --- a/jpress-model/src/main/java/io/jpress/model/UserFavorite.java +++ b/jpress-model/src/main/java/io/jpress/model/UserFavorite.java @@ -8,8 +8,11 @@ import io.jpress.model.base.BaseUserFavorite; */ @Table(tableName = "user_favorite", primaryKey = "id") public class UserFavorite extends BaseUserFavorite { - + public static final String FAV_TYPE_PRODUCT = "product"; + public static final String FAV_TYPE_ARTICLE = "article"; + public static final String FAV_TYPE_ARTICLE_TEXT = "文章"; + public static final String FAV_TYPE_PRODUCT_TEXT = "商品"; private static final long serialVersionUID = 1L; - + } diff --git a/jpress-service-api/src/main/java/io/jpress/service/UserFavoriteService.java b/jpress-service-api/src/main/java/io/jpress/service/UserFavoriteService.java index 87d780aff2f4e4c9fd697826511c7d210a248c47..a33197e5720094bd48ca6ccc09c8d132a4f078e2 100644 --- a/jpress-service-api/src/main/java/io/jpress/service/UserFavoriteService.java +++ b/jpress-service-api/src/main/java/io/jpress/service/UserFavoriteService.java @@ -176,4 +176,16 @@ public interface UserFavoriteService { public Page paginateByUserIdAndType(int pagePara, int pagesize, Long id, String type); -} \ No newline at end of file + + boolean doDelFavorite(Long id); + + boolean doAddToFavorite(UserFavorite favorite); + + boolean isFav(Long userId, String type, Long id); + + boolean isProductFav(Long userId, Long id); + + boolean isArticleFav(Long userId, Long id); + + +} diff --git a/jpress-service-provider/src/main/java/io/jpress/service/provider/UserFavoriteServiceProvider.java b/jpress-service-provider/src/main/java/io/jpress/service/provider/UserFavoriteServiceProvider.java index 3bdf9be563c5d02be097a1630305cf49b04039c6..c3ddf94a4c7e1cb91951589b573d7da0ce26506e 100644 --- a/jpress-service-provider/src/main/java/io/jpress/service/provider/UserFavoriteServiceProvider.java +++ b/jpress-service-provider/src/main/java/io/jpress/service/provider/UserFavoriteServiceProvider.java @@ -14,4 +14,50 @@ public class UserFavoriteServiceProvider extends JbootServiceBase public Page paginateByUserIdAndType(int page, int pagesize, Long userId, String type) { return paginateByColumns(page,pagesize, Columns.create("user_id",userId).eq("type",type),"id desc"); } -} \ No newline at end of file + + + /** + * 移除收藏 + * @param id + * @return + */ + @Override + public boolean doDelFavorite(Long id){ + UserFavorite userFavorite = findById(id); + return delete(userFavorite); + } + + /** + * 添加收藏 + * @param favorite + * @return + */ + @Override + public boolean doAddToFavorite(UserFavorite favorite){ + if (isFav(favorite.getUserId(),favorite.getType(),Long.parseLong(String.valueOf(favorite.getTypeId())))){ + return false; + } + return favorite.save(); + } + + /** + * 是否收藏了 + * @param userId + * @param type + * @param id + * @return + */ + @Override + public boolean isFav(Long userId, String type, Long id){ + return findCountByColumns(Columns.create("user_id",userId).eq("type",type).eq("type_id",id)) >0; + } + + @Override + public boolean isProductFav(Long userId, Long id){ + return isFav(userId,"product",id); + } + @Override + public boolean isArticleFav(Long userId, Long id){ + return isFav(userId,"article",id); + } +} diff --git a/jpress-web/src/main/java/io/jpress/web/front/CartController.java b/jpress-web/src/main/java/io/jpress/web/front/CartController.java index 58c7521cab82540c94e8bb0b9f36de8a10cd7b87..9131a6703cd0ecc84c3fdcf65018d2c8b6a6b874 100644 --- a/jpress-web/src/main/java/io/jpress/web/front/CartController.java +++ b/jpress-web/src/main/java/io/jpress/web/front/CartController.java @@ -144,17 +144,18 @@ public class CartController extends UcenterControllerBase { } - public void doRemoveSelectedItemsToFavorites() { + public void doRemoveSelectedItemsToFavorites() { List userCarts = cartService.findSelectedListByUserId(getLoginedUser().getId()); if (userCarts != null) { for (UserCart cart : userCarts) { - favoriteService.save(cart.toFavorite()); + if (!favoriteService.isProductFav(cart.getUserId(),cart.getProductId())){ + favoriteService.save(cart.toFavorite()); + } cartService.delete(cart); } } renderOkJson(); } - /** * 对某个购物车商品 +1 */ diff --git a/module-product/module-product-model/src/main/java/io/jpress/module/product/model/Product.java b/module-product/module-product-model/src/main/java/io/jpress/module/product/model/Product.java index 08b49d5674b4094bac8ab921fb93b3671ffbfb02..e86e21ec64cb5d8c4447f7b670e40f22cbacb169 100644 --- a/module-product/module-product-model/src/main/java/io/jpress/module/product/model/Product.java +++ b/module-product/module-product-model/src/main/java/io/jpress/module/product/model/Product.java @@ -123,8 +123,8 @@ public class Product extends BaseProduct { userCart.setUserId(userId); userCart.setSellerId(this.getUserId()); userCart.setProductId(getId()); - userCart.setProductType("product"); - userCart.setProductTypeText("商品"); + userCart.setProductType(UserFavorite.FAV_TYPE_PRODUCT); + userCart.setProductTypeText(UserFavorite.FAV_TYPE_PRODUCT_TEXT); userCart.setProductPrice(this.getPrice()); userCart.setProductCount(1); userCart.setProductTitle(getTitle()); @@ -154,8 +154,8 @@ public class Product extends BaseProduct { public UserFavorite toFavorite(Long userId) { UserFavorite favorite = new UserFavorite(); favorite.setUserId(userId); - favorite.setType("product"); - favorite.setTypeText("商品"); + favorite.setType(UserFavorite.FAV_TYPE_PRODUCT); + favorite.setTypeText(UserFavorite.FAV_TYPE_PRODUCT_TEXT); favorite.setTypeId(String.valueOf(getId())); favorite.setTitle(getTitle()); favorite.setSummary(getSummary()); diff --git a/module-product/module-product-web/src/main/java/io/jpress/module/product/controller/ProductController.java b/module-product/module-product-web/src/main/java/io/jpress/module/product/controller/ProductController.java index 014f12f38a3d2c020f07dab004d2b5d1f00e4cd2..d00281b790455402455e2d3ac0042ed9d7a57b36 100644 --- a/module-product/module-product-web/src/main/java/io/jpress/module/product/controller/ProductController.java +++ b/module-product/module-product-web/src/main/java/io/jpress/module/product/controller/ProductController.java @@ -295,13 +295,15 @@ public class ProductController extends TemplateControllerBase { } - @Before(ProductValidate.class) + @Before(ProductValidate.class) public void doAddFavorite() { Product product = ProductValidate.getThreadLocalProduct(); User user = getLoginedUser(); - favoriteService.save(product.toFavorite(user.getId())); - - renderOkJson(); + if (favoriteService.doAddToFavorite(product.toFavorite(user.getId()))){ + renderOkJson(); + }else { + renderFailJson("已经收藏过了!"); + } } /** diff --git a/module-product/module-product-web/src/main/java/io/jpress/module/product/controller/ProductUCenterController.java b/module-product/module-product-web/src/main/java/io/jpress/module/product/controller/ProductUCenterController.java index 17b6aa864f8a51f05872c7993b07a5f82b1eb385..d0a134cde11848a88f546da934f4babf74f8f77e 100644 --- a/module-product/module-product-web/src/main/java/io/jpress/module/product/controller/ProductUCenterController.java +++ b/module-product/module-product-web/src/main/java/io/jpress/module/product/controller/ProductUCenterController.java @@ -93,4 +93,4 @@ public class ProductUCenterController extends UcenterControllerBase { renderJson(commentService.delete(comment) ? OK : FAIL); } -} \ No newline at end of file +}