admin-supplier.mt.schema.ts 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import { z } from '@hono/zod-openapi';
  2. export const AdminSupplierSchema = z.object({
  3. id: z.number().int().positive().openapi({ description: '供应商ID' }),
  4. tenantId: z.number().int().positive().openapi({ description: '租户ID' }),
  5. name: z.string().min(1, '供货商名称不能为空').max(255, '供货商名称最多255个字符').nullable().openapi({
  6. description: '供货商名称',
  7. example: '供应商A'
  8. }),
  9. username: z.string().min(1, '用户名不能为空').max(50, '用户名最多50个字符').openapi({
  10. description: '用户名',
  11. example: 'supplier001'
  12. }),
  13. phone: z.string().regex(/^1[3-9]\d{9}$/, '请输入正确的手机号').nullable().optional().openapi({
  14. description: '手机号码',
  15. example: '13800138000'
  16. }),
  17. realname: z.string().max(20, '姓名最多20个字符').nullable().optional().openapi({
  18. description: '姓名',
  19. example: '张三'
  20. }),
  21. loginNum: z.number().int().nonnegative('登录次数必须为非负数').default(0).openapi({
  22. description: '登录次数',
  23. example: 0
  24. }),
  25. loginTime: z.coerce.date().nullable().optional().openapi({
  26. description: '登录时间',
  27. example: '2024-01-01T12:00:00Z'
  28. }),
  29. loginIp: z.string().max(15, 'IP地址最多15个字符').nullable().optional().openapi({
  30. description: '登录IP',
  31. example: '192.168.1.1'
  32. }),
  33. lastLoginTime: z.coerce.date().nullable().optional().openapi({
  34. description: '上次登录时间',
  35. example: '2024-01-01T12:00:00Z'
  36. }),
  37. lastLoginIp: z.string().max(15, 'IP地址最多15个字符').nullable().optional().openapi({
  38. description: '上次登录IP',
  39. example: '192.168.1.1'
  40. }),
  41. state: z.number().int().min(1).max(2).default(2).openapi({
  42. description: '状态 1启用 2禁用',
  43. example: 1
  44. }),
  45. createdAt: z.coerce.date().openapi({
  46. description: '创建时间',
  47. example: '2024-01-01T12:00:00Z'
  48. }),
  49. updatedAt: z.coerce.date().openapi({
  50. description: '更新时间',
  51. example: '2024-01-01T12:00:00Z'
  52. }),
  53. createdBy: z.number().int().positive().nullable().openapi({
  54. description: '创建用户ID',
  55. example: 1
  56. }),
  57. updatedBy: z.number().int().positive().nullable().openapi({
  58. description: '更新用户ID',
  59. example: 1
  60. })
  61. });
  62. export const CreateAdminSupplierDto = z.object({
  63. name: z.string().min(1, '供货商名称不能为空').max(255, '供货商名称最多255个字符').nullable().optional().openapi({
  64. description: '供货商名称',
  65. example: '供应商A'
  66. }),
  67. username: z.string().min(1, '用户名不能为空').max(50, '用户名最多50个字符').openapi({
  68. description: '用户名',
  69. example: 'supplier001'
  70. }),
  71. password: z.string().min(6, '密码至少6位').max(255, '密码最多255位').openapi({
  72. description: '密码',
  73. example: 'password123'
  74. }),
  75. phone: z.string().regex(/^1[3-9]\d{9}$/, '请输入正确的手机号').nullable().optional().openapi({
  76. description: '手机号码',
  77. example: '13800138000'
  78. }),
  79. realname: z.string().max(20, '姓名最多20个字符').nullable().optional().openapi({
  80. description: '姓名',
  81. example: '张三'
  82. }),
  83. state: z.number().int().min(1).max(2).default(2).openapi({
  84. description: '状态 1启用 2禁用',
  85. example: 1
  86. }),
  87. createdBy: z.number().int().positive().optional().openapi({
  88. description: '创建用户ID',
  89. example: 1
  90. })
  91. });
  92. export const UpdateAdminSupplierDto = z.object({
  93. name: z.string().min(1, '供货商名称不能为空').max(255, '供货商名称最多255个字符').nullable().optional().openapi({
  94. description: '供货商名称',
  95. example: '供应商A'
  96. }),
  97. username: z.string().min(1, '用户名不能为空').max(50, '用户名最多50个字符').optional().openapi({
  98. description: '用户名',
  99. example: 'supplier001'
  100. }),
  101. password: z.string().min(6, '密码至少6位').max(255, '密码最多255位').optional().openapi({
  102. description: '密码',
  103. example: 'password123'
  104. }),
  105. phone: z.string().regex(/^1[3-9]\d{9}$/, '请输入正确的手机号').nullable().optional().openapi({
  106. description: '手机号码',
  107. example: '13800138000'
  108. }),
  109. realname: z.string().max(20, '姓名最多20个字符').nullable().optional().openapi({
  110. description: '姓名',
  111. example: '张三'
  112. }),
  113. state: z.number().int().min(1).max(2).optional().openapi({
  114. description: '状态 1启用 2禁用',
  115. example: 1
  116. }),
  117. updatedBy: z.number().int().positive().optional().openapi({
  118. description: '更新用户ID',
  119. example: 1
  120. })
  121. });