原来 uniqueIndex:uk_shop_username 只在 Username 字段上,导致用户名全局唯一。 S002/S003 的 admin 用户与 S001 冲突,INSERT 被静默跳过,无法登录。 将 User 的 TenantBase 改为直接定义 ShopID,使其参与复合唯一索引。 需要 Reset DB 使新索引生效。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -132,21 +132,21 @@ func main() {
|
||||
hash := mustHash("password123")
|
||||
admin := upsert(db, &model.User{}, "shop_id = ? AND username = ?", shop.ID, "admin", func() any {
|
||||
return &model.User{
|
||||
TenantBase: model.TenantBase{ShopID: shop.ID},
|
||||
ShopID: shop.ID,
|
||||
Username: "admin", PasswordHash: hash, RealName: "张三(管理员)",
|
||||
Phone: "13800000001", Role: "admin", IsActive: true,
|
||||
}
|
||||
}).(model.User)
|
||||
operator := upsert(db, &model.User{}, "shop_id = ? AND username = ?", shop.ID, "operator", func() any {
|
||||
return &model.User{
|
||||
TenantBase: model.TenantBase{ShopID: shop.ID},
|
||||
ShopID: shop.ID,
|
||||
Username: "operator", PasswordHash: hash, RealName: "李四(操作员)",
|
||||
Phone: "13800000002", Role: "operator", IsActive: true,
|
||||
}
|
||||
}).(model.User)
|
||||
upsert(db, &model.User{}, "shop_id = ? AND username = ?", shop.ID, "test", func() any {
|
||||
return &model.User{
|
||||
TenantBase: model.TenantBase{ShopID: shop.ID},
|
||||
ShopID: shop.ID,
|
||||
Username: "test", PasswordHash: hash, RealName: "王五(只读)",
|
||||
Phone: "13800000003", Role: "readonly", IsActive: true,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user