api region harvest
parent
d1b8d88a5e
commit
cbf27302e4
|
|
@ -5,7 +5,8 @@ namespace App\Http\Controllers\Api;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Models\{Region, RegionCategory};
|
use App\Models\{Region, RegionCategory};
|
||||||
use App\Http\Resources\{RegionResource, RegionCategoryResource};
|
use App\Http\Resources\{RegionResource, RegionCategoryResource, RegionPlantResource, PlantHarvestResource};
|
||||||
|
use App\Filters\Admin\RegionFilter;
|
||||||
|
|
||||||
class RegionController extends Controller
|
class RegionController extends Controller
|
||||||
{
|
{
|
||||||
|
|
@ -18,10 +19,33 @@ class RegionController extends Controller
|
||||||
|
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$query = Region::query()->sort()->show();
|
$query = Region::with(['currentPlant'])->filter($request->all(), RegionFilter::class)->sort()->show();
|
||||||
|
|
||||||
$list = $query->paginate($request->input('per_page'));
|
$list = $query->paginate($request->input('per_page'));
|
||||||
|
|
||||||
return $this->json(RegionResource::collection($list));
|
return $this->json(RegionResource::collection($list));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
$info = Region::with(['currentPlant'])->show()->findOrFail($id);
|
||||||
|
|
||||||
|
return $this->json(RegionResource::make($info));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function plants($id)
|
||||||
|
{
|
||||||
|
$info = Region::show()->findOrFail($id);
|
||||||
|
$list = $info->plants()->get();
|
||||||
|
|
||||||
|
return $this->json(RegionPlantResource::collection($list));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function harvests($id)
|
||||||
|
{
|
||||||
|
$info = Region::show()->findOrFail($id);
|
||||||
|
$list = $info->harvests()->get();
|
||||||
|
|
||||||
|
return $this->json(PlantHarvestResource::collection($list));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Resources;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class PlantHarvestResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
|
'plant_id' => $this->plant_id,
|
||||||
|
'region_id' => $this->region_id,
|
||||||
|
'director' => $this->director,
|
||||||
|
'area' => $this->area,
|
||||||
|
'output' => $this->output,
|
||||||
|
'harvest_at' => $this->harvest_at ? $this->harvest_at->timestamp : '',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Resources;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class RegionPlantResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
|
'plant_name' => $this->plant_name,
|
||||||
|
'director' => $this->director,
|
||||||
|
'area' => $this->area,
|
||||||
|
'start_at' => $this->start_at ? $this->start_at->timestamp : '',
|
||||||
|
'end_at' => $this->end_at ? $this->end_at->timestamp : '',
|
||||||
|
'plant_state' => $this->plant_state,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -23,6 +23,7 @@ class RegionResource extends JsonResource
|
||||||
'description' => $this->description,
|
'description' => $this->description,
|
||||||
'category_id' => $this->category_id,
|
'category_id' => $this->category_id,
|
||||||
'category' => RegionCategoryResource::make($this->whenLoaded('category')),
|
'category' => RegionCategoryResource::make($this->whenLoaded('category')),
|
||||||
|
'current_plant' => RegionPlantResource::make($this->whenLoaded('currentPlant')),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,13 +53,19 @@ class Region extends Model
|
||||||
// 种植记录
|
// 种植记录
|
||||||
public function plants()
|
public function plants()
|
||||||
{
|
{
|
||||||
return $this->hasMany(RegionPlantLog::class, 'region_id');
|
return $this->hasMany(RegionPlantLog::class, 'region_id')->orderBy('start_at', 'desc');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 当前种植
|
||||||
|
public function currentPlant()
|
||||||
|
{
|
||||||
|
return $this->hasOne(RegionPlantLog::class, 'region_id')->orderBy('start_at', 'desc');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 收货记录
|
// 收货记录
|
||||||
public function harvest()
|
public function harvests()
|
||||||
{
|
{
|
||||||
return $this->hasMany(PlantHarvestLog::class, 'region_id');
|
return $this->hasMany(PlantHarvestLog::class, 'region_id')->orderBy('harvest_at', 'desc');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function regionTabConfig($region = null){
|
public static function regionTabConfig($region = null){
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,9 @@ use EloquentFilter\Filterable;
|
||||||
use Illuminate\Database\Eloquent\Casts\Attribute;
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 种植记录
|
||||||
|
*/
|
||||||
class RegionPlantLog extends Model
|
class RegionPlantLog extends Model
|
||||||
{
|
{
|
||||||
use Filterable;
|
use Filterable;
|
||||||
|
|
@ -25,7 +28,9 @@ class RegionPlantLog extends Model
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function harvestes(){
|
// 收获记录
|
||||||
|
public function harvestes()
|
||||||
|
{
|
||||||
return $this->hasMany(PlantHarvestLog::class, 'plant_id');
|
return $this->hasMany(PlantHarvestLog::class, 'plant_id');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,3 +27,6 @@ Route::get('article/{id}', [ArticleController::class, 'show']);
|
||||||
|
|
||||||
Route::get('region/category', [RegionController::class, 'category']);
|
Route::get('region/category', [RegionController::class, 'category']);
|
||||||
Route::get('region', [RegionController::class, 'index']);
|
Route::get('region', [RegionController::class, 'index']);
|
||||||
|
Route::get('region/{id}', [RegionController::class, 'show']);
|
||||||
|
Route::get('region/{id}/plants', [RegionController::class, 'plants']);
|
||||||
|
Route::get('region/{id}/harvests', [RegionController::class, 'harvests']);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue