BuyController.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Name: 芸众商城系统
  5. * Author: 广州市芸众信息科技有限公司
  6. * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
  7. * Date: 2022/1/5
  8. * Time: 16:39
  9. */
  10. namespace app\outside\modules\order\controllers;
  11. use app\common\helpers\Url;
  12. use app\frontend\models\Goods;
  13. use app\outside\controllers\OutsideController;
  14. use app\common\exceptions\ApiException;
  15. use app\frontend\models\Member;
  16. use app\frontend\models\GoodsOption;
  17. use app\common\modules\trade\models\Trade;
  18. use app\frontend\modules\member\services\MemberCartService;
  19. use app\frontend\modules\memberCart\MemberCartCollection;
  20. use app\outside\modes\OutsideOrder;
  21. use app\outside\modules\order\models\BuyTrade;
  22. class BuyController extends OutsideController
  23. {
  24. public function preAction()
  25. {
  26. app('GoodsManager')->bind('Goods', function ($goodsManager, $attributes) {
  27. return new Goods($attributes);
  28. });
  29. app('GoodsManager')->bind('GoodsOption', function ($goodsManager, $attributes) {
  30. return new GoodsOption($attributes);
  31. });
  32. parent::preAction();
  33. }
  34. /**
  35. * @throws \app\common\exceptions\AppException
  36. */
  37. protected function validateParam()
  38. {
  39. $this->validate([
  40. 'goods' => 'required',
  41. 'uid' => 'required',
  42. ],null, [
  43. 'goods.required' => 'goods 参数必须填写',
  44. 'uid.required' => '购买会员标识必须填写',
  45. ]);
  46. }
  47. /**
  48. * @return \Illuminate\Http\JsonResponse
  49. * @throws ApiException
  50. * @throws \app\common\exceptions\AppException
  51. */
  52. public function index()
  53. {
  54. $this->validateParam();
  55. $this->setMember();
  56. $trade = $this->getMemberCarts()->getTrade(Member::current(), $this->requestParam());
  57. return $this->successJson('成功', $trade);
  58. }
  59. protected function requestParam()
  60. {
  61. return request();
  62. }
  63. protected function getMemberCarts()
  64. {
  65. $goods_params = request()->input('goods');
  66. if (empty($goods_params)) {
  67. throw new ApiException('无法获取到下单商品');
  68. }
  69. $result = collect($goods_params)->map(function ($memberCart) {
  70. return MemberCartService::newMemberCart($memberCart);
  71. });
  72. $memberCarts = new MemberCartCollection($result);
  73. $memberCarts->loadRelations();
  74. return $memberCarts;
  75. }
  76. /**
  77. * @throws ApiException
  78. */
  79. public function setMember()
  80. {
  81. $member = Member::where('uid', request()->input('uid'))->first();
  82. if (!$member) {
  83. throw new ApiException('会员不存在');
  84. }
  85. Member::$current = $member;
  86. }
  87. }