import { Router } from 'express' import { createAdminInventoryItem, getAdminInventoryItems, importAdminInventoryItems, invalidateAdminInventoryItem, releaseAdminInventoryItem, } from '../../services/admin/admin-service.js' import { createJsonHandler, requireAdminRoles } from './shared.js' const router = Router() router.get('/inventory', createJsonHandler( (req) => getAdminInventoryItems(req.query), { successMessage: 'ok', errorMessage: '读取库存列表失败', scope: '[admin/inventory]', }, )) router.post('/inventory', createJsonHandler( (req) => createAdminInventoryItem(req.body), { successMessage: '库存项已新增', errorMessage: '新增库存项失败', scope: '[admin/inventory]', }, )) router.post('/inventory/import', createJsonHandler( (req) => importAdminInventoryItems(req.body), { successMessage: '导入完成', errorMessage: '导入库存凭据失败', scope: '[admin/inventory/import]', }, )) router.post('/inventory/:inventoryItemId/release', requireAdminRoles(['admin']), createJsonHandler( (req) => releaseAdminInventoryItem(req.params.inventoryItemId), { successMessage: '库存项已释放', errorMessage: '释放库存项失败', scope: '[admin/inventory/:inventoryItemId/release]', audit: (req, data) => ({ action: 'inventory_item_released', targetType: 'inventory_item', targetId: String(req.params.inventoryItemId), data: { inventoryItemId: data.inventoryItem?.inventoryItemId, skuCode: data.inventoryItem?.skuCode, displayValue: data.inventoryItem?.displayValue, }, }), }, )) router.post('/inventory/:inventoryItemId/invalidate', requireAdminRoles(['admin']), createJsonHandler( (req) => invalidateAdminInventoryItem(req.params.inventoryItemId, req.body), { successMessage: '库存项已作废', errorMessage: '作废库存项失败', scope: '[admin/inventory/:inventoryItemId/invalidate]', audit: (req, data) => ({ action: 'inventory_item_invalidated', targetType: 'inventory_item', targetId: String(req.params.inventoryItemId), data: { inventoryItemId: data.inventoryItem?.inventoryItemId, skuCode: data.inventoryItem?.skuCode, invalidReason: data.inventoryItem?.invalidReason, }, }), }, )) export default router