78 lines
2.7 KiB
PHP
78 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers\Store;
|
|
|
|
use App\Models\Store\{Store, StockLog};
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
use Dcat\Admin\Layout\Content;
|
|
use Dcat\Admin\Models\Administrator;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Dcat\Admin\Traits\HasFormResponse;
|
|
|
|
class ProductController extends Controller
|
|
{
|
|
use HasFormResponse;
|
|
public function index($store_id, Request $request)
|
|
{
|
|
$store = Store::findOrFail($store_id);
|
|
$query = $store->productSkus();
|
|
if ($request->filled('key')) {
|
|
$query->where('name', 'like', '%'.$request->input('key').'%');
|
|
}
|
|
$list = $query->paginate();
|
|
return $list;
|
|
}
|
|
|
|
public function create($store_id)
|
|
{
|
|
$store = Store::findOrFail($store_id);
|
|
$form = Form::make();
|
|
$form->selectTable('product', '商品')
|
|
->from(\App\Admin\Renderable\ProductSkuSimpleTable::make())
|
|
->model(\App\Models\ProductSku::class, 'id', 'name')
|
|
->required();
|
|
// $form->number('amount', '库存')->min(0);
|
|
$form->switch('status', '上架')->default(1);
|
|
return (new Content())->title('新增')->body($form);
|
|
}
|
|
|
|
public function store($store_id, Request $request)
|
|
{
|
|
$store = Store::findOrFail($store_id);
|
|
$product_id = $request->input('product');
|
|
if ($product_id) {
|
|
$product = $store->productSkus()->find($product_id);
|
|
if ($product) {
|
|
$store->productSkus()->updateExistingPivot($product_id, $request->only(['status']));
|
|
} else {
|
|
$store->productSkus()->attach([
|
|
$product_id => $request->only(['status'])
|
|
]);
|
|
}
|
|
}
|
|
|
|
return $this->sendResponse($this->response()->success(trans('admin.save_succeeded')));
|
|
}
|
|
|
|
public function update($store_id, $id, Request $request)
|
|
{
|
|
$store = Store::findOrFail($store_id);
|
|
$product = $store->productSkus()->wherePivot('id', $id)->firstOrFail();
|
|
$store->productSkus()->updateExistingPivot($product->id, $request->only(['status']));
|
|
return $this->sendResponse($this->response()->success(trans('admin.update_succeeded')));
|
|
}
|
|
|
|
public function destroy($store_id, $id)
|
|
{
|
|
$store = Store::findOrFail($store_id);
|
|
$product = $store->productSkus()->wherePivot('id', $id)->firstOrFail();
|
|
// 删除库存记录
|
|
$store->stockLogs()->where('product_sku_id', $product->id)->delete();
|
|
// 删除商品关联
|
|
$store->productSkus()->wherePivot('id', $id)->detach();
|
|
return $this->sendResponse($this->response()->success(trans('admin.delete_succeeded')));
|
|
}
|
|
}
|