Browse Source

校验码

master
lijunjie 3 years ago
parent
commit
ca9acc774b
  1. 56
      app/Admin/Controllers/EquipResourceRecordController.php
  2. 91
      app/Admin/Forms/CloneEquipResourceRecordForm.php
  3. 73
      app/Admin/Renders/EquipResourceRecordRender.php
  4. 18
      app/Admin/Services/EquipResourceRecordService.php
  5. 10
      app/Admin/routes.php

56
app/Admin/Controllers/EquipResourceRecordController.php

@ -3,15 +3,27 @@
namespace App\Admin\Controllers;
use App\Admin\Actions\Grid\CloneEquipResourceRecordAction;
use App\Admin\Renders\EquipResourceRecordRender;
use App\Admin\Repositories\EquipResourceRecord;
use App\Admin\Services\EquipResourceRecordService;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class EquipResourceRecordController extends AdminController
{
public function create(Content $content)
{
return $content
->translation($this->translation())
->title($this->title())
->description($this->description()['create'] ?? trans('admin.create'))
->body($this->form())
->body(new EquipResourceRecordRender());
}
/**
* Make a grid builder.
*
@ -59,9 +71,9 @@ class EquipResourceRecordController extends AdminController
$show->field('mode');
$show->field('expired_time');
$show->field('trigger_msg');
$show->column('api-key');
$show->column('res_id');
$show->column('val');
$show->field('api-key');
$show->field('res_id');
$show->field('val');
$show->field('created_at');
$show->field('updated_at');
});
@ -80,15 +92,30 @@ class EquipResourceRecordController extends AdminController
return Form::make(new EquipResourceRecord(), function (Form $form) {
$form->display('id');
$form->text('imei');
$form->text('obj_id');
$form->text('obj_inst_id');
$form->text('mode');
$form->text('expired_time');
$form->text('trigger_msg');
$form->text('api-key');
$form->text('res_id');
$form->text('val');
$form->text('imei')->required();
$form->text('obj_id')->required();
$form->text('obj_inst_id')->default(0)->required();
$form->text('mode')->default(1)->required();
$form->datetime('expired_time')->required();
$form->text('trigger_msg')->default(4)->required();
$form->text('api-key')->required();
$form->text('res_id')->required();
// 68C0 0866472059902068 01 09 0111 00 0000000002 01 8D16
// $a = EquipResourceRecordService::getCheckCode('68C008664720599020680109011100000000000201');
$form->text('起始符')->default(68)->disable(true);
$form->text('设备类型')->default('C0')->disable(true);
$form->text('设备号');
$form->text('控制码')->default('01')->disable(true);
$form->text('数据长度')->default('09')->disable(true);
$form->text('指令标识')->default('0111')->disable(true);
$form->text('数据')->default('00')->disable(true);
$form->select('命令方式')->options(['00', '11'])->disable(false);
$form->text('自定义数组');
$form->text('固定字节')->default('01')->disable(true);
$form->text('累加和校验')->disable(true);
$form->text('结束符')->default('16')->disable(true);
$form->text('val')->required();
$form->display('created_at');
@ -99,15 +126,14 @@ class EquipResourceRecordController extends AdminController
public function store()
{
$param = request()->all();
$param = request()->only(['imei', 'obj_id', 'obj_inst_id', 'mode', 'expired_time', 'trigger_msg', 'api-key', 'res_id', 'val']);
$equip_resource_service = new EquipResourceRecordService();
$res = $equip_resource_service->writeCache($param);
$this->form()->store();
if (!empty($res['errno'])){
if ($res['errno'] === 0) {
$this->form()->store();
$this->form()->store($param);
return $this->form()->response()->success('提交成功');
}

91
app/Admin/Forms/CloneEquipResourceRecordForm.php

@ -52,15 +52,62 @@ class CloneEquipResourceRecordForm extends Form implements LazyRenderable
*/
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');
$this->text('imei')->required();
$this->text('obj_id')->required();
$this->text('obj_inst_id')->required();
$this->text('mode')->required();
$this->datetime('expired_time')->required();
$this->text('trigger_msg')->required();
$this->text('api-key')->required();
$this->text('res_id')->required();
// 68C0 0866472059902068 0109 0111 00 0000000002 01 8D16
// $a = EquipResourceRecordService::getCheckCode('68C008664720599020680109011100000000000201');
$this->text('起始符')->disable(true);
$this->text('设备类型')->disable(true);
$this->text('设备号');
$this->text('控制码')->disable(true);
$this->text('数据长度')->disable(true);
$this->text('指令标识')->disable(true);
$this->text('数据')->disable(true);
$this->select('命令方式')->options(['00', '11'])->disable(false);
$this->text('自定义数组');
$this->text('固定字节')->disable(true);
$this->text('累加和校验')->disable(true);
$this->text('结束符')->disable(true);
$this->text('val')->required();
// $this->row(function ($form) {
// $form->text('imei');
// $form->text('obj_id');
// $form->text('obj_inst_id');
// $form->text('mode');
//// $form->datetimeRange('expired_time');
// $form->text('trigger_msg');
// $form->text('api-key');
// $form->text('res_id');
//
// $form->width(1)->display('title')->value('val');
// $form->width(1)->text('val起始符')->default('aa')->disable(true);
// $form->width(1)->text('设备类型');
// $form->width(1)->text('设备号');
// $form->width(1)->text('控制码');
// $form->width(1)->text('数据长度');
// $form->width(1)->text('指令标识');
// $form->width(1)->text('数据');
// $form->width(1)->select('命令方式');
// $form->width(1)->text('自定义数组');
// $form->width(1)->text('固定字节');
// $form->width(1)->text('累加和校验');
// $form->width(1)->text('结束符');
//
//
//// $form->width(3)->text('name')->required();
//// $form->width(3)->date('born')->required();
//// $form->width(3)->select('education')->options([])->required();
//// $form->width(3)->text('nation')->required();
//// $form->width(4)->text('native')->required();
// });
}
/**
@ -70,6 +117,20 @@ class CloneEquipResourceRecordForm extends Form implements LazyRenderable
*/
public function default()
{
$val = $this->payload['val'];
$val1 = substr($val, 0, 2);
$val2 = substr($val, 2, 2);
$val3 = substr($val, 4, 16);
$val4 = substr($val, 20, 2);
$val5 = substr($val, 22, 2);
$val6 = substr($val, 24, 2);
$val7 = substr($val, 26, 2);
$val8 = substr($val, 28, 2);
$val9 = substr($val, 30, 10);
$val10 = substr($val, 40, 2);
$val11 = substr($val, 42, 2);
$val12 = substr($val, 44, 2);
return [
'imei' => $this->payload['imei'],
@ -80,6 +141,18 @@ class CloneEquipResourceRecordForm extends Form implements LazyRenderable
'trigger_msg' => $this->payload['trigger_msg'],
'api-key' => $this->payload['api-key'],
'res_id' => $this->payload['res_id'],
'起始符' => $val1,
'设备类型' => $val2,
'设备号' => $val3,
'控制码' => $val4,
'数据长度' => $val5,
'指令标识' => $val6,
'数据' => $val7,
'命令方式' => $val8,
'自定义数组' => $val9,
'固定字节' => $val10,
'累加和校验' => $val11,
'结束符' => $val12,
'val' => $this->payload['val'],
];
}

73
app/Admin/Renders/EquipResourceRecordRender.php

@ -0,0 +1,73 @@
<?php
namespace App\Admin\Renders;
use Dcat\Admin\Admin;
use Illuminate\Contracts\Support\Renderable;
class EquipResourceRecordRender implements Renderable {
public function script()
{
return <<<JS
$('.field_设备号').change(function () {
var res = getCheckCode()
})
$('.field_命令方式').change(function () {
var res = getCheckCode()
})
$('.field_自定义数组').change(function () {
var res = getCheckCode()
})
function getCheckCode() {
var val1 = $('.field_起始符').val();
var val2 = $('.field_设备类型').val();
var val3 = $('.field_设备号').val();
var val4 = $('.field_控制码').val();
var val5 = $('.field_数据长度').val();
var val6 = $('.field_指令标识').val();
var val7 = $('.field_数据').val();
var val8 = $('.field_命令方式').val();
var val9 = $('.field_自定义数组').val();
var val10 = $('.field_固定字节').val();
var val11 = $('.field_累加和校验').val();
var val12 = $('.field_结束符').val();
if (val3 == '' || val8 == '' || val9 == ''){
return;
}
if (val8 == 0){
val8 = '00'
} else {
val8 = '11'
}
let str = val1 + val2 + val3 + val4 + val5 + val6 + val7 + val8 + val8 + val9 + val10
let itotal=0,len = str.length,num = 0;
while(num<len){
let s = str.substring(num,num+2);
itotal += parseInt(s,16)
num=num+2;
}
let mode = itotal%256;
let shex = mode.toString(16)
let res =shex.substr(-2).toUpperCase();
$('.field_累加和校验').val(res)
$('.field_val').val(str + res + val12)
return res;
}
JS;
}
public function render()
{
Admin::script($this->script());
}
}

18
app/Admin/Services/EquipResourceRecordService.php

@ -38,4 +38,22 @@ class EquipResourceRecordService
return json_decode($response->getBody()->getContents(), true);
}
public static function getCheckCode($data)
{
if ($data) {
$arr = array();
$arr = str_split($data, 2);
$result = 0;
for ($i = 0; $i < count($arr); $i++) {
//把十六进制转换为十进制
$result = $result + hexdec($arr[$i]);
}
var_dump($result);
$result = strtoupper('0' . dechex($result)); //转换成大写
// $result = substr($result, -2);
return $result;
}
}
}

10
app/Admin/routes.php

@ -18,13 +18,3 @@ Route::group([
});
Route::group([
'prefix' => config('admin.route.prefix'),
'namespace' => config('admin.route.namespace'),
], function (Router $router) {
$router->get('/test', 'HomeController@test');
});

Loading…
Cancel
Save