Fix code duplicate bug

Signed-off-by: Asai Neko <sugar@sne.moe>
This commit is contained in:
2025-12-28 01:28:46 +08:00
parent f89a483380
commit 0a861fa674

View File

@@ -165,18 +165,25 @@ func (self *User) FastListUsers(limit, offset int64) (*[]UserSearchDoc, error) {
}
func (self *User) GenCheckinCode(eventId uuid.UUID) (*string, error) {
rng := rand.New(rand.NewSource(time.Now().UnixNano()))
randomNumber := rng.Intn(900000) + 100000
randNumString := fmt.Sprintf("%06d", randomNumber)
ctx := context.Background()
ttl := viper.GetDuration("ttl.checkin_code_ttl")
Redis.Set(
rng := rand.New(rand.NewSource(time.Now().UnixNano()))
for {
code := fmt.Sprintf("%06d", rng.Intn(900000)+100000)
ok, err := Redis.SetNX(
ctx,
"checkin_code:"+randNumString,
self.UserId.String()+":"+eventId.String(),
"checkin_code:"+code,
"user_id:"+self.UserId.String()+":event_id:"+eventId.String(),
ttl,
)
return &randNumString, nil
).Result()
if err != nil {
return nil, err
}
if ok {
return &code, nil
}
}
}
func (self *User) VerifyCheckinCode(checkinCode string) (*uuid.UUID, error) {