Procházet zdrojové kódy

🐛 fix(orders-module): 修复所有TypeScript类型错误

- 修复User实体导入错误,使用UserEntity as User
- 修复数据权限配置格式,使用正确的DataPermissionOptions
- 修复create-order路由,使用共享工具包的AppDataSource
- 修复路由Context类型,使用共享类型包的AuthContext
- 删除重复的类型导出,避免与schemas冲突
- 添加缺少的@d8d/file-module依赖

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname před 1 měsícem
rodič
revize
f2f391fbbc

+ 4 - 0
docs/stories/005.013.orders-module.story.md

@@ -314,6 +314,10 @@ Draft
 - ✅ 保留了订单创建的事务逻辑和库存更新功能
 - ✅ 配置了完整的数据权限控制和认证集成
 - ✅ 创建了27个文件,1825行代码
+- ✅ 修复所有TypeScript类型错误,类型检查完全通过
+- ✅ 使用共享工具包 `@d8d/shared-utils` 的 `AppDataSource`
+- ✅ 使用共享类型包 `@d8d/shared-types` 的 `AuthContext`
+- ✅ 修复数据权限配置,使用正确的 `DataPermissionOptions` 格式
 - 🔄 剩余任务8-10:测试套件、系统集成、验证文档
 
 ### File List

+ 1 - 0
packages/orders-module/package.json

@@ -60,6 +60,7 @@
     "@d8d/delivery-address-module": "workspace:*",
     "@d8d/merchant-module": "workspace:*",
     "@d8d/supplier-module": "workspace:*",
+    "@d8d/file-module": "workspace:*",
     "@hono/zod-openapi": "^1.0.2",
     "typeorm": "^0.3.20",
     "zod": "^4.1.12"

+ 1 - 1
packages/orders-module/src/entities/order.entity.ts

@@ -1,5 +1,5 @@
 import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn } from 'typeorm';
-import { User } from '@d8d/user-module';
+import { UserEntity as User } from '@d8d/user-module';
 import { Merchant } from '@d8d/merchant-module';
 import { Supplier } from '@d8d/supplier-module';
 import { DeliveryAddress } from '@d8d/delivery-address-module';

+ 9 - 7
packages/orders-module/src/routes/create-order.ts

@@ -1,9 +1,11 @@
 import { OpenAPIHono } from '@hono/zod-openapi';
 import { authMiddleware } from '@d8d/auth-module';
+import { AppDataSource } from '@d8d/shared-utils';
+import { AuthContext } from '@d8d/shared-types';
 import { OrderService } from '../services';
-import { CreateOrderRequestSchema, CreateOrderResponseSchema } from '../schemas/create-order.schema';
+import { CreateOrderRequestDto, CreateOrderResponseDto } from '../schemas/create-order.schema';
 
-const createOrderRoutes = new OpenAPIHono();
+const createOrderRoutes = new OpenAPIHono<AuthContext>();
 
 // 应用认证中间件
 createOrderRoutes.use('*', authMiddleware);
@@ -17,7 +19,7 @@ createOrderRoutes.openapi(
       body: {
         content: {
           'application/json': {
-            schema: CreateOrderRequestSchema
+            schema: CreateOrderRequestDto
           }
         }
       }
@@ -27,7 +29,7 @@ createOrderRoutes.openapi(
         description: '订单创建成功',
         content: {
           'application/json': {
-            schema: CreateOrderResponseSchema
+            schema: CreateOrderResponseDto
           }
         }
       },
@@ -41,11 +43,11 @@ createOrderRoutes.openapi(
   },
   async (c) => {
     const data = c.req.valid('json');
-    const userId = c.get('user').id;
+    const user = c.get('user');
 
     try {
-      const orderService = new OrderService(c.get('dataSource'));
-      const result = await orderService.createOrder(data, userId);
+      const orderService = new OrderService(AppDataSource);
+      const result = await orderService.createOrder(data, user.id);
 
       return c.json(result, 200);
     } catch (error) {

+ 2 - 2
packages/orders-module/src/routes/user/order-items.ts

@@ -18,8 +18,8 @@ const userOrderItemsRoutes = createCrudRoutes({
     updatedByField: 'updatedBy'
   },
   dataPermission: {
-    field: 'order.userId',
-    userField: 'id'
+    enabled: true,
+    userIdField: 'order.userId'
   }
 });
 

+ 2 - 2
packages/orders-module/src/routes/user/orders.ts

@@ -18,8 +18,8 @@ const userOrderRoutes = createCrudRoutes({
     updatedByField: 'updatedBy'
   },
   dataPermission: {
-    field: 'userId',
-    userField: 'id'
+    enabled: true,
+    userIdField: 'userId'
   }
 });
 

+ 2 - 2
packages/orders-module/src/routes/user/refunds.ts

@@ -18,8 +18,8 @@ const userRefundsRoutes = createCrudRoutes({
     updatedByField: 'updatedBy'
   },
   dataPermission: {
-    field: 'order.userId',
-    userField: 'id'
+    enabled: true,
+    userIdField: 'order.userId'
   }
 });
 

+ 1 - 2
packages/orders-module/src/types/order.types.ts

@@ -9,8 +9,7 @@ export type OrderTypeType = typeof OrderType[keyof typeof OrderType];
 export type PayTypeType = typeof PayType[keyof typeof PayType];
 
 // 订单商品状态类型
-export type OrderGoodsStatusType = typeof OrderGoodsStatus[keyof typeof OrderGoodsStatus];
-export type GoodsTypeType = typeof GoodsType[keyof typeof GoodsType];
+// 这些类型已在 schemas 中导出,避免重复导出
 
 // 退款状态类型
 export type RefundStatusType = typeof RefundStatus[keyof typeof RefundStatus];

+ 67 - 0
pnpm-lock.yaml

@@ -657,6 +657,73 @@ importers:
         specifier: ^3.2.4
         version: 3.2.4(@types/debug@4.1.12)(@types/node@24.9.1)(happy-dom@18.0.1)(jiti@2.6.1)(jsdom@24.1.3)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.64.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
 
+  packages/orders-module:
+    dependencies:
+      '@d8d/auth-module':
+        specifier: workspace:*
+        version: link:../auth-module
+      '@d8d/delivery-address-module':
+        specifier: workspace:*
+        version: link:../delivery-address-module
+      '@d8d/file-module':
+        specifier: workspace:*
+        version: link:../file-module
+      '@d8d/goods-module':
+        specifier: workspace:*
+        version: link:../goods-module
+      '@d8d/merchant-module':
+        specifier: workspace:*
+        version: link:../merchant-module
+      '@d8d/shared-crud':
+        specifier: workspace:*
+        version: link:../shared-crud
+      '@d8d/shared-types':
+        specifier: workspace:*
+        version: link:../shared-types
+      '@d8d/shared-utils':
+        specifier: workspace:*
+        version: link:../shared-utils
+      '@d8d/supplier-module':
+        specifier: workspace:*
+        version: link:../supplier-module
+      '@d8d/user-module':
+        specifier: workspace:*
+        version: link:../user-module
+      '@hono/zod-openapi':
+        specifier: ^1.0.2
+        version: 1.0.2(hono@4.8.5)(zod@4.1.12)
+      hono:
+        specifier: ^4.8.5
+        version: 4.8.5
+      typeorm:
+        specifier: ^0.3.20
+        version: 0.3.27(ioredis@5.8.2)(pg@8.16.3)(redis@4.7.1)(reflect-metadata@0.2.2)
+      zod:
+        specifier: ^4.1.12
+        version: 4.1.12
+    devDependencies:
+      '@d8d/shared-test-util':
+        specifier: workspace:*
+        version: link:../shared-test-util
+      '@types/node':
+        specifier: ^22.10.2
+        version: 22.19.0
+      '@typescript-eslint/eslint-plugin':
+        specifier: ^8.18.1
+        version: 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3)
+      '@typescript-eslint/parser':
+        specifier: ^8.18.1
+        version: 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3)
+      eslint:
+        specifier: ^9.17.0
+        version: 9.38.0(jiti@2.6.1)
+      typescript:
+        specifier: ^5.8.3
+        version: 5.8.3
+      vitest:
+        specifier: ^3.2.4
+        version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.0)(happy-dom@18.0.1)(jiti@2.6.1)(jsdom@24.1.3)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.64.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+
   packages/server:
     dependencies:
       '@asteasolutions/zod-to-openapi':