6
0
Fork 0

收藏商品/取消商品收藏

release
李静 2021-12-03 11:03:18 +08:00
parent a0434c054f
commit 560ae2865c
4 changed files with 105 additions and 0 deletions

View File

@ -10,6 +10,7 @@ use App\Helpers\Paginator as PaginatorHelper;
use App\Models\ProductPart;
use App\Models\ProductPartSku;
use App\Models\ProductSku;
use App\Models\ProductSkuFavorite;
use App\Models\ProductSpu;
use Illuminate\Http\Request;
use Illuminate\Pagination\Paginator;
@ -111,6 +112,44 @@ class ProductSkuController extends Controller
]);
}
/**
* 收藏商品
*
* @param int $id
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function collect($id, Request $request)
{
$sku = ProductSku::findOrFail($id);
ProductSkuFavorite::firstOrCreate([
'user_id' => $request->user()->id,
'sku_id' => $sku->id,
], [
'spu_id' => $sku->spu_id,
]);
return response()->noContent();
}
/**
* 取消商品收藏
*
* @param int $id
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function uncollect($id, Request $request)
{
ProductSkuFavorite::query()
->where('user_id', $request->user()->id)
->where('sku_id', $id)
->delete();
return response()->noContent();
}
/**
* 过滤商品
*

View File

@ -40,6 +40,11 @@ Route::group([
Route::get('products/{product}', [ProductSkuController::class, 'show']);
Route::middleware(['auth:api'])->group(function () {
// 收藏商品
Route::post('products/{product}/collect', [ProductSkuController::class, 'collect']);
// 取消商品收藏
Route::post('products/{product}/uncollect', [ProductSkuController::class, 'uncollect']);
// 商品浏览记录
Route::get('view-logs', [ProductViewLogController::class, 'index']);
});
});

View File

@ -0,0 +1,25 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ProductSkuFavorite extends Model
{
/**
* @var array
*/
protected $fillable = [
'user_id',
'spu_id',
'sku_id',
];
/**
* 此浏览记录所属的商品 sku
*/
public function sku()
{
return $this->belongsTo(ProductSku::class, 'sku_id');
}
}

View File

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductSkuFavoritesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('product_sku_favorites', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id')->comment('用户ID');
$table->unsignedBigInteger('spu_id')->comment('SPU ID');
$table->unsignedBigInteger('sku_id')->comment('SKU ID');
$table->timestamps();
$table->unique(['user_id', 'sku_id']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('product_sku_favorites');
}
}