Kaynağa Gözat

🐛 fix(order): 完善订单取消状态验证和错误信息处理

- 增加订单状态验证,仅允许未发货(状态0)订单取消
- 统一错误信息返回字段为message而非error
- 更新集成测试以匹配新的错误信息字段
yourname 1 ay önce
ebeveyn
işleme
bd356ed52f

+ 6 - 1
packages/orders-module-mt/src/services/order.mt.service.ts

@@ -189,7 +189,12 @@ export class OrderMtService extends GenericCrudService<OrderMt> {
         throw new Error('订单不存在');
       }
 
-      // 验证订单状态(仅允许取消支付状态为0或2的订单)
+      // 验证订单状态(仅允许取消未发货且支付状态为0或2的订单)
+      if (order.state !== 0) {
+        throw new Error('当前订单状态不允许取消');
+      }
+
+      // 验证支付状态
       if (order.payState !== 0 && order.payState !== 2) {
         throw new Error('当前订单状态不允许取消');
       }

+ 6 - 4
packages/orders-module-mt/tests/integration/user-orders-routes.integration.test.ts

@@ -304,7 +304,7 @@ describe('多租户用户订单管理API集成测试', () => {
       if (response.status === 403) {
         const result = await response.json();
 
-        expect(result.error).toBe('当前订单状态不允许取消');
+        expect(result.message).toBe('当前订单状态不允许取消');
       }
     });
 
@@ -327,7 +327,7 @@ describe('多租户用户订单管理API集成测试', () => {
       if (response.status === 404) {
         const result = await response.json();
 
-        expect(result.error).toBe('订单不存在');
+        expect(result.message).toBe('订单不存在');
       }
     });
 
@@ -353,9 +353,11 @@ describe('多租户用户订单管理API集成测试', () => {
 
       // 应该返回404,因为订单不在当前租户
       expect(response.status).toBe(404);
-      const result = await response.json();
+      if (response.status === 404) {
+        const result = await response.json();
 
-      expect(result.error).toBe('订单不存在');
+        expect(result.message).toBe('订单不存在');
+      }
     });
 
     it('应该拒绝跨用户取消订单', async () => {