userInfo; if (empty($userInfo)) { return json([ 'code' => 401, 'msg' => '未登录或登录已过期' ]); } // 获取查询条件 $where = []; // 租户ID / 公司ID $where['companyId'] = $userInfo['companyId']; // 设备在线状态 $alive = Request::param('alive'); if (is_numeric($alive)) { $where['alive'] = $alive; } // 根据用户管理员状态调整查询条件 if ($userInfo['isAdmin'] == 1) { // 管理员直接查询所有设备 $count = DeviceModel::getDeviceCount($where); } else { // 非管理员需要查询关联表 $deviceIds = \app\common\model\DeviceUser::getUserDeviceIds( $userInfo['id'], $userInfo['companyId'] ); if (empty($deviceIds)) { return json([ 'code' => 403, 'msg' => '请联系管理员绑定设备', 'data' => [ 'count' => 0 ] ]); } // 添加设备ID过滤条件 $where['id'] = ['in', $deviceIds]; $count = DeviceModel::getDeviceCount($where); } return json([ 'code' => 200, 'msg' => '获取成功', 'data' => [ 'count' => $count ] ]); } catch (\Exception $e) { return json([ 'code' => 500, 'msg' => '获取失败:' . $e->getMessage() ]); } } /** * 获取设备列表 * @return \think\response\Json */ public function index() { try { // 获取登录用户信息 $userInfo = request()->userInfo; // 获取查询条件 $where = []; // 关键词搜索(同时搜索IMEI和备注) $keyword = Request::param('keyword'); if (!empty($keyword)) { // 使用复杂条件实现OR查询 $where[] = ['exp', "d.imei LIKE '%{$keyword}%' OR d.memo LIKE '%{$keyword}%'"]; } // 设备在线状态 $alive = Request::param('alive'); if (is_numeric($alive)) { $where['d.alive'] = $alive; } // 获取分页参数 $page = (int)Request::param('page', 1); $limit = (int)Request::param('limit', 10); // 获取排序参数 $sort = Request::param('sort', 'd.id'); $order = Request::param('order', 'desc'); // 添加公司ID过滤条件 $where['d.companyId'] = $userInfo['companyId']; // 根据用户管理员状态调整查询条件 if ($userInfo['isAdmin'] == 1) { // 管理员直接查询所有设备 $list = DeviceModel::getDeviceList($where, "{$sort} {$order}", $page, $limit); } else { // 非管理员需要查询关联表 $deviceIds = \app\common\model\DeviceUser::getUserDeviceIds( $userInfo['id'], $userInfo['companyId'] ); if (empty($deviceIds)) { return json([ 'code' => 403, 'msg' => '请联系管理员绑定设备' ]); } // 添加设备ID过滤条件 $where['d.id'] = ['in', $deviceIds]; $list = DeviceModel::getDeviceList($where, "{$sort} {$order}", $page, $limit); } return json([ 'code' => 200, 'msg' => '获取成功', 'data' => [ 'total' => $list->total(), 'list' => $list->items() ] ]); } catch (\Exception $e) { return json([ 'code' => 500, 'msg' => '获取失败:' . $e->getMessage() ]); } } /** * 获取设备详情 * @return \think\response\Json */ public function read() { try { // 获取登录用户信息 $userInfo = request()->userInfo; if (empty($userInfo)) { return json([ 'code' => 401, 'msg' => '未登录或登录已过期' ]); } // 获取设备ID $id = Request::param('id/d'); if (empty($id)) { return json([ 'code' => 400, 'msg' => '参数错误' ]); } // 检查用户权限 if ($userInfo['isAdmin'] != 1) { // 非管理员需要检查是否有权限访问该设备 $hasPermission = \app\common\model\DeviceUser::checkUserDevicePermission( $userInfo['id'], $id, $userInfo['companyId'] ); if (!$hasPermission) { return json([ 'code' => 403, 'msg' => '您没有权限查看该设备' ]); } } // 获取设备详情 $info = DeviceModel::getDeviceInfo($id); if (empty($info)) { return json([ 'code' => 404, 'msg' => '设备不存在' ]); } return json([ 'code' => 200, 'msg' => '获取成功', 'data' => $info ]); } catch (\Exception $e) { return json([ 'code' => 500, 'msg' => '获取失败:' . $e->getMessage() ]); } } /** * 刷新设备 * @return \think\response\Json */ public function refresh() { try { // 获取登录用户信息 $userInfo = request()->userInfo; if (empty($userInfo)) { return json([ 'code' => 401, 'msg' => '未登录或登录已过期' ]); } // 执行刷新逻辑 // TODO: 实现实际刷新设备状态的功能 return json([ 'code' => 200, 'msg' => '刷新成功', 'data' => [] ]); } catch (\Exception $e) { return json([ 'code' => 500, 'msg' => '获取失败:' . $e->getMessage() ]); } } /** * 添加设备 * @return \think\response\Json */ public function save() { try { // 获取登录用户信息 $userInfo = request()->userInfo; if (empty($userInfo)) { return json([ 'code' => 401, 'msg' => '未登录或登录已过期' ]); } // 检查用户权限,只有管理员可以添加设备 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']; // 添加设备 $id = DeviceModel::addDevice($data); 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 (empty($userInfo)) { return json([ 'code' => 401, 'msg' => '未登录或登录已过期' ]); } // 检查用户权限,只有管理员可以删除设备 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() ]); } } }