收藏商品/取消商品收藏
parent
a0434c054f
commit
560ae2865c
|
|
@ -10,6 +10,7 @@ use App\Helpers\Paginator as PaginatorHelper;
|
||||||
use App\Models\ProductPart;
|
use App\Models\ProductPart;
|
||||||
use App\Models\ProductPartSku;
|
use App\Models\ProductPartSku;
|
||||||
use App\Models\ProductSku;
|
use App\Models\ProductSku;
|
||||||
|
use App\Models\ProductSkuFavorite;
|
||||||
use App\Models\ProductSpu;
|
use App\Models\ProductSpu;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Pagination\Paginator;
|
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::get('products/{product}', [ProductSkuController::class, 'show']);
|
||||||
|
|
||||||
Route::middleware(['auth:api'])->group(function () {
|
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']);
|
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