erp-backend/app/Http/Controllers/ErpSkuController.php
2026-04-01 17:07:04 +08:00

126 lines
3.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\ErpSku;
use Illuminate\Http\Request;
class ErpSkuController extends Controller
{
/**
* 商品列表
*/
public function index(Request $request)
{
$query = ErpSku::query();
if ($request->filled('keyword')) {
$query->where(function ($q) use ($request) {
$q->where('sku_code', 'like', "%{$request->keyword}%")
->orWhere('name', 'like', "%{$request->keyword}%")
->orWhere('platform_sku', 'like', "%{$request->keyword}%");
});
}
$perPage = $request->input('limit', 15);
$skus = $query->paginate($perPage);
return response()->json([
'code' => 200,
'data' => [
'list' => $skus->items(),
'total' => $skus->total(),
'current_page' => $skus->currentPage(),
'last_page' => $skus->lastPage(),
],
'message' => 'success'
]);
}
/**
* 创建商品
*/
public function store(Request $request)
{
$request->validate([
'sku_code' => 'required|unique:erp_skus',
'name' => 'required',
'platform_sku' => 'nullable',
'alias' => 'nullable',
'price' => 'nullable|numeric',
'stock' => 'nullable|integer',
]);
$sku = ErpSku::create($request->all());
return response()->json([
'code' => 200,
'data' => $sku,
'message' => '创建成功'
]);
}
/**
* 商品详情
*/
public function show($id)
{
$sku = ErpSku::findOrFail($id);
return response()->json([
'code' => 200,
'data' => $sku,
'message' => 'success'
]);
}
/**
* 更新商品
*/
public function update(Request $request, $id)
{
$sku = ErpSku::findOrFail($id);
$request->validate([
'sku_code' => 'sometimes|required|unique:erp_skus,sku_code,' . $id,
'name' => 'sometimes|required',
'platform_sku' => 'nullable',
'alias' => 'nullable',
'price' => 'nullable|numeric',
'stock' => 'nullable|integer',
]);
$sku->update($request->all());
return response()->json([
'code' => 200,
'data' => $sku,
'message' => '更新成功'
]);
}
/**
* 删除商品
*/
public function destroy($id)
{
$sku = ErpSku::findOrFail($id);
$sku->delete();
return response()->json([
'code' => 200,
'message' => '删除成功'
]);
}
/**
* 获取所有商品(用于下拉选择)
*/
public function all()
{
$skus = ErpSku::select('id', 'sku_code', 'name', 'price')->get();
return response()->json([
'code' => 200,
'data' => $skus,
'message' => 'success'
]);
}
}