feat: add card skins support

This commit is contained in:
2026-03-12 13:19:46 +08:00
parent e759576b58
commit 9f92b57371
14 changed files with 904 additions and 154 deletions

View File

@@ -281,8 +281,15 @@ export const idTag = pgTable('id_tag', {
* 储值卡余额(单位:分)
* 以整数存储1 分 = 0.01 CNY前端显示时除以 100
*/
balance: integer('balance').notNull().default(0),
createdAt: timestamp('created_at', { withTimezone: true })
balance: integer('balance').notNull().default(0), /**
* 卡面内容排列方式
*/
cardLayout: varchar('card_layout', { enum: ['center', 'around'] }).default('around'),
/**
* 卡底装饰风格
* 对应 faces/ 目录中已注册的卡面组件
*/
cardSkin: varchar('card_skin', { enum: ['line', 'circles', 'glow', 'vip', 'redeye'] }).default('circles'), createdAt: timestamp('created_at', { withTimezone: true })
.notNull()
.defaultNow(),
updatedAt: timestamp('updated_at', { withTimezone: true })

View File

@@ -16,6 +16,8 @@ const idTagSchema = z.object({
expiryDate: z.string().date().optional().nullable(),
userId: z.string().optional().nullable(),
balance: z.number().int().min(0).default(0),
cardLayout: z.enum(["center", "around"]).optional(),
cardSkin: z.enum(["line", "circles", "glow", "vip", "redeye"]).optional(),
});
const idTagUpdateSchema = idTagSchema.partial().omit({ idTag: true });