Jelajahi Sumber

📝 docs(delivery-address): add 403 permission denied response schema

♻️ refactor(goods): remove redundant .ts extension from import statements

🐛 fix(order): pass tenantId when creating order to ensure data isolation

♻️ refactor(role): improve role service implementation
- add nullish coalescing operator for safer null checks
- add override keyword to explicitly mark overridden methods
yourname 1 bulan lalu
induk
melakukan
79d14f5c50

+ 4 - 0
packages/delivery-address-module-mt/src/routes/user-custom.routes.mt.ts

@@ -76,6 +76,10 @@ const updateDeliveryAddressRoute = createRoute({
       description: '认证失败',
       content: { 'application/json': { schema: ErrorSchema } }
     },
+    403: {
+      description: '权限不足',
+      content: { 'application/json': { schema: ErrorSchema } }
+    },
     404: {
       description: '配送地址不存在',
       content: { 'application/json': { schema: ErrorSchema } }

+ 5 - 5
packages/goods-module-mt/src/index.mt.ts

@@ -5,11 +5,11 @@ export * from './routes/index.mt';
 export * from './types/index.mt';
 
 // 导出路由
-import { adminGoodsRoutesMt } from './routes/admin-goods-routes.mt.ts';
-import { adminGoodsCategoriesRoutesMt } from './routes/admin-goods-categories.mt.ts';
-import { userGoodsRoutesMt } from './routes/user-goods-routes.mt.ts';
-import { publicGoodsRoutesMt } from './routes/public-goods-routes.mt.ts';
-import { publicGoodsRandomRoutesMt } from './routes/public-goods-random.mt.ts';
+import { adminGoodsRoutesMt } from './routes/admin-goods-routes.mt';
+import { adminGoodsCategoriesRoutesMt } from './routes/admin-goods-categories.mt';
+import { userGoodsRoutesMt } from './routes/user-goods-routes.mt';
+import { publicGoodsRoutesMt } from './routes/public-goods-routes.mt';
+import { publicGoodsRandomRoutesMt } from './routes/public-goods-random.mt';
 
 export {
   adminGoodsRoutesMt,

+ 1 - 1
packages/orders-module-mt/src/routes/create-order.mt.ts

@@ -47,7 +47,7 @@ createOrderRoutes.openapi(
 
     try {
       const orderService = new OrderMtService(AppDataSource);
-      const result = await orderService.createOrder(data, user.id);
+      const result = await orderService.createOrder(data, user.id, user.tenantId);
 
       return c.json(result, 201);
     } catch (error) {

+ 4 - 4
packages/user-module-mt/src/services/role.service.mt.ts

@@ -28,7 +28,7 @@ export class RoleServiceMt extends ConcreteCrudService<RoleMt> {
       }
 
       const roles = await this.repository.find({ where });
-      return roles.length > 0 ? roles[0] : null;
+      return roles.length > 0 ? roles[0] ?? null : null;
     } catch (error) {
       console.error('Error getting role by name:', error);
       throw new Error('Failed to get role by name');
@@ -72,7 +72,7 @@ export class RoleServiceMt extends ConcreteCrudService<RoleMt> {
   /**
    * 根据ID获取角色(重写以添加租户过滤)
    */
-  async getById(id: number, relations: string[] = [], userId?: string | number): Promise<RoleMt | null> {
+  override async getById(id: number, relations: string[] = [], userId?: string | number): Promise<RoleMt | null> {
     try {
       const where: any = { id };
 
@@ -91,7 +91,7 @@ export class RoleServiceMt extends ConcreteCrudService<RoleMt> {
   /**
    * 更新角色(重写以添加租户过滤)
    */
-  async update(id: number, data: Partial<RoleMt>, userId?: string | number): Promise<RoleMt | null> {
+  override async update(id: number, data: Partial<RoleMt>, userId?: string | number): Promise<RoleMt | null> {
     try {
       // 首先验证角色是否存在且属于指定租户
       const existingRole = await this.getById(id, [], userId);
@@ -111,7 +111,7 @@ export class RoleServiceMt extends ConcreteCrudService<RoleMt> {
   /**
    * 删除角色(重写以添加租户过滤)
    */
-  async delete(id: number, userId?: string | number): Promise<boolean> {
+  override async delete(id: number, userId?: string | number): Promise<boolean> {
     try {
       // 首先验证角色是否存在且属于指定租户
       const existingRole = await this.getById(id, [], userId);