package models

type SMSDefaultTemplate struct {
	Id         int    `gorm:"PRIMARY_KEY;AUTO_INCREMENT"`
	Content    string // 模板内容
	Type       int    // 短信类型：0:通知短信、5:会员服务短信、4:验证码短信
	Status     int8   // 状态 0.无效 1.有效
	CreateTime int64  `gorm:"column:ctime"` // 创建时间
	ModifyTime int64  `gorm:"column:mtime"` // 修改时间
}

func (SMSDefaultTemplate) TableName() string {
	return "sgj_patient_sms_default_template_content"
}

type SMSTemplateID struct {
	Id               int    `gorm:"PRIMARY_KEY;AUTO_INCREMENT"`
	OrgId            int    `gorm:"column:org_id"`          // 机构 ID
	OrgShortName     string `gorm:"column:org_short_name"`  // 机构简称，作为模板签名
	CustomTemplateId int    `gorm:"custom_template_id"`     // 默认模板 ID。值为0时，表示它是用户自定义的模板，不存在于默认模板库中
	TemplateId       int    `gorm:"column:sms_template_id"` // 对应短信平台上的模板 ID
	Status           int8   // 状态 0.无效 1.有效
	CreateTime       int64  `gorm:"column:ctime"` // 创建时间
	ModifyTime       int64  `gorm:"column:mtime"` // 修改时间
}

func (SMSTemplateID) TableName() string {
	return "sgj_patient_sms_template_id"
}

type UserSMSFreeLimit struct {
	Id         int    `gorm:"PRIMARY_KEY;AUTO_INCREMENT"`
	OrgId      int    `gorm:"column:org_id"`      // 机构 ID
	TotalCount int    `gorm:"column:total_count"` // 免费额度，单位:条，下同
	UsedCount  int    `gorm:"column:used_count"`  // 已用额度
	ValidMonth string `gorm:"column:valid_month"` // 生效月份，格式:201804
	Status     int8   // 状态 0.无效 1.有效
	CreateTime int64  `gorm:"column:ctime"` // 创建时间
	ModifyTime int64  `gorm:"column:mtime"` // 修改时间
}

func (UserSMSFreeLimit) TableName() string {
	return "sgj_patient_user_sms_free_limit"
}

type UserSMSBuyLimit struct {
	Id         int   `gorm:"PRIMARY_KEY;AUTO_INCREMENT"`
	OrgId      int   `gorm:"column:org_id"`      // 机构 ID
	TotalCount int   `gorm:"column:total_count"` // 免费额度，单位:条，下同
	UsedCount  int   `gorm:"column:used_count"`  // 已用额度
	Status     int8  // 状态 0.无效 1.有效
	CreateTime int64 `gorm:"column:ctime"` // 创建时间
	ModifyTime int64 `gorm:"column:mtime"` // 修改时间
}

func (UserSMSBuyLimit) TableName() string {
	return "sgj_patient_user_sms_buy_limit"
}

type SMSBatch struct {
	Id          int    `gorm:"PRIMARY_KEY;AUTO_INCREMENT"`
	OrgId       int    `gorm:"column:org_id"`          // 机构 ID
	TemplateId  int    `gorm:"column:sms_template_id"` // 对应短信平台上的模板 ID
	Autograph   string // 短信签名
	Params      string // 模板参数，以“,”隔开
	FullContent string `gorm:"column:full_content"` // 完整短信内容
	Mobiles     string // 接收手机号，以“,”隔开
	SendTime    int64  `gorm:"column:send_time"` // 发送时间
	Status      int8   // 状态: 1.待审核 2.审核未通过 3.未发送 4.已发送 5.发送失败
	CreateTime  int64  `gorm:"column:ctime"` // 创建时间
	ModifyTime  int64  `gorm:"column:mtime"` // 修改时间
}

func (SMSBatch) TableName() string {
	return "sgj_patient_sms_batch"
}

type SMSSendStatus struct {
	Id         int    `gorm:"PRIMARY_KEY;AUTO_INCREMENT"`
	BatchId    int    `gorm:"batch_id"` // 批次 ID，对应 SMSBatch.Id
	Mobile     string // 接收手机号
	Status     int8   // 发送结果状态: 0.失败 1.成功
	Code       string // 短信平台返回的错误码
	Msg        string // 短信平台返回的错误信息
	CreateTime int64  `gorm:"column:ctime"` // 创建时间
	ModifyTime int64  `gorm:"column:mtime"` // 修改时间
}

func (SMSSendStatus) TableName() string {
	return "sgj_patient_sms_send_status"
}

// 1.待审核 2.审核未通过 3.未发送 4.已发送 5.发送失败
const (
	SMSBatchStatusInReview   = int8(1)
	SMSBatchStatusUnapproved = int8(2)
	SMSBatchStatusUnsend     = int8(3)
	SMSBatchStatusDidSend    = int8(4)
	SMSBatchStatusSendFailed = int8(5)
)
