lcly-data-admin/app/Http/Controllers/CropController.php

93 lines
2.8 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace App\Http\Controllers;
use App\Http\Requestes\CropRequest;
use App\Http\Resources\CropResource;
use App\Models\Crop;
use App\Models\CropYield;
use Illuminate\Http\Request;
use App\Services\OperationLogService;
use App\Enums\OperationType;
class CropController extends Controller
{
public function index(Request $request)
{
$query = Crop::filter($request->input());
$list = $query->sort()->get();
return $this->json(CropResource::collection($list));
}
public function store(CropRequest $request)
{
$input = $request->input();
//如果有上级录入path
if ($input['parent_id'] ?? 0) {
$parent = Crop::findOrFail($input['parent_id']);
$input['path'] = ($parent?->path ?? '-').$parent?->id.'-';
}else{
$input['parent_id'] = 0;
$input['path'] = '-';
}
$crop = Crop::create($input);
(new OperationLogService())->inLog(OperationType::Create, '', $crop, $request->input());
return $this->success('添加成功');
}
public function show(Crop $crop)
{
$crop->load('category');
return $this->json(CropResource::make($crop));
}
public function update(Crop $crop, CropRequest $request)
{
//如果原本是结点,不允许修改为非节点
//如果原本非结点,且有子节点,同样无法修改;
$input = $request->input();
if ($input['is_end'] != $crop->is_end) {
if ($crop->is_end || Crop::where(['parent_id' => $crop->id])->exists()) {
return $this->error('无法修改结点状态');
}
}
//如果有上级录入path
if ($input['parent_id'] ?? 0) {
$parent = Crop::findOrFail($input['parent_id']);
$input['path'] = ($parent?->path ?? '-').$parent?->id.'-';
}else{
$input['parent_id'] = 0;
$input['path'] = '-';
}
$crop->update(array_merge($request->input(), $input));
(new OperationLogService())->inLog(OperationType::Update, '', $crop, $request->input());
return $this->success('修改成功');
}
public function destroy(Crop $crop)
{
//如果有关联数据,无法删除
if (CropYield::where('crop_id', $crop->id)->exists()) {
return $this->error('该结点有关联产量数据, 无法删除');
}
//如果有子节点,无法删除
if (Crop::where(['parent_id' => $crop->id])->exists()) {
return $this->error('该结点有关联产量数据, 无法删除');
}
$crop->delete();
(new OperationLogService())->inLog(OperationType::Delete, '', $crop);
return $this->success('删除成功');
}
}