package domain

import "time"

type User struct {
	Id           int64      `json:"id,string"`    // 用户Id
	Account      string     `json:"account"`      // 用户账号
	AvatarUrl    string     `json:"avatarUrl"`    // 用户头像URL
	CompanyId    int64      `json:"companyId"`    // 公司编号
	AdminType    int        `json:"adminType"`    // 1普通员工 2 主管理员
	Name         string     `json:"name"`         // 用户姓名
	Email        string     `json:"email"`        // 邮箱
	Status       int        `json:"status"`       // 用户状态(1正常 2禁用)
	DepartmentId []int      `json:"departmentId"` // 用户归属的部门
	PositionId   []int      `json:"PositionId"`   // 用户职位
	EntryTime    string     `json:"entryTime"`    // 入职日期
	ParentId     int64      `json:"parentId"`     // 上级ID
	UpdatedAt    time.Time  `json:"updatedAt"`    // 更新时间
	DeletedAt    *time.Time `json:"deletedAt"`
	CreatedAt    time.Time  `json:"createdAt"`
}

// 1普通员工 2 主管理员
const (
	UserTypeCommon  int = 1
	UserTypeManager int = 2

	UserStatusEnable int = 1 // 正常用户 2禁用用户
)

type UserRepository interface {
	Insert(user *User) (*User, error)
	Update(user *User) (*User, error)
	Remove(userId []int64) error
	FindOne(queryOptions map[string]interface{}) (*User, error)
	Find(queryOptions map[string]interface{}) (int, []*User, error)
}