Kaynağa Gözat

✨ feat(supplier): 优化供应商登录时间字段类型

- 将loginTime和lastLoginTime字段从int类型改为timestamp类型
- 更新相关schema验证规则,支持日期类型处理
- 调整集成测试用例,使用具体日期代替时间戳

🔧 chore(claude): 扩展命令白名单

- 添加pnpm --filter * typecheck:*命令到允许列表
yourname 1 ay önce
ebeveyn
işleme
8927c8aea0

+ 2 - 1
.claude/settings.local.json

@@ -46,7 +46,8 @@
       "Bash(pnpm install:*)",
       "Bash(cat:*)",
       "Bash(pnpm test:integration:*)",
-      "Bash(pnpm --filter * test:integration:*)"
+      "Bash(pnpm --filter * test:integration:*)",
+      "Bash(pnpm --filter * typecheck:*)"
     ],
     "deny": [],
     "ask": []

+ 4 - 4
packages/supplier-module/src/entities/supplier.entity.ts

@@ -23,14 +23,14 @@ export class Supplier {
   @Column({ name: 'login_num', type: 'int', unsigned: true, default: 0, comment: '登录次数' })
   loginNum!: number;
 
-  @Column({ name: 'login_time', type: 'int', unsigned: true, default: 0, comment: '登录时间' })
-  loginTime!: number;
+  @Column({ name: 'login_time', type: 'timestamp', nullable: true, comment: '登录时间' })
+  loginTime!: Date | null;
 
   @Column({ name: 'login_ip', type: 'varchar', length: 15, nullable: true, comment: '登录IP' })
   loginIp!: string | null;
 
-  @Column({ name: 'last_login_time', type: 'int', unsigned: true, default: 0, comment: '上次登录时间' })
-  lastLoginTime!: number;
+  @Column({ name: 'last_login_time', type: 'timestamp', nullable: true, comment: '上次登录时间' })
+  lastLoginTime!: Date | null;
 
   @Column({ name: 'last_login_ip', type: 'varchar', length: 15, nullable: true, comment: '上次登录IP' })
   lastLoginIp!: string | null;

+ 4 - 4
packages/supplier-module/src/schemas/admin-supplier.schema.ts

@@ -22,17 +22,17 @@ export const AdminSupplierSchema = z.object({
     description: '登录次数',
     example: 0
   }),
-  loginTime: z.number().int().nonnegative('登录时间必须为非负数').default(0).openapi({
+  loginTime: z.coerce.date().nullable().optional().openapi({
     description: '登录时间',
-    example: 0
+    example: '2024-01-01T12:00:00Z'
   }),
   loginIp: z.string().max(15, 'IP地址最多15个字符').nullable().optional().openapi({
     description: '登录IP',
     example: '192.168.1.1'
   }),
-  lastLoginTime: z.number().int().nonnegative('上次登录时间必须为非负数').default(0).openapi({
+  lastLoginTime: z.coerce.date().nullable().optional().openapi({
     description: '上次登录时间',
-    example: 0
+    example: '2024-01-01T12:00:00Z'
   }),
   lastLoginIp: z.string().max(15, 'IP地址最多15个字符').nullable().optional().openapi({
     description: '上次登录IP',

+ 4 - 4
packages/supplier-module/src/schemas/user-supplier.schema.ts

@@ -22,17 +22,17 @@ export const UserSupplierSchema = z.object({
     description: '登录次数',
     example: 0
   }),
-  loginTime: z.number().int().nonnegative('登录时间必须为非负数').default(0).openapi({
+  loginTime: z.coerce.date().nullable().optional().openapi({
     description: '登录时间',
-    example: 0
+    example: '2024-01-01T12:00:00Z'
   }),
   loginIp: z.string().max(15, 'IP地址最多15个字符').nullable().optional().openapi({
     description: '登录IP',
     example: '192.168.1.1'
   }),
-  lastLoginTime: z.number().int().nonnegative('上次登录时间必须为非负数').default(0).openapi({
+  lastLoginTime: z.coerce.date().nullable().optional().openapi({
     description: '上次登录时间',
-    example: 0
+    example: '2024-01-01T12:00:00Z'
   }),
   lastLoginIp: z.string().max(15, 'IP地址最多15个字符').nullable().optional().openapi({
     description: '上次登录IP',

+ 2 - 2
packages/supplier-module/tests/integration/admin-routes.integration.test.ts

@@ -149,9 +149,9 @@ describe('管理员供应商管理API集成测试', () => {
         phone: '13600136000',
         realname: '测试供应商详情',
         loginNum: 5,
-        loginTime: Date.now(),
+        loginTime: new Date('2024-01-01T12:00:00Z'),
         loginIp: '192.168.1.1',
-        lastLoginTime: Date.now(),
+        lastLoginTime: new Date('2024-01-01T12:00:00Z'),
         lastLoginIp: '192.168.1.1',
         state: 1,
         createdBy: testUser.id

+ 2 - 2
packages/supplier-module/tests/integration/user-routes.integration.test.ts

@@ -212,9 +212,9 @@ describe('用户供应商管理API集成测试', () => {
         phone: '13600136000',
         realname: '测试供应商详情',
         loginNum: 5,
-        loginTime: Date.now(),
+        loginTime: new Date('2024-01-01T12:00:00Z'),
         loginIp: '192.168.1.1',
-        lastLoginTime: Date.now(),
+        lastLoginTime: new Date('2024-01-01T12:00:00Z'),
         lastLoginIp: '192.168.1.1',
         state: 1,
         createdBy: testUser.id