package models

type AdminUsers struct {
	Id           int64  `gorm:"PRIMARY_KEY;AUTO_INCREMENT" json:"id"` // 管理员用户 ID
	Mobile       string `json:"mobile"`
	Password     string `json:"password"`
	IsSuperAdmin bool   `gorm:"column:is_super_admin" json:"is_super_admin"` // 是否为超级管理员
	Status       int8   `json:"status"`                                      // 状态 0.无效 1.有效
	CreateTime   int64  `gorm:"column:ctime" json:"ctime"`                   // 创建时间
	ModifyTime   int64  `gorm:"column:mtime" json:"mtime"`                   // 修改时间
	Name         string `gorm:"column:name" json:"name" form:"name"`
	AdminUserId  int64  `gorm:"column:admin_user_id" json:"admin_user_id" form:"admin_user_id"`
	OrgId        int64  `gorm:"column:org_id" json:"org_id" form:"org_id"`
	AppId        int64  `gorm:"column:app_id" json:"app_id" form:"app_id"`
	RoleId       int64  `gorm:"column:role_id" json:"role_id" form:"role_id"`
	UserName     string `gorm:"column:user_name" json:"user_name" form:"user_name"`
	Avatar       string `gorm:"column:avatar" json:"avatar" form:"avatar"`
	UserType     int64  `gorm:"column:user_type" json:"user_type" form:"user_type"`
	UserTitle    int64  `gorm:"column:user_title" json:"user_title" form:"user_title"`
	Intro        string `gorm:"column:intro" json:"intro" form:"intro"`
	Ctime        int64  `gorm:"column:ctime" json:"ctime" form:"ctime"`
	Mtime        int64  `gorm:"column:mtime" json:"mtime" form:"mtime"`
	Message      string `gorm:"column:message" json:"message" form:"message"`
	Sex          int64  `gorm:"column:sex" json:"sex" form:"sex"`
	Birthday     int64  `gorm:"column:birthday" json:"birthday" form:"birthday"`
}

type AdminUser struct {
	Id           int64  `gorm:"PRIMARY_KEY;AUTO_INCREMENT" json:"id"` // 管理员用户 ID
	Mobile       string `json:"mobile"`
	Password     string `json:"password"`
	IsSuperAdmin bool   `gorm:"column:is_super_admin" json:"is_super_admin"` // 是否为超级管理员
	Status       int8   `json:"status"`                                      // 状态 0.无效 1.有效
	CreateTime   int64  `gorm:"column:ctime" json:"ctime"`                   // 创建时间
	ModifyTime   int64  `gorm:"column:mtime" json:"mtime"`                   // 修改时间
	Name         string `gorm:"column:name" json:"name" form:"name"`
}

func (AdminUser) TableName() string {
	return "sgj_user_admin"
}

type AdminUserLoginLog struct {
	Id          int64  `gorm:"PRIMARY_KEY;AUTO_INCREMENT"` // 记录 ID
	AdminUserId int64  `gorm:"column:admin_user_id"`
	OrgId       int64  `gorm:"column:org_id"`
	AppId       int64  `gorm:"column:app_id"`
	IP          string `gorm:"column:ip"`
	OperateType int8   `gorm:"column:operate_type"` // 操作类型（1.登录；2.退出；3.切换机构）
	AppType     int8   `gorm:"column:app_type"`     // 应用类型，与 OrgApp.AppType 一致
	CreateTime  int64  `gorm:"column:ctime"`        // 创建时间
}

func (AdminUserLoginLog) TableName() string {
	return "sgj_user_admin_login_log"
}

type AdminUserElectronicSignature struct {
	ID      int64  `gorm:"column:id" json:"id" form:"id"`
	Creator int64  `gorm:"column:creator" json:"creator" form:"creator"`
	OrgId   int64  `gorm:"column:org_id" json:"org_id" form:"org_id"`
	AppId   int64  `gorm:"column:app_id" json:"app_id" form:"app_id"`
	Url     string `gorm:"column:url" json:"url" form:"url"`
	Hash    string `gorm:"column:hash" json:"hash" form:"hash"`
	Status  int64  `gorm:"column:status" json:"status" form:"status"`
	Ctime   int64  `gorm:"column:ctime" json:"ctime" form:"ctime"`
	Mtime   int64  `gorm:"column:mtime" json:"mtime" form:"mtime"`
}

func (AdminUserElectronicSignature) TableName() string {
	return "sgj_user_admin_electronic_signature"
}

type SgjUserAdminPatientHead struct {
	ID        int64  `gorm:"column:id" json:"id" form:"id"`
	UserOrgId int64  `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
	AppId     int64  `gorm:"column:app_id" json:"app_id" form:"app_id"`
	Creator   int64  `gorm:"column:creator" json:"creator" form:"creator"`
	Url       string `gorm:"column:url" json:"url" form:"url"`
	Hash      string `gorm:"column:hash" json:"hash" form:"hash"`
	Status    int64  `gorm:"column:status" json:"status" form:"status"`
	Ctime     int64  `gorm:"column:ctime" json:"ctime" form:"ctime"`
	Mtime     int64  `gorm:"column:mtime" json:"mtime" form:"mtime"`
}

func (SgjUserAdminPatientHead) TableName() string {
	return "sgj_user_admin_patient_head"
}

type SgjUserAdminRoles struct {
	ID            int64  `gorm:"column:id" json:"id" form:"id"`
	AdminUserId   int64  `gorm:"column:admin_user_id" json:"admin_user_id" form:"admin_user_id"`
	OrgId         int64  `gorm:"column:org_id" json:"org_id" form:"org_id"`
	AppId         int64  `gorm:"column:app_id" json:"app_id" form:"app_id"`
	RoleId        int64  `gorm:"column:role_id" json:"role_id" form:"role_id"`
	UserName      string `gorm:"column:user_name" json:"user_name" form:"user_name"`
	Avatar        string `gorm:"column:avatar" json:"avatar" form:"avatar"`
	UserType      int64  `gorm:"column:user_type" json:"user_type" form:"user_type"`
	UserTitle     int64  `gorm:"column:user_title" json:"user_title" form:"user_title"`
	Intro         string `gorm:"column:intro" json:"intro" form:"intro"`
	Status        int64  `gorm:"column:status" json:"status" form:"status"`
	Ctime         int64  `gorm:"column:ctime" json:"ctime" form:"ctime"`
	Mtime         int64  `gorm:"column:mtime" json:"mtime" form:"mtime"`
	UserTitleName string `gorm:"column:user_title_name" json:"user_title_name" form:"user_title_name"`
	RoleIds       string `gorm:"column:role_ids" json:"role_ids" form:"role_ids"`
	Message       string `gorm:"column:message" json:"message" form:"message"`
	Sex           int64  `gorm:"column:sex" json:"sex" form:"sex"`
	Birthday      int64  `gorm:"column:birthday" json:"birthday" form:"birthday"`
	Creator       int64  `gorm:"column:creator" json:"creator" form:"creator"`
	Url           string `gorm:"column:url" json:"url" form:"url"`
	Hash          string `gorm:"column:hash" json:"hash" form:"hash"`
}

// 管理员用户特殊权限，详见表注释
type AdminUserSpecialPermission struct {
	ID          int64 `gorm:"column:id" json:"id"`
	OrgID       int64 `gorm:"column:org_id" json:"org_id"`
	AppID       int64 `gorm:"column:app_id" json:"app_id"`
	AdminUserID int64 `gorm:"column:admin_user_id" json:"admin_user_id"`
	Permission  int64 `gorm:"column:permission" json:"permission"`
	Status      int64 `gorm:"column:status" json:"-"`
	CreateTime  int64 `gorm:"column:ctime" json:"-"`
	ModifyTime  int64 `gorm:"column:mtime" json:"-"`
}

func (AdminUserSpecialPermission) TableName() string {
	return "xt_admin_user_special_permission"
}

type SpecialPermissionType int64

const (
	_                              SpecialPermissionType = iota
	SpecialPermissionTypeHeadNurse                       // 护士长
)
