|
@@ -1,808 +0,0 @@
|
|
|
-<?php
|
|
|
-
|
|
|
-namespace catchAdmin\device\controller;
|
|
|
-
|
|
|
-use catcher\base\CatchRequest as Request;
|
|
|
-use catcher\CatchResponse;
|
|
|
-use catcher\base\CatchController;
|
|
|
-use catchAdmin\device\model\Device as deviceModel;
|
|
|
-use catcher\Utils;
|
|
|
-use catcher\library\excel\Excel;
|
|
|
-use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
|
-use catchAdmin\device\excel\BadgesExport;
|
|
|
-use catchAdmin\device\excel\CardsExport;
|
|
|
-use catchAdmin\permissions\model\Roles;
|
|
|
-use catchAdmin\permissions\model\Users;
|
|
|
-use catcher\generate\build\types\Arr;
|
|
|
-use \think\facade\Db;
|
|
|
-use think\facade\Cache;
|
|
|
-
|
|
|
-class CardDevice extends CatchController
|
|
|
-{
|
|
|
- protected $deviceModel;
|
|
|
-
|
|
|
- public function __construct(DeviceModel $deviceModel)
|
|
|
- {
|
|
|
- $this->deviceModel = $deviceModel;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 列表
|
|
|
- * @time 2021年08月28日 16:57
|
|
|
- * @param Request $request
|
|
|
- */
|
|
|
- public function index(Request $request): \think\Response
|
|
|
- {
|
|
|
- $device_type = $request->get('device_type');
|
|
|
- $field = $request->get('field') ?: 'id';
|
|
|
- $order = $request->get('order') ?: 'desc';
|
|
|
- $list = $this->deviceModel->getDeviceList($device_type, $field, $order);
|
|
|
-
|
|
|
- foreach ($list as &$item) {
|
|
|
- if ($item['online_time'] < $item['wifi_online_time']) {
|
|
|
- $item['last_online_time'] = $item['wifi_online_time'];
|
|
|
- $item['longitude'] = $item['wifi_longitude'];
|
|
|
- $item['latitude'] = $item['wifi_latitude'];
|
|
|
- } else {
|
|
|
- $item['last_online_time'] = $item['online_time'];
|
|
|
- }
|
|
|
- }
|
|
|
- return CatchResponse::paginate($list);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 根据用户id获取设备
|
|
|
- * @time 2021年08月28日 16:57
|
|
|
- * @param Request $request
|
|
|
- */
|
|
|
- public function getDeviceByUserId(Request $request): \think\Response
|
|
|
- {
|
|
|
- return CatchResponse::paginate($this->deviceModel->getList());
|
|
|
- }
|
|
|
- /**
|
|
|
- * 保存信息
|
|
|
- * @time 2021年08月28日 16:57
|
|
|
- * @param Request $request
|
|
|
- */
|
|
|
- public function save(Request $request): \think\Response
|
|
|
- {
|
|
|
- $depart_id = $request->post('department_id');
|
|
|
- if (!$depart_id) {
|
|
|
- return CatchResponse::fail('请选择所属部门');
|
|
|
- }
|
|
|
- $imei = $request->post('imei');
|
|
|
- if (!$imei) {
|
|
|
- return CatchResponse::fail('请输入设备imei号');
|
|
|
- }
|
|
|
- if (mb_strlen($imei) != 15) {
|
|
|
- return CatchResponse::fail('imei号格式不正确');
|
|
|
- }
|
|
|
- if ($this->deviceModel->where('imei', $imei)->find()) {
|
|
|
- return CatchResponse::fail('imei号已存在');
|
|
|
- }
|
|
|
- $creator_id = $request->post('creator_id');
|
|
|
- $type = $request->post('type');
|
|
|
- if ($type == 1) { //个人卡牌导入
|
|
|
- $data = array(
|
|
|
- 'department_id' => $depart_id,
|
|
|
- 'imei' => $imei,
|
|
|
- 'rfid' => substr($imei, -8),
|
|
|
- 'device_name' => '设备' . substr($imei, -4),
|
|
|
- 'alarm_state' => 0,
|
|
|
- 'device_type' => 0,
|
|
|
- 'use_state' => 0,
|
|
|
- 'net_state' => 2,
|
|
|
- 'creator_id' => $creator_id,
|
|
|
- 'created_at' => time(),
|
|
|
- 'updated_at' => time()
|
|
|
- );
|
|
|
- if (!$this->deviceModel->storeBy($data)) {
|
|
|
- return CatchResponse::fail('添加设备失败');
|
|
|
- }
|
|
|
- $redis=Cache::store('redis')->handler();
|
|
|
- $redis->rpush('c61_voice_cneter_add_list', $imei);
|
|
|
- return CatchResponse::success();
|
|
|
- } else {
|
|
|
- $realname = $request->post('realname');
|
|
|
- $user_no = $request->post('user_no');
|
|
|
- $phone = $request->post('phone');
|
|
|
- //realname user_no phone 有一个存在,其他也应该必填
|
|
|
- if (!$realname) {
|
|
|
- return CatchResponse::fail('请输入用户姓名');
|
|
|
- }
|
|
|
- if (!$user_no) {
|
|
|
- return CatchResponse::fail('请输入用户编号');
|
|
|
- }
|
|
|
- if (!$phone) {
|
|
|
- return CatchResponse::fail('请输入手机号码');
|
|
|
- }
|
|
|
- //添加用户
|
|
|
- $role_id_card_group = (new Roles())->where('identify', 'group_card_user')->value('id');
|
|
|
- $user_info = (new Users())
|
|
|
- ->alias('u')
|
|
|
- ->where('u.username', $phone)
|
|
|
- ->join('user_has_roles r', 'u.id = r.uid and r.role_id=' . $role_id_card_group)
|
|
|
- ->find();
|
|
|
- if ($user_info) {
|
|
|
- $uid = $user_info['uid'];
|
|
|
- (new Users())->where('id', $uid)->update(['realname' => $realname, 'user_no' => $user_no]);
|
|
|
- } else { //添加用户
|
|
|
- $user = array(
|
|
|
- 'username' => $phone,
|
|
|
- 'password' => substr($imei, -8),
|
|
|
- 'realname' => $realname,
|
|
|
- 'user_no' => $user_no,
|
|
|
- 'phone' => $phone,
|
|
|
- 'department_id' => $depart_id,
|
|
|
- 'creator_id' => $creator_id,
|
|
|
- 'created_at' => time(),
|
|
|
- 'updated_at' => time()
|
|
|
- );
|
|
|
- // var_dump($user);
|
|
|
- $uid = (new Users())->createBy($user);
|
|
|
- Db::table('user_has_roles')->insert(['uid' => $uid, 'role_id' => $role_id_card_group]);
|
|
|
- }
|
|
|
- //保存设备信息
|
|
|
- $data = array(
|
|
|
- 'department_id' => $depart_id,
|
|
|
- 'imei' => $imei,
|
|
|
- 'rfid' => substr($imei, -8),
|
|
|
- 'device_name' => '设备' . substr($imei, -4),
|
|
|
- 'user_id' => $uid,
|
|
|
- 'alarm_state' => 0,
|
|
|
- 'device_type' => 0,
|
|
|
- 'use_state' => 1,
|
|
|
- 'net_state' => 2,
|
|
|
- 'creator_id' => $creator_id,
|
|
|
- 'created_at' => time(),
|
|
|
- 'updated_at' => time()
|
|
|
- );
|
|
|
- //添加设备
|
|
|
- if ($this->deviceModel->storeBy($data)) {
|
|
|
- $redis=Cache::store('redis')->handler();
|
|
|
- $redis->rpush('c61_voice_cneter_add_list', $imei);
|
|
|
- return CatchResponse::success();
|
|
|
- }
|
|
|
- return CatchResponse::fail('添加设备失败');
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 读取
|
|
|
- * @time 2021年08月28日 16:57
|
|
|
- * @param $id
|
|
|
- */
|
|
|
- public function read($id): \think\Response
|
|
|
- {
|
|
|
- return CatchResponse::success($this->deviceModel->findBy($id));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 更新
|
|
|
- * @time 2021年08月28日 16:57
|
|
|
- * @param Request $request
|
|
|
- * @param $id
|
|
|
- */
|
|
|
- public function update(Request $request, $id): \think\Response
|
|
|
- {
|
|
|
- $depart_id = $request->post('department_id');
|
|
|
- if (!$depart_id) {
|
|
|
- return CatchResponse::fail('请选择所属部门');
|
|
|
- }
|
|
|
- $imei = $request->post('imei');
|
|
|
- if (count(explode(',', $imei)) > 1) {
|
|
|
- return CatchResponse::fail('imei格式不正确');
|
|
|
- }
|
|
|
- $check_id = $this->deviceModel->where('imei', $imei)->value('id');
|
|
|
- if ($check_id && $check_id != $id) {
|
|
|
- return CatchResponse::fail('imei号已存在');
|
|
|
- }
|
|
|
- //更新设备信息
|
|
|
- $data = array(
|
|
|
- 'department_id' => $depart_id,
|
|
|
- 'imei' => $imei,
|
|
|
- 'rfid' => substr($imei, -8),
|
|
|
- 'updated_at' => time()
|
|
|
- );
|
|
|
- if (isset(($request->post())['creator'])) {
|
|
|
- $data['creator_id'] = $request->post('creator');
|
|
|
- }
|
|
|
- if ($this->deviceModel->where('id', $id)->update($data)) {
|
|
|
- return CatchResponse::success();
|
|
|
- }
|
|
|
- return CatchResponse::fail('更新设备失败');
|
|
|
-
|
|
|
- // return CatchResponse::success($this->deviceModel->updateBy($id, $request->post()));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 删除
|
|
|
- * @time 2021年08月28日 16:57
|
|
|
- * @param $id
|
|
|
- */
|
|
|
- public function delete($id): \think\Response
|
|
|
- {
|
|
|
- return CatchResponse::success($this->deviceModel->deleteBy($id, true));
|
|
|
- }
|
|
|
- /**
|
|
|
- * 查询告警列表
|
|
|
- * @time 2021年05月24日
|
|
|
- * @return \think\response\Json
|
|
|
- */
|
|
|
- public function queryAlarmList(Request $request): \think\Response
|
|
|
- {
|
|
|
- return CatchResponse::paginate($this->deviceModel->queryAlarmList());
|
|
|
- }
|
|
|
- /**
|
|
|
- * 导出
|
|
|
- *
|
|
|
- * @time 2020年09月08日
|
|
|
- * @param Excel $excel
|
|
|
- * @param DeviceExport $deviceExport
|
|
|
- * @throws \PhpOffice\PhpSpreadsheet\Exception
|
|
|
- * @return \think\response\Json
|
|
|
- */
|
|
|
- public function export_card(Excel $excel, CardsExport $CardsExport)
|
|
|
- {
|
|
|
- // var_dump(Utils::publicPath('export/users'));//导出路径
|
|
|
- return CatchResponse::success($excel->save($CardsExport, Utils::publicPath('export/cards'), 'local', '卡牌设备列表'));
|
|
|
- }
|
|
|
- /**
|
|
|
- * 导入卡牌设备
|
|
|
- *
|
|
|
- * @time 2020年09月08日
|
|
|
- * @param Excel $excel
|
|
|
- * @param DeviceExport $deviceExport
|
|
|
- * @throws \PhpOffice\PhpSpreadsheet\Exception
|
|
|
- * @return \think\response\Json
|
|
|
- */
|
|
|
- public function importCards(Request $request)
|
|
|
- {
|
|
|
- $url = $request->post('url');
|
|
|
- if (!$url) {
|
|
|
- return CatchResponse::fail('请上传文件');
|
|
|
- }
|
|
|
- $depart_id = $request->post('depart_id');
|
|
|
- if (!$depart_id) {
|
|
|
- return CatchResponse::fail('请选择部门');
|
|
|
- }
|
|
|
- $creator_id = $request->post('creator_id');
|
|
|
- //解析地址
|
|
|
- $parse_url = parse_url($url)['path'];
|
|
|
- //载入excel表格
|
|
|
- $objPHPExcel = IOFactory::load(public_path() . $parse_url);
|
|
|
- // var_dump($objPHPExcel);
|
|
|
- //获取表名,一维数组,值是表名。如:array('sheet1', 'sheet2', 'sheet3')
|
|
|
- // $nameArr = $objPHPExcel->getSheetNames();
|
|
|
- // var_dump($nameArr);
|
|
|
- //获取表的数量
|
|
|
- $sheetCount = $objPHPExcel->getSheetCount();
|
|
|
- $fail = 0; //失败条数
|
|
|
- $success = 0; //成功条数
|
|
|
- $total = 0; //总共学生数
|
|
|
- $personal_data = []; //个人卡牌
|
|
|
- $group_data = []; //团体卡牌
|
|
|
- //循环读取每一张表
|
|
|
- for ($index = 0; $index < $sheetCount; $index++) {
|
|
|
- //设置当前要读取的表
|
|
|
- $sheet = $objPHPExcel->getSheet($index); //excel中的第一张sheet
|
|
|
- // var_dump($sheet);exit;
|
|
|
- $highestRow = $sheet->getHighestRow(); // 取得总行数
|
|
|
- // var_dump($highestRow);
|
|
|
- if ($highestRow <= 2) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- $total += $highestRow - 2;
|
|
|
- for ($j = 3; $j <= $highestRow; $j++) {
|
|
|
- $data = array(); //每条学生信息
|
|
|
- $imei = trim($sheet->getCell("A" . $j)->getFormattedValue()); //imei
|
|
|
- // var_dump($imei);
|
|
|
- if (mb_strlen($imei) != 15) {
|
|
|
- $fail++;
|
|
|
- $msg = '导入设备:' . $imei . '失败:imei编号格式不正确';
|
|
|
- $this->importFailLog($msg);
|
|
|
- continue;
|
|
|
- }
|
|
|
- $realname = trim($sheet->getCell("B" . $j)->getFormattedValue()); //姓名
|
|
|
- $user_no = trim($sheet->getCell("C" . $j)->getFormattedValue()); //用户编号
|
|
|
- $phone = trim($sheet->getCell("D" . $j)->getFormattedValue()); //手机号
|
|
|
- if (!$realname && !$user_no && !$phone) { //导入个人用户设备
|
|
|
- $data = array(
|
|
|
- 'department_id' => $depart_id,
|
|
|
- 'imei' => $imei,
|
|
|
- 'rfid' => substr($imei, -8),
|
|
|
- 'device_name' => '设备' . substr($imei, -4),
|
|
|
- 'alarm_state' => 0,
|
|
|
- 'device_type' => 0,
|
|
|
- 'use_state' => 0,
|
|
|
- 'net_state' => 2,
|
|
|
- 'creator_id' => $creator_id,
|
|
|
- 'created_at' => time(),
|
|
|
- 'updated_at' => time()
|
|
|
- );
|
|
|
- //查询设备
|
|
|
- $info = $this->deviceModel->where('imei', $imei)->find();
|
|
|
- if ($info) {
|
|
|
- $fail++;
|
|
|
- $msg = '导入设备:' . $imei . '失败:imei编号已存在';
|
|
|
- $this->importFailLog($msg);
|
|
|
- continue;
|
|
|
- }
|
|
|
- //添加设备
|
|
|
- // if ($this->deviceModel->createBy($data)) {
|
|
|
- // $success++;
|
|
|
- // } else {
|
|
|
- // $fail++;
|
|
|
- // $msg = '导入设备:' . $imei . '失败:添加设备失败';
|
|
|
- // $this->importFailLog($msg);
|
|
|
- // continue;
|
|
|
- // }
|
|
|
- array_push($personal_data, $data);
|
|
|
- } else { //团体用户设备
|
|
|
- if (!$realname) {
|
|
|
- $fail++;
|
|
|
- $msg = '导入设备:' . $imei . '失败:用户姓名不存在';
|
|
|
- $this->importFailLog($msg);
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (!$user_no) {
|
|
|
- $fail++;
|
|
|
- $msg = '导入设备:' . $imei . '失败:用户编号不存在';
|
|
|
- $this->importFailLog($msg);
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (!$phone) {
|
|
|
- $fail++;
|
|
|
- $msg = '导入设备:' . $imei . '失败:用户手机号不存在';
|
|
|
- $this->importFailLog($msg);
|
|
|
- continue;
|
|
|
- }
|
|
|
- //保存用户信息
|
|
|
- $role_id_card_group = (new Roles())->where('identify', 'group_card_user')->value('id');
|
|
|
- $user_info = (new Users())
|
|
|
- ->alias('u')
|
|
|
- ->where('u.phone', $phone)
|
|
|
- ->join('user_has_roles r', 'u.id = r.uid and r.role_id=' . $role_id_card_group)
|
|
|
- ->find();
|
|
|
- if ($user_info) {
|
|
|
- $uid = $user_info['uid'];
|
|
|
- (new Users())->where('id', $uid)->update(['realname' => $realname, 'user_no' => $user_no]);
|
|
|
- } else { //添加用户
|
|
|
- $user = array(
|
|
|
- 'username' => $phone,
|
|
|
- 'password' => substr($imei, -8),
|
|
|
- 'realname' => $realname,
|
|
|
- 'user_no' => $user_no,
|
|
|
- 'phone' => $phone,
|
|
|
- 'department_id' => $depart_id,
|
|
|
- 'creator_id' => $creator_id,
|
|
|
- 'created_at' => time(),
|
|
|
- 'updated_at' => time()
|
|
|
- );
|
|
|
- // var_dump($user);
|
|
|
- $uid = (new Users())->createBy($user);
|
|
|
- Db::table('user_has_roles')->insert(['uid' => $uid, 'role_id' => $role_id_card_group]);
|
|
|
- }
|
|
|
- //保存设备信息
|
|
|
- $data = array(
|
|
|
- 'department_id' => $depart_id,
|
|
|
- 'imei' => $imei,
|
|
|
- 'rfid' => substr($imei, -8),
|
|
|
- 'device_name' => '设备' . substr($imei, -4),
|
|
|
- 'user_id' => $uid,
|
|
|
- 'alarm_state' => 0,
|
|
|
- 'device_type' => 0,
|
|
|
- 'use_state' => 1,
|
|
|
- 'net_state' => 2,
|
|
|
- 'creator_id' => $creator_id,
|
|
|
- 'created_at' => time(),
|
|
|
- 'updated_at' => time()
|
|
|
- );
|
|
|
- //查询设备
|
|
|
- $info = $this->deviceModel->where('imei', $imei)->find();
|
|
|
- if ($info) {
|
|
|
- $fail++;
|
|
|
- $msg = '导入设备:' . $imei . '失败:imei编号已存在';
|
|
|
- $this->importFailLog($msg);
|
|
|
- continue;
|
|
|
- }
|
|
|
- //添加设备
|
|
|
- // if ($this->deviceModel->createBy($data)) {
|
|
|
- // $success++;
|
|
|
- // } else {
|
|
|
- // $fail++;
|
|
|
- // $msg = '导入设备:' . $imei . '失败:添加设备失败';
|
|
|
- // $this->importFailLog($msg);
|
|
|
- // continue;
|
|
|
- // }
|
|
|
- array_push($group_data, $data);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- array_unique($personal_data, SORT_REGULAR);
|
|
|
- array_unique($group_data, SORT_REGULAR);
|
|
|
- $count1 = $this->deviceModel->limit(100)->insertAll($personal_data);
|
|
|
- $count2 = $this->deviceModel->limit(100)->insertAll($group_data);
|
|
|
- $redis=Cache::store('redis')->handler();
|
|
|
- foreach($personal_data as $value){
|
|
|
- $redis->rpush('c61_voice_cneter_add_list', $value['imei']);
|
|
|
- }
|
|
|
- foreach($group_data as $value){
|
|
|
- $redis->rpush('c61_voice_cneter_add_list', $value['imei']);
|
|
|
- }
|
|
|
- if ($success = $count1 + $count2) {
|
|
|
- return CatchResponse::success('共' . $total . '条数据,成功' . $success . '条,失败' . $fail . '条');
|
|
|
- }
|
|
|
- return CatchResponse::success(['error' => true, 'msg' => '导入失败']);
|
|
|
- // return CatchResponse::success('共' . $total . '条数据,成功' . $success . '条,失败' . $fail . '条');
|
|
|
- }
|
|
|
- /**
|
|
|
- * 导入设备失败日志
|
|
|
- */
|
|
|
- public function importFailLog($msg)
|
|
|
- {
|
|
|
- $file = runtime_path() . '/log/' . date("Ymd", time()) . "/import_devices_fail.log";
|
|
|
- $folder = dirname($file);
|
|
|
- if (!is_dir($folder)) {
|
|
|
- mkdir($folder, 0777, true);
|
|
|
- }
|
|
|
- file_put_contents($file, '[' . date('Y-m-d H:i:s') . ']' . $msg . PHP_EOL, FILE_APPEND);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 检测下发配置选项
|
|
|
- */
|
|
|
- public function checkConfig(Request $request): \think\Response
|
|
|
- {
|
|
|
- // var_dump($request->post('ids'));
|
|
|
- $ids = $request->post('ids');
|
|
|
- if (empty($ids)) {
|
|
|
- return CatchResponse::fail('未选中设备');
|
|
|
- }
|
|
|
- $has_use_num = 0;
|
|
|
- foreach ($ids as $v) {
|
|
|
- if ($this->deviceModel->where('id', $v)->value('use_state')) {
|
|
|
- $has_use_num++;
|
|
|
- }
|
|
|
- }
|
|
|
- if (count($ids) != $has_use_num) {
|
|
|
- // return CatchResponse::fail('所选项含有未注册设备');
|
|
|
- }
|
|
|
- return CatchResponse::success();
|
|
|
- }
|
|
|
- /**
|
|
|
- * 下发录音配置
|
|
|
- */
|
|
|
- public function sendVoiceConfig(Request $request): \think\Response
|
|
|
- {
|
|
|
- $ids = $request->post('ids');
|
|
|
- $config = $request->post('config');
|
|
|
- if (empty($ids)) {
|
|
|
- return CatchResponse::fail('未选择设备');
|
|
|
- }
|
|
|
- if (empty($config)) {
|
|
|
- return CatchResponse::fail('至少配置一项');
|
|
|
- }
|
|
|
- // $config['is_enabled'] = $config['is_enabled'] ? 1 : 0;
|
|
|
- if (!$config['srv_addr']) {
|
|
|
- unset($config['srv_addr']);
|
|
|
- }
|
|
|
- if (!$config['srv_port']) {
|
|
|
- unset($config['srv_port']);
|
|
|
- } else {
|
|
|
- $config['srv_port'] = intval($config['srv_port']);
|
|
|
- }
|
|
|
-
|
|
|
- // if (!$config['max_ppt_duration_ms']) {
|
|
|
- // unset($config['max_ppt_duration_ms']);
|
|
|
- // } else {
|
|
|
- // $config['max_ppt_duration_ms'] = intval($config['max_ppt_duration_ms']);
|
|
|
- // }
|
|
|
-
|
|
|
- $config['msg_id'] = 0xAAAA0008;
|
|
|
- Db::startTrans();
|
|
|
- $fail_imei = '';
|
|
|
- foreach ($ids as $id) {
|
|
|
- $imei = $this->deviceModel->where('id', $id)->value('imei');
|
|
|
- if (!$imei) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- //下发日志
|
|
|
- $log_data = array(
|
|
|
- 'send_contents' => json_encode($config),
|
|
|
- 'imei' => $imei,
|
|
|
- 'type' => 'voice',
|
|
|
- 'created_at' => time(),
|
|
|
- 'device_id' => $id
|
|
|
- );
|
|
|
- $id = Db::table('send_config_log')->insertGetId($log_data);
|
|
|
- if (!$id) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
- $config['id'] = $id;
|
|
|
- $redis = Cache::store('redis')->handler();
|
|
|
- $res = $redis->rpush('c61_gps_device_configs_' . $imei, json_encode($config));
|
|
|
- if (!$res) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
- }
|
|
|
- if ($fail_imei != '') {
|
|
|
- return CatchResponse::fail('下发失败');
|
|
|
- }
|
|
|
- Db::commit();
|
|
|
- return CatchResponse::success('下发成功');
|
|
|
- }
|
|
|
- /**
|
|
|
- * 下发传感器配置
|
|
|
- */
|
|
|
- public function sendSensorConfig(Request $request): \think\Response
|
|
|
- {
|
|
|
- $ids = $request->post('ids');
|
|
|
- $config = $request->post('config');
|
|
|
- if (empty($ids)) {
|
|
|
- return CatchResponse::fail('未选择设备');
|
|
|
- }
|
|
|
- if (empty($config)) {
|
|
|
- return CatchResponse::fail('至少配置一项');
|
|
|
- }
|
|
|
- if (!$config['stopped_rtc_invl']) {
|
|
|
- unset($config['stopped_rtc_invl']);
|
|
|
- } else {
|
|
|
- $config['stopped_rtc_invl'] = intval($config['stopped_rtc_invl']);
|
|
|
- }
|
|
|
- if (!$config['stopped_rpt_invl']) {
|
|
|
- unset($config['stopped_rpt_invl']);
|
|
|
- } else {
|
|
|
- $config['stopped_rpt_invl'] = intval($config['stopped_rpt_invl']);
|
|
|
- }
|
|
|
- if (!$config['not_moving_threshold']) {
|
|
|
- unset($config['not_moving_threshold']);
|
|
|
- } else {
|
|
|
- $config['not_moving_threshold'] = intval($config['not_moving_threshold']);
|
|
|
- }
|
|
|
- if (!$config['stopped_rtc_invl']) {
|
|
|
- unset($config['stopped_rtc_invl']);
|
|
|
- } else {
|
|
|
- $config['stopped_rtc_invl'] = intval($config['stopped_rtc_invl']);
|
|
|
- }
|
|
|
- if (!$config['stopped_rpt_invl']) {
|
|
|
- unset($config['stopped_rpt_invl']);
|
|
|
- } else {
|
|
|
- $config['stopped_rpt_invl'] = intval($config['stopped_rpt_invl']);
|
|
|
- }
|
|
|
- if (!$config['tbd_cnt_max']) {
|
|
|
- unset($config['tbd_cnt_max']);
|
|
|
- } else {
|
|
|
- $config['tbd_cnt_max'] = intval($config['tbd_cnt_max']);
|
|
|
- }
|
|
|
- if (empty($config)) {
|
|
|
- return CatchResponse::fail('您还没有配置任何一项');
|
|
|
- }
|
|
|
- $config['msg_id'] = 0xAAAA0007;
|
|
|
- Db::startTrans();
|
|
|
- $fail_imei = '';
|
|
|
- foreach ($ids as $id) {
|
|
|
- $imei = $this->deviceModel->where('id', $id)->value('imei');
|
|
|
- if (!$imei) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- //下发日志
|
|
|
- $log_data = array(
|
|
|
- 'send_contents' => json_encode($config),
|
|
|
- 'imei' => $imei,
|
|
|
- 'created_at' => time(),
|
|
|
- 'type' => 'sensor',
|
|
|
- 'device_id' => $id
|
|
|
- );
|
|
|
- $id = Db::table('send_config_log')->insertGetId($log_data);
|
|
|
- if (!$id) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
- $config['id'] = $id;
|
|
|
- $redis = Cache::store('redis')->handler();
|
|
|
- $res = $redis->rpush('c61_gps_device_configs_' . $imei, json_encode($config));
|
|
|
- if (!$res) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
- }
|
|
|
- if ($fail_imei != '') {
|
|
|
- return CatchResponse::fail('下发失败');
|
|
|
- }
|
|
|
- Db::commit();
|
|
|
- return CatchResponse::success('下发成功');
|
|
|
- }
|
|
|
- /**
|
|
|
- * 下发gps配置
|
|
|
- */
|
|
|
- public function sendGpsConfig(Request $request): \think\Response
|
|
|
- {
|
|
|
- $ids = $request->post('ids');
|
|
|
- $config = $request->post('config');
|
|
|
- if (empty($ids)) {
|
|
|
- return CatchResponse::fail('未选择设备');
|
|
|
- }
|
|
|
- if (empty($config)) {
|
|
|
- return CatchResponse::fail('至少配置一项');
|
|
|
- }
|
|
|
- $config['pos_mode'] = intval($config['pos_mode']);
|
|
|
-
|
|
|
- // $config['msg_id'] = 0xAAAA0001;
|
|
|
- $config['msg_id'] = 0xAAAA0010;
|
|
|
- Db::startTrans();
|
|
|
- $fail_imei = '';
|
|
|
- foreach ($ids as $id) {
|
|
|
- $imei = $this->deviceModel->where('id', $id)->value('imei');
|
|
|
- if (!$imei) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- //判断是不是定时模式
|
|
|
- if ($config['pos_mode'] == 2) {
|
|
|
-
|
|
|
- $config_arr = array(
|
|
|
- 'stopped_rtc_invl' => intval($config['stopped_rtc_invl']),
|
|
|
- 'stopped_rpt_invl' => intval($config['stopped_rpt_invl']),
|
|
|
- 'msg_id' => 0xAAAA0007
|
|
|
- );
|
|
|
-
|
|
|
- //下发日志
|
|
|
- $log_data = array(
|
|
|
- 'send_contents' => json_encode($config_arr),
|
|
|
- 'imei' => $imei,
|
|
|
- 'type' => 'sensor',
|
|
|
- 'created_at' => time(),
|
|
|
- 'device_id' => $id
|
|
|
- );
|
|
|
- $lg_id = Db::table('send_config_log')->insertGetId($log_data);
|
|
|
- if (!$lg_id) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
- $config_arr['id'] = $lg_id;
|
|
|
- $redis = Cache::store('redis')->handler();
|
|
|
- $res = $redis->rpush('c61_gps_device_configs_' . $imei, json_encode($config_arr));
|
|
|
- if (!$res) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
-
|
|
|
- }else{
|
|
|
- $config_arr = array(
|
|
|
- 'stopped_rtc_invl' => 3000,
|
|
|
- 'stopped_rpt_invl' => 3600,
|
|
|
- 'msg_id' => 0xAAAA0007
|
|
|
- );
|
|
|
- //下发日志
|
|
|
- $log_data = array(
|
|
|
- 'send_contents' => json_encode($config_arr),
|
|
|
- 'imei' => $imei,
|
|
|
- 'type' => 'sensor',
|
|
|
- 'created_at' => time(),
|
|
|
- 'device_id' => $id
|
|
|
- );
|
|
|
- $lg_id = Db::table('send_config_log')->insertGetId($log_data);
|
|
|
- if (!$lg_id) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
- $config_arr['id'] = $lg_id;
|
|
|
- $redis = Cache::store('redis')->handler();
|
|
|
- $res = $redis->rpush('c61_gps_device_configs_' . $imei, json_encode($config_arr));
|
|
|
- if (!$res) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- //重新赋值 删除多余参数
|
|
|
- $mode_config=$config;
|
|
|
- unset($mode_config['stopped_rpt_invl'],$mode_config['stopped_rtc_invl']);
|
|
|
- //下发日志
|
|
|
- $log_data = array(
|
|
|
- 'send_contents' => json_encode($mode_config),
|
|
|
- 'imei' => $imei,
|
|
|
- 'type' => 'pos_mode',
|
|
|
- 'created_at' => time(),
|
|
|
- 'device_id' => $id
|
|
|
- );
|
|
|
- $id = Db::table('send_config_log')->insertGetId($log_data);
|
|
|
- if (!$id) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
- $mode_config['id'] = $id;
|
|
|
- $redis = Cache::store('redis')->handler();
|
|
|
- $res = $redis->rpush('c61_gps_device_configs_' . $imei, json_encode($mode_config));
|
|
|
- if (!$res) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
- }
|
|
|
- if ($fail_imei != '') {
|
|
|
- return CatchResponse::fail('下发失败');
|
|
|
- }
|
|
|
- Db::commit();
|
|
|
- return CatchResponse::success('下发成功');
|
|
|
- }
|
|
|
- /**
|
|
|
- * 设备终端操作命令
|
|
|
- */
|
|
|
- public function sendcmd(Request $request): \think\Response
|
|
|
- {
|
|
|
- $ids = $request->post('ids');
|
|
|
-
|
|
|
- if (empty($ids)) {
|
|
|
- return CatchResponse::fail('未选择设备');
|
|
|
- }
|
|
|
- $config['msg_id'] = 0xAAAA0011;
|
|
|
- $config['cmd'] = intval($request->post('cmd'));
|
|
|
- Db::startTrans();
|
|
|
- $fail_imei = '';
|
|
|
- foreach ($ids as $id) {
|
|
|
- $imei = $this->deviceModel->where('id', $id)->value('imei');
|
|
|
- if (!$imei) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- //下发日志
|
|
|
- $log_data = array(
|
|
|
- 'send_contents' => json_encode($config),
|
|
|
- 'imei' => $imei,
|
|
|
- 'type' => 'cmd',
|
|
|
- 'created_at' => time(),
|
|
|
- 'device_id' => $id
|
|
|
- );
|
|
|
- $id = Db::table('send_config_log')->insertGetId($log_data);
|
|
|
- if (!$id) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
- $config['id'] = $id;
|
|
|
- $redis = Cache::store('redis')->handler();
|
|
|
- $res = $redis->rpush('c61_gps_device_configs_' . $imei, json_encode($config));
|
|
|
- if (!$res) {
|
|
|
- $fail_imei += $imei . ' ';
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
- }
|
|
|
- if ($fail_imei != '') {
|
|
|
- return CatchResponse::fail('操作失败');
|
|
|
- }
|
|
|
- Db::commit();
|
|
|
- return CatchResponse::success('操作成功');
|
|
|
- }
|
|
|
- /*
|
|
|
- 默认配置
|
|
|
- */
|
|
|
- public function getDefaultConfig()
|
|
|
- {
|
|
|
- $type_id = Db::table('sys_dict_type')->where('code', 'DeviceConfigDefault')->value('id');
|
|
|
- $list = Db::table('sys_dict_data')->where('type_id', $type_id)->field('code,value,sort')->select();
|
|
|
- $cnf1 = [];
|
|
|
- $cnf2 = [];
|
|
|
- $cnf3 = [];
|
|
|
- foreach ($list as $value) {
|
|
|
- if ($value['sort'] == 1) {
|
|
|
- // array_push($cnf1,[$value['code']=>$value['value']]);
|
|
|
- if ($value['value'] == 'true') {
|
|
|
- $value['value'] = true;
|
|
|
- }
|
|
|
- $cnf1[$value['code']] = $value['value'];
|
|
|
- }
|
|
|
- if ($value['sort'] == 2) {
|
|
|
- $cnf2[$value['code']] = $value['value'];
|
|
|
- }
|
|
|
- if ($value['sort'] == 3) {
|
|
|
- $cnf3[$value['code']] = $value['value'];
|
|
|
- $cnf3['stopped_rtc_invl'] = '50';
|
|
|
- $cnf3['stopped_rpt_invl'] = '300';
|
|
|
- }
|
|
|
- }
|
|
|
- $config = array(
|
|
|
- 'voice_config' => $cnf1,
|
|
|
- 'sensor_config' => $cnf2,
|
|
|
- 'gps_config' => $cnf3,
|
|
|
- );
|
|
|
- return CatchResponse::success($config);
|
|
|
- }
|
|
|
-}
|