sys_employee.go 3.2 KB
package domain

import (
	"context"
	"gitlab.fjmaimaimai.com/allied-creation/su-micro/pkg/transaction"
)

type SysEmployee struct {
	Id        int64  `json:",omitempty"` // 唯一标识
	UserId    int64  `json:",omitempty"` // 用户表ID
	CompanyId int64  `json:",omitempty"` // 公司表ID
	Code      string `json:",omitempty"` // 自定义编码(成员的唯一标识、员工编号、工号等)
	//Departments []int64 `json:",omitempty"` // 归属部门列表
	//Name          string  `json:",omitempty"` // 姓名
	//Avatar        string           `json:",omitempty"` // 头像
	//Phone         string           `json:",omitempty"` // 手机号码
	Position      string           `json:",omitempty"` // 职务
	AccountStatus int              `json:",omitempty"` // 账号状态 0.未激活 1.正常 2.已暂停 4.未加入 5.主动退出
	EmployeeType  EmployeeType     `json:",omitempty"` // 雇员类型 正式、实习、外包、劳务、顾问
	BaseInfo      EmployeeBaseInfo `json:",omitempty"` // 基本信息
	WorkInfo      EmployeeWorkInfo `json:",omitempty"` // 工作信息
	CreatedAt     int64            `json:",omitempty"`
	UpdatedAt     int64            `json:",omitempty"`
	DeletedAt     int64            `json:",omitempty"`
	Version       int              `json:",omitempty"`
}

type EmployeeBaseInfo struct {
	Sex       int    `json:",omitempty"` // 0:女 1:男
	JobNumber string `json:",omitempty"` // 工号
	Email     string `json:",omitempty"` // 邮箱
	Alias     string `json:",omitempty"` // 别名
}

type EmployeeWorkInfo struct {
	//EmployeeType string `json:",omitempty"` // 雇员类型 正式、实习、外包、劳务、顾问
	EmployedDate int64  `json:",omitempty"` // 入职时间
	CountryCode  string `json:",omitempty"` // 国家地区
	CityCode     string `json:",omitempty"` // 工作城市
	Superior     string `json:",omitempty"` // 直属上级
}

// EmployeeType 员工类型
type EmployeeType string

const (
	FullTime   EmployeeType = "正式"
	Intern     EmployeeType = "实习"
	Outsourced EmployeeType = "外包"
	Labour     EmployeeType = "劳务"
	consultant EmployeeType = "顾问"
)

const (
	NoActive = iota
	Enable
	Disable
)

type SysEmployeeRepository interface {
	Insert(ctx context.Context, conn transaction.Conn, dm *SysEmployee) (*SysEmployee, error)
	Update(ctx context.Context, conn transaction.Conn, dm *SysEmployee) (*SysEmployee, error)
	UpdateWithVersion(ctx context.Context, conn transaction.Conn, dm *SysEmployee) (*SysEmployee, error)
	Delete(ctx context.Context, conn transaction.Conn, dm *SysEmployee) (*SysEmployee, error)
	FindOne(ctx context.Context, conn transaction.Conn, id int64) (*SysEmployee, error)
	// FindOneByCode 按员工编号搜索(公司内唯一)
	FindOneByCode(ctx context.Context, conn transaction.Conn, companyId int64, code string) (*SysEmployee, error)
	FindOneByUserId(ctx context.Context, conn transaction.Conn, companyId int64, userId int64) (*SysEmployee, error)
	FindOneUnscoped(ctx context.Context, conn transaction.Conn, id int64) (*SysEmployee, error)
	Find(ctx context.Context, conn transaction.Conn, queryOptions map[string]interface{}) (int64, []*SysEmployee, error)
	FindByUserId(ctx context.Context, conn transaction.Conn, userId int64) (int64, []*SysEmployee, error)
}