package models import "time" // ==================== 游客(免登录模块)轻身份与通用数据 ==================== // // 设计:免登录模块「不登录也要能存数据」。小程序用手机号授权换取游客轻身份 // (yz_guest_user),业务条目按 guest_id + module 文档式存入 yz_guest_data, // 永久保留不清理;正式登录后按手机号把数据合并进正式账号(见 controllers/guest_merge.go)。 // GuestUser 游客轻身份,以微信验证手机号为唯一标识。 type GuestUser struct { ID uint64 `orm:"column(id);pk;auto" json:"id"` Phone string `orm:"column(phone);size(20)" json:"phone"` OpenID string `orm:"column(openid);size(64);default('')" json:"openid"` UnionID string `orm:"column(unionid);size(64);default('')" json:"unionid"` CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"` LastActiveTime *time.Time `orm:"column(last_active_time);type(datetime);null" json:"last_active_time"` MergedUID uint64 `orm:"column(merged_uid);default(0)" json:"merged_uid"` MergedTime *time.Time `orm:"column(merged_time);type(datetime);null" json:"merged_time"` } func (*GuestUser) TableName() string { return "yz_guest_user" } // GuestData 游客通用数据行:一条业务条目 = 一行 JSON 文档。 // module 取值与免登录业务对应(notebook / schedule / passwordStore / …), // 新模块直接复用本表,无需再加业务表。 type GuestData struct { ID uint64 `orm:"column(id);pk;auto" json:"id"` GuestID uint64 `orm:"column(guest_id)" json:"guest_id"` Module string `orm:"column(module);size(50)" json:"module"` Payload string `orm:"column(payload);type(text)" json:"payload"` IsDeleted int8 `orm:"column(is_deleted);default(0)" json:"is_deleted"` // 0正常 1已删除 2已合并 CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"` UpdateTime *time.Time `orm:"column(update_time);type(datetime);null" json:"update_time"` } func (*GuestData) TableName() string { return "yz_guest_data" }