CsFillCartController.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace addons\CloudStock\api\modules\v1\controllers;
  3. use addons\CloudStock\api\services\CloudStockFillCartService;
  4. use addons\CloudStock\api\services\CloudStockFillOrderService;
  5. use addons\CloudStock\common\models\CloudStockFillCart;
  6. use addons\CloudStock\common\models\CloudStockGoods;
  7. use Yii;
  8. class CsFillCartController extends BaseController
  9. {
  10. public $modelClass = '';
  11. protected $authOptional = [];
  12. /**
  13. * @return mixed|void|null
  14. */
  15. public function actionSetCart()
  16. {
  17. $post = $this->request->post();
  18. $rules = [
  19. [['goods_id', 'num'], 'required'],
  20. [['goods_id', 'num'], 'integer'],
  21. ];
  22. $res = Yii::$app->services->validate->validate($post, $rules);
  23. if ($res === false) {
  24. return $this->error(Yii::$app->services->validate->getErrorMessage());
  25. }
  26. $baseParams = ['user_id' => $this->user_id, 'mall_id' => $this->mall_id, 'stock_agent' => $this->stock_agent];
  27. $cloudStockFillCartService = new CloudStockFillCartService($baseParams);
  28. $currentNum = $cloudStockFillCartService->getCartList([$post['goods_id']])[0]['num'] ?? 0;
  29. // 加数量才需要验证
  30. if ($post['num'] >= $currentNum) {
  31. // 加入购物车前验证
  32. $cloudStockFillOrderService = new CloudStockFillOrderService($baseParams);
  33. try {
  34. $cloudStockFillOrderService->createBeforeCheck($post['goods_id'], $post['num']);
  35. }catch (\Exception $e) {
  36. $this->error($e->getMessage());
  37. return;
  38. }
  39. }
  40. $post = array_merge($post, $baseParams);
  41. if (!CloudStockFillCart::setCart($post)) {
  42. $this->error('加入购物车异常');
  43. return;
  44. }
  45. $this->success();
  46. }
  47. /**
  48. * 返回加购的数量
  49. *
  50. * @return void
  51. */
  52. public function actionCartInfo()
  53. {
  54. $baseParams = ['user_id' => $this->user_id, 'mall_id' => $this->mall_id, 'stock_agent' => $this->stock_agent];
  55. $cartService = new CloudStockFillCartService($baseParams);
  56. $this->success('success', $cartService->getCartInfo());
  57. }
  58. }