<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                建議閱讀前,先閱讀《商城表設計-購物車》相關文檔 我們的購物車只有一個表:`tz_basket` 非常簡單,但是關聯了非常多的表。比如: - 購物車有商品,關聯商品表 - 每個商品都有sku,關聯sku表 - 一個購物車有多個店鋪的商品,關聯店鋪表 - 一個購物車肯定是和用戶有關的,關聯用戶表 我們對商品進行添加,修改,其實都很簡單,最為讓人難以理解的是如何將這些字段進行組合,關聯滿減滿折等一系列的活動。 我們先來看下是如何獲取商品信息的 ```java @PostMapping("/info") @ApiOperation(value = "獲取用戶購物車信息", notes = "獲取用戶購物車信息,參數為用戶選中的活動項數組,以購物車id為key") public ResponseEntity<List<ShopCartDto>> info(@RequestBody Map<Long, ShopCartParam> basketIdShopCartParamMap) { String userId = SecurityUtils.getUser().getUserId(); // 更新購物車信息, if (MapUtil.isNotEmpty(basketIdShopCartParamMap)) { basketService.updateBasketByShopCartParam(userId, basketIdShopCartParamMap); } // 拿到購物車的所有item List<ShopCartItemDto> shopCartItems = basketService.getShopCartItems(userId); return ResponseEntity.ok(basketService.getShopCarts(shopCartItems)); } ``` 這里面傳了一個參數:`Map<Long, ShopCartParam> basketIdShopCartParamMap` 這里是當用戶改變了某件商品的滿減滿折活動時,重新改變滿減滿折信息以后計算加個的一個方法。當然在開源是沒有這個滿減模塊的,只有思路,具體實現需要靠自己了。 我們繼續往下看,這里面`basketService.getShopCartItems(userId)`使用的直接是從數據庫中獲取的數據,而真正對滿減滿折、店鋪等進行排列組合的,在于`basketService.getShopCarts(shopCartItems)` 這個方法。 我們進到`getShopCarts`方法內部,可以查看到一行代碼`applicationContext.publishEvent(new ShopCartEvent(shopCart, shopCartItemDtoList));`,這里使用的事件的模式。這個事件的主要作用是用于對模塊之間的解耦,比如我們清楚的知道當購物車需要計算價格的時候,需要滿減模塊的配合,進行“裝飾”。最后將裝飾回來的東西,返回給前端。 我們現在看看購物車返回的數據`ResponseEntity<List<ShopCartDto>>`,我們清楚一個購物車是分多個店鋪的,每一個店鋪就是一個`ShopCartDto`,我們看下這個`bean`。 ```java @Data public class ShopCartDto implements Serializable { @ApiModelProperty(value = "店鋪ID", required = true) private Long shopId; @ApiModelProperty(value = "店鋪名稱", required = true) private String shopName; @ApiModelProperty(value = "購物車滿減活動攜帶的商品", required = true) private List<ShopCartItemDiscountDto> shopCartItemDiscounts; } ``` 其實一個店鋪下面是有多個商品的,但是根據京東的劃分,每當有滿減之類的活動時,滿減活動的商品總是要歸到一類的,所以,每個店鋪下面是多個滿減活動(`List<ShopCartItemDiscountDto>`),滿減活動下面是多個商品(購物項`List<ShopCartItemDto>`),到此你就能明白了`ShopCartItemDiscountDto` 里面的`ChooseDiscountItemDto` 是什么東西了,這個是選中的滿減項。 ```java public class ShopCartItemDiscountDto implements Serializable { @ApiModelProperty(value = "已選滿減項", required = true) private ChooseDiscountItemDto chooseDiscountItemDto; @ApiModelProperty(value = "商品列表") private List<ShopCartItemDto> shopCartItems; } ``` 我們再留意`ShopCartItemDto` 這個`bean` ,發現還有這個東西: ```java @ApiModelProperty("參與滿減活動列表") private List<DiscountDto> discounts = new ArrayList<>(); ``` 其實購物車的每個購物項,都是有很多個滿減的活動的,可以自主選擇滿減活動,然后進行組合,生成新的優惠。而在這選擇新的活動類型時,就需要購物車就行新的價格計算。這也就是為什么獲取用戶購物車信息,也就是`/info`接口需要一個這個參數的原因了`Map<Long, ShopCartParam> basketIdShopCartParamMap`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看