ApiCart.Class.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. <?php
  2. /**
  3. * 购物车
  4. * Created by PhpStorm.
  5. */
  6. namespace JinDouYun\Controller\Cart;
  7. use Mall\Framework\Core\ErrorCode;
  8. use JinDouYun\Controller\BaseController;
  9. use JinDouYun\Model\Cart\MCart;
  10. use Mall\Framework\Core\StatusCode;
  11. class ApiCart extends BaseController
  12. {
  13. private $objMCart;
  14. /**
  15. * ApiCart constructor.
  16. * @param bool $isCheckAcl
  17. * @param bool $isMustLogin
  18. * @param bool $checkToken
  19. * @param bool $getAreaCode
  20. * @throws \Exception
  21. */
  22. public function __construct($isCheckAcl = false, $isMustLogin = true ,$checkToken=true,$getAreaCode=true)
  23. {
  24. parent::__construct($isCheckAcl, $isMustLogin, $checkToken = true, $getAreaCode = true);
  25. $this->objMCart = new MCart($this->onlineUserId, $this->onlineEnterpriseId,true,$this->areaCode);
  26. }
  27. /**
  28. * 添加购物车,公共字段
  29. *
  30. * @return array
  31. */
  32. public function commonFieldFilter()
  33. {
  34. $params = $this->request->getRawJson();
  35. if (empty($params)) {
  36. parent::sendOutput('参数为空', ErrorCode::$paramError);
  37. }
  38. $cartData = [
  39. 'goodsData' => isset($params['goodsData']) ? $params['goodsData'] : [], //商品数据
  40. ];
  41. foreach ($cartData as $key => $value) {
  42. if (empty($value) && $value !== 0) {
  43. parent::sendOutput($key . '参数错误', ErrorCode::$paramError);
  44. }
  45. }
  46. $goodsData = [];
  47. foreach ($cartData['goodsData'] as $key => $val) {
  48. $goodsData[$key] = [
  49. 'goodsBasicId' => isset($val['goodsBasicId']) ? $val['goodsBasicId'] : '',
  50. 'goodsId' => isset($val['goodsId']) ? $val['goodsId'] : '',
  51. 'skuId' => isset($val['skuId']) ? $val['skuId'] : '',
  52. 'buyNum' => isset($val['buyNum']) ? $val['buyNum'] : '',
  53. 'shopId' => isset($val['shopId']) ? $val['shopId'] : '',
  54. 'source' => isset($val['source']) ? $val['source'] : '',
  55. ];
  56. foreach ($goodsData[$key] as $k => $v) {
  57. if (empty($v)) {
  58. parent::sendOutput($k . '参数错误', ErrorCode::$paramError);
  59. }
  60. }
  61. $goodsData[$key]['goodsCode'] = createCode(StatusCode::$code['goodsBasic']['prefix'], $goodsData[$key]['goodsId'], StatusCode::$code['goodsBasic']['length']);
  62. }
  63. $cartData['goodsData'] = $goodsData;//过滤后数据
  64. return $cartData;
  65. }
  66. /**
  67. * 加入购物车
  68. * @throws \Exception
  69. */
  70. public function addCart()
  71. {
  72. $cartData = $this->commonFieldFilter();
  73. $result = $this->objMCart->addCartApi($cartData);
  74. if ($result->isSuccess()) {
  75. parent::sendOutput($result->getData());
  76. }
  77. parent::sendOutput($result->getData(), $result->getErrorCode());
  78. }
  79. /**
  80. * 更新商品数量(购物车内操作)
  81. * @throws \Exception
  82. */
  83. public function updateBuyNum()
  84. {
  85. $params['cartId'] = $this->request->param('request_id');
  86. $params['buyNum'] = $this->request->param('buyNum');
  87. foreach ($params as $key => $value) {
  88. if (empty($value) && $value !== 0) {
  89. $this->sendOutput($key . '参数错误', ErrorCode::$paramError);
  90. }
  91. }
  92. $result = $this->objMCart->updateBuyNumApi($params);
  93. if ($result->isSuccess()) {
  94. parent::sendOutput($result->getData());
  95. }
  96. parent::sendOutput($result->getData(), $result->getErrorCode());
  97. }
  98. /**
  99. * 获取用户购物车数据
  100. * @throws \Exception
  101. */
  102. public function getCartByUserCenterId()
  103. {
  104. $result = $this->objMCart->getCartByUserCenterIdApi();
  105. if ($result->isSuccess()) {
  106. $returnData = $result->getData();
  107. $pageData = [
  108. 'pageIndex' => 0,
  109. 'pageSize' => 0,
  110. 'pageTotal' => $returnData['total']
  111. ];
  112. parent::sendOutput($returnData['data'], 0, $pageData);
  113. }
  114. parent::sendOutput($result->getData(), ErrorCode::$dberror);
  115. }
  116. /**
  117. * 更新选中状态
  118. * @throws \Exception
  119. */
  120. public function updateSelection()
  121. {
  122. $paramsData = $this->request->getRawJson();
  123. $params = [
  124. 'selection' => isset($paramsData['selection']) ? $paramsData['selection'] : '',//4=>未选中 5=>已选中
  125. 'type' => isset($paramsData['type']) ? $paramsData['type'] : 0,//type 1单个 2店铺 3全选
  126. ];
  127. foreach ($params as $key => $value) {
  128. if (empty($value)) {
  129. $this->sendOutput($key . '参数错误', ErrorCode::$paramError);
  130. }
  131. }
  132. $params['id'] = isset($paramsData['cartId']) ? $paramsData['cartId'] : 0;//cartId
  133. $params['shopId'] = isset($paramsData['shopId']) ? $paramsData['shopId'] : 0;//店铺id
  134. $result = $this->objMCart->updateSelection($params);
  135. if ($result->isSuccess()) {
  136. parent::sendOutput($result->getData());
  137. }
  138. parent::sendOutput($result->getData(), $result->getErrorCode());
  139. }
  140. /**
  141. * 删除购物车中商品(可批量)
  142. */
  143. public function delCart()
  144. {
  145. $params = $this->request->getRawJson();
  146. $paramsData = [
  147. 'id' => isset($params['cartId']) ? $params['cartId'] : 0,
  148. ];
  149. foreach ($paramsData as $key => $value) {
  150. if (empty($value) && $value !== 0) {
  151. $this->sendOutput($key . '参数错误', ErrorCode::$paramError);
  152. }
  153. }
  154. $result = $this->objMCart->delCart($paramsData);
  155. if ($result->isSuccess()) {
  156. parent::sendOutput($result->getData());
  157. }
  158. parent::sendOutput($result->getData(), $result->getErrorCode());
  159. }
  160. /**
  161. * 确认订单接口
  162. * @throws \Exception
  163. */
  164. public function confirmationOfOrder()
  165. {
  166. $vipCardId = $this->request->param('vipCardId');//会员卡id
  167. $userCouponId=$this->request->param('userCouponId');//优惠券id
  168. $addressId = $this->request->param('addressId');//收货地址id
  169. $deliveryId = $this->request->param('deliveryId');//配送方式id
  170. $proporties = $this->request->param('proporties');//店铺对应对应的收货地址以及配送方式
  171. $result = $this->objMCart->confirmationOfOrder($userCouponId,$vipCardId,$addressId,$deliveryId);
  172. if ($result->isSuccess()) {
  173. parent::sendOutput($result->getData());
  174. }
  175. parent::sendOutput($result->getData(), $result->getErrorCode());
  176. }
  177. /**
  178. * 商品列表用
  179. * @throws \Exception
  180. */
  181. public function updateCartNum()
  182. {
  183. $paramsData = $this->request->getRawJson();
  184. if (empty($paramsData)) {
  185. $this->sendOutput('参数为空', ErrorCode::$paramError);
  186. }
  187. $params = [
  188. 'goodsId' => $this->request->param('request_id'),
  189. 'buyNum' => isset($paramsData['buyNum']) ? $paramsData['buyNum'] : '',
  190. 'skuId' => isset($paramsData['skuId']) ? $paramsData['skuId'] : '',
  191. ];
  192. foreach ($params as $key => $value) {
  193. if (empty($value) && $value !== 0) {
  194. $this->sendOutput($key . '参数错误', ErrorCode::$paramError);
  195. }
  196. }
  197. $result = $this->objMCart->updateCartNum($params);
  198. if ($result->isSuccess()) {
  199. parent::sendOutput($result->getData());
  200. }
  201. parent::sendOutput($result->getData(), $result->getErrorCode());
  202. }
  203. /**
  204. * 获取当前用户会员卡
  205. */
  206. public function getVipCard()
  207. {
  208. $result = $this->objMCart->getVipCard([]);
  209. if ($result->isSuccess()) {
  210. parent::sendOutput($result->getData());
  211. }
  212. parent::sendOutput($result->getData(), $result->getErrorCode());
  213. }
  214. /**
  215. * Doc: (des="立即购买")
  216. * User: XMing
  217. * Date: 2021/1/22
  218. * Time: 4:01 下午
  219. * @throws \Exception
  220. */
  221. public function buyNow()
  222. {
  223. $params = $this->request->getRawJson();
  224. if (empty($params)) {
  225. parent::sendOutput('参数为空', ErrorCode::$paramError);
  226. }
  227. if (!isset($params['lists']) || empty($params['lists'])){
  228. parent::sendOutput('请选择商品',ErrorCode::$paramError);
  229. }
  230. $lists = getArrayItem($params,'lists',[]);
  231. $data = [
  232. 'sourceType' => getArrayItem($params,'sourceType',0),
  233. 'comBinId' => getArrayItem($params,'couponId',0),
  234. 'couponId' => getArrayItem($params,'couponId',0),
  235. 'addressId' => getArrayItem($params,'addressId',0),
  236. 'deliveryId' => getArrayItem($params,'deliveryId',0),
  237. ];
  238. $result = $this->objMCart->buyNow($lists,$data);
  239. if ($result->isSuccess()) {
  240. parent::sendOutput($result->getData());
  241. }
  242. parent::sendOutput($result->getData(), $result->getErrorCode());
  243. }
  244. /**
  245. * 普通商品立即购买
  246. */
  247. public function goodsBuyNow()
  248. {
  249. $params = $this->request->getRawJson();
  250. if (empty($params)) {
  251. parent::sendOutput('参数为空', ErrorCode::$paramError);
  252. }
  253. $goods = [
  254. 'goodsId' => isset($params['goodsId']) ? $params['goodsId'] : '',
  255. 'goodsBasicId' => getArrayItem($params, 'goodsBasicId', 0),
  256. 'skuId' => isset($params['skuId']) ? $params['skuId'] : '',
  257. 'buyNum' => isset($params['buyNum']) ? $params['buyNum'] : '',
  258. 'shopId' => getArrayItem($params, 'shopId', 0),
  259. 'selection' => StatusCode::$standard,
  260. ];
  261. foreach ($goods as $key => $val) {
  262. if (empty($val)) {
  263. parent::sendOutput($key . '参数错误', ErrorCode::$paramError);
  264. }
  265. }
  266. $goods['activityId'] = getArrayItem($params, 'activityId', 0);
  267. $data['vipCardId'] = getArrayItem($params, 'vipCardId', 0);
  268. $data['couponId'] = isset($params['couponId']) ? $params['couponId'] : 0;
  269. $data['addressId'] = isset($params['addressId']) ? $params['addressId'] : 0;
  270. $data['deliveryId'] = isset($params['deliveryId']) ? $params['deliveryId'] : 0;
  271. $result = $this->objMCart->goodsBuyNow($goods,$data);
  272. if ($result->isSuccess()) {
  273. parent::sendOutput($result->getData());
  274. }
  275. parent::sendOutput($result->getData(), $result->getErrorCode());
  276. }
  277. }