|
@@ -1,6 +1,6 @@
|
|
|
import { createRoute, OpenAPIHono } from '@hono/zod-openapi';
|
|
import { createRoute, OpenAPIHono } from '@hono/zod-openapi';
|
|
|
import { z } from '@hono/zod-openapi';
|
|
import { z } from '@hono/zod-openapi';
|
|
|
-import { AppDataSource, ErrorSchema, parseWithAwait } from '@d8d/shared-utils';
|
|
|
|
|
|
|
+import { AppDataSource, ErrorSchema, ZodErrorSchema, parseWithAwait } from '@d8d/shared-utils';
|
|
|
import { authMiddleware } from '@d8d/auth-module';
|
|
import { authMiddleware } from '@d8d/auth-module';
|
|
|
import { AuthContext } from '@d8d/shared-types';
|
|
import { AuthContext } from '@d8d/shared-types';
|
|
|
import { SalaryService } from '../services/salary.service';
|
|
import { SalaryService } from '../services/salary.service';
|
|
@@ -33,7 +33,7 @@ const createSalaryRoute = createRoute({
|
|
|
},
|
|
},
|
|
|
400: {
|
|
400: {
|
|
|
description: '参数错误或区域重复',
|
|
description: '参数错误或区域重复',
|
|
|
- content: { 'application/json': { schema: ErrorSchema } }
|
|
|
|
|
|
|
+ content: { 'application/json': { schema: ZodErrorSchema } }
|
|
|
},
|
|
},
|
|
|
401: {
|
|
401: {
|
|
|
description: '认证失败',
|
|
description: '认证失败',
|
|
@@ -74,7 +74,7 @@ const updateSalaryRoute = createRoute({
|
|
|
},
|
|
},
|
|
|
400: {
|
|
400: {
|
|
|
description: '参数错误或区域重复',
|
|
description: '参数错误或区域重复',
|
|
|
- content: { 'application/json': { schema: ErrorSchema } }
|
|
|
|
|
|
|
+ content: { 'application/json': { schema: ZodErrorSchema } }
|
|
|
},
|
|
},
|
|
|
401: {
|
|
401: {
|
|
|
description: '认证失败',
|
|
description: '认证失败',
|
|
@@ -118,7 +118,7 @@ const deleteSalaryRoute = createRoute({
|
|
|
},
|
|
},
|
|
|
400: {
|
|
400: {
|
|
|
description: '参数错误',
|
|
description: '参数错误',
|
|
|
- content: { 'application/json': { schema: ErrorSchema } }
|
|
|
|
|
|
|
+ content: { 'application/json': { schema: ZodErrorSchema } }
|
|
|
},
|
|
},
|
|
|
401: {
|
|
401: {
|
|
|
description: '认证失败',
|
|
description: '认证失败',
|
|
@@ -157,7 +157,7 @@ const getAllSalariesRoute = createRoute({
|
|
|
},
|
|
},
|
|
|
400: {
|
|
400: {
|
|
|
description: '参数错误',
|
|
description: '参数错误',
|
|
|
- content: { 'application/json': { schema: ErrorSchema } }
|
|
|
|
|
|
|
+ content: { 'application/json': { schema: ZodErrorSchema } }
|
|
|
},
|
|
},
|
|
|
401: {
|
|
401: {
|
|
|
description: '认证失败',
|
|
description: '认证失败',
|
|
@@ -193,7 +193,7 @@ const getSalaryByIdRoute = createRoute({
|
|
|
},
|
|
},
|
|
|
400: {
|
|
400: {
|
|
|
description: '参数错误',
|
|
description: '参数错误',
|
|
|
- content: { 'application/json': { schema: ErrorSchema } }
|
|
|
|
|
|
|
+ content: { 'application/json': { schema: ZodErrorSchema } }
|
|
|
},
|
|
},
|
|
|
401: {
|
|
401: {
|
|
|
description: '认证失败',
|
|
description: '认证失败',
|
|
@@ -227,7 +227,7 @@ const getSalaryByProvinceCityRoute = createRoute({
|
|
|
},
|
|
},
|
|
|
400: {
|
|
400: {
|
|
|
description: '参数错误',
|
|
description: '参数错误',
|
|
|
- content: { 'application/json': { schema: ErrorSchema } }
|
|
|
|
|
|
|
+ content: { 'application/json': { schema: ZodErrorSchema } }
|
|
|
},
|
|
},
|
|
|
401: {
|
|
401: {
|
|
|
description: '认证失败',
|
|
description: '认证失败',
|
|
@@ -258,7 +258,24 @@ const app = new OpenAPIHono<AuthContext>()
|
|
|
if (error instanceof z.ZodError) {
|
|
if (error instanceof z.ZodError) {
|
|
|
return c.json({
|
|
return c.json({
|
|
|
code: 400,
|
|
code: 400,
|
|
|
- message: '参数错误'
|
|
|
|
|
|
|
+ message: '参数错误',
|
|
|
|
|
+ errors: error.issues.map(issue => {
|
|
|
|
|
+ const mappedIssue: any = {
|
|
|
|
|
+ code: issue.code,
|
|
|
|
|
+ path: issue.path,
|
|
|
|
|
+ message: issue.message
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // 可选字段,使用类型断言
|
|
|
|
|
+ if ('expected' in issue) mappedIssue.expected = issue.expected as string;
|
|
|
|
|
+ if ('received' in issue) mappedIssue.received = issue.received as string;
|
|
|
|
|
+ if ('origin' in issue) mappedIssue.origin = issue.origin as string;
|
|
|
|
|
+ if ('minimum' in issue) mappedIssue.minimum = issue.minimum as number;
|
|
|
|
|
+ if ('maximum' in issue) mappedIssue.maximum = issue.maximum as number;
|
|
|
|
|
+ if ('inclusive' in issue) mappedIssue.inclusive = issue.inclusive as boolean;
|
|
|
|
|
+
|
|
|
|
|
+ return mappedIssue;
|
|
|
|
|
+ })
|
|
|
}, 400);
|
|
}, 400);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -266,7 +283,8 @@ const app = new OpenAPIHono<AuthContext>()
|
|
|
if (error instanceof Error && error.message.includes('该省份城市的薪资记录已存在')) {
|
|
if (error instanceof Error && error.message.includes('该省份城市的薪资记录已存在')) {
|
|
|
return c.json({
|
|
return c.json({
|
|
|
code: 400,
|
|
code: 400,
|
|
|
- message: '该省份城市的薪资记录已存在'
|
|
|
|
|
|
|
+ message: '该省份城市的薪资记录已存在',
|
|
|
|
|
+ errors: []
|
|
|
}, 400);
|
|
}, 400);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -279,7 +297,8 @@ const app = new OpenAPIHono<AuthContext>()
|
|
|
)) {
|
|
)) {
|
|
|
return c.json({
|
|
return c.json({
|
|
|
code: 400,
|
|
code: 400,
|
|
|
- message: error.message
|
|
|
|
|
|
|
+ message: error.message,
|
|
|
|
|
+ errors: []
|
|
|
}, 400);
|
|
}, 400);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -308,7 +327,24 @@ const app = new OpenAPIHono<AuthContext>()
|
|
|
if (error instanceof z.ZodError) {
|
|
if (error instanceof z.ZodError) {
|
|
|
return c.json({
|
|
return c.json({
|
|
|
code: 400,
|
|
code: 400,
|
|
|
- message: '参数错误'
|
|
|
|
|
|
|
+ message: '参数错误',
|
|
|
|
|
+ errors: error.issues.map(issue => {
|
|
|
|
|
+ const mappedIssue: any = {
|
|
|
|
|
+ code: issue.code,
|
|
|
|
|
+ path: issue.path,
|
|
|
|
|
+ message: issue.message
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // 可选字段,使用类型断言
|
|
|
|
|
+ if ('expected' in issue) mappedIssue.expected = issue.expected as string;
|
|
|
|
|
+ if ('received' in issue) mappedIssue.received = issue.received as string;
|
|
|
|
|
+ if ('origin' in issue) mappedIssue.origin = issue.origin as string;
|
|
|
|
|
+ if ('minimum' in issue) mappedIssue.minimum = issue.minimum as number;
|
|
|
|
|
+ if ('maximum' in issue) mappedIssue.maximum = issue.maximum as number;
|
|
|
|
|
+ if ('inclusive' in issue) mappedIssue.inclusive = issue.inclusive as boolean;
|
|
|
|
|
+
|
|
|
|
|
+ return mappedIssue;
|
|
|
|
|
+ })
|
|
|
}, 400);
|
|
}, 400);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -316,7 +352,8 @@ const app = new OpenAPIHono<AuthContext>()
|
|
|
if (error instanceof Error && error.message.includes('该省份城市的薪资记录已存在')) {
|
|
if (error instanceof Error && error.message.includes('该省份城市的薪资记录已存在')) {
|
|
|
return c.json({
|
|
return c.json({
|
|
|
code: 400,
|
|
code: 400,
|
|
|
- message: '该省份城市的薪资记录已存在'
|
|
|
|
|
|
|
+ message: '该省份城市的薪资记录已存在',
|
|
|
|
|
+ errors: []
|
|
|
}, 400);
|
|
}, 400);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -329,7 +366,8 @@ const app = new OpenAPIHono<AuthContext>()
|
|
|
)) {
|
|
)) {
|
|
|
return c.json({
|
|
return c.json({
|
|
|
code: 400,
|
|
code: 400,
|
|
|
- message: error.message
|
|
|
|
|
|
|
+ message: error.message,
|
|
|
|
|
+ errors: []
|
|
|
}, 400);
|
|
}, 400);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -364,7 +402,24 @@ const app = new OpenAPIHono<AuthContext>()
|
|
|
if (error instanceof z.ZodError) {
|
|
if (error instanceof z.ZodError) {
|
|
|
return c.json({
|
|
return c.json({
|
|
|
code: 400,
|
|
code: 400,
|
|
|
- message: '参数错误'
|
|
|
|
|
|
|
+ message: '参数错误',
|
|
|
|
|
+ errors: error.issues.map(issue => {
|
|
|
|
|
+ const mappedIssue: any = {
|
|
|
|
|
+ code: issue.code,
|
|
|
|
|
+ path: issue.path,
|
|
|
|
|
+ message: issue.message
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // 可选字段,使用类型断言
|
|
|
|
|
+ if ('expected' in issue) mappedIssue.expected = issue.expected as string;
|
|
|
|
|
+ if ('received' in issue) mappedIssue.received = issue.received as string;
|
|
|
|
|
+ if ('origin' in issue) mappedIssue.origin = issue.origin as string;
|
|
|
|
|
+ if ('minimum' in issue) mappedIssue.minimum = issue.minimum as number;
|
|
|
|
|
+ if ('maximum' in issue) mappedIssue.maximum = issue.maximum as number;
|
|
|
|
|
+ if ('inclusive' in issue) mappedIssue.inclusive = issue.inclusive as boolean;
|
|
|
|
|
+
|
|
|
|
|
+ return mappedIssue;
|
|
|
|
|
+ })
|
|
|
}, 400);
|
|
}, 400);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -398,7 +453,24 @@ const app = new OpenAPIHono<AuthContext>()
|
|
|
if (error instanceof z.ZodError) {
|
|
if (error instanceof z.ZodError) {
|
|
|
return c.json({
|
|
return c.json({
|
|
|
code: 400,
|
|
code: 400,
|
|
|
- message: '参数错误'
|
|
|
|
|
|
|
+ message: '参数错误',
|
|
|
|
|
+ errors: error.issues.map(issue => {
|
|
|
|
|
+ const mappedIssue: any = {
|
|
|
|
|
+ code: issue.code,
|
|
|
|
|
+ path: issue.path,
|
|
|
|
|
+ message: issue.message
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // 可选字段,使用类型断言
|
|
|
|
|
+ if ('expected' in issue) mappedIssue.expected = issue.expected as string;
|
|
|
|
|
+ if ('received' in issue) mappedIssue.received = issue.received as string;
|
|
|
|
|
+ if ('origin' in issue) mappedIssue.origin = issue.origin as string;
|
|
|
|
|
+ if ('minimum' in issue) mappedIssue.minimum = issue.minimum as number;
|
|
|
|
|
+ if ('maximum' in issue) mappedIssue.maximum = issue.maximum as number;
|
|
|
|
|
+ if ('inclusive' in issue) mappedIssue.inclusive = issue.inclusive as boolean;
|
|
|
|
|
+
|
|
|
|
|
+ return mappedIssue;
|
|
|
|
|
+ })
|
|
|
}, 400);
|
|
}, 400);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -426,7 +498,24 @@ const app = new OpenAPIHono<AuthContext>()
|
|
|
if (error instanceof z.ZodError) {
|
|
if (error instanceof z.ZodError) {
|
|
|
return c.json({
|
|
return c.json({
|
|
|
code: 400,
|
|
code: 400,
|
|
|
- message: '参数错误'
|
|
|
|
|
|
|
+ message: '参数错误',
|
|
|
|
|
+ errors: error.issues.map(issue => {
|
|
|
|
|
+ const mappedIssue: any = {
|
|
|
|
|
+ code: issue.code,
|
|
|
|
|
+ path: issue.path,
|
|
|
|
|
+ message: issue.message
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // 可选字段,使用类型断言
|
|
|
|
|
+ if ('expected' in issue) mappedIssue.expected = issue.expected as string;
|
|
|
|
|
+ if ('received' in issue) mappedIssue.received = issue.received as string;
|
|
|
|
|
+ if ('origin' in issue) mappedIssue.origin = issue.origin as string;
|
|
|
|
|
+ if ('minimum' in issue) mappedIssue.minimum = issue.minimum as number;
|
|
|
|
|
+ if ('maximum' in issue) mappedIssue.maximum = issue.maximum as number;
|
|
|
|
|
+ if ('inclusive' in issue) mappedIssue.inclusive = issue.inclusive as boolean;
|
|
|
|
|
+
|
|
|
|
|
+ return mappedIssue;
|
|
|
|
|
+ })
|
|
|
}, 400);
|
|
}, 400);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -454,7 +543,24 @@ const app = new OpenAPIHono<AuthContext>()
|
|
|
if (error instanceof z.ZodError) {
|
|
if (error instanceof z.ZodError) {
|
|
|
return c.json({
|
|
return c.json({
|
|
|
code: 400,
|
|
code: 400,
|
|
|
- message: '参数错误'
|
|
|
|
|
|
|
+ message: '参数错误',
|
|
|
|
|
+ errors: error.issues.map(issue => {
|
|
|
|
|
+ const mappedIssue: any = {
|
|
|
|
|
+ code: issue.code,
|
|
|
|
|
+ path: issue.path,
|
|
|
|
|
+ message: issue.message
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // 可选字段,使用类型断言
|
|
|
|
|
+ if ('expected' in issue) mappedIssue.expected = issue.expected as string;
|
|
|
|
|
+ if ('received' in issue) mappedIssue.received = issue.received as string;
|
|
|
|
|
+ if ('origin' in issue) mappedIssue.origin = issue.origin as string;
|
|
|
|
|
+ if ('minimum' in issue) mappedIssue.minimum = issue.minimum as number;
|
|
|
|
|
+ if ('maximum' in issue) mappedIssue.maximum = issue.maximum as number;
|
|
|
|
|
+ if ('inclusive' in issue) mappedIssue.inclusive = issue.inclusive as boolean;
|
|
|
|
|
+
|
|
|
|
|
+ return mappedIssue;
|
|
|
|
|
+ })
|
|
|
}, 400);
|
|
}, 400);
|
|
|
}
|
|
}
|
|
|
|
|
|