WIP Add join_event in service_event
All checks were successful
Client CMS Check Build (NixCN CMS) TeamCity build finished
Backend Check Build (NixCN CMS) TeamCity build finished

Signed-off-by: Asai Neko <sugar@sne.moe>
This commit is contained in:
2026-01-31 08:29:02 +08:00
parent 70d1544cfe
commit 1d885feb1f
10 changed files with 76 additions and 91 deletions

View File

@@ -20,7 +20,7 @@ type Attendance struct {
EventId uuid.UUID `json:"event_id" gorm:"type:uuid;uniqueIndex:unique_event_user;not null"`
UserId uuid.UUID `json:"user_id" gorm:"type:uuid;uniqueIndex:unique_event_user;not null"`
Role string `json:"role" gorm:"type:varchar(255);not null"`
State string `json:"state" gorm:"type:varchar(255);not null"`
State string `json:"state" gorm:"type:varchar(255);not null"` // suspended | out_of_limit | success
KycInfo string `json:"kyc_info" gorm:"type:text"`
CheckinAt time.Time `json:"checkin_at"`
}
@@ -33,6 +33,31 @@ type AttendanceSearchDoc struct {
CheckinAt time.Time `json:"checkin_at"`
}
func (self *Attendance) SetEventId(s uuid.UUID) *Attendance {
self.EventId = s
return self
}
func (self *Attendance) SetUserId(s uuid.UUID) *Attendance {
self.UserId = s
return self
}
func (self *Attendance) SetRole(s string) *Attendance {
self.Role = s
return self
}
func (self *Attendance) SetState(s string) *Attendance {
self.State = s
return self
}
func (self *Attendance) SetKycInfo(s string) *Attendance {
self.KycInfo = s
return self
}
func (self *Attendance) GetAttendance(ctx context.Context, userId, eventId uuid.UUID) (*Attendance, error) {
var checkin Attendance
@@ -105,7 +130,7 @@ func (self *Attendance) Create(ctx context.Context) error {
return nil
}
func (self *Attendance) Update(ctx context.Context, attendanceId uuid.UUID, checkinTime *time.Time) (*Attendance, error) {
func (self *Attendance) Update(ctx context.Context, attendanceId uuid.UUID) (*Attendance, error) {
var attendance Attendance
err := Database.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
@@ -116,19 +141,9 @@ func (self *Attendance) Update(ctx context.Context, attendanceId uuid.UUID, chec
return err
}
updates := map[string]any{}
if checkinTime != nil {
updates["checkin_at"] = *checkinTime
}
if len(updates) == 0 {
return nil
}
if err := tx.
Model(&attendance).
Updates(updates).Error; err != nil {
Updates(self).Error; err != nil {
return err
}
@@ -196,8 +211,8 @@ func (self *Attendance) VerifyCheckinCode(ctx context.Context, checkinCode strin
return err
}
time := time.Now()
_, err = self.Update(ctx, attendanceData.AttendanceId, &time)
self.CheckinAt = time.Now()
_, err = self.Update(ctx, attendanceData.AttendanceId)
if err != nil {
return err
}