From beea543fbde0977165c238577eb1a6443668fd78 Mon Sep 17 00:00:00 2001 From: duxingchen Date: Fri, 7 Aug 2026 15:42:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=9B=E5=BB=BA=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E6=97=B6=E8=87=AA=E5=8A=A8=E5=B0=86=E5=BD=93=E5=89=8D=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E8=AE=BE=E4=B8=BA=E5=BD=93=E5=89=8D=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E7=94=A8=E6=88=B7(=E8=B0=81=E5=88=9B=E5=BB=BA=E8=B0=81?= =?UTF-8?q?=E6=8C=81=E6=9C=89)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/v1/endpoints/products.py | 7 +++++-- backend/app/services/product_service.py | 13 +++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/backend/app/api/v1/endpoints/products.py b/backend/app/api/v1/endpoints/products.py index cd628c7..18dfe98 100644 --- a/backend/app/api/v1/endpoints/products.py +++ b/backend/app/api/v1/endpoints/products.py @@ -13,6 +13,7 @@ from app.schemas.product import ( ProductScanResponse, ) from app.services import product_service +from app.services.auth_service import get_current_user from app.services.qrcode_service import generate_qrcode_png router = APIRouter(prefix="/products", tags=["产品管理"]) @@ -87,9 +88,11 @@ async def get_product( async def create_product_endpoint( data: ProductCreate, db: AsyncSession = Depends(get_db), + current_user: dict = Depends(get_current_user), ): - """创建产品""" - return await product_service.create_product(db, data) + """创建产品 — 初始位置自动设为当前登录用户""" + creator_username = current_user.get("username", "") + return await product_service.create_product(db, data, creator_username) @router.patch("/{product_id}", response_model=ProductResponse) diff --git a/backend/app/services/product_service.py b/backend/app/services/product_service.py index 45316da..4cbc6fb 100644 --- a/backend/app/services/product_service.py +++ b/backend/app/services/product_service.py @@ -147,8 +147,8 @@ async def get_product(db: AsyncSession, product_id: uuid.UUID) -> Product: return product -async def create_product(db: AsyncSession, data: ProductCreate) -> ProductResponse: - """创建产品 — 自动生成 16 位 HEX 序列号""" +async def create_product(db: AsyncSession, data: ProductCreate, creator_username: str = "") -> ProductResponse: + """创建产品 — 自动生成 16 位 HEX 序列号,初始位置设为创建者""" from app.services.counter_service import ensure_sequence, next_hex_id from app.models.production_order import ProductionOrder @@ -180,10 +180,18 @@ async def create_product(db: AsyncSession, data: ProductCreate) -> ProductRespon material_type=data.material_type or None, external_serial=data.external_serial, parent_product_id=data.parent_product_id, + current_location_id=creator_username or None, # 谁创建,初始位置就是谁 ) db.add(product) await db.commit() await db.refresh(product, ["order"]) + + # 查创建者的真实姓名 + creator_display_name = "" + if creator_username: + name_map = _lookup_display_names([creator_username]) + creator_display_name = name_map.get(creator_username, "") + return ProductResponse( id=product.id, serial_number=product.serial_number, @@ -197,6 +205,7 @@ async def create_product(db: AsyncSession, data: ProductCreate) -> ProductRespon material_type=product.material_type, parent_product_id=product.parent_product_id, current_location_id=product.current_location_id, + current_location_name=creator_display_name or None, overall_status=product.overall_status, status=product.status, created_at=product.created_at,