@@ -19,9 +19,9 @@ type Attendance struct {
|
||||
AttendanceId uuid.UUID `json:"attendance_id" gorm:"type:uuid;uniqueIndex;not null"`
|
||||
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"`
|
||||
KycId uuid.UUID `json:"kyc_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"` // suspended | out_of_limit | success
|
||||
KycInfo string `json:"kyc_info" gorm:"type:text"`
|
||||
CheckinAt time.Time `json:"checkin_at"`
|
||||
}
|
||||
|
||||
@@ -43,6 +43,11 @@ func (self *Attendance) SetUserId(s uuid.UUID) *Attendance {
|
||||
return self
|
||||
}
|
||||
|
||||
func (self *Attendance) SetKycId(s uuid.UUID) *Attendance {
|
||||
self.KycId = s
|
||||
return self
|
||||
}
|
||||
|
||||
func (self *Attendance) SetRole(s string) *Attendance {
|
||||
self.Role = s
|
||||
return self
|
||||
@@ -53,11 +58,6 @@ func (self *Attendance) SetState(s string) *Attendance {
|
||||
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
|
||||
|
||||
@@ -112,6 +112,23 @@ func (self *Attendance) GetEventsByUserID(ctx context.Context, userID uuid.UUID)
|
||||
return &result, err
|
||||
}
|
||||
|
||||
func (self *Attendance) GetAttendanceByEventIdAndUserId(ctx context.Context, eventId, userId uuid.UUID) (*Attendance, error) {
|
||||
var attendance Attendance
|
||||
|
||||
err := Database.WithContext(ctx).
|
||||
Where("event_id = ? AND user_id = ?", eventId, userId).
|
||||
First(&attendance).Error
|
||||
|
||||
if err != nil {
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &attendance, nil
|
||||
}
|
||||
|
||||
func (self *Attendance) Create(ctx context.Context) error {
|
||||
self.UUID = uuid.New()
|
||||
self.AttendanceId = uuid.New()
|
||||
|
||||
92
data/kyc.go
Normal file
92
data/kyc.go
Normal file
@@ -0,0 +1,92 @@
|
||||
package data
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type Kyc struct {
|
||||
Id uint `json:"id" gorm:"primarykey;autoincrement"`
|
||||
UUID uuid.UUID `json:"uuid" gorm:"type:uuid;uniqueindex;not null"`
|
||||
UserId uuid.UUID `json:"user_id" gorm:"type:uuid;not null"` // 已移除 uniqueindex
|
||||
KycId uuid.UUID `json:"kyc_id" gorm:"type:uuid;uniqueindex;not null"`
|
||||
Type string `json:"type" gorm:"type:varchar(255);not null"`
|
||||
KycInfo string `json:"kyc_info" gorm:"type:text"` // aes256(base64)
|
||||
}
|
||||
|
||||
func (self *Kyc) SetUserId(id uuid.UUID) *Kyc {
|
||||
self.UserId = id
|
||||
return self
|
||||
}
|
||||
|
||||
func (self *Kyc) SetType(t string) *Kyc {
|
||||
self.Type = t
|
||||
return self
|
||||
}
|
||||
|
||||
func (self *Kyc) SetKycInfo(info string) *Kyc {
|
||||
self.KycInfo = info
|
||||
return self
|
||||
}
|
||||
|
||||
func (self *Kyc) Create(ctx context.Context) (uuid.UUID, error) {
|
||||
self.UUID = uuid.New()
|
||||
self.KycId = uuid.New()
|
||||
|
||||
err := Database.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||
return tx.Create(self).Error
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return uuid.Nil, err
|
||||
}
|
||||
|
||||
return self.KycId, nil
|
||||
}
|
||||
|
||||
func (self *Kyc) GetByKycId(ctx context.Context, kycId *uuid.UUID) (*Kyc, error) {
|
||||
var kyc Kyc
|
||||
err := Database.WithContext(ctx).
|
||||
Where("kyc_id = ?", kycId).
|
||||
First(&kyc).Error
|
||||
|
||||
if err != nil {
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return &kyc, nil
|
||||
}
|
||||
|
||||
func (self *Kyc) ListByUserId(ctx context.Context, userId *uuid.UUID) ([]Kyc, error) {
|
||||
var list []Kyc
|
||||
err := Database.WithContext(ctx).
|
||||
Where("user_id = ?", userId).
|
||||
Find(&list).Error
|
||||
|
||||
return list, err
|
||||
}
|
||||
|
||||
func (self *Kyc) UpdateByKycID(ctx context.Context, kycId *uuid.UUID, updates map[string]any) error {
|
||||
return Database.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||
return tx.Model(&Kyc{}).
|
||||
Where("kyc_id = ?", kycId).
|
||||
Updates(updates).Error
|
||||
})
|
||||
}
|
||||
|
||||
func (self *Kyc) DeleteByKycID(ctx context.Context, kycId *uuid.UUID) error {
|
||||
return Database.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||
return tx.Where("kyc_id = ?", kycId).
|
||||
Delete(&Kyc{}).Error
|
||||
})
|
||||
}
|
||||
|
||||
func (self *Kyc) DeleteAllByUserId(ctx context.Context, userId *uuid.UUID) error {
|
||||
return Database.WithContext(ctx).
|
||||
Where("user_id = ?", userId).
|
||||
Delete(&Kyc{}).Error
|
||||
}
|
||||
@@ -19,6 +19,7 @@ type User struct {
|
||||
Bio string `json:"bio" gorm:"type:text"`
|
||||
PermissionLevel uint `json:"permission_level" gorm:"default:10;not null"`
|
||||
AllowPublic bool `json:"allow_public" gorm:"default:false;not null"`
|
||||
KycInfo string `json:"kyc_info" gorm:"type:text"`
|
||||
}
|
||||
|
||||
type UserIndexDoc struct {
|
||||
|
||||
Reference in New Issue
Block a user