2025-06-12 10:20:26 +08:00

45 lines
1.9 KiB
Go

package system
import (
"context"
"time"
"management/internal/erpserver/model/dto"
"github.com/google/uuid"
)
type UserRepository interface {
Initialize(ctx context.Context, departId, roleId int32) error
Create(ctx context.Context, obj *User) error
Update(ctx context.Context, obj *User) error
Get(ctx context.Context, id int32) (*User, error)
GetByEmail(ctx context.Context, email string) (*User, error)
All(ctx context.Context) ([]*User, error)
List(ctx context.Context, q dto.SearchDto) ([]*User, int64, error)
}
type User struct {
ID int32 `json:"id" gorm:"primaryKey;autoIncrement;not null"`
Uuid uuid.UUID `json:"uuid" gorm:"type:uuid;not null;uniqueIndex"`
Email string `json:"email" gorm:"type:varchar(100);not null;uniqueIndex"`
Username string `json:"username" gorm:"type:varchar(100);not null;uniqueIndex"`
HashedPassword []byte `json:"-" gorm:"type:bytea;not null;"`
Salt string `json:"-" gorm:"type:varchar(20);not null;"`
Avatar string `json:"avatar" gorm:"type:varchar(200);not null;"`
Gender int32 `json:"gender" gorm:"type:int;not null;default:0;"`
DepartmentID int32 `json:"department_id" gorm:"type:int;not null;default:0;"`
RoleID int32 `json:"role_id" gorm:"type:int;not null;default:0;"`
Status int32 `json:"status" gorm:"type:int;not null;default:0;"`
ChangePasswordAt time.Time `json:"-" gorm:"type:timestamptz;not null;default:'0001-01-01 00:00:00+8';"`
CreatedAt time.Time `json:"created_at" gorm:"type:timestamptz;not null;default:'now()'"`
UpdatedAt time.Time `json:"updated_at" gorm:"type:timestamptz;not null;default:'0001-01-01 00:00:00+8';"`
Role *Role `json:"role" gorm:"ForeignKey:RoleID"`
Department *Department `json:"department" gorm:"ForeignKey:DepartmentID"`
}
func (User) TableName() string {
return "sys_user"
}