瀏覽代碼

✨ feat(routes): 添加商品模块的管理员和用户路由

- 创建admin-routes.ts,实现管理员商品CRUD功能
  - 配置完整的CRUD操作和数据关系
  - 添加用户追踪功能,记录创建和更新者
  - 设置幻灯片图片关联关系

- 创建user-routes.ts,实现用户商品CRUD功能
  - 配置基础CRUD操作和数据关系
  - 添加用户追踪功能
  - 设置数据权限控制,仅允许访问用户自己创建的数据
yourname 1 月之前
父節點
當前提交
b1cdf72f96
共有 2 個文件被更改,包括 59 次插入0 次删除
  1. 28 0
      packages/goods-module/src/routes/admin-routes.ts
  2. 31 0
      packages/goods-module/src/routes/user-routes.ts

+ 28 - 0
packages/goods-module/src/routes/admin-routes.ts

@@ -0,0 +1,28 @@
+import { createCrudRoutes } from '@d8d/shared-crud';
+import { authMiddleware } from '@d8d/auth-module';
+import { Goods } from '../entities/goods.entity.js';
+import { AdminGoodsSchema, AdminCreateGoodsDto, AdminUpdateGoodsDto } from '../schemas/admin-goods.schema.js';
+import { File } from '@d8d/file-module';
+
+export const adminGoodsRoutes = createCrudRoutes({
+  entity: Goods,
+  createSchema: AdminCreateGoodsDto,
+  updateSchema: AdminUpdateGoodsDto,
+  getSchema: AdminGoodsSchema,
+  listSchema: AdminGoodsSchema,
+  searchFields: ['name', 'instructions'],
+  relations: ['category1', 'category2', 'category3', 'supplier', 'imageFile.uploadUser', 'slideImages.uploadUser'],
+  middleware: [authMiddleware],
+  userTracking: {
+    createdByField: 'createdBy',
+    updatedByField: 'updatedBy'
+  },
+  relationFields: {
+    slideImageIds: {
+      relationName: 'slideImages',
+      targetEntity: File,
+      joinTableName: 'goods_slide_images'
+    }
+  }
+  // 管理员路由不使用数据权限控制,保持完整CRUD功能
+});

+ 31 - 0
packages/goods-module/src/routes/user-routes.ts

@@ -0,0 +1,31 @@
+import { createCrudRoutes } from '@d8d/shared-crud';
+import { authMiddleware } from '@d8d/auth-module';
+import { Goods } from '../entities/goods.entity.js';
+import { UserGoodsSchema, UserCreateGoodsDto, UserUpdateGoodsDto } from '../schemas/user-goods.schema.js';
+import { File } from '@d8d/file-module';
+
+export const userGoodsRoutes = createCrudRoutes({
+  entity: Goods,
+  createSchema: UserCreateGoodsDto,
+  updateSchema: UserUpdateGoodsDto,
+  getSchema: UserGoodsSchema,
+  listSchema: UserGoodsSchema,
+  searchFields: ['name', 'instructions'],
+  relations: ['category1', 'category2', 'category3', 'supplier', 'imageFile.uploadUser', 'slideImages.uploadUser'],
+  middleware: [authMiddleware],
+  userTracking: {
+    createdByField: 'createdBy',
+    updatedByField: 'updatedBy'
+  },
+  relationFields: {
+    slideImageIds: {
+      relationName: 'slideImages',
+      targetEntity: File,
+      joinTableName: 'goods_slide_images'
+    }
+  },
+  dataPermission: {
+    enabled: true,
+    userIdField: 'createdBy'
+  }
+});