CreateController.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2017/2/28
  6. * Time: 上午10:39
  7. */
  8. namespace app\frontend\modules\order\controllers;
  9. use app\common\components\ApiController;
  10. use app\framework\Support\Facades\Log;
  11. use app\frontend\models\Member;
  12. use app\frontend\modules\member\services\MemberCartService;
  13. use app\frontend\modules\memberCart\MemberCartCollection;
  14. use Yunshop\ShareActivity\model\ActivityOrder;
  15. class CreateController extends ApiController
  16. {
  17. /**
  18. * @var MemberCartCollection
  19. */
  20. private $memberCarts;
  21. /**
  22. * @return static
  23. */
  24. protected function _getMemberCarts()
  25. {
  26. $goods_params = is_array(request()->input('goods')) ? request()->input('goods') : json_decode(request()->input('goods'), true);
  27. $memberCarts = collect($goods_params)->map(function ($memberCart) {
  28. return MemberCartService::newMemberCart($memberCart);
  29. });
  30. return $memberCarts;
  31. }
  32. /**
  33. * @return MemberCartCollection
  34. * @throws \app\common\exceptions\AppException
  35. */
  36. protected function getMemberCarts()
  37. {
  38. if (!isset($this->memberCarts)) {
  39. $memberCarts = new MemberCartCollection($this->_getMemberCarts());
  40. $memberCarts->loadRelations();
  41. $memberCarts->validate();
  42. $this->memberCarts = $memberCarts;
  43. }
  44. return $this->memberCarts;
  45. }
  46. protected function validateParam()
  47. {
  48. }
  49. /**
  50. * @return \Illuminate\Http\JsonResponse
  51. * @throws \app\common\exceptions\AppException
  52. */
  53. public function index()
  54. {
  55. \Log::info('用户下单', request()->input());
  56. $this->validateParam();
  57. //订单组
  58. $trade = $this->getMemberCarts()->getTrade(Member::current());
  59. $trade->generate();
  60. $orderIds = $trade->orders->pluck('id')->implode(',');
  61. //生成订单,触发事件
  62. return $this->successJson('成功', ['order_ids' => $orderIds]);
  63. }
  64. }