Explorar o código

✨ feat(routes): 分离商品API路由并优化创建和更新返回数据

- 分离商品API路由为管理员和公共两个版本:
  - 管理员路由: /api/v1/admin/goods 使用adminGoodsRoutes
  - 公共路由: /api/v1/goods 使用publicGoodsRoutesMt

- 优化创建和更新操作返回数据:
  - 创建资源后重新获取包含关联关系的完整数据
  - 更新资源后重新获取包含关联关系的完整数据
  - 确保返回数据包含所有指定的关联关系信息

- 更新管理员API初始化路径,将商品API指向管理员路由
yourname hai 1 mes
pai
achega
08214fdde8

+ 2 - 1
packages/server/src/index.ts

@@ -163,7 +163,8 @@ export const deliveryAddressApiRoutes = api.route('/api/v1/delivery-addresses',
 export const adminDeliveryAddressApiRoutes = api.route('/api/v1/admin/delivery-addresses', adminDeliveryAddressRoutes)
 export const goodsCategoryApiRoutes = api.route('/api/v1/goods-categories', userGoodsCategoriesRoutesMt)
 export const adminGoodsCategoryApiRoutes = api.route('/api/v1/admin/goods-categories', adminGoodsCategoriesRoutes)
-export const goodsApiRoutes = api.route('/api/v1/goods', adminGoodsRoutes)
+export const adminGoodsApiRoutes = api.route('/api/v1/admin/goods', adminGoodsRoutes)
+export const goodsApiRoutes = api.route('/api/v1/goods', publicGoodsRoutesMt)
 export const merchantApiRoutes = api.route('/api/v1/merchants', merchantRoutes)
 export const orderApiRoutes = api.route('/api/v1/orders', userOrderRoutes)
 // export const orderGoodsApiRoutes = api.route('/api/v1/orders-goods', userOrderItemsRoutes)

+ 6 - 2
packages/shared-crud/src/routes/generic-crud.routes.ts

@@ -360,7 +360,9 @@ export function createCrudRoutes<
             crudService.setTenantContext(finalTenantId);
           }
           const result = await crudService.create(data, user?.id);
-          return c.json(await parseWithAwait(getSchema, result), 201);
+          // 重新获取包含关联关系的数据
+          const fullResult = await crudService.getById(result.id, relations || [], user?.id);
+          return c.json(await parseWithAwait(getSchema, fullResult), 201);
         } catch (error) {
           if (error instanceof z.ZodError) {
             const zodError = error as ZodError;
@@ -476,7 +478,9 @@ export function createCrudRoutes<
             return c.json({ code: 404, message: '资源不存在' }, 404);
           }
 
-          return c.json(await parseWithAwait(getSchema, result), 200);
+          // 重新获取包含关联关系的数据
+          const fullResult = await crudService.getById(id, relations || [], user?.id);
+          return c.json(await parseWithAwait(getSchema, fullResult), 200);
         } catch (error) {
           if (error instanceof z.ZodError) {
             const zodError = error as ZodError;

+ 1 - 1
web/src/client/admin/api_init.ts

@@ -23,7 +23,7 @@ supplierClientManager.init('/api/v1/suppliers');
 merchantClientManager.init('/api/v1/merchants');
 orderClientManager.init('/api/v1/admin/orders');
 advertisementTypeClientManager.init('/api/v1/advertisement-types');
-goodsClientManager.init('/api/v1/goods');
+goodsClientManager.init('/api/v1/admin/goods');
 goodsCategoryClientManager.init('/api/v1/admin/goods-categories');
 deliveryAddressClientManager.init('/api/v1/admin/delivery-addresses');
 advertisementClientManager.init('/api/v1/advertisements');