package api

import "database/sql"

type AllLicenseInfoResponse struct {
	UniqueID               string `json:"UniqueID"` // 每行数据的唯一值ID,理论上有oa的REQUESTID就可以了
	OAId                   int64  `json:"oa_id"`
	OARequestID            int64  `json:"oa_request_id"`            // oa里的申请单请求ID,假设唯一标识
	OARequestName          string `json:"Creator"`                  // 请求名称
	OARequestNameNew       string `json:"oa_request_name_new"`      // 新请求名称
	OARequestNameHTMLNew   string `json:"oa_request_name_html_new"` // 新请求名称(HTML格式)
	OAGLXMId               int64  `json:"GlxmId"`                   // 项目ID
	OAGLXMName             string `json:"GlxmName"`                 // 项目名称
	OASQSJ                 string `json:"oa_sqsj"`                  // 申请时间
	OASalespersonName      string `json:"SalesPerson"`              // 销售人员名称
	OAXSJSYX               string `json:"SalesEmail"`               // 销售邮箱
	OAOperationsPersonName string `json:"SupportPerson"`            // 运维人员名称
	OAJFJSYX               string `json:"SupportEmail"`             // 运维邮箱
	OASYDW                 string `json:"Company"`                  // 使用单位
	OAXMXXMS               string `json:"Project"`                  // 项目详细描述
	OAJDS                  int64  `json:"TotalNodes"`               // 总节点数
	OANodeCount            int64  `json:"NodeCount"`                // 节点数
	OAProductCode          string `json:"oa_product_code"`          // 产品编号
	OAProductName          string `json:"ProductName"`              // 产品名称
	OAProductVersion       string `json:"ProductVersion"`           // 产品版本
	OACPU                  string `json:"oa_cpu"`                   // CPU 信息
	OAOperatingSystem      string `json:"oa_operating_system"`      // 操作系统信息
	OAMainMAC              string `json:"oa_main_mac"`              // 主 MAC 地址
	OASecondMAC            string `json:"oa_second_mac"`            // 副 MAC 地址
	OACreationDate         string `json:"ApplicationDate"`          // 创建日期
	OACreationTime         string `json:"ApplicationTime"`          // 创建时间
	OALastOperateDate      string `json:"oa_last_operate_date"`     // 最后操作日期
	OALastOperateTime      string `json:"oa_last_operate_time"`     // 最后操作时间
	CaptureTime            string `json:"capture_time"`             // 抓取时间,用于记录数据抓取的时间
	DelTime                string `json:"del_Time"`                 // 该行的删除时间
	LastOperateTime        string `json:"LAST_OPERATE_TIME"`        // 该表的行最后操作时间,非oa表中的最后操作时间

	// 生成信息
	LicenseUniqueID string `json:"license_unique_id"` // LicenseApplication表的唯一值ID
	LicenseFlage    string `json:"LicenseFlage"`      // License分发状态
	Lic1            string `json:"lic1"`              // 主License
	Lic2            string `json:"lic2"`              // 副License
	CreatorGenerate string `json:"creator_generate"`  // 生成时间
}

// 生成license串请求
type GenerateLicenseStrRequest struct {
	OARequestId int64  `json:"oa_request_id"`
	UniqueID    string `json:"UniqueID"`
}

// 分发license给用户
type DistributeLicenseRequest struct {
	LicenseUniqueID  string   `json:"LicenseUniqueID"`
	OaRequestId      int64    `json:"Oa_request_id"`
	OperatorUniqueID string   `json:"OperatorUniqueID"`
	UserUniqueIDs    []string `json:"UserUniqueIDs"`
	UserAccounts     []string `json:"UserAccounts"`
	UserNames        []string `json:"UserNames"`
	Emails           string   `json:"emails"`
}

type GetDistributeHistoryRequest struct {
	OaRequestId int    `json:"oa_request_id"`
	UniqueID    string `json:"uniqueID"`
}

type UpdateLicenseInfoRequest struct {
	UniqueID          string `json:"UniqueID"`
	Creator           string `json:"Creator" `
	ApplicationDate   string `json:"ApplicationDate" `
	AssociatedProject string `json:"AssociatedProject" `
	SalesPerson       string `json:"SalesPerson" `
	SalesEmail        string `json:"SalesEmail"`
	SupportPerson     string `json:"SupportPerson" `
	SupportEmail      string `json:"SupportEmail" `
	TotalNodes        int64  `json:"TotalNodes" `
	Company           string `json:"Company" `
	ProductName       string `json:"ProductName" `
	Version           string `json:"Version" `
	NodeCount         int64  `json:"NodeCount"`
}

type ConditionalSearchRequest struct {
	LicenseFlag  string `json:"license_flag,omitempty"`
	StartingDate string `json:"starting_date,omitempty"`
	EndDate      string `json:"end_date,omitempty"`
	AnySearch    string `json:"any_search,omitempty"`
}

type UserInfoRequest struct {
	Id        int           `json:"id,omitempty"`
	UniqueID  string        `json:"unique_id,omitempty"`
	Username  string        `json:"username,omitempty"`
	Account   string        `json:"account,omitempty"`
	Password  string        `json:"password,omitempty"`
	Telephone string        `json:"telephone,omitempty"`
	Email     string        `json:"email,omitempty"`
	Role      string        `json:"role,omitempty"`
	GroupId   sql.NullInt32 `json:"group_id,omitempty"`
}