getId(); $quantity = $data->getNumber(); $userId = $this->user_id; // 设置默认数量 if ($quantity <= 0) { $quantity = 1; } // 基础参数验证 if ($recipeId <= 0) { throw new LogicException("配方ID无效"); } // 进行完整的合成验证 $validation = new ItemCraftValidation([ 'user_id' => $userId, 'recipe_id' => $recipeId, 'quantity' => $quantity ]); // 验证数据,如果验证失败会抛出异常 $validation->validated(); // 调用合成服务(服务内部会处理事务) $result = CraftService::craftItem($userId, $recipeId,$quantity, [ 'source_type' => 'app_craft', 'device_info' => request()->userAgent(), 'ip_address' => request()->ip(), ]); if (!$result->success) { throw new LogicException($result->message); } Log::info('用户物品合成成功', [ 'user_id' => $userId, 'recipe_id' => $recipeId, 'quantity' => $quantity, 'result' => $result ]); } catch (\Exception $e) { Log::error('物品合成操作异常', [ 'user_id' => $userId ?? null, 'recipe_id' => $recipeId ?? null, 'quantity' => $quantity ?? null, 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); // 重新抛出异常,交由框架处理 throw $e; } return $response; } }