userInfo; // 检查用户权限,只有管理员可以添加设备 if ($userInfo['isAdmin'] != 1) { return json([ 'code' => 403, 'msg' => '您没有权限添加设备' ]); } // 获取设备数据 $data = Request::post(); // 验证IMEI是否为空 if (empty($data['imei'])) { return json([ 'code' => 400, 'msg' => '设备IMEI不能为空' ]); } // 验证IMEI是否已存在 $exists = DeviceModel::where('imei', $data['imei'])->where('isDeleted', 0)->find(); if ($exists) { return json([ 'code' => 400, 'msg' => '设备IMEI已存在' ]); } // 设置设备公司ID $data['companyId'] = $userInfo['companyId']; $data['id'] = time(); try { Db::startTrans(); // 添加设备 $id = DeviceModel::addDevice($data); // 添加设备操作记录 DeviceHandleLog::addLog( [ 'imei' => $data['imei'], 'userId' => $userInfo['id'], 'content' => '添加设备', 'companyId' => $userInfo['companyId'], ] ); Db::commit(); } catch (\Exception $e) { Db::rollback(); return json([ 'code' => 500, 'msg' => '添加失败:' . $e->getMessage() ]); } // 此处调用底层API return json([ 'code' => 200, 'msg' => '添加成功', 'data' => [ 'id' => $id ] ]); } catch (\Exception $e) { return json([ 'code' => 500, 'msg' => '添加失败:' . $e->getMessage() ]); } } /** * 删除设备 * @return \think\response\Json */ public function delete() { try { // 获取登录用户信息 $userInfo = request()->userInfo; // 检查用户权限,只有管理员可以删除设备 if ($userInfo['isAdmin'] != 1) { return json([ 'code' => 403, 'msg' => '您没有权限删除设备' ]); } // 获取设备ID $id = Request::param('id/d'); if (empty($id)) { return json([ 'code' => 400, 'msg' => '参数错误' ]); } // 验证设备是否存在 $exists = DeviceModel::where('id', $id) ->where('isDeleted', 0) ->where('companyId', $userInfo['companyId']) ->find(); if (!$exists) { return json([ 'code' => 404, 'msg' => '设备不存在或无权限操作' ]); } // 删除设备 $result = DeviceModel::deleteDevice($id); return json([ 'code' => 200, 'msg' => '删除成功', 'data' => [ 'result' => $result ] ]); } catch (\Exception $e) { return json([ 'code' => 500, 'msg' => '删除失败:' . $e->getMessage() ]); } } /** * 获取设备操作记录 * @return \think\response\Json */ public function handleLogs() { try { // 获取登录用户信息 $userInfo = request()->userInfo; // 获取设备ID $deviceId = $this->request->param('id/d'); if (empty($deviceId)) { return json([ 'code' => 400, 'msg' => '设备ID不能为空' ]); } // 检查用户是否有权限访问该设备 if ($userInfo['isAdmin'] != 1) { // 非管理员需要检查是否有权限访问该设备 $hasPermission = \app\common\model\DeviceUser::checkUserDevicePermission( $userInfo['id'], $deviceId, $userInfo['companyId'] ); if (!$hasPermission) { return json([ 'code' => 403, 'msg' => '您没有权限查看该设备' ]); } } // 获取设备信息,确认设备存在 $device = DeviceModel::where('id', $deviceId) ->where('isDeleted', 0) ->find(); if (!$device) { return json([ 'code' => 404, 'msg' => '设备不存在或已删除' ]); } // 获取分页参数 $page = (int)Request::param('page', 1); $limit = (int)Request::param('limit', 10); // 查询设备操作记录,并关联用户表获取操作人信息 $logs = Db::table('tk_device_handle_log') ->alias('l') ->join('tk_users u', 'l.userId = u.id', 'left') ->where('l.imei', $device['imei']) ->where('l.companyId', $userInfo['companyId']) ->field([ 'l.id', 'l.content', 'l.createTime', 'u.username' ]) ->order('l.createTime desc') ->paginate($limit, false, ['page' => $page]); // 格式化返回数据 $items = []; foreach ($logs as $log) { $items[] = [ 'id' => $log['id'], 'content' => $log['content'], 'username' => $log['username'] ? $log['username'] : '未知用户', 'createTime' => $log['createTime'] ]; } return json([ 'code' => 200, 'msg' => '获取成功', 'data' => [ 'total' => $logs->total(), 'list' => $items ] ]); } catch (\Exception $e) { return json([ 'code' => 500, 'msg' => '获取失败:' . $e->getMessage() ]); } } }