收藏商品/取消商品收藏
parent
a0434c054f
commit
560ae2865c
|
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 过滤商品
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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']);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue