wesmiler 2 anni fa
parent
commit
7ddcfbb56a

+ 15 - 0
app/Http/Controllers/Api/v1/GoodsController.php

@@ -69,4 +69,19 @@ class GoodsController extends webApp
         $info = GoodsService::make()->getFreight($this->userId, $addressId, $skuList);
         return showJson(1010, true, $info);
     }
+
+    /**
+     * 更新购物车
+     * @return array
+     */
+    public function updateCart()
+    {
+        $params = request()->post();
+        $goodsId = request()->post('goods_id', 0);
+        if(!$result = GoodsService::make()->updateCart($this->userId, $goodsId, $params)){
+            return showJson(1003, false);
+        }else{
+            return showJson(1002, true, $result);
+        }
+    }
 }

+ 30 - 0
app/Services/Api/GoodsService.php

@@ -12,6 +12,7 @@
 namespace App\Services\Api;
 
 use App\Models\AgentModel;
+use App\Models\CartsModel;
 use App\Models\GoodsCategoryModel;
 use App\Models\GoodsModel;
 use App\Models\GoodsSkuModel;
@@ -205,6 +206,35 @@ class GoodsService extends BaseService
 
     }
 
+    /**
+     * 添加/更新购物车
+     * @param $userId
+     * @param $goodsId
+     * @param $params
+     * @return array|false
+     */
+    public function updateCart($userId, $goodsId, $params)
+    {
+        $skuId = isset($params['sku_id'])? $params['sku_id'] : 0;
+        $status = isset($params['status'])? $params['status'] : 0;
+        $num = isset($params['num'])? $params['num'] : 1;
+        if($skuId<=0 || $goodsId<=0 || $userId<=0 || $num<=0){
+            $this->error = 2014;
+            return false;
+        }
+
+        $cartId = CartsModel::where(['user_id'=> $userId,'goods_id'=> $goodsId,'sku_id'=>$skuId])->value('id');
+        if($cartId){
+            CartsModel::where(['id'=> $cartId])->update(['num'=> $num,'status'=>1,'mark'=>1,'update_time'=>time()]);
+            RedisService::clear("caches:members:carts_{$userId}");
+            return ['id'=> $cartId];
+        }else{
+            $cartId = CartsModel::insertGetId(['user_id'=> $userId,'goods_id'=>$goodsId,'sku_id'=>$skuId,'num'=> $num,'status'=>1,'mark'=>1,'create_time'=>time()]);
+            RedisService::clear("caches:members:carts_{$userId}");
+            return ['id'=> $cartId];
+        }
+    }
+
     public function getFreight($userId, $addressId,$skuList)
     {
         $cacheKey = "caches:goods:freight:{$userId}_{$addressId}_".md5(json_encode($skuList,256));

+ 3 - 0
routes/api.php

@@ -148,6 +148,9 @@ Route::prefix('v1')->group(function(){
     Route::post('/goods/info', [\App\Http\Controllers\Api\v1\GoodsController::class, 'info']);
     Route::post('/goods/freight', [\App\Http\Controllers\Api\v1\GoodsController::class, 'freight']);
 
+    // 购物车
+    Route::post('/cart/update', [\App\Http\Controllers\Api\v1\GoodsController::class, 'updateCart']);
+
     // 订单
     Route::post('/order/index', [\App\Http\Controllers\Api\v1\OrderController::class, 'index']);
     Route::post('/order/info', [\App\Http\Controllers\Api\v1\OrderController::class, 'info']);