CartBuyController.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2017/4/11
  6. * Time: 上午10:52
  7. */
  8. namespace app\frontend\modules\order\controllers;
  9. use app\common\components\ApiController;
  10. use app\common\exceptions\AppException;
  11. use app\common\models\MemberCart;
  12. use app\framework\Support\Locker;
  13. use app\frontend\models\Member;
  14. use app\frontend\modules\memberCart\MemberCartCollection;
  15. class CartBuyController extends ApiController
  16. {
  17. /**
  18. * @return \Illuminate\Http\JsonResponse
  19. * @throws AppException
  20. * @throws \app\common\exceptions\ShopException
  21. */
  22. public function index()
  23. {
  24. $this->validateParam();
  25. $trade = $this->getMemberCarts()->getTrade(Member::current());
  26. return $this->successJson('成功', $trade);
  27. }
  28. /**
  29. * @throws \app\common\exceptions\ShopException
  30. */
  31. protected function validateParam()
  32. {
  33. $this->validate([
  34. 'cart_ids' => 'required',
  35. ]);
  36. }
  37. /**
  38. * 从url中获取购物车记录并验证
  39. * @return MemberCartCollection
  40. * @throws AppException
  41. */
  42. protected function getMemberCarts()
  43. {
  44. static $memberCarts;
  45. $cartIds = [];
  46. if (!is_array($_GET['cart_ids'])) {
  47. $cartIds = explode(',', $_GET['cart_ids']);
  48. }
  49. $cartIds = array_slice($cartIds, 0, 50);
  50. if (!count($cartIds)) {
  51. throw new AppException('参数格式有误');
  52. }
  53. if (!isset($memberCarts)) {
  54. $memberCarts = app('OrderManager')->make('MemberCart')->whereIn('id', $cartIds)->get();
  55. $memberCarts = new MemberCartCollection($memberCarts);
  56. $memberCarts->loadRelations();
  57. }
  58. //todo 这个验证方法在里面有调用为什么还有在这里调用,执行两次???
  59. // $memberCarts->validate();
  60. if ($memberCarts->isEmpty()) {
  61. throw new AppException('未找到购物车信息');
  62. }
  63. if ($memberCarts->isEmpty()) {
  64. throw new AppException('请选择下单商品');
  65. }
  66. return $memberCarts;
  67. }
  68. }