Browse Source

克隆

master
lijunjie 3 years ago
parent
commit
0e47a40b45
  1. 74
      app/Admin/Actions/Grid/CloneEquipResourceRecordAction.php
  2. 29
      app/Admin/Controllers/EquipResourceRecordController.php
  3. 86
      app/Admin/Forms/CloneEquipResourceRecordForm.php
  4. 49
      app/Admin/Services/EquipResourceRecordService.php
  5. 37
      database/migrations/2022_08_17_082303_create_record_equip_resource_write_table.php
  6. 3
      database/migrations/2022_08_17_085709_create_equip_resource_record_table.php

74
app/Admin/Actions/Grid/CloneEquipResourceRecordAction.php

@ -0,0 +1,74 @@
<?php
namespace App\Admin\Actions\Grid;
use App\Admin\Forms\CloneEquipResourceRecordForm;
use Dcat\Admin\Actions\Response;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Traits\HasPermissions;
use Dcat\Admin\Widgets\Modal;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
class CloneEquipResourceRecordAction extends RowAction
{
/**
* @return string
*/
protected $title = '克隆';
/**
* Handle the action request.
*
* @param Request $request
*
* @return Response
*/
public function handle(Request $request)
{
// dump($this->getKey());
return $this->response()
->success('Processed successfully: '.$this->getKey())
->redirect('/');
}
/**
* @return string|array|void
*/
public function confirm()
{
// return ['Confirm?', 'contents'];
}
/**
* @param Model|Authenticatable|HasPermissions|null $user
*
* @return bool
*/
protected function authorize($user): bool
{
return true;
}
/**
* @return array
*/
protected function parameters()
{
return [];
}
public function render()
{
// 实例化表单类并传递自定义参数
$form = CloneEquipResourceRecordForm::make()->payload($this->getRow()->getAttributes());
return Modal::make()
->lg()
->title($this->title)
->body($form)
->button($this->title);
}
}

29
app/Admin/Controllers/EquipResourceRecordController.php

@ -2,6 +2,7 @@
namespace App\Admin\Controllers; namespace App\Admin\Controllers;
use App\Admin\Actions\Grid\CloneEquipResourceRecordAction;
use App\Admin\Repositories\EquipResourceRecord; use App\Admin\Repositories\EquipResourceRecord;
use App\Admin\Services\EquipResourceRecordService; use App\Admin\Services\EquipResourceRecordService;
use Dcat\Admin\Form; use Dcat\Admin\Form;
@ -26,6 +27,9 @@ class EquipResourceRecordController extends AdminController
$grid->column('mode'); $grid->column('mode');
$grid->column('expired_time'); $grid->column('expired_time');
$grid->column('trigger_msg'); $grid->column('trigger_msg');
$grid->column('api-key');
$grid->column('res_id');
$grid->column('val');
$grid->column('created_at'); $grid->column('created_at');
$grid->column('updated_at')->sortable(); $grid->column('updated_at')->sortable();
@ -33,6 +37,8 @@ class EquipResourceRecordController extends AdminController
$filter->equal('id'); $filter->equal('id');
}); });
$grid->actions([new CloneEquipResourceRecordAction()]);
}); });
} }
@ -53,6 +59,9 @@ class EquipResourceRecordController extends AdminController
$show->field('mode'); $show->field('mode');
$show->field('expired_time'); $show->field('expired_time');
$show->field('trigger_msg'); $show->field('trigger_msg');
$show->column('api-key');
$show->column('res_id');
$show->column('val');
$show->field('created_at'); $show->field('created_at');
$show->field('updated_at'); $show->field('updated_at');
}); });
@ -77,6 +86,10 @@ class EquipResourceRecordController extends AdminController
$form->text('mode'); $form->text('mode');
$form->text('expired_time'); $form->text('expired_time');
$form->text('trigger_msg'); $form->text('trigger_msg');
$form->text('api-key');
$form->text('res_id');
$form->text('val');
$form->display('created_at'); $form->display('created_at');
$form->display('updated_at'); $form->display('updated_at');
@ -86,11 +99,21 @@ class EquipResourceRecordController extends AdminController
public function store() public function store()
{ {
$param = request()->only(['imei', 'obj_id', 'obj_inst_id', 'mode', 'expired_time', 'trigger_msg']); $param = request()->all();
$equip_resource_service = new EquipResourceRecordService(); $equip_resource_service = new EquipResourceRecordService();
return $equip_resource_service->writeCache($param); $res = $equip_resource_service->writeCache($param);
$this->form()->store();
if (!empty($res['errno'])){
if ($res['errno'] === 0) {
$this->form()->store();
return $this->form()->response()->success('提交成功');
}
return $this->form()->response()->error($res['error']);
}
return $this->form()->store(); return $this->form()->response()->error('提交失败');
} }
} }

86
app/Admin/Forms/CloneEquipResourceRecordForm.php

@ -0,0 +1,86 @@
<?php
namespace App\Admin\Forms;
use App\Admin\Services\EquipResourceRecordService;
use App\Models\EquipResourceRecord as EquipResourceRecordModel;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
class CloneEquipResourceRecordForm extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$equip_resource_service = new EquipResourceRecordService();
$res = $equip_resource_service->writeCache($input);
if (!empty($res['errno'])){
if ($res['errno'] === 0) {
$equip_resource_model = new EquipResourceRecordModel();
$equip_resource_model['imei'] = $input['imei'];
$equip_resource_model['obj_id'] = $input['obj_id'];
$equip_resource_model['obj_inst_id'] = $input['obj_inst_id'];
$equip_resource_model['mode'] = $input['mode'];
$equip_resource_model['expired_time'] = $input['expired_time'];
$equip_resource_model['trigger_msg'] = $input['trigger_msg'];
$equip_resource_model['api-key'] = $input['api-key'];
$equip_resource_model['res_id'] = $input['res_id'];
$equip_resource_model['val'] = $input['val'];
$equip_resource_model->save();
return $this->response()->success('提交成功')->refresh();;
}
return $this->response()->error($res['error']);
}
return $this->response()->error('提交失败');
}
/**
* Build a form here.
*/
public function form()
{
$this->text('imei');
$this->text('obj_id');
$this->text('obj_inst_id');
$this->text('mode');
$this->text('expired_time');
$this->text('trigger_msg');
$this->text('api-key');
$this->text('res_id');
$this->text('val');
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [
'imei' => $this->payload['imei'],
'obj_id' => $this->payload['obj_id'],
'obj_inst_id' => $this->payload['obj_inst_id'],
'mode' => $this->payload['mode'],
'expired_time' => $this->payload['expired_time'],
'trigger_msg' => $this->payload['trigger_msg'],
'api-key' => $this->payload['api-key'],
'res_id' => $this->payload['res_id'],
'val' => $this->payload['val'],
];
}
}

49
app/Admin/Services/EquipResourceRecordService.php

@ -9,40 +9,18 @@ class EquipResourceRecordService
{ {
public function writeCache($param) public function writeCache($param)
{ {
$query = http_build_query([
$query = http_build_query($param); 'imei' => $param['imei'],
// Http::fake(); 'obj_id' => $param['obj_id'],
// $response = Http::acceptJson() 'obj_inst_id' => $param['obj_inst_id'],
// ->withHeaders([ 'mode' => $param['mode'],
// 'api-key' => 'uEMPPhc4XKb25VLQSRJ3u=goLuw=', 'expired_time' => $param['expired_time'],
// 'Content-Type' => 'application/json', 'trigger_msg' => $param['trigger_msg'],
// ])->dump() ]);
// ->post(config('onenet.api_host') . '/nbiot/offline?' . $query, [
// 'data' => [
// [
// 'res_id' => 5750,
// 'val' => '68C0086647205990206801090111000000000002018D16',
// ]
// ]
// ]);
// $response = Http::acceptJson()
// ->withHeaders([
// 'api-key' => 'uEMPPhc4XKb25VLQSRJ3u=goLuw=',
// 'Content-Type' => 'application/json',
// ])->dump()
// ->post('http://local.onenetadmin.com/admin/test?' . $query, [
// 'data' => [
// [
// 'res_id' => 5750,
// 'val' => '68C0086647205990206801090111000000000002018D16',
// ]
// ]
// ]);
$client = new Client([ $client = new Client([
'base_uri' => config('onenet.api_host'), 'base_uri' => config('onenet.api_host'),
'handler' => [ 'headers' => [
'api-key' => 'uEMPPhc4XKb25VLQSRJ3u=goLuw=', 'api-key' => $param['api-key'],
] ]
]); ]);
@ -50,15 +28,14 @@ class EquipResourceRecordService
'json' => [ 'json' => [
'data' => [ 'data' => [
[ [
'res_id' => 5750, 'res_id' => $param['res_id'],
'val' => '68C0086647205990206801090111000000000002018D16', 'val' => $param['val'],
] ]
] ]
] ]
]); ]);
var_dump($response->getBody()->getContents()); return json_decode($response->getBody()->getContents(), true);
// return $response->json();
} }
} }

37
database/migrations/2022_08_17_082303_create_record_equip_resource_write_table.php

@ -1,37 +0,0 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateRecordEquipResourceWriteTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('record_equip_resource_write', function (Blueprint $table) {
$table->increments('id');
$table->string('imei')->default('')->comment('nbiot设备的身份码');
$table->string('obj_id')->default('')->comment('设备的object id , 对应到平台模型中为数据流id,必填');
$table->string('obj_inst_id')->default('0')->comment('nbiot设备object下具体一个instance的id ,对应到平台模型中数据点key值的一部分,必填');
$table->string('mode')->default('')->comment('write的写模式,只能是1或者2');
$table->string('expired_time')->default('')->comment('命令过期时间戳,必填且大于valid_time');
$table->string('trigger_msg')->default('')->comment('命令触发的上行消息类型,填写时必须在[1,7]之间;不填写默认为7');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('record_equip_resource_write');
}
}

3
database/migrations/2022_08_17_085709_create_equip_resource_record_table.php

@ -21,6 +21,9 @@ class CreateEquipResourceRecordTable extends Migration
$table->string('mode')->default('')->comment('write的写模式,只能是1或者2'); $table->string('mode')->default('')->comment('write的写模式,只能是1或者2');
$table->string('expired_time')->default('')->comment('命令过期时间戳,必填且大于valid_time'); $table->string('expired_time')->default('')->comment('命令过期时间戳,必填且大于valid_time');
$table->string('trigger_msg')->default('')->comment('命令触发的上行消息类型,填写时必须在[1,7]之间;不填写默认为7'); $table->string('trigger_msg')->default('')->comment('命令触发的上行消息类型,填写时必须在[1,7]之间;不填写默认为7');
$table->string('api-key')->default('');
$table->integer('res_id');
$table->string('val')->default('');
$table->timestamps(); $table->timestamps();
}); });
} }

Loading…
Cancel
Save