修复编码格式

dev
Jing Li 2022-10-19 10:30:40 +08:00
parent 7a0b6e3b17
commit 1032ab2633
45 changed files with 284 additions and 231 deletions

View File

@ -2,22 +2,22 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Helpers\Paginator;
use Illuminate\Http\Request;
use App\Models\AdminPermission; use App\Models\AdminPermission;
use Illuminate\Http\Request;
class AdminPermissionController extends Controller class AdminPermissionController extends Controller
{ {
public function index(Request $request) public function index(Request $request)
{ {
$permissions = (new AdminPermission())->toTree(AdminPermission::endPoint()->get()); $permissions = (new AdminPermission())->toTree(AdminPermission::endPoint()->get());
return $this->json($this->formatPermissionsTreeToArray($permissions)); return $this->json($this->formatPermissionsTreeToArray($permissions));
} }
/** /**
* 格式化树 * 格式化树
* *
* @param array $permissions * @param array $permissions
* @return void * @return void
*/ */
protected function formatPermissionsTreeToArray(array $permissions) protected function formatPermissionsTreeToArray(array $permissions)
@ -25,11 +25,12 @@ class AdminPermissionController extends Controller
$res = []; $res = [];
foreach ($permissions as $permission) { foreach ($permissions as $permission) {
$res[] = [ $res[] = [
'id' => $permission->id, 'id' => $permission->id,
'label' => $permission->name, 'label' => $permission->name,
'children' => $this->formatPermissionsTreeToArray($permission->children ?? []), 'children' => $this->formatPermissionsTreeToArray($permission->children ?? []),
]; ];
} }
return $res; return $res;
} }
} }

View File

@ -2,12 +2,12 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\AdminRole;
use App\Helpers\Paginator; use App\Helpers\Paginator;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Http\Requestes\AdminRoleRequest; use App\Http\Requestes\AdminRoleRequest;
use App\Http\Resources\AdminRoleResource; use App\Http\Resources\AdminRoleResource;
use App\Models\AdminRole;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class AdminRoleController extends Controller class AdminRoleController extends Controller
{ {
@ -15,6 +15,7 @@ class AdminRoleController extends Controller
{ {
$query = AdminRole::filter($request->input())->where('id', '>', '1'); $query = AdminRole::filter($request->input())->where('id', '>', '1');
$list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50)); $list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
return $this->json(AdminRoleResource::collection($list)); return $this->json(AdminRoleResource::collection($list));
} }
@ -22,26 +23,30 @@ class AdminRoleController extends Controller
{ {
$permissionIds = $request->input('permission_ids', []); $permissionIds = $request->input('permission_ids', []);
//验证slug唯一 //验证slug唯一
if(AdminRole::where('slug', $request->input('slug'))->exists()){ if (AdminRole::where('slug', $request->input('slug'))->exists()) {
return $this->error('该角色编码已存在'); return $this->error('该角色编码已存在');
} }
try{ try {
DB::beginTransaction(); DB::beginTransaction();
//添加角色信息 //添加角色信息
$role = AdminRole::create($request->input()); $role = AdminRole::create($request->input());
//添加角色权限 //添加角色权限
$role->permissions()->sync($permissionIds); $role->permissions()->sync($permissionIds);
DB::commit(); DB::commit();
}catch(\Throwable $th){ } catch(\Throwable $th) {
DB::rollBack(); DB::rollBack();
report($th); report($th);
return $this->error('添加失败,请稍后再试'); return $this->error('添加失败,请稍后再试');
} }
return $this->success('添加成功'); return $this->success('添加成功');
} }
public function show(AdminRole $adminRole){ public function show(AdminRole $adminRole)
{
$adminRole->load('permissions'); $adminRole->load('permissions');
return $this->json(AdminRoleResource::make($adminRole)); return $this->json(AdminRoleResource::make($adminRole));
} }
@ -49,35 +54,40 @@ class AdminRoleController extends Controller
{ {
$permissionIds = $request->input('permission_ids', []); $permissionIds = $request->input('permission_ids', []);
//验证slug唯一 //验证slug唯一
if(AdminRole::where('slug', $request->input('slug'))->where('id', '<>', $adminRole->id)->exists()){ if (AdminRole::where('slug', $request->input('slug'))->where('id', '<>', $adminRole->id)->exists()) {
return $this->error('该角色编码已存在'); return $this->error('该角色编码已存在');
} }
try{ try {
DB::beginTransaction(); DB::beginTransaction();
//添加角色信息 //添加角色信息
$adminRole->update($request->input()); $adminRole->update($request->input());
//添加角色权限 //添加角色权限
$adminRole->permissions()->sync($permissionIds); $adminRole->permissions()->sync($permissionIds);
DB::commit(); DB::commit();
}catch(\Throwable $th){ } catch(\Throwable $th) {
DB::rollBack(); DB::rollBack();
report($th); report($th);
return $this->error('添加失败,请稍后再试'); return $this->error('添加失败,请稍后再试');
} }
return $this->success('添加成功'); return $this->success('添加成功');
} }
public function destroy(AdminRole $adminRole){ public function destroy(AdminRole $adminRole)
try{ {
try {
DB::beginTransaction(); DB::beginTransaction();
$adminRole->permissions()->sync([]); $adminRole->permissions()->sync([]);
$adminRole->delete(); $adminRole->delete();
DB::commit(); DB::commit();
}catch(\Throwable $th){ } catch(\Throwable $th) {
DB::rollBack(); DB::rollBack();
report($th); report($th);
return $this->error('删除失败,请稍后再试'); return $this->error('删除失败,请稍后再试');
} }
return $this->success('删除成功!'); return $this->success('删除成功!');
} }
} }

View File

@ -2,31 +2,32 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\AdminUser;
use App\Helpers\Paginator; use App\Helpers\Paginator;
use App\Http\Requestes\AdminUserRequest;
use App\Http\Requestes\AdminUserUpdateRequest;
use App\Http\Requestes\RestPasswordRequest;
use App\Http\Resources\AdminUserResource;
use App\Models\AdminUser;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use App\Http\Requestes\AdminUserRequest;
use App\Http\Resources\AdminUserResource;
use App\Http\Requestes\RestPasswordRequest;
use App\Http\Requestes\AdminUserUpdateRequest;
class AdminUserController extends Controller class AdminUserController extends Controller
{ {
public function index(Request $request) public function index(Request $request)
{ {
$query = AdminUser::filter($request->all())->where('id', '>', 1); $query = AdminUser::filter($request->all())->where('id', '>', 1);
$list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50)) ; $list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
return $this->json(AdminUserResource::collection($list)); return $this->json(AdminUserResource::collection($list));
} }
public function store(AdminUserRequest $request) public function store(AdminUserRequest $request)
{ {
$baseIds = $request->input('base_ids', []); $baseIds = $request->input('base_ids', []);
if(AdminUser::where('username', $request->input('username'))->exists()){ if (AdminUser::where('username', $request->input('username'))->exists()) {
return $this->error('该登录名已存在'); return $this->error('该登录名已存在');
} }
try{ try {
DB::beginTransaction(); DB::beginTransaction();
//添加管理员信息 //添加管理员信息
$input = $request->input(); $input = $request->input();
@ -37,25 +38,28 @@ class AdminUserController extends Controller
//添加管理员角色关联; //添加管理员角色关联;
$user->roles()->sync($request->input('role_id')); $user->roles()->sync($request->input('role_id'));
DB::commit(); DB::commit();
}catch(\Throwable $th){ } catch(\Throwable $th) {
DB::rollBack(); DB::rollBack();
report($th); report($th);
return $this->error('添加失败,请稍后再试'); return $this->error('添加失败,请稍后再试');
} }
return $this->success('添加成功'); return $this->success('添加成功');
} }
public function show(AdminUser $adminUser){ public function show(AdminUser $adminUser)
{
return $this->json(AdminUserResource::make($adminUser)); return $this->json(AdminUserResource::make($adminUser));
} }
public function update(AdminUser $adminUser, AdminUserUpdateRequest $request) public function update(AdminUser $adminUser, AdminUserUpdateRequest $request)
{ {
$baseIds = $request->input('base_ids', []); $baseIds = $request->input('base_ids', []);
if(AdminUser::where('username', $request->input('username'))->where('id', '<>', $adminUser->id)->exists()){ if (AdminUser::where('username', $request->input('username'))->where('id', '<>', $adminUser->id)->exists()) {
return $this->error('该登录名已存在'); return $this->error('该登录名已存在');
} }
try{ try {
DB::beginTransaction(); DB::beginTransaction();
//添加管理员信息 //添加管理员信息
$adminUser->update($request->input()); $adminUser->update($request->input());
@ -64,56 +68,64 @@ class AdminUserController extends Controller
//添加管理员角色关联; //添加管理员角色关联;
$adminUser->roles()->sync($request->input('role_id')); $adminUser->roles()->sync($request->input('role_id'));
DB::commit(); DB::commit();
}catch(\Throwable $th){ } catch(\Throwable $th) {
DB::rollBack(); DB::rollBack();
report($th); report($th);
return $this->error('修改失败,请稍后再试'); return $this->error('修改失败,请稍后再试');
} }
return $this->success('修改成功!'); return $this->success('修改成功!');
} }
public function destroy(AdminUser $adminUser){ public function destroy(AdminUser $adminUser)
if($adminUser->id == 1){ {
if ($adminUser->id == 1) {
return $this->error('删除失败,请稍后再试'); return $this->error('删除失败,请稍后再试');
} }
try{ try {
DB::beginTransaction(); DB::beginTransaction();
$adminUser->crops()->sync([]); $adminUser->crops()->sync([]);
$adminUser->roles()->sync([]); $adminUser->roles()->sync([]);
$adminUser->delete(); $adminUser->delete();
DB::commit(); DB::commit();
}catch(\Throwable $th){ } catch(\Throwable $th) {
DB::rollBack(); DB::rollBack();
report($th); report($th);
return $this->error('删除失败,请稍后再试'); return $this->error('删除失败,请稍后再试');
} }
return $this->success('删除成功!'); return $this->success('删除成功!');
} }
/** /**
* 启用/禁用 * 启用/禁用
* *
* @param AdminUser $adminUser * @param AdminUser $adminUser
* @return void * @return void
*/ */
public function endable(AdminUser $adminUser){ public function endable(AdminUser $adminUser)
if($adminUser->id == 1){ {
if ($adminUser->id == 1) {
return $this->error('操作失败,请稍后再试'); return $this->error('操作失败,请稍后再试');
} }
$adminUser->update([ $adminUser->update([
'is_enable' => (int) !$adminUser->is_enable 'is_enable' => (int) ! $adminUser->is_enable,
]); ]);
return $this->success('操作成功!'); return $this->success('操作成功!');
} }
public function editPassword(AdminUser $adminUser, RestPasswordRequest $request){ public function editPassword(AdminUser $adminUser, RestPasswordRequest $request)
if($adminUser->id == 1){ {
if ($adminUser->id == 1) {
return $this->error('操作失败,请稍后再试'); return $this->error('操作失败,请稍后再试');
} }
$adminUser->update([ $adminUser->update([
'password' => bcrypt($request->input('password')) 'password' => bcrypt($request->input('password')),
]); ]);
return $this->success('修改成功!'); return $this->success('修改成功!');
} }
} }

View File

@ -3,75 +3,87 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Helpers\Paginator; use App\Helpers\Paginator;
use Illuminate\Http\Request;
use App\Models\AgriculturalBase;
use Illuminate\Support\Facades\DB;
use App\Http\Requestes\AgriculturalBaseRequest; use App\Http\Requestes\AgriculturalBaseRequest;
use App\Http\Resources\AgriculturalBaseResource; use App\Http\Resources\AgriculturalBaseResource;
use App\Models\AgriculturalBase;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class AgriculturalBaseController extends Controller class AgriculturalBaseController extends Controller
{ {
/** /**
* 基地数据列表 * 基地数据列表
* *
* @param Request $request * @param Request $request
* @return void * @return void
*/ */
public function index(Request $request){ public function index(Request $request)
{
$query = AgriculturalBase::with('crops')->filter($request->all())->sort(); $query = AgriculturalBase::with('crops')->filter($request->all())->sort();
$list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50)) ; $list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
return AgriculturalBaseResource::collection($list); return AgriculturalBaseResource::collection($list);
} }
public function store(AgriculturalBaseRequest $request){ public function store(AgriculturalBaseRequest $request)
{
$cropsIds = $request->input('crops_ids', []); $cropsIds = $request->input('crops_ids', []);
try{ try {
DB::beginTransaction(); DB::beginTransaction();
//添加基地信息 //添加基地信息
$base = AgriculturalBase::create($request->input()); $base = AgriculturalBase::create($request->input());
//添加基地农作物 //添加基地农作物
$base->crops()->sync($cropsIds); $base->crops()->sync($cropsIds);
DB::commit(); DB::commit();
}catch(\Throwable $th){ } catch(\Throwable $th) {
DB::rollBack(); DB::rollBack();
report($th); report($th);
return $this->error('添加失败,请稍后再试'); return $this->error('添加失败,请稍后再试');
} }
return $this->success('添加成功!'); return $this->success('添加成功!');
} }
public function show(AgriculturalBase $agriculturalBasic){ public function show(AgriculturalBase $agriculturalBasic)
{
return $this->json(AgriculturalBaseResource::make($agriculturalBasic)); return $this->json(AgriculturalBaseResource::make($agriculturalBasic));
} }
public function update(AgriculturalBase $agriculturalBasic, AgriculturalBaseRequest $request){ public function update(AgriculturalBase $agriculturalBasic, AgriculturalBaseRequest $request)
{
$cropsIds = $request->input('crops_ids', []); $cropsIds = $request->input('crops_ids', []);
try{ try {
DB::beginTransaction(); DB::beginTransaction();
//添加基地信息 //添加基地信息
$agriculturalBasic->update($request->input()); $agriculturalBasic->update($request->input());
//添加基地农作物 //添加基地农作物
$agriculturalBasic->crops()->sync($cropsIds); $agriculturalBasic->crops()->sync($cropsIds);
DB::commit(); DB::commit();
}catch(\Throwable $th){ } catch(\Throwable $th) {
DB::rollBack(); DB::rollBack();
report($th); report($th);
return $this->error('修改失败,请稍后再试'); return $this->error('修改失败,请稍后再试');
} }
return $this->success('修改成功!'); return $this->success('修改成功!');
} }
public function destroy(AgriculturalBase $agriculturalBasic){ public function destroy(AgriculturalBase $agriculturalBasic)
try{ {
try {
DB::beginTransaction(); DB::beginTransaction();
$agriculturalBasic->crops()->sync([]); $agriculturalBasic->crops()->sync([]);
$agriculturalBasic->delete(); $agriculturalBasic->delete();
DB::commit(); DB::commit();
}catch(\Throwable $th){ } catch(\Throwable $th) {
DB::rollBack(); DB::rollBack();
report($th); report($th);
return $this->error('删除失败,请稍后再试'); return $this->error('删除失败,请稍后再试');
} }
return $this->success('删除成功!'); return $this->success('删除成功!');
} }
} }

View File

@ -23,7 +23,7 @@ class AuthController extends Controller
return $this->error('用户名或密码错误'); return $this->error('用户名或密码错误');
} }
if($user->is_enable !== 1){ if ($user->is_enable !== 1) {
return $this->error('用户状态异常请联系管理员'); return $this->error('用户状态异常请联系管理员');
} }
@ -33,6 +33,7 @@ class AuthController extends Controller
protected function attemptUser(AdminUser $user, $name = 'api') protected function attemptUser(AdminUser $user, $name = 'api')
{ {
$token = $user->createToken($name)->plainTextToken; $token = $user->createToken($name)->plainTextToken;
return $this->json(['token' => $token, 'info' => $user, 'permissions' => $user->permissionIds()]); return $this->json(['token' => $token, 'info' => $user, 'permissions' => $user->permissionIds()]);
} }
} }

View File

@ -2,21 +2,22 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\CropFlow;
use App\Helpers\Paginator; use App\Helpers\Paginator;
use Illuminate\Http\Request;
use App\Http\Requestes\CropFlowRequest; use App\Http\Requestes\CropFlowRequest;
use App\Http\Resources\CropFlowResource;
use App\Http\Requestes\CropFlowUpdateRequest; use App\Http\Requestes\CropFlowUpdateRequest;
use App\Http\Resources\CropFlowResource;
use App\Models\CropFlow;
use Illuminate\Http\Request;
class CropFlowController extends Controller class CropFlowController extends Controller
{ {
public function index(Request $request) public function index(Request $request)
{ {
$query = CropFlow::filter($request->input()); $query = CropFlow::filter($request->input());
$totalNum = $query->sum('sale');//总产量 $totalNum = $query->sum('sale'); //总产量
$list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50)); $list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
$list->load(['createdBy']); $list->load(['createdBy']);
return $this->json([ return $this->json([
'total' => $totalNum, 'total' => $totalNum,
'list' => CropFlowResource::collection($list), 'list' => CropFlowResource::collection($list),
@ -26,7 +27,7 @@ class CropFlowController extends Controller
public function store(CropFlowRequest $request) public function store(CropFlowRequest $request)
{ {
$flows = $request->input('flows'); $flows = $request->input('flows');
CropFlow::insert(array_map(function($item) use ($request){ CropFlow::insert(array_map(function ($item) use ($request) {
return array_merge($item, [ return array_merge($item, [
'time_year' => $request->input('time_year'), 'time_year' => $request->input('time_year'),
'crop_id' => $request->input('crop_id'), 'crop_id' => $request->input('crop_id'),
@ -36,26 +37,30 @@ class CropFlowController extends Controller
'updated_at' => now(), 'updated_at' => now(),
]); ]);
}, $flows)); }, $flows));
return $this->success('添加成功'); return $this->success('添加成功');
} }
public function show(CropFlow $cropFlow) public function show(CropFlow $cropFlow)
{ {
$cropFlow->load(['crop', 'user']); $cropFlow->load(['crop', 'user']);
return $this->json(CropFlowResource::make($cropFlow)); return $this->json(CropFlowResource::make($cropFlow));
} }
public function update(CropFlow $cropFlow, CropFlowUpdateRequest $request) public function update(CropFlow $cropFlow, CropFlowUpdateRequest $request)
{ {
$cropFlow->update(array_merge($request->input(), $cropFlow->update(array_merge($request->input(),
['updated_by'=>auth('api')->user()?->id ?? 0,] ['updated_by' => auth('api')->user()?->id ?? 0]
)); ));
return $this->success('修改成功'); return $this->success('修改成功');
} }
public function destroy(CropFlow $cropFlow) public function destroy(CropFlow $cropFlow)
{ {
$cropFlow->delete(); $cropFlow->delete();
return $this->success('删除成功'); return $this->success('删除成功');
} }
} }

View File

@ -2,11 +2,11 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\CropStructure;
use App\Http\Requestes\CropStructureRequest; use App\Http\Requestes\CropStructureRequest;
use App\Http\Resources\CropStructureResource;
use App\Http\Requestes\CropStructureUpdateRequest; use App\Http\Requestes\CropStructureUpdateRequest;
use App\Http\Resources\CropStructureResource;
use App\Models\CropStructure;
use Illuminate\Http\Request;
class CropStructureController extends Controller class CropStructureController extends Controller
{ {
@ -14,24 +14,25 @@ class CropStructureController extends Controller
{ {
$list = CropStructure::with('cropsCate')->filter($request->input())->get(); $list = CropStructure::with('cropsCate')->filter($request->input())->get();
$totalOutput = $list->sum('crops_output'); $totalOutput = $list->sum('crops_output');
return $this->json([ return $this->json([
'totalOutput' => $totalOutput, 'totalOutput' => $totalOutput,
'list' => array_map(function($item) use ($totalOutput){ 'list' => array_map(function ($item) use ($totalOutput) {
return [ return [
'id'=> $item['id'], 'id' => $item['id'],
'cate_name' => $item['crops_cate']['name'] ?? '', 'cate_name' => $item['crops_cate']['name'] ?? '',
'cate_rate' => $totalOutput ? bcdiv($item['crops_output'],$totalOutput, 4) * 100 : 0, 'cate_rate' => $totalOutput ? bcdiv($item['crops_output'], $totalOutput, 4) * 100 : 0,
'year' => $item['time_year'], 'year' => $item['time_year'],
'crops_output' => number_format($item['crops_output']), 'crops_output' => number_format($item['crops_output']),
]; ];
}, $list->toArray()) }, $list->toArray()),
]); ]);
} }
public function store(CropStructureRequest $request) public function store(CropStructureRequest $request)
{ {
$structures = $request->input('structures'); $structures = $request->input('structures');
CropStructure::insert(array_map(function($item) use ($request){ CropStructure::insert(array_map(function ($item) use ($request) {
return array_merge($item, [ return array_merge($item, [
'time_year' => $request->input('time_year'), 'time_year' => $request->input('time_year'),
'created_at' => now(), 'created_at' => now(),
@ -42,8 +43,10 @@ class CropStructureController extends Controller
return $this->success('添加成功'); return $this->success('添加成功');
} }
public function show(CropStructure $cropStructure){ public function show(CropStructure $cropStructure)
{
$cropStructure->load('cropsCate'); $cropStructure->load('cropsCate');
return $this->json(CropStructureResource::make($cropStructure)); return $this->json(CropStructureResource::make($cropStructure));
} }

View File

@ -2,31 +2,32 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\CropYield;
use App\Helpers\Paginator; use App\Helpers\Paginator;
use Illuminate\Http\Request;
use App\Http\Requestes\CropYieldRequest; use App\Http\Requestes\CropYieldRequest;
use App\Http\Resources\CropYieldResource;
use App\Http\Requestes\CropYieldUpdateRequest; use App\Http\Requestes\CropYieldUpdateRequest;
use App\Http\Resources\CropYieldResource;
use App\Models\CropYield;
use Illuminate\Http\Request;
class CropYieldController extends Controller class CropYieldController extends Controller
{ {
public function index(Request $request) public function index(Request $request)
{ {
$query = CropYield::filter($request->all()); $query = CropYield::filter($request->all());
$totalNum = $query->sum('yield');//总产量 $totalNum = $query->sum('yield'); //总产量
$list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50)); $list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
$list->load(['base', 'createdBy']); $list->load(['base', 'createdBy']);
return $this->json([ return $this->json([
'total' => $totalNum, 'total' => $totalNum,
'list' => CropYieldResource::collection($list) 'list' => CropYieldResource::collection($list),
]); ]);
} }
public function store(CropYieldRequest $request) public function store(CropYieldRequest $request)
{ {
$yields = $request->input('yields'); $yields = $request->input('yields');
CropYield::insert(array_map(function($item) use ($request){ CropYield::insert(array_map(function ($item) use ($request) {
return array_merge($item, [ return array_merge($item, [
'time_year' => $request->input('time_year'), 'time_year' => $request->input('time_year'),
'crop_id' => $request->input('crop_id'), 'crop_id' => $request->input('crop_id'),
@ -36,26 +37,30 @@ class CropYieldController extends Controller
'updated_at' => now(), 'updated_at' => now(),
]); ]);
}, $yields)); }, $yields));
return $this->success('添加成功'); return $this->success('添加成功');
} }
public function show(CropYield $cropYield) public function show(CropYield $cropYield)
{ {
$cropYield->load(['base', 'crop', 'createdBy']); $cropYield->load(['base', 'crop', 'createdBy']);
return $this->json(CropYieldResource::make($cropYield)); return $this->json(CropYieldResource::make($cropYield));
} }
public function update(CropYield $cropYield, CropYieldUpdateRequest $request) public function update(CropYield $cropYield, CropYieldUpdateRequest $request)
{ {
$cropYield->update(array_merge($request->input(), $cropYield->update(array_merge($request->input(),
['updated_by'=>auth('api')->user()?->id ?? 0,] ['updated_by' => auth('api')->user()?->id ?? 0]
)); ));
return $this->success('修改成功'); return $this->success('修改成功');
} }
public function destroy(CropYield $cropYield) public function destroy(CropYield $cropYield)
{ {
$cropYield->delete(); $cropYield->delete();
return $this->success('删除成功'); return $this->success('删除成功');
} }
} }

View File

@ -2,12 +2,12 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\Device;
use App\Enums\DeviceType; use App\Enums\DeviceType;
use App\Helpers\Paginator; use App\Helpers\Paginator;
use Illuminate\Http\Request;
use App\Http\Requestes\DeviceRequest; use App\Http\Requestes\DeviceRequest;
use App\Http\Resources\DeviceResource; use App\Http\Resources\DeviceResource;
use App\Models\Device;
use Illuminate\Http\Request;
class DeviceController extends Controller class DeviceController extends Controller
{ {
@ -15,6 +15,7 @@ class DeviceController extends Controller
{ {
$query = Device::with('base')->filter($request->input()); $query = Device::with('base')->filter($request->input());
$list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50)); $list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
return $this->json(DeviceResource::collection($list)); return $this->json(DeviceResource::collection($list));
} }
@ -22,13 +23,14 @@ class DeviceController extends Controller
{ {
$input = $request->input(); $input = $request->input();
//如果不是监控设备移除extends //如果不是监控设备移除extends
if($input['type'] != DeviceType::Monitor->value){ if ($input['type'] != DeviceType::Monitor->value) {
unset($input['extends']); unset($input['extends']);
} }
Device::create(array_merge($input, [ Device::create(array_merge($input, [
'created_by' => auth('api')->user()?->id ?? 0, 'created_by' => auth('api')->user()?->id ?? 0,
'updated_by' => auth('api')->user()?->id ?? 0, 'updated_by' => auth('api')->user()?->id ?? 0,
])); ]));
return $this->success('添加成功'); return $this->success('添加成功');
} }
@ -41,22 +43,25 @@ class DeviceController extends Controller
{ {
$input = $request->input(); $input = $request->input();
//如果不是监控设备移除extends //如果不是监控设备移除extends
if($input['type'] != DeviceType::Monitor->value){ if ($input['type'] != DeviceType::Monitor->value) {
$input['extends'] = null; $input['extends'] = null;
} }
$device->update(array_merge($input, [ $device->update(array_merge($input, [
'updated_by' => auth('api')->user()?->id ?? 0, 'updated_by' => auth('api')->user()?->id ?? 0,
])); ]));
return $this->success('修改成功'); return $this->success('修改成功');
} }
public function destroy(Device $device) public function destroy(Device $device)
{ {
$device->delete(); $device->delete();
return $this->success('删除成功'); return $this->success('删除成功');
} }
public function types(){ public function types()
{
return $this->json(DeviceType::types()); return $this->json(DeviceType::types());
} }
} }

View File

@ -9,6 +9,7 @@ class UserController extends Controller
public function info() public function info()
{ {
$user = auth('api')->user(); $user = auth('api')->user();
return $this->json(['info' => $user, 'permissions' => $user->permissionIds()]); return $this->json(['info' => $user, 'permissions' => $user->permissionIds()]);
} }

View File

@ -35,14 +35,14 @@ class AdminUserRequest extends FormRequest
'username.alpha_num' => '用户名只能由字母和数字组成', 'username.alpha_num' => '用户名只能由字母和数字组成',
'username.max' => '用户名最长100位', 'username.max' => '用户名最长100位',
'password.required' => '请填写登录密码', 'password.required' => '请填写登录密码',
'password.string'=> '请正确填写密码', 'password.string' => '请正确填写密码',
'password.min' => '密码长度不能低于6位', 'password.min' => '密码长度不能低于6位',
'password.max' => '密码长度不能超过32位', 'password.max' => '密码长度不能超过32位',
'name.required' => '请填写名称', 'name.required' => '请填写名称',
'name.string' =>'请正确填写名称', 'name.string' => '请正确填写名称',
'name.max' => '名称长度不能超过100位', 'name.max' => '名称长度不能超过100位',
'status' => '请选择用户状态', 'status' => '请选择用户状态',
'role_id' => "请选择角色" 'role_id' => '请选择角色',
]; ];
return $messages; return $messages;

View File

@ -34,10 +34,10 @@ class AdminUserUpdateRequest extends FormRequest
'username.alpha_num' => '用户名只能由字母和数字组成', 'username.alpha_num' => '用户名只能由字母和数字组成',
'username.max' => '用户名最长100位', 'username.max' => '用户名最长100位',
'name.required' => '请填写名称', 'name.required' => '请填写名称',
'name.string' =>'请正确填写名称', 'name.string' => '请正确填写名称',
'name.max' => '名称长度不能超过100位', 'name.max' => '名称长度不能超过100位',
'status' => '请选择用户状态', 'status' => '请选择用户状态',
'role_id' => "请选择角色" 'role_id' => '请选择角色',
]; ];
return $messages; return $messages;

View File

@ -19,7 +19,7 @@ class AgriculturalBaseRequest extends FormRequest
'name' => 'required|string|max:100', 'name' => 'required|string|max:100',
'description' => 'nullable|string', 'description' => 'nullable|string',
'person' => 'required|string|max:100', 'person' => 'required|string|max:100',
'crops_ids'=> 'required|array|min:1', 'crops_ids' => 'required|array|min:1',
'areas' => 'required|regex:/^\d+(\.\d{1,2})?$/', 'areas' => 'required|regex:/^\d+(\.\d{1,2})?$/',
'workforce' => 'required|integer|min:0', 'workforce' => 'required|integer|min:0',
'address' => 'nullable|string', 'address' => 'nullable|string',
@ -33,16 +33,16 @@ class AgriculturalBaseRequest extends FormRequest
$messages = [ $messages = [
'name.required' => '请填写基地名称', 'name.required' => '请填写基地名称',
'name.max' => '基地名称不能超过100字', 'name.max' => '基地名称不能超过100字',
'description.string'=>'请正确填写基地介绍', 'description.string' => '请正确填写基地介绍',
'person.required' => '请填写基地负责人名称', 'person.required' => '请填写基地负责人名称',
'person.max' => '基地负责人名称不能超过100字', 'person.max' => '基地负责人名称不能超过100字',
'crops_ids.required' => '请选择农作物', 'crops_ids.required' => '请选择农作物',
'crops_ids.min'=>'至少选择一种农作物', 'crops_ids.min' => '至少选择一种农作物',
'areas.required' => '请填写基地面积', 'areas.required' => '请填写基地面积',
'areas.regex' => '请正确填写基地面积', 'areas.regex' => '请正确填写基地面积',
'workforce.required' => '请填写就业人数', 'workforce.required' => '请填写就业人数',
'workforce.min' => '就业人数最小为0', 'workforce.min' => '就业人数最小为0',
'address.string'=>'请正确填写基地地址', 'address.string' => '请正确填写基地地址',
'address_lat.regex' => '请正确填写经度', 'address_lat.regex' => '请正确填写经度',
'address_lng.regex' => '请正确填写纬度', 'address_lng.regex' => '请正确填写纬度',
]; ];

View File

@ -17,9 +17,9 @@ class CropFlowRequest extends FormRequest
{ {
return [ return [
'time_year' => 'required|date_format:Y', 'time_year' => 'required|date_format:Y',
'crop_id' => 'required|integer|min:0', 'crop_id' => 'required|integer|min:0',
'flows' => 'required|array|min:1', 'flows' => 'required|array|min:1',
'flows.*'=>'required_array_keys:flow_name,sale' 'flows.*' => 'required_array_keys:flow_name,sale',
]; ];
} }

View File

@ -17,9 +17,9 @@ class CropFlowUpdateRequest extends FormRequest
{ {
return [ return [
'time_year' => 'required|date_format:Y', 'time_year' => 'required|date_format:Y',
'crop_id' => 'required|integer|min:0', 'crop_id' => 'required|integer|min:0',
'sale' => 'required|regex:/^\d+(\.\d{1,2})?$/', 'sale' => 'required|regex:/^\d+(\.\d{1,2})?$/',
'flow_name'=> 'required|string|max:100', 'flow_name' => 'required|string|max:100',
]; ];
} }

View File

@ -18,7 +18,7 @@ class CropStructureRequest extends FormRequest
return [ return [
'time_year' => 'required|date_format:Y', 'time_year' => 'required|date_format:Y',
'structures' => 'required|array|min:1', 'structures' => 'required|array|min:1',
'structures.*'=>'required_array_keys:crops_cate_id,crops_output' 'structures.*' => 'required_array_keys:crops_cate_id,crops_output',
]; ];
} }
@ -26,7 +26,7 @@ class CropStructureRequest extends FormRequest
{ {
$messages = [ $messages = [
'time_year' => '请选择年份', 'time_year' => '请选择年份',
'structures' => '请填写产业及产值' 'structures' => '请填写产业及产值',
]; ];
return $messages; return $messages;

View File

@ -17,8 +17,8 @@ class CropStructureUpdateRequest extends FormRequest
{ {
return [ return [
'time_year' => 'required|date_format:Y', 'time_year' => 'required|date_format:Y',
'crops_cate_id' =>'required|integer|min:1', 'crops_cate_id' => 'required|integer|min:1',
'crops_output' => 'required|regex:/^\d+(\.\d{1,2})?$/' 'crops_output' => 'required|regex:/^\d+(\.\d{1,2})?$/',
]; ];
} }
@ -27,7 +27,7 @@ class CropStructureUpdateRequest extends FormRequest
$messages = [ $messages = [
'time_year' => '请选择年份', 'time_year' => '请选择年份',
'crops_cate_id' => '请选择产业', 'crops_cate_id' => '请选择产业',
'crops_output' => '请填写产值' 'crops_output' => '请填写产值',
]; ];
return $messages; return $messages;

View File

@ -17,9 +17,9 @@ class CropYieldRequest extends FormRequest
{ {
return [ return [
'time_year' => 'required|date_format:Y', 'time_year' => 'required|date_format:Y',
'crop_id' => 'required|integer|min:0', 'crop_id' => 'required|integer|min:0',
'yields' => 'required|array|min:1', 'yields' => 'required|array|min:1',
'yields.*'=>'required_array_keys:base_id,yield,cultivated,output' 'yields.*' => 'required_array_keys:base_id,yield,cultivated,output',
]; ];
} }

View File

@ -17,11 +17,11 @@ class CropYieldUpdateRequest extends FormRequest
{ {
return [ return [
'time_year' => 'required|date_format:Y', 'time_year' => 'required|date_format:Y',
'crop_id' => 'required|integer|min:0', 'crop_id' => 'required|integer|min:0',
'base_id' => 'required|integer|min:0', 'base_id' => 'required|integer|min:0',
'yield' => 'required|regex:/^\d+(\.\d{1,2})?$/', 'yield' => 'required|regex:/^\d+(\.\d{1,2})?$/',
'cultivated'=> 'required|regex:/^\d+(\.\d{1,2})?$/', 'cultivated' => 'required|regex:/^\d+(\.\d{1,2})?$/',
'output' => 'required|regex:/^\d+(\.\d{1,2})?$/' 'output' => 'required|regex:/^\d+(\.\d{1,2})?$/',
]; ];
} }

View File

@ -3,10 +3,10 @@
namespace App\Http\Requestes; namespace App\Http\Requestes;
use App\Enums\DeviceType; use App\Enums\DeviceType;
use Illuminate\Validation\Rules\Enum;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator; use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException; use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Validation\Rules\Enum;
class DeviceRequest extends FormRequest class DeviceRequest extends FormRequest
{ {
@ -18,17 +18,17 @@ class DeviceRequest extends FormRequest
public function rules() public function rules()
{ {
return [ return [
'type' => ['required', new Enum(DeviceType::class)], 'type' => ['required', new Enum(DeviceType::class)],
'agricultural_base_id' => 'required|integer|min:0', 'agricultural_base_id' => 'required|integer|min:0',
'sn' => 'required|string|max:64', 'sn' => 'required|string|max:64',
'monitoring_point' => 'required|string|max:100', 'monitoring_point' => 'required|string|max:100',
'extends' => 'required_if:type,1', 'extends' => 'required_if:type,1',
'extends.ip'=> 'required_if:type,1|string', 'extends.ip' => 'required_if:type,1|string',
'extends.port'=> 'required_if:type,1|string', 'extends.port' => 'required_if:type,1|string',
'extends.rtsp_url'=> 'required_if:type,1|string', 'extends.rtsp_url' => 'required_if:type,1|string',
'extends.username'=> 'required_if:type,1|string', 'extends.username' => 'required_if:type,1|string',
'extends.password'=> 'required_if:type,1|string', 'extends.password' => 'required_if:type,1|string',
'extends.passage'=> 'required_if:type,1|string', 'extends.passage' => 'required_if:type,1|string',
]; ];
} }
@ -36,16 +36,16 @@ class DeviceRequest extends FormRequest
{ {
$messages = [ $messages = [
'type' => '请选择设备类型', 'type' => '请选择设备类型',
'agricultural_base_id' => '请选择基地', 'agricultural_base_id' => '请选择基地',
'sn' => '请填写设备编号', 'sn' => '请填写设备编号',
'monitoring_point' => '请填写监控点', 'monitoring_point' => '请填写监控点',
'extends.required_if' =>'请填写监控设备信息', 'extends.required_if' => '请填写监控设备信息',
'extends.ip.required_if' =>'请填写监控设备IP', 'extends.ip.required_if' => '请填写监控设备IP',
'extends.port.required_if' =>'请填写监控设备端口', 'extends.port.required_if' => '请填写监控设备端口',
'extends.rtsp_url.required_if' =>'请填写监控设备RTSP地址', 'extends.rtsp_url.required_if' => '请填写监控设备RTSP地址',
'extends.username.required_if' =>'请填写监控设备登录名', 'extends.username.required_if' => '请填写监控设备登录名',
'extends.password.required_if' =>'请填写监控设备登录密码', 'extends.password.required_if' => '请填写监控设备登录密码',
'extends.passage.required_if' =>'请填写监控设备播放通道', 'extends.passage.required_if' => '请填写监控设备播放通道',
]; ];
return $messages; return $messages;

View File

@ -25,7 +25,7 @@ class RestPasswordRequest extends FormRequest
{ {
$messages = [ $messages = [
'password.required' => '请填写登录密码', 'password.required' => '请填写登录密码',
'password.string'=> '请正确填写密码', 'password.string' => '请正确填写密码',
'password.min' => '密码长度不能低于6位', 'password.min' => '密码长度不能低于6位',
'password.max' => '密码长度不能超过32位', 'password.max' => '密码长度不能超过32位',
'password.confirmed' => '两次密码不一致', 'password.confirmed' => '两次密码不一致',

View File

@ -3,22 +3,21 @@
namespace App\Http\Resources; namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
use Peidikeji\Keywords\Http\Resources\KeywordResource;
class AdminRoleResource extends JsonResource class AdminRoleResource extends JsonResource
{ {
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {
return [ return [
'id' => $this->id, 'id' => $this->id,
'name' => $this->name, 'name' => $this->name,
'slug'=> $this->slug, 'slug' => $this->slug,
'permissions' => $this->whenLoaded('permissions', function () { 'permissions' => $this->whenLoaded('permissions', function () {
return $this->permissions->pluck('id'); return $this->permissions->pluck('id');
}, ''), }, ''),

View File

@ -3,27 +3,26 @@
namespace App\Http\Resources; namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
use Peidikeji\Keywords\Http\Resources\KeywordResource;
class AdminUserResource extends JsonResource class AdminUserResource extends JsonResource
{ {
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {
return [ return [
'id' => $this->id, 'id' => $this->id,
'username' => $this->username, 'username' => $this->username,
'name' => $this->name, 'name' => $this->name,
'avatar'=> $this->avatar, 'avatar' => $this->avatar,
'department' => $this->department, 'department' => $this->department,
'phone' => $this->phone, 'phone' => $this->phone,
'status' => $this->status, 'status' => $this->status,
'is_enable'=> $this->is_enable, 'is_enable' => $this->is_enable,
'bases' => AgriculturalBaseResource::collection($this->whenloaded('bases')), 'bases' => AgriculturalBaseResource::collection($this->whenloaded('bases')),
]; ];
} }

View File

@ -10,22 +10,22 @@ class AgriculturalBaseResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {
return [ return [
'id' => $this->id, 'id' => $this->id,
'name' => $this->name, 'name' => $this->name,
'address' => $this->address ?? '', 'address' => $this->address ?? '',
'address_lat' => $this->address_lat ?? '', 'address_lat' => $this->address_lat ?? '',
'address_lng' => $this->address_lng ?? '', 'address_lng' => $this->address_lng ?? '',
'description' => $this->description ?? '', 'description' => $this->description ?? '',
'map' => $this->map ?? '', 'map' => $this->map ?? '',
'areas' => ($this->areas ?? 0.00).' 亩', 'areas' => ($this->areas ?? 0.00).' 亩',
'workforce' => $this->workforce ?? 0, 'workforce' => $this->workforce ?? 0,
'crops' => KeywordResource::collection($this->whenLoaded('crops')) 'crops' => KeywordResource::collection($this->whenLoaded('crops')),
]; ];
} }
} }

View File

@ -9,7 +9,7 @@ class CropFlowResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
@ -17,16 +17,16 @@ class CropFlowResource extends JsonResource
return [ return [
'id' => $this->id, 'id' => $this->id,
'flow_name' => $this->flow_name, 'flow_name' => $this->flow_name,
'crop_name' => $this->whenLoaded('crop', function (){ 'crop_name' => $this->whenLoaded('crop', function () {
return $this->crop?->name; return $this->crop?->name;
}, ''), }, ''),
'crop_id' => $this->crop_id, 'crop_id' => $this->crop_id,
'time_year' => $this->time_year, 'time_year' => $this->time_year,
'sale' => $this->sale, 'sale' => $this->sale,
'created_by' => $this->whenLoaded('createdBy', function (){ 'created_by' => $this->whenLoaded('createdBy', function () {
return $this->createdBy?->name; return $this->createdBy?->name;
}, ''),//录入人 }, ''), //录入人
'created_at' => strtotime($this->created_at) ?? 0,//录入时间 'created_at' => strtotime($this->created_at) ?? 0, //录入时间
]; ];
} }
} }

View File

@ -9,7 +9,7 @@ class CropStructureResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)

View File

@ -9,7 +9,7 @@ class CropYieldResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
@ -20,7 +20,7 @@ class CropYieldResource extends JsonResource
return $this->base?->name; return $this->base?->name;
}, ''), }, ''),
'base_id' => $this->base_id, 'base_id' => $this->base_id,
'crop_name' => $this->whenLoaded('crop', function (){ 'crop_name' => $this->whenLoaded('crop', function () {
return $this->crop?->name; return $this->crop?->name;
}, ''), }, ''),
'crop_id' => $this->crop_id, 'crop_id' => $this->crop_id,
@ -28,10 +28,10 @@ class CropYieldResource extends JsonResource
'yield' => $this->yield, 'yield' => $this->yield,
'output' => $this->output, 'output' => $this->output,
'cultivated' => $this->cultivated, 'cultivated' => $this->cultivated,
'created_by' => $this->whenLoaded('createdBy', function (){ 'created_by' => $this->whenLoaded('createdBy', function () {
return $this->createdBy?->name; return $this->createdBy?->name;
}, ''),//录入人 }, ''), //录入人
'created_at' => strtotime($this->created_at) ?? 0,//录入时间 'created_at' => strtotime($this->created_at) ?? 0, //录入时间
]; ];
} }
} }

View File

@ -9,26 +9,26 @@ class DeviceResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {
return [ return [
'id' => $this->id, 'id' => $this->id,
'type' => $this->type?->typeName() ?? '未知', 'type' => $this->type?->typeName() ?? '未知',
'sn' => $this->sn, 'sn' => $this->sn,
'base_name' => $this->whenLoaded('base', function (){ 'base_name' => $this->whenLoaded('base', function () {
return $this->base?->name ?? ''; return $this->base?->name ?? '';
}, ''), }, ''),
'base_id' => $this->agricultural_base_id, 'base_id' => $this->agricultural_base_id,
'monitoring_point' => $this->monitoring_point ?? '', 'monitoring_point' => $this->monitoring_point ?? '',
'status' => $this->status?->value, 'status' => $this->status?->value,
'extends' => $this->extends ?? [], 'extends' => $this->extends ?? [],
'created_by' => $this->whenLoaded('createdBy', function (){ 'created_by' => $this->whenLoaded('createdBy', function () {
return $this->createdBy?->name; return $this->createdBy?->name;
}, ''),//录入人 }, ''), //录入人
'created_at' => strtotime($this->created_at) ?? 0,//录入时间 'created_at' => strtotime($this->created_at) ?? 0, //录入时间
]; ];
} }
} }

View File

@ -2,10 +2,8 @@
namespace App\ModelFilters; namespace App\ModelFilters;
use Carbon\Carbon;
use EloquentFilter\ModelFilter; use EloquentFilter\ModelFilter;
class AdminRoleFilter extends ModelFilter class AdminRoleFilter extends ModelFilter
{ {
} }

View File

@ -2,10 +2,8 @@
namespace App\ModelFilters; namespace App\ModelFilters;
use Carbon\Carbon;
use EloquentFilter\ModelFilter; use EloquentFilter\ModelFilter;
class AdminUserFilter extends ModelFilter class AdminUserFilter extends ModelFilter
{ {
} }

View File

@ -2,10 +2,8 @@
namespace App\ModelFilters; namespace App\ModelFilters;
use Carbon\Carbon;
use EloquentFilter\ModelFilter; use EloquentFilter\ModelFilter;
class AgriculturalBaseFilter extends ModelFilter class AgriculturalBaseFilter extends ModelFilter
{ {
} }

View File

@ -2,14 +2,14 @@
namespace App\ModelFilters; namespace App\ModelFilters;
use Carbon\Carbon;
use EloquentFilter\ModelFilter; use EloquentFilter\ModelFilter;
class CropFlowFilter extends ModelFilter class CropFlowFilter extends ModelFilter
{ {
public function year($y) public function year($y)
{ {
$y = $y ?? date('Y');//默认当前年份 $y = $y ?? date('Y'); //默认当前年份
return $this->where('time_year', $y); return $this->where('time_year', $y);
} }

View File

@ -2,14 +2,14 @@
namespace App\ModelFilters; namespace App\ModelFilters;
use Carbon\Carbon;
use EloquentFilter\ModelFilter; use EloquentFilter\ModelFilter;
class CropStructureFilter extends ModelFilter class CropStructureFilter extends ModelFilter
{ {
public function year($y) public function year($y)
{ {
$y = $y ?? date('Y');//默认当前年份 $y = $y ?? date('Y'); //默认当前年份
return $this->where('time_year', $y); return $this->where('time_year', $y);
} }
} }

View File

@ -2,14 +2,14 @@
namespace App\ModelFilters; namespace App\ModelFilters;
use Carbon\Carbon;
use EloquentFilter\ModelFilter; use EloquentFilter\ModelFilter;
class CropYieldFilter extends ModelFilter class CropYieldFilter extends ModelFilter
{ {
public function year($y) public function year($y)
{ {
$y = $y ?? date('Y');//默认当前年份 $y = $y ?? date('Y'); //默认当前年份
return $this->where('time_year', $y); return $this->where('time_year', $y);
} }

View File

@ -2,20 +2,22 @@
namespace App\ModelFilters; namespace App\ModelFilters;
use Carbon\Carbon;
use EloquentFilter\ModelFilter; use EloquentFilter\ModelFilter;
class DeviceFilter extends ModelFilter class DeviceFilter extends ModelFilter
{ {
public function point($point){ public function point($point)
{
return $this->where('monitoring_point', 'like', $point.'%'); return $this->where('monitoring_point', 'like', $point.'%');
} }
public function base($base){ public function base($base)
{
return $this->where('agricultural_base_id', $base); return $this->where('agricultural_base_id', $base);
} }
public function type($type){ public function type($type)
{
return $this->where('type', $type); return $this->where('type', $type);
} }
} }

View File

@ -2,14 +2,15 @@
namespace App\Models; namespace App\Models;
use EloquentFilter\Filterable;
use Dcat\Admin\Models\Permission as BaseAdminModel; use Dcat\Admin\Models\Permission as BaseAdminModel;
use EloquentFilter\Filterable;
class AdminPermission extends BaseAdminModel class AdminPermission extends BaseAdminModel
{ {
use Filterable; use Filterable;
public function scopeEndPoint($q){ public function scopeEndPoint($q)
{
return $q->where('slug', 'like', 'endpoint%'); return $q->where('slug', 'like', 'endpoint%');
} }
} }

View File

@ -2,8 +2,8 @@
namespace App\Models; namespace App\Models;
use EloquentFilter\Filterable;
use Dcat\Admin\Models\Role as BaseAdminModel; use Dcat\Admin\Models\Role as BaseAdminModel;
use EloquentFilter\Filterable;
class AdminRole extends BaseAdminModel class AdminRole extends BaseAdminModel
{ {

View File

@ -2,9 +2,9 @@
namespace App\Models; namespace App\Models;
use Dcat\Admin\Models\Administrator as BaseAdminModel;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use Laravel\Sanctum\HasApiTokens; use Laravel\Sanctum\HasApiTokens;
use Dcat\Admin\Models\Administrator as BaseAdminModel;
class AdminUser extends BaseAdminModel class AdminUser extends BaseAdminModel
{ {
@ -22,11 +22,13 @@ class AdminUser extends BaseAdminModel
'password', 'remember_token', 'password', 'remember_token',
]; ];
public function bases(){ public function bases()
{
return $this->belongsToMany(AgriculturalBase::class, 'admin_user_bases', 'user_id', 'base_id'); return $this->belongsToMany(AgriculturalBase::class, 'admin_user_bases', 'user_id', 'base_id');
} }
public function permissionIds(){ public function permissionIds()
{
return $this->getCachePermissions()->pluck('id'); return $this->getCachePermissions()->pluck('id');
} }
} }

View File

@ -8,12 +8,11 @@ use Peidikeji\Keywords\Models\Keywords;
class AgriculturalBase extends Model class AgriculturalBase extends Model
{ {
use Filterable; use Filterable;
protected $fillable = [ protected $fillable = [
'name', 'person', 'address', 'address_lat', 'address_lng', 'name', 'person', 'address', 'address_lat', 'address_lng',
'description', 'map', 'areas', 'workforce' 'description', 'map', 'areas', 'workforce',
]; ];
public function scopeSort($q) public function scopeSort($q)
@ -21,7 +20,8 @@ class AgriculturalBase extends Model
return $q->orderBy('created_at', 'desc'); return $q->orderBy('created_at', 'desc');
} }
public function crops(){ public function crops()
{
return $this->belongsToMany(Keywords::class, 'base_crops', 'base_id', 'crop_id'); return $this->belongsToMany(Keywords::class, 'base_crops', 'base_id', 'crop_id');
} }
} }

View File

@ -12,7 +12,7 @@ class CropFlow extends Model
protected $fillable = [ protected $fillable = [
'crop_id', 'flow_name', 'time_year', 'sale', 'user_id', 'crop_id', 'flow_name', 'time_year', 'sale', 'user_id',
'created_by', 'updated_by' 'created_by', 'updated_by',
]; ];
/** /**
@ -20,7 +20,8 @@ class CropFlow extends Model
* *
* @return void * @return void
*/ */
public function crop(){ public function crop()
{
return $this->belongsTo(Keywords::class, 'crop_id'); return $this->belongsTo(Keywords::class, 'crop_id');
} }

View File

@ -12,7 +12,7 @@ class CropYield extends Model
protected $fillable = [ protected $fillable = [
'base_id', 'crop_id', 'time_year', 'yield', 'cultivated', 'output', 'user_id', 'base_id', 'crop_id', 'time_year', 'yield', 'cultivated', 'output', 'user_id',
'created_by', 'updated_by' 'created_by', 'updated_by',
]; ];
/** /**
@ -20,7 +20,8 @@ class CropYield extends Model
* *
* @return void * @return void
*/ */
public function base(){ public function base()
{
return $this->belongsTo(AgriculturalBase::class, 'base_id'); return $this->belongsTo(AgriculturalBase::class, 'base_id');
} }
@ -29,7 +30,8 @@ class CropYield extends Model
* *
* @return void * @return void
*/ */
public function crop(){ public function crop()
{
return $this->belongsTo(Keywords::class, 'crop_id'); return $this->belongsTo(Keywords::class, 'crop_id');
} }
@ -42,5 +44,4 @@ class CropYield extends Model
{ {
return $this->belongsTo(AdminUser::class, 'updated_by'); return $this->belongsTo(AdminUser::class, 'updated_by');
} }
} }

View File

@ -2,12 +2,12 @@
namespace App\Models; namespace App\Models;
use App\Enums\DeviceType;
use App\Enums\DeviceStatus; use App\Enums\DeviceStatus;
use App\Enums\DeviceType;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Device extends Model class Device extends Model
{ {
@ -20,7 +20,7 @@ class Device extends Model
protected $casts = [ protected $casts = [
'type' => DeviceType::class, 'type' => DeviceType::class,
'status' => DeviceStatus::class, 'status' => DeviceStatus::class,
'extends' => 'array' 'extends' => 'array',
]; ];
protected $fillable = [ protected $fillable = [
@ -36,7 +36,8 @@ class Device extends Model
'updated_by', 'updated_by',
]; ];
public function base(){ public function base()
{
return $this->belongsTo(AgriculturalBase::class, 'agricultural_base_id'); return $this->belongsTo(AgriculturalBase::class, 'agricultural_base_id');
} }

View File

@ -30,7 +30,7 @@ return new class extends Migration
$table->comment('基地数据表'); $table->comment('基地数据表');
}); });
Schema::create('base_crops', function (Blueprint $table){ Schema::create('base_crops', function (Blueprint $table) {
$table->id(); $table->id();
$table->unsignedBigInteger('base_id')->comment('基地ID'); $table->unsignedBigInteger('base_id')->comment('基地ID');
$table->unsignedBigInteger('crop_id')->comment('农作物ID'); $table->unsignedBigInteger('crop_id')->comment('农作物ID');

View File

@ -4,7 +4,6 @@ namespace Database\Seeders;
use Dcat\Admin\Models\Permission; use Dcat\Admin\Models\Permission;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class EndpointPermissionSeeder extends Seeder class EndpointPermissionSeeder extends Seeder
{ {
@ -16,32 +15,32 @@ class EndpointPermissionSeeder extends Seeder
public function run() public function run()
{ {
$permissions = [ $permissions = [
'endpoint' =>['name' => '系统权限', 'curd'=>false, 'in_path'=> true, 'children' => [ 'endpoint' => ['name' => '系统权限', 'curd' => false, 'in_path' => true, 'children' => [
'monitor_data' => ['name' =>'监测数据管理', 'curd' => false, 'children'=> [ 'monitor_data' => ['name' => '监测数据管理', 'curd' => false, 'children' => [
'weather' =>['name' =>'气象管理', 'curd'=>['index']], 'weather' => ['name' => '气象管理', 'curd' => ['index']],
'camera' => ['name' =>'智能监控', 'curd'=>['index']], 'camera' => ['name' => '智能监控', 'curd' => ['index']],
'soil' => ['name' =>'土壤监控', 'curd'=>['index'], 'children'=> ['setting'=>'设置']], 'soil' => ['name' => '土壤监控', 'curd' => ['index'], 'children' => ['setting' => '设置']],
'water' => ['name' =>'水质监控', 'curd'=>['index'], 'children'=> ['setting'=>'设置']] 'water' => ['name' => '水质监控', 'curd' => ['index'], 'children' => ['setting' => '设置']],
]], ]],
'base_data' => ['name' => '基础数据管理', 'curd' => false, 'children'=>[ 'base_data' => ['name' => '基础数据管理', 'curd' => false, 'children' => [
'citydata_statistics' => ['name'=>'全市基础数据', 'curd'=> ['index', 'edit']], 'citydata_statistics' => ['name' => '全市基础数据', 'curd' => ['index', 'edit']],
'agricultural_basic' =>['name'=>'基地数据', 'curd'=>true], 'agricultural_basic' => ['name' => '基地数据', 'curd' => true],
'crops_build' => ['name' =>'农业产业结构', 'curd'=>true], 'crops_build' => ['name' => '农业产业结构', 'curd' => true],
'crops_output'=> ['name' =>'产量排行榜','curd'=>true], 'crops_output' => ['name' => '产量排行榜', 'curd' => true],
'crops_flow' => ['name' =>'农产品流向', 'curd'=>true], 'crops_flow' => ['name' => '农产品流向', 'curd' => true],
'crops_price' => ['name' =>'农产品价格走势', 'curd'=>['index'], 'children'=> ['is_enable'=>'自动监测开关']], 'crops_price' => ['name' => '农产品价格走势', 'curd' => ['index'], 'children' => ['is_enable' => '自动监测开关']],
]], ]],
'device_data' => ['name' => '设备管理', 'curd'=>false,'children'=>[ 'device_data' => ['name' => '设备管理', 'curd' => false, 'children' => [
'device' => ['name' =>'设备管理', 'curd'=>true], 'device' => ['name' => '设备管理', 'curd' => true],
]], ]],
'manage'=>['name' =>'系统管理', 'curd'=>false, 'children'=>[ 'manage' => ['name' => '系统管理', 'curd' => false, 'children' => [
'admin_users' => ['name' =>'管理员管理', 'curd'=>true, 'children'=>[ 'admin_users' => ['name' => '管理员管理', 'curd' => true, 'children' => [
'edit_password'=>'修改密码', 'enable'=>'启用/禁用' 'edit_password' => '修改密码', 'enable' => '启用/禁用',
]], ]],
'admin_roles' =>['name'=>'角色管理', 'curd' =>true], 'admin_roles' => ['name' => '角色管理', 'curd' => true],
'operation_log' => ['name' =>'操作日志', 'curd'=>['index']] 'operation_log' => ['name' => '操作日志', 'curd' => ['index']],
]] ]],
]] ]],
]; ];
$this->createPermissionData($permissions); $this->createPermissionData($permissions);
} }

View File

@ -23,8 +23,7 @@ Route::group(['middleware' => 'auth:sanctum'], function () {
Route::get('permissions', [AdminPermissionController::class, 'index']); Route::get('permissions', [AdminPermissionController::class, 'index']);
Route::get('device-types', [DeviceController::class, 'types']); Route::get('device-types', [DeviceController::class, 'types']);
Route::group(['as'=>'endpoint.'], function (){ Route::group(['as' => 'endpoint.'], function () {
//全市基础数据 //全市基础数据
Route::get('citydata-statistics', [CityDataController::class, 'statistics'])->name('citydata_statistics.index'); Route::get('citydata-statistics', [CityDataController::class, 'statistics'])->name('citydata_statistics.index');
//基地数据 //基地数据