CheckoutController.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace app\frontend\modules\memberCart\controllers;
  3. use app\common\components\ApiController;
  4. use app\common\exceptions\AppException;
  5. use app\common\models\MemberCart;
  6. use app\frontend\modules\memberCart\MemberCartCollection;
  7. class CheckoutController extends ApiController
  8. {
  9. public function index()
  10. {
  11. $cartIds = [];
  12. if (!is_array($_GET['cart_ids'])) {
  13. $cartIds = explode(',', $_GET['cart_ids']);
  14. }
  15. $memberCarts = app('OrderManager')->make('MemberCart')->whereIn('id', $cartIds)->get();
  16. event(new \app\common\events\cart\BeforeCartListVerify($memberCarts));
  17. $memberCarts = new MemberCartCollection($memberCarts);
  18. $memberCarts->loadRelations();
  19. $memberCarts->validate();
  20. if ($memberCarts->isEmpty()) {
  21. throw new AppException('未找到购物车信息');
  22. }
  23. $needChoose = $memberCarts->contains(function (MemberCart $memberCart) use($memberCarts){
  24. return $memberCart->goods->goodsDispatchTypeIds() != $memberCarts->first()->goods->goodsDispatchTypeIds();
  25. });
  26. if(!$needChoose){
  27. return $this->successJson('成功', [
  28. 'need_choose' => 0,
  29. 'dispatch_types' => []
  30. ]);
  31. }
  32. $dispatchTypes = $memberCarts->groupByDispatchType();
  33. foreach ($dispatchTypes as $key => $dispatchType) {
  34. $memberCarts = [];
  35. foreach ($dispatchType['member_carts'] as $memberCart) {
  36. $item['id'] = $memberCart['id'];
  37. $item['goods_id'] = $memberCart['goods_id'];
  38. $item['option_id'] = $memberCart['option_id'];
  39. $item['total'] = $memberCart['total'];
  40. $item['title'] = $memberCart['goods']['title'];
  41. $item['option_title'] = $memberCart['goodsOption']['title'];
  42. $item['thumb'] = $memberCart['goodsOption']['thumb'] ? yz_tomedia($memberCart['goodsOption']['thumb']) : yz_tomedia($memberCart['goods']['thumb']);
  43. $memberCarts[] = $item;
  44. }
  45. $dispatchTypes[$key]['member_carts'] = $memberCarts;
  46. }
  47. return $this->successJson('成功', [
  48. 'need_choose' => 1,
  49. 'dispatch_types' => $dispatchTypes
  50. ]);
  51. }
  52. }