all(), [ 'page' => 'integer|min:1', 'limit' => 'integer|min:1|max:100', 'name' => 'string|nullable', 'type' => 'in:erp,cloud|nullable', ]); if ($validator->fails()) { return $this->error(422, '参数错误', $validator->errors()); } $query = Warehouse::query(); if ($request->filled('name')) { $query->where('name', 'like', "%{$request->name}%"); } if ($request->filled('type')) { $query->where('type', $request->type); } $list = $query->paginate($request->input('limit', 10)); return $this->success([ 'list' => $list->items(), 'total' => $list->total(), 'current_page' => $list->currentPage(), 'last_page' => $list->lastPage(), ]); } public function show($id) { $warehouse = Warehouse::find($id); if (!$warehouse) { return $this->error(404, '仓库不存在'); } return $this->success($warehouse); } public function store(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:255', 'type' => 'required|in:erp,cloud', 'cloud_system' => 'required_if:type,cloud|in:jst,wdt,qimen|nullable', 'owner_code' => 'nullable|string|max:100', 'cloud_code' => 'nullable|string|max:100', 'app_key' => 'nullable|string|max:255', 'app_secret' => 'nullable|string|max:255', 'remark' => 'nullable|string', ]); if ($validator->fails()) { return $this->error(422, '参数错误', $validator->errors()); } $warehouse = Warehouse::create($request->all()); return $this->success($warehouse, '创建成功', 201); } public function update(Request $request, $id) { $warehouse = Warehouse::find($id); if (!$warehouse) { return $this->error(404, '仓库不存在'); } $validator = Validator::make($request->all(), [ 'name' => 'sometimes|string|max:255', 'type' => 'sometimes|in:erp,cloud', 'cloud_system' => 'required_if:type,cloud|in:jst,wdt,qimen|nullable', 'owner_code' => 'nullable|string|max:100', 'cloud_code' => 'nullable|string|max:100', 'app_key' => 'nullable|string|max:255', 'app_secret' => 'nullable|string|max:255', 'remark' => 'nullable|string', ]); if ($validator->fails()) { return $this->error(422, '参数错误', $validator->errors()); } $warehouse->update($request->all()); return $this->success($warehouse, '更新成功'); } public function destroy($id) { $warehouse = Warehouse::find($id); if (!$warehouse) { return $this->error(404, '仓库不存在'); } // TODO: 检查是否有库存关联,若有则不能删除 $warehouse->delete(); return $this->success(null, '删除成功'); } // 统一响应方法 private function success($data = null, $message = 'success', $code = 200) { return response()->json([ 'code' => $code, 'data' => $data, 'message' => $message ], $code); } private function error($code, $message, $errors = null) { $response = [ 'code' => $code, 'message' => $message, ]; if ($errors) { $response['errors'] = $errors; } return response()->json($response, $code); } }