Quellcode durchsuchen

购物车商品业务优化

liude vor 1 Jahr
Ursprung
Commit
624e33d886

+ 4 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/ConfirmOrderResultDTO.java

@@ -31,4 +31,8 @@ public class ConfirmOrderResultDTO implements Serializable {
     private Integer memberIntegration;
     //计算的金额
     private CalcAmountDTO calcAmount;
+    /**
+     * 商家信息
+     */
+    private MerchantDTO merchantDTO;
 }

+ 30 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantCartItemDTO.java

@@ -0,0 +1,30 @@
+package com.chelvc.cloud.vehicle.api.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 用户商家购物车
+ *
+ * @author liude
+ * @date 2024/2/21
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MerchantCartItemDTO implements Serializable {
+    /**
+     * 购物车商品信息
+     */
+    private List<OmsCartItemDTO> cartItems;
+    /**
+     * 商家信息
+     */
+    private MerchantDTO merchantDTO;
+}

+ 4 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsCartItemDTO.java

@@ -80,5 +80,9 @@ public class OmsCartItemDTO implements Serializable
 
     /** 商品销售属性:[{"key":"颜色","value":"颜色"},{"key":"容量","value":"4G"}] */
     private String goodsAttr;
+    /**
+     * 商家ID
+     */
+    private Long merchantId;
 
 }

+ 10 - 2
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/OmsCartItemModifyParam.java

@@ -25,10 +25,14 @@ public class OmsCartItemModifyParam implements Serializable
 {
     private static final long serialVersionUID = 1L;
 
-    /** $column.columnComment */
+    /**
+     * id
+     */
     private Long id;
 
-    /** $column.columnComment */
+    /**
+     * 商品id
+     */
     private Long goodsId;
 
     /** $column.columnComment */
@@ -80,5 +84,9 @@ public class OmsCartItemModifyParam implements Serializable
 
     /** 商品销售属性:[{"key":"颜色","value":"颜色"},{"key":"容量","value":"4G"}] */
     private String goodsAttr;
+    /**
+     * 商家id
+     */
+    private Long merchantId;
 
 }

+ 2 - 2
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/OmsOrderModifyParam.java

@@ -45,7 +45,7 @@ public class OmsOrderModifyParam implements Serializable
      */
     private List<Long> cartIds;
     /**
-     * 商id
+     * 商id
      */
-    private Long goodsId;
+    private Long merchantId;
 }

+ 6 - 2
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/OmsCartItemService.java

@@ -1,6 +1,5 @@
 package com.chelvc.cloud.vehicle.api.service;
-
-import com.chelvc.cloud.vehicle.api.dto.CartPromotionItemDTO;
+import com.chelvc.cloud.vehicle.api.dto.MerchantCartItemDTO;
 import com.chelvc.cloud.vehicle.api.dto.OmsCartItemDTO;
 import com.chelvc.cloud.vehicle.api.param.OmsCartItemModifyParam;
 
@@ -51,5 +50,10 @@ public interface OmsCartItemService
      */
     void clear();
 
+    /**
+     * 根据会员编号及商家获取购物车列表
+     */
+    MerchantCartItemDTO listCartItem(Long merchantId);
+
 
 }

+ 4 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/OmsCartItem.java

@@ -92,5 +92,9 @@ public class OmsCartItem extends ModifyEntity<Long>
     private Long creator;
 
     private Long updater;
+    /**
+     * 商家id
+     */
+    private Long merchantId;
 
 }

+ 1 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/OmsOrderItem.java

@@ -92,4 +92,5 @@ public class OmsOrderItem extends ModifyEntity<Long>
     private Integer giftGrowth;
 
     private String goodsAttr;
+
 }

+ 46 - 10
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsCartItemServiceImpl.java

@@ -1,16 +1,19 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.vehicle.api.dto.CartPromotionItemDTO;
+import com.chelvc.cloud.vehicle.api.dto.MerchantCartItemDTO;
 import com.chelvc.cloud.vehicle.api.dto.OmsCartItemDTO;
 import com.chelvc.cloud.vehicle.api.param.OmsCartItemModifyParam;
 import com.chelvc.cloud.vehicle.server.copier.CartItemCopier;
+import com.chelvc.cloud.vehicle.server.copier.MerchantCopier;
 import com.chelvc.cloud.vehicle.server.dao.OmsCartItemMapper;
+import com.chelvc.cloud.vehicle.server.entity.Merchant;
 import com.chelvc.cloud.vehicle.server.entity.OmsCartItem;
+import com.chelvc.cloud.vehicle.server.service.MerchantService;
 import com.chelvc.cloud.vehicle.server.service.OmsCartItemService;
 import com.chelvc.framework.base.context.SessionContextHolder;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang.ObjectUtils;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import java.util.ArrayList;
@@ -28,6 +31,8 @@ import java.util.stream.Collectors;
 @DubboService(interfaceClass = com.chelvc.cloud.vehicle.api.service.OmsCartItemService.class)
 public class OmsCartItemServiceImpl extends ServiceImpl<OmsCartItemMapper, OmsCartItem> implements OmsCartItemService,
         com.chelvc.cloud.vehicle.api.service.OmsCartItemService {
+
+    private final MerchantService merchantService;
     @Override
     public int add(OmsCartItemModifyParam cartItem) {
         int count;
@@ -72,12 +77,23 @@ public class OmsCartItemServiceImpl extends ServiceImpl<OmsCartItemMapper, OmsCa
         return omsCartItemList;
     }
 
+    public List<OmsCartItemDTO> listCartItem(List<Long> cartIds) {
+        Long userId = SessionContextHolder.getId();
+        OmsCartItem omsCartItem = new OmsCartItem();
+        omsCartItem.setUserId(userId);
+        List<OmsCartItem> cartItemList = this.lambdaQuery()
+                .eq(OmsCartItem::getUserId, userId)
+                .in(OmsCartItem::getGoodsId,cartIds).list();
+        List<OmsCartItemDTO> omsCartItemList = CartItemCopier.INSTANCE.copying(cartItemList);
+        return omsCartItemList;
+    }
+
     @Override
     public List<OmsCartItemDTO> listPromotion(List<Long> cartIds) {
-        List<OmsCartItemDTO> cartItemList = listCartItem();
-        if (!CollectionUtils.isEmpty(cartIds)) {
-            cartItemList = cartItemList.stream().filter(item -> cartIds.contains(item.getId())).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(cartIds)) {
+            return null;
         }
+        List<OmsCartItemDTO> cartItemList = listCartItem(cartIds);
         List<CartPromotionItemDTO> cartPromotionItemList = new ArrayList<>();
         if (!CollectionUtils.isEmpty(cartItemList)) {
 //            cartPromotionItemList.add(cartItemList);
@@ -91,8 +107,8 @@ public class OmsCartItemServiceImpl extends ServiceImpl<OmsCartItemMapper, OmsCa
         Long userId = SessionContextHolder.getId();
         OmsCartItem cartItem = this.lambdaQuery()
                 .eq(OmsCartItem::getUserId, userId).eq(
-                        OmsCartItem::getGoodsId, id
-                ).getEntity();
+                        OmsCartItem::getId, id
+                ).one();
         cartItem.setQuantity(quantity);
         cartItem.setDeleteStatus(0);
         return this.baseMapper.updateById(cartItem);
@@ -104,10 +120,12 @@ public class OmsCartItemServiceImpl extends ServiceImpl<OmsCartItemMapper, OmsCa
         for (Long id : ids) {
             OmsCartItem cartItem = this.lambdaQuery()
                     .eq(OmsCartItem::getUserId, userId).eq(
-                            OmsCartItem::getGoodsId, id
-                    ).getEntity();
-            cartItem.setDeleteStatus(1);
-            this.baseMapper.updateById(cartItem);
+                            OmsCartItem::getId, id
+                    ).one();
+            if (cartItem != null){
+                cartItem.setDeleteStatus(1);
+                this.baseMapper.updateById(cartItem);
+            }
         }
     }
 
@@ -153,4 +171,22 @@ public class OmsCartItemServiceImpl extends ServiceImpl<OmsCartItemMapper, OmsCa
             this.baseMapper.updateById(omsCartItem);
         }
     }
+
+
+    @Override
+    public MerchantCartItemDTO listCartItem(Long merchantId) {
+        Long userId = SessionContextHolder.getId();
+        OmsCartItem omsCartItem = new OmsCartItem();
+        omsCartItem.setUserId(userId);
+        List<OmsCartItem> cartItemList = this.lambdaQuery()
+                .eq(OmsCartItem::getUserId, userId)
+                .eq(OmsCartItem :: getMerchantId,merchantId)
+                .eq(OmsCartItem::getDeleteStatus,"0").list();
+        List<OmsCartItemDTO> omsCartItemList = CartItemCopier.INSTANCE.copying(cartItemList);
+        Merchant merchant = this.merchantService.getById(merchantId);
+        MerchantCartItemDTO merchantCartItemDTO = new MerchantCartItemDTO();
+        merchantCartItemDTO.setCartItems(omsCartItemList);
+        merchantCartItemDTO.setMerchantDTO(MerchantCopier.INSTANCE.copying(merchant));
+        return merchantCartItemDTO;
+    }
 }

+ 21 - 37
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderServiceImpl.java

@@ -23,10 +23,12 @@ import com.chelvc.cloud.vehicle.api.dto.OmsOrderItemDTO;
 import com.chelvc.cloud.vehicle.api.dto.UserCouponDTO;
 import com.chelvc.cloud.vehicle.api.param.OmsOrderModifyParam;
 import com.chelvc.cloud.vehicle.api.param.OrderPagingParam;
+import com.chelvc.cloud.vehicle.server.copier.MerchantCopier;
 import com.chelvc.cloud.vehicle.server.copier.OrderCopier;
 import com.chelvc.cloud.vehicle.server.dao.OmsOrderMapper;
 import com.chelvc.cloud.vehicle.server.dao.OmsOrderSettingMapper;
 import com.chelvc.cloud.vehicle.server.entity.Goods;
+import com.chelvc.cloud.vehicle.server.entity.Merchant;
 import com.chelvc.cloud.vehicle.server.entity.OmsOrder;
 import com.chelvc.cloud.vehicle.server.entity.OmsOrderItem;
 import com.chelvc.cloud.vehicle.server.entity.OmsOrderSetting;
@@ -34,6 +36,7 @@ import com.chelvc.cloud.vehicle.server.entity.UserCoupon;
 import com.chelvc.cloud.vehicle.server.service.GoodsService;
 import com.chelvc.cloud.vehicle.server.service.IOmsOrderItemService;
 import com.chelvc.cloud.vehicle.server.service.IOmsOrderService;
+import com.chelvc.cloud.vehicle.server.service.MerchantService;
 import com.chelvc.cloud.vehicle.server.service.OmsCartItemService;
 import com.chelvc.cloud.vehicle.server.service.OmsOrderSettingService;
 import com.chelvc.cloud.vehicle.server.service.UserCouponService;
@@ -70,6 +73,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
 
     private final GoodsService goodsService;
 
+    private final MerchantService merchantService;
+
     @Override
     public ConfirmOrderResultDTO generateConfirmOrder(OmsOrderModifyParam orderParam) {
         ConfirmOrderResultDTO result = new ConfirmOrderResultDTO();
@@ -93,6 +98,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
 //        //计算总金额、活动优惠、应付金额
         CalcAmountDTO calcAmount = calcCartAmount(cartItemList);
         result.setCalcAmount(calcAmount);
+        if (!StringUtils.isEmpty(orderParam.getMerchantId())){
+            Merchant merchant = this.merchantService.getById(orderParam.getMerchantId());
+            result.setMerchantDTO(MerchantCopier.INSTANCE.copying(merchant));
+        }
         return result;
     }
 
@@ -102,50 +111,25 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         //获取购物车及优惠信息
         Long userId = SessionContextHolder.getId();
         List<OmsCartItemDTO> cartPromotionItemList = omsCartItemService.listPromotion(orderParam.getCartIds());
-        if (!StringUtils.isEmpty(orderParam.getGoodsId())){
-            Goods goods = this.goodsService.getById(orderParam.getGoodsId());
-            if (goods == null){
-                return null;
-            }
+        for (OmsCartItemDTO cartPromotionItem : cartPromotionItemList) {
             //生成下单商品信息
             OmsOrderItem orderItem = new OmsOrderItem();
-            orderItem.setGoodsId(goods.getId());
-            orderItem.setGoodsName(goods.getName());
-            orderItem.setGoodsPic(goods.getLogo());
-            orderItem.setGoodsAttr(null);
-            orderItem.setGoodsBrand(null);
-            orderItem.setGoodsSn(null);
-            orderItem.setGoodsPrice(new BigDecimal(goods.getOriginalPrice()));
-            orderItem.setGoodsQuantity(1);
-            orderItem.setGoodsSkuId(null);
-            orderItem.setGoodsSkuCode(null);
-            orderItem.setGoodsCategoryId(goods.getCategoryId());
+            orderItem.setGoodsId(cartPromotionItem.getGoodsId());
+            orderItem.setGoodsName(cartPromotionItem.getGoodsName());
+            orderItem.setGoodsPic(cartPromotionItem.getGoodsPic());
+            orderItem.setGoodsAttr(cartPromotionItem.getGoodsAttr());
+            orderItem.setGoodsBrand(cartPromotionItem.getGoodsBrand());
+            orderItem.setGoodsSn(cartPromotionItem.getGoodsSn());
+            orderItem.setGoodsPrice(cartPromotionItem.getPrice());
+            orderItem.setGoodsQuantity(cartPromotionItem.getQuantity());
+            orderItem.setGoodsSkuId(cartPromotionItem.getGoodsSkuId());
+            orderItem.setGoodsSkuCode(cartPromotionItem.getGoodsSkuCode());
+            orderItem.setGoodsCategoryId(cartPromotionItem.getGoodsCategoryId());
 //            orderItem.setPromotionAmount(cartPromotionItem.getReduceAmount());
 //            orderItem.setPromotionName(cartPromotionItem.getPromotionMessage());
             orderItem.setGiftIntegration(0L);
             orderItem.setGiftGrowth(0);
             orderItemList.add(orderItem);
-        }else{
-            for (OmsCartItemDTO cartPromotionItem : cartPromotionItemList) {
-                //生成下单商品信息
-                OmsOrderItem orderItem = new OmsOrderItem();
-                orderItem.setGoodsId(cartPromotionItem.getGoodsId());
-                orderItem.setGoodsName(cartPromotionItem.getGoodsName());
-                orderItem.setGoodsPic(cartPromotionItem.getGoodsPic());
-                orderItem.setGoodsAttr(cartPromotionItem.getGoodsAttr());
-                orderItem.setGoodsBrand(cartPromotionItem.getGoodsBrand());
-                orderItem.setGoodsSn(cartPromotionItem.getGoodsSn());
-                orderItem.setGoodsPrice(cartPromotionItem.getPrice());
-                orderItem.setGoodsQuantity(cartPromotionItem.getQuantity());
-                orderItem.setGoodsSkuId(cartPromotionItem.getGoodsSkuId());
-                orderItem.setGoodsSkuCode(cartPromotionItem.getGoodsSkuCode());
-                orderItem.setGoodsCategoryId(cartPromotionItem.getGoodsCategoryId());
-//            orderItem.setPromotionAmount(cartPromotionItem.getReduceAmount());
-//            orderItem.setPromotionName(cartPromotionItem.getPromotionMessage());
-                orderItem.setGiftIntegration(0L);
-                orderItem.setGiftGrowth(0);
-                orderItemList.add(orderItem);
-            }
         }
 
         //判断购物车中商品是否都有库存