create-order.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { OpenAPIHono } from '@hono/zod-openapi';
  2. import { authMiddleware } from '@d8d/auth-module';
  3. import { AppDataSource } from '@d8d/shared-utils';
  4. import { AuthContext } from '@d8d/shared-types';
  5. import { OrderService } from '../services';
  6. import { CreateOrderRequestDto, CreateOrderResponseDto } from '../schemas/create-order.schema';
  7. const createOrderRoutes = new OpenAPIHono<AuthContext>();
  8. // 应用认证中间件
  9. createOrderRoutes.use('*', authMiddleware);
  10. // 创建订单路由
  11. createOrderRoutes.openapi(
  12. {
  13. method: 'post',
  14. path: '/',
  15. request: {
  16. body: {
  17. content: {
  18. 'application/json': {
  19. schema: CreateOrderRequestDto
  20. }
  21. }
  22. }
  23. },
  24. responses: {
  25. 200: {
  26. description: '订单创建成功',
  27. content: {
  28. 'application/json': {
  29. schema: CreateOrderResponseDto
  30. }
  31. }
  32. },
  33. 400: {
  34. description: '请求参数错误'
  35. },
  36. 500: {
  37. description: '服务器内部错误'
  38. }
  39. }
  40. },
  41. async (c) => {
  42. const data = c.req.valid('json');
  43. const user = c.get('user');
  44. try {
  45. const orderService = new OrderService(AppDataSource);
  46. const result = await orderService.createOrder(data, user.id);
  47. return c.json(result, 201);
  48. } catch (error) {
  49. console.error('创建订单失败:', error);
  50. return c.json(
  51. { error: error instanceof Error ? error.message : '创建订单失败' },
  52. 500
  53. );
  54. }
  55. }
  56. );
  57. export default createOrderRoutes;