2015-04-06 19 views
1

我正在嘗試創建我的自定義網絡服務,並且我想在購物車中應用全球折扣並重新計算它。我爲我的OCC調用創建了一個自定義addOn,但我正在努力應對DTO概念以及如何實現我的方法。基本上,代碼,我用它來添加一個全球折扣到目前爲止是這樣的:hybris通過網絡服務應用全球折扣

  • 我越來越會話車
  • 添加僞折扣
  • 通過計算服務

    applyDiscount重新計算(@RequestParam(required = true)Double value) cartService.addGlobalDiscountValue(cartModel,new DiscountValue(「description」,double,value,cartModel.getCurrency()。getIsocode())); calculationService.calculateTotals(cartModel,false);

我應該在哪裏實施DTO?我可以使用GlobalDiscountRowDTO嗎?以及如何修改代碼以確保我使用的是最佳實踐?

謝謝!

回答

1

請注意* * DTO類在Hybris中被稱爲* Data(例如GlobalDiscountRowData)類。 Data類的目的是將信息從Model層傳遞到View層(例如Web控制器將返回Data對象而不是Model對象)。

之前開始創建自定義邏輯請檢查出像盒子(開箱即用)功能:DefaultDiscountDao,DefaultDiscountService,FindOrderDiscountValuesStrategy等

要找出基地的做法採用hybris包和擴展都好點開始。只要看看OOTB類和類關係和上下文xml定義。

+0

嗨,謝謝你的回答。我已經檢查過這些東西。我想要做的就是通過寧靜的電話申請持續的折扣。我的方法如下 - >我得到會議購物車(購物車模型),將其轉換爲jalo,創建折扣模型,將其轉換爲jalo並應用於購物車折扣,然後重新計算。你知道我是否需要任何轉換器或populator嗎? Thnks – user3240544 2015-04-07 15:52:44

1

你不能使用GlobalDiscountRowDTO,這是在可選的platformwebservices擴展中,它似乎不與OCC擴展共享,因爲它是一個不同的API(有各種REST API,v1,v2和platformwebservices)。相反,在addOn的* -beans.xml中定義自己的DTO。

此外還要注意不要堅持DiscountValue(嘗試應用DiscountValue,然後轉到購物車的前端並修改購物車內容,折扣將消失)。請檢查可以保留的DiscountModel類。