where(array( 'rider_id' => $this->riderId ))->order('status DESC, add_time DESC')->select(); // 格式化数据 foreach ($list as &$item) { $item['type'] = $item['vehicle_type']; // 前端使用type字段 $item['vehicle_photo_url'] = !empty($item['vehicle_photo']) ? 'http://' . $_SERVER['HTTP_HOST'] . '/uploads/' . $item['vehicle_photo'] : ''; $item['driving_license_url'] = !empty($item['driving_license']) ? 'http://' . $_SERVER['HTTP_HOST'] . '/uploads/' . $item['driving_license'] : ''; $item['insurance_photo_url'] = !empty($item['insurance_photo']) ? 'http://' . $_SERVER['HTTP_HOST'] . '/uploads/' . $item['insurance_photo'] : ''; } $this->ajaxReturn(array( 'code' => 1, 'msg' => '获取成功', 'data' => $list ?: array() )); } catch (\Exception $e) { $this->ajaxReturn(array( 'code' => 0, 'msg' => '获取失败:' . $e->getMessage() )); } } /** * 添加车辆 */ public function add() { try { // 获取JSON参数 $input = json_decode(file_get_contents('php://input'), true); $vehicleType = isset($input['type']) ? trim($input['type']) : ''; $plateNumber = isset($input['plate_number']) ? trim($input['plate_number']) : ''; $brand = isset($input['brand']) ? trim($input['brand']) : ''; $model = isset($input['model']) ? trim($input['model']) : ''; $color = isset($input['color']) ? trim($input['color']) : ''; // 验证必填参数 if (empty($vehicleType)) { $this->ajaxReturn(array('code' => 0, 'msg' => '请选择车辆类型')); } // 验证车辆类型 $allowedTypes = array('bicycle', 'motorcycle', 'car'); if (!in_array($vehicleType, $allowedTypes)) { $this->ajaxReturn(array('code' => 0, 'msg' => '车辆类型不正确')); } $vehicleModel = M('rider_vehicle'); // 检查是否已有使用中的车辆,如果没有则设为使用中 $currentVehicle = $vehicleModel->where(array( 'rider_id' => $this->riderId, 'status' => 1 ))->find(); $status = $currentVehicle ? 0 : 1; // 如果没有使用中的车辆,新添加的设为使用中 $data = array( 'rider_id' => $this->riderId, 'vehicle_type' => $vehicleType, 'plate_number' => $plateNumber, 'brand' => $brand, 'model' => $model, 'color' => $color, 'status' => $status, 'auth_status' => 0, // 待审核 'add_time' => date('Y-m-d H:i:s'), 'update_time' => date('Y-m-d H:i:s') ); $result = $vehicleModel->add($data); if ($result) { $this->ajaxReturn(array( 'code' => 1, 'msg' => '添加成功', 'data' => array('id' => $result) )); } else { $this->ajaxReturn(array('code' => 0, 'msg' => '添加失败')); } } catch (\Exception $e) { $this->ajaxReturn(array( 'code' => 0, 'msg' => '添加失败:' . $e->getMessage() )); } } /** * 更新车辆信息 */ public function update() { try { // 获取JSON参数 $input = json_decode(file_get_contents('php://input'), true); $id = isset($input['id']) ? intval($input['id']) : 0; $vehicleType = isset($input['type']) ? trim($input['type']) : ''; $plateNumber = isset($input['plate_number']) ? trim($input['plate_number']) : ''; $brand = isset($input['brand']) ? trim($input['brand']) : ''; $model = isset($input['model']) ? trim($input['model']) : ''; $color = isset($input['color']) ? trim($input['color']) : ''; // 验证必填参数 if (empty($id)) { $this->ajaxReturn(array('code' => 0, 'msg' => '车辆ID不能为空')); } if (empty($vehicleType)) { $this->ajaxReturn(array('code' => 0, 'msg' => '请选择车辆类型')); } // 验证车辆类型 $allowedTypes = array('bicycle', 'motorcycle', 'car'); if (!in_array($vehicleType, $allowedTypes)) { $this->ajaxReturn(array('code' => 0, 'msg' => '车辆类型不正确')); } $vehicleModel = M('rider_vehicle'); // 验证车辆是否属于当前骑手 $vehicle = $vehicleModel->where(array( 'id' => $id, 'rider_id' => $this->riderId ))->find(); if (!$vehicle) { $this->ajaxReturn(array('code' => 0, 'msg' => '车辆不存在')); } $data = array( 'vehicle_type' => $vehicleType, 'plate_number' => $plateNumber, 'brand' => $brand, 'model' => $model, 'color' => $color, 'update_time' => date('Y-m-d H:i:s') ); $result = $vehicleModel->where(array( 'id' => $id, 'rider_id' => $this->riderId ))->save($data); if ($result !== false) { $this->ajaxReturn(array( 'code' => 1, 'msg' => '更新成功' )); } else { $this->ajaxReturn(array('code' => 0, 'msg' => '更新失败')); } } catch (\Exception $e) { $this->ajaxReturn(array( 'code' => 0, 'msg' => '更新失败:' . $e->getMessage() )); } } /** * 删除车辆 */ public function delete() { try { // 获取JSON参数 $input = json_decode(file_get_contents('php://input'), true); $id = isset($input['id']) ? intval($input['id']) : 0; // 验证必填参数 if (empty($id)) { $this->ajaxReturn(array('code' => 0, 'msg' => '车辆ID不能为空')); } $vehicleModel = M('rider_vehicle'); // 验证车辆是否属于当前骑手 $vehicle = $vehicleModel->where(array( 'id' => $id, 'rider_id' => $this->riderId ))->find(); if (!$vehicle) { $this->ajaxReturn(array('code' => 0, 'msg' => '车辆不存在')); } // 检查是否为使用中的车辆 if ($vehicle['status'] == 1) { $this->ajaxReturn(array('code' => 0, 'msg' => '当前使用的车辆不能删除')); } $result = $vehicleModel->where(array( 'id' => $id, 'rider_id' => $this->riderId ))->delete(); if ($result) { $this->ajaxReturn(array( 'code' => 1, 'msg' => '删除成功' )); } else { $this->ajaxReturn(array('code' => 0, 'msg' => '删除失败')); } } catch (\Exception $e) { $this->ajaxReturn(array( 'code' => 0, 'msg' => '删除失败:' . $e->getMessage() )); } } /** * 设置当前使用车辆 */ public function setCurrent() { try { // 获取JSON参数 $input = json_decode(file_get_contents('php://input'), true); $id = isset($input['id']) ? intval($input['id']) : 0; // 验证必填参数 if (empty($id)) { $this->ajaxReturn(array('code' => 0, 'msg' => '车辆ID不能为空')); } $vehicleModel = M('rider_vehicle'); // 验证车辆是否属于当前骑手 $vehicle = $vehicleModel->where(array( 'id' => $id, 'rider_id' => $this->riderId ))->find(); if (!$vehicle) { $this->ajaxReturn(array('code' => 0, 'msg' => '车辆不存在')); } // 开启事务 $vehicleModel->startTrans(); try { // 先将该骑手的所有车辆设为未使用 $vehicleModel->where(array( 'rider_id' => $this->riderId ))->save(array( 'status' => 0, 'update_time' => date('Y-m-d H:i:s') )); // 设置指定车辆为使用中 $vehicleModel->where(array( 'id' => $id, 'rider_id' => $this->riderId ))->save(array( 'status' => 1, 'update_time' => date('Y-m-d H:i:s') )); $vehicleModel->commit(); $this->ajaxReturn(array( 'code' => 1, 'msg' => '设置成功' )); } catch (\Exception $e) { $vehicleModel->rollback(); throw $e; } } catch (\Exception $e) { $this->ajaxReturn(array( 'code' => 0, 'msg' => '设置失败:' . $e->getMessage() )); } } /** * 获取车辆详情 */ public function getDetail() { try { $id = $this->getRequestParam('id', 0, 'intval'); if (empty($id)) { $this->ajaxReturn(array('code' => 0, 'msg' => '车辆ID不能为空')); } $vehicleModel = M('rider_vehicle'); $vehicle = $vehicleModel->where(array( 'id' => $id, 'rider_id' => $this->riderId ))->find(); if (!$vehicle) { $this->ajaxReturn(array('code' => 0, 'msg' => '车辆不存在')); } // 格式化数据 $vehicle['type'] = $vehicle['vehicle_type']; // 前端使用type字段 $vehicle['vehicle_photo_url'] = !empty($vehicle['vehicle_photo']) ? 'http://' . $_SERVER['HTTP_HOST'] . '/uploads/' . $vehicle['vehicle_photo'] : ''; $vehicle['driving_license_url'] = !empty($vehicle['driving_license']) ? 'http://' . $_SERVER['HTTP_HOST'] . '/uploads/' . $vehicle['driving_license'] : ''; $vehicle['insurance_photo_url'] = !empty($vehicle['insurance_photo']) ? 'http://' . $_SERVER['HTTP_HOST'] . '/uploads/' . $vehicle['insurance_photo'] : ''; $this->ajaxReturn(array( 'code' => 1, 'msg' => '获取成功', 'data' => $vehicle )); } catch (\Exception $e) { $this->ajaxReturn(array( 'code' => 0, 'msg' => '获取失败:' . $e->getMessage() )); } } }