package entity

import (
	"time"
)

type ProjectTaskInfo struct {
	TaskID                 string    `gorm:"column:task_id;primary_key;AUTO_INCREMENT"`   // 任务id
	ProjectID              string    `gorm:"column:project_id;NOT NULL"`                  // 项目id
	TalentID               string    `gorm:"column:talent_id;NOT NULL"`                   // 达人id
	AccountID              int64     `gorm:"column:account_id;NOT NULL"`                  // 账号id
	TalentPlatformInfoSnap string    `gorm:"column:talent_platform_info_snap;NOT NULL"`   // 达人平台信息快照
	TalentPersonalInfoSnap string    `gorm:"column:talent_personal_info_snap;NOT NULL"`   // 达人个人信息快照
	TalentPostAddrSnap     string    `gorm:"column:talent_post_addr_snap;NOT NULL"`       // 收货地址快照
	StrategyID             int64     `gorm:"column:strategy_id"`                          // 报名选择的招募策略id
	TaskReward             float64   `gorm:"column:task_reward;NOT NULL"`                 // 达人报酬
	SettleAmount           float64   `gorm:"column:settle_amount;NOT NULL"`               // 达人实际所得（扣除违约扣款）
	AllPayment             float64   `gorm:"column:all_payment;NOT NULL"`                 // 企业支付
	RealPayment            float64   `gorm:"column:real_payment;NOT NULL"`                // 企业实际支付（扣除违约扣款）
	ErrBreakRate           int64     `gorm:"column:err_break_rate;default:0;NOT NULL"`    // 未上传类型违约扣款比例，百分之
	ScriptBreakRate        int64     `gorm:"column:script_break_rate;default:0;NOT NULL"` // 脚本上传超时违约扣款比例，百分之
	SketchBreakRate        int64     `gorm:"column:sketch_break_rate;default:0;NOT NULL"` // 初稿上传超时违约扣款比例，百分之
	LinkBreakRate          int64     `gorm:"column:link_break_rate;default:0;NOT NULL"`   // 链接上传超时违约扣款比例，百分之
	DataBreakRate          int64     `gorm:"column:data_break_rate;default:0;NOT NULL"`   // 数据上传超时违约扣款比例，百分之
	FeeForm                int64     `gorm:"column:fee_form;NOT NULL"`                    // 稿费形式，1,2,3分别代表产品置换、固定稿费、自报价
	ServiceCharge          float64   `gorm:"column:service_charge"`                       // 服务费
	ServiceRate            int64     `gorm:"column:service_rate"`                         // 服务费率，千分之
	TaskStatus             int64     `gorm:"column:task_status;default:1;NOT NULL"`       // 任务状态 1待选 2已选 3落选
	TaskStage              int64     `gorm:"column:task_stage;NOT NULL"`                  // 任务阶段，详情见info_task_stage表
	CreateDate             time.Time `gorm:"column:create_date;NOT NULL"`                 // 创建时间
	SelectDate             time.Time `gorm:"column:select_date"`                          // 反选时间
	DeliveryDate           time.Time `gorm:"column:delivery_date"`                        // 发货时间
	CompleteStatus         int64     `gorm:"column:complete_status;default:1;NOT NULL"`   // 结束方式 1未结束 2正常结束 3反选失败 4被解约
	CompleteDate           time.Time `gorm:"column:complete_date"`                        // 结束时间
	LogisticsStatus        int64     `gorm:"column:logistics_status;default:1"`           // 发货状态 1 待发货 2已发货 3 已签收
	ScriptStatus           uint64    `gorm:"column:script_status;default:1"`              // 脚本上传状态 1-5分别代表待添加、已添加、待修改、已修改、已通过
	SketchStatus           uint64    `gorm:"column:sketch_status;default:1"`              // 初稿上传状态 1-5分别代表待添加、已添加、待修改、已修改、已通过
	UpdateAt               time.Time `gorm:"column:update_at"`                            // 更新时间
	LinkStatus             uint64    `gorm:"column:link_status;default:1"`                // 链接上传状态 1-5分别代表待添加、已添加、待修改、已修改、已通过
	DataStatus             uint64    `gorm:"column:data_status;default:1"`                // 数据上传状态 1-5分别代表待添加、已添加、待修改、已修改、已通过
	CurDefaultType         int64     `gorm:"column:cur_default_type"`                     // 任务当前处于的违约类型 0-8分别表示未违约、脚本超时违约、脚本未上传违约、初稿超时违约、初稿未上传违约、链接超时违约、链接未上传违约、数据超时违约、数据未上传违约
	WithdrawStatus         int64     `gorm:"column:withdraw_status;default:1"`            // 提现状态，1-4分别代表不可提现、可提现、提现中、已提现
	SettleStatus           int64     `gorm:"column:settle_status;default:1"`              // 结算状态，1、2分别表示待结算、已结算
	DraftFee               float64   `gorm:"column:draft_fee;NOT NULL"`                   // 达人稿费，达人所见的稿费金额
	SignedTime             time.Time `gorm:"column:signed_time"`                          // 签收时间
	TerminateTime          time.Time `gorm:"column:terminate_time"`
	TerminateReason        string    `gorm:"column:terminate_reason"`
	CancelTime             time.Time `gorm:"column:cancel_time"`
	CancelReason           string    `gorm:"column:cancel_reason"`
	SketchMissingTime      time.Time `gorm:"column:sketch_missing_time"`
	LinkMissingTime        time.Time `gorm:"column:link_missing_time"`
	DataMissingTime        time.Time `gorm:"column:data_missing_time"`
	TerminateOperatorType  int64     `gorm:"column:terminate_operator_type;default:0;NOT NULL"`
	TerminateOperator      string    `gorm:"column:terminate_operator"`
	CancelOperatorType     int64     `gorm:"column:cancel_operator_type;default:0;NOT NULL"`
	CancelOperator         string    `gorm:"column:cancel_operator"`
	TalentName             string    `gorm:"column:talent_name"`
}

func (m *ProjectTaskInfo) TableName() string {
	return "youngee_task_info"
}
