package account

import (
	"mtp20access/global"
	"time"
)

// Loginaccount 登录账户表
type Loginaccount struct {
	LOGINID            int64     `json:"loginid" xorm:"LOGINID"`                       // 登陆账号
	USERID             int64     `json:"userid" xorm:"USERID"`                         // 用户ID
	LOGINFAILNUM       int32     `json:"loginfailnum" xorm:"LOGINFAILNUM"`             // 连续登录失败次数(登录成功时清零)
	PASSWORD           string    `json:"password" xorm:"PASSWORD"`                     // 登陆密码
	LOGINUSERTYPE      int32     `json:"loginusertype" xorm:"LOGINUSERTYPE"`           // 登录账号类型 - 1:投资者 2:机构交易员
	LOGINSTATUS        int32     `json:"loginstatus" xorm:"LOGINSTATUS"`               // 登录账号状态 1:正常 2:冻结(停用) 3:无效(注销)
	LASTLOGINTIME      time.Time `json:"lastlogintime" xorm:"LASTLOGINTIME"`           // 最新登录时间
	LASTLOGINMODE      int32     `json:"lastloginmode" xorm:"LASTLOGINMODE"`           // 最新登录方式(客户端类型) -  0:保留为未填终端类型 1:PC管理端 2:PC交易端 3:手机客户端_安卓 4:网页客户端 5:微信客户端 6:手机客户端_苹果 7:网上开户客户端 8:无效终端编号 9:报价终端(中江)
	LASTLOGINIP        string    `json:"lastloginip" xorm:"LASTLOGINIP"`               // 最新登录地址
	LOGINPORT          int32     `json:"loginport" xorm:"LOGINPORT"`                   // 最新登录端口
	LASTLOGINREMARK    string    `json:"lastloginremark" xorm:"LASTLOGINREMARK"`       // 最新登录描述
	MODIFYTIME         time.Time `json:"modifytime" xorm:"MODIFYTIME"`                 // 修改时间
	MODIFIERID         int64     `json:"modifierid" xorm:"MODIFIERID"`                 // 修改人
	PWDWRONGCOUNT      int32     `json:"pwdwrongcount" xorm:"PWDWRONGCOUNT"`           // 密码错误次数
	UNFREEZETIME       time.Time `json:"unfreezetime" xorm:"UNFREEZETIME"`             // 账户解冻时间
	HASLOGINED         int32     `json:"haslogined" xorm:"HASLOGINED"`                 // 是否已登录 - 0:未登录 1:已登录
	HASUPDATEDPWD      int32     `json:"hasupdatedpwd" xorm:"HASUPDATEDPWD"`           // 是否已更改密码 - 0:未修改 1:已修改
	LOGINCODE          string    `json:"logincode" xorm:"LOGINCODE"`                   // 登录代码
	CANOUTIN           int32     `json:"canoutin" xorm:"CANOUTIN"`                     // 是否可出入金 - 0:不可 1:可
	CLIENTROLEID       int32     `json:"clientroleid" xorm:"CLIENTROLEID"`             // 终端角色ID
	TAACCOUNTRIGHTTYPE int32     `json:"taaccountrighttype" xorm:"TAACCOUNTRIGHTTYPE"` // 资金账号权限类型 - 1:不选默认为所有权限 2:不选默认为无权限
	MOBILE             string    `json:"mobile" xorm:"MOBILE"`                         // 手机号码(加密存储)
	ACCOUNTNAME        string    `json:"accountname" xorm:"ACCOUNTNAME"`               // 账户名称
	MODIFYSRC          int32     `json:"modifysrc" xorm:"MODIFYSRC"`                   // 修改人来源 - 1:管理端 2:终端
	RELATEDUSERID      int64     `json:"relateduserid" xorm:"RELATEDUSERID"`           // 关联用户ID(机构)
	SUBJECTID          int64     `json:"subjectid" xorm:"SUBJECTID"`                   // 所属部门(管理部门)
}

// TableName is LOGINACCOUNT
func (r *Loginaccount) TableName() string {
	return "LOGINACCOUNT"
}

// Get 根据条件获取登录账户表信息
func (r *Loginaccount) Get() (has bool, err error) {
	return global.M2A_DB.Get(r)
}

// Taaccount 资金账户表 - 导历史
type Taaccount struct {
	ACCOUNTID             int64     `json:"accountid" xorm:"ACCOUNTID"`                         // 资金账户ID
	USERID                int64     `json:"userid" xorm:"USERID"`                               // 用户ID
	CURRENCYID            int64     `json:"currencyid" xorm:"CURRENCYID"`                       // 货币ID
	CHANGEFLAG            int32     `json:"changeflag" xorm:"CHANGEFLAG"`                       // 变动标志(当前账户资金有任何变动更新为1系统结算时更新0;供清算时使用) 0：无变动 1：有变动
	PASSWORD              string    `json:"password" xorm:"PASSWORD"`                           // 资金密码
	TRADESTATUS           int32     `json:"tradestatus" xorm:"TRADESTATUS"`                     // 交易状态 - 1:正常 2:受限 3:冻结(停用) 4:禁止建仓(人工受限) 5:禁止交易(人工冻结) 6:待激活 7:已删除(注销)
	SIGNSTATUS            int32     `json:"signstatus" xorm:"SIGNSTATUS"`                       // 签约状态 - 1:未签约 2:签约待审核 3:签约中 4:已签约 5:解约待审核 6:解约中 7:已解约 8:已解绑 9:绑卡中
	ISMAIN                int32     `json:"ismain" xorm:"ISMAIN"`                               // 是否母账号 0:不是母账户 1:是母账户
	PARENTACCOUNTID       int64     `json:"parentaccountid" xorm:"PARENTACCOUNTID"`             // 所属根账号
	RELATEDUSERID         int64     `json:"relateduserid" xorm:"RELATEDUSERID"`                 // 关联用户
	RELATEDACCOUNTSTATUS  int32     `json:"relatedaccountstatus" xorm:"RELATEDACCOUNTSTATUS"`   // 关联用户交易权限状态 - 1:正常(可交易) 2:受限(可平仓，不可建仓) 3:冻结(不可交易)
	TAACCOUNTTYPE         int32     `json:"taaccounttype" xorm:"TAACCOUNTTYPE"`                 // 账号类型 - 1:外部账号 2:内部账号 3:内部做市自营账号 4:内部做市接单账号
	ISRECKONACCOUNT       int32     `json:"isreckonaccount" xorm:"ISRECKONACCOUNT"`             // 是否机构分润账号 0:不是 1:是
	ISMARKETACCOUNT       int32     `json:"ismarketaccount" xorm:"ISMARKETACCOUNT"`             // 是否机构接单账号 0:不是 1:是
	BALANCE               float64   `json:"balance" xorm:"BALANCE"`                             // 期初余额
	ORIFREEZEMARGIN       float64   `json:"orifreezemargin" xorm:"ORIFREEZEMARGIN"`             // 期初冻结保证金
	ORIUSEDMARGIN         float64   `json:"oriusedmargin" xorm:"ORIUSEDMARGIN"`                 // 期初占用保证金
	ORIOTHERFREEZEMARGIN  float64   `json:"oriotherfreezemargin" xorm:"ORIOTHERFREEZEMARGIN"`   // 期初其他冻结保证金(出金冻结资金 交割买方冻结 申购冻结 全款买入 商城买入)
	ORIFREEZECHARGE       float64   `json:"orifreezecharge" xorm:"ORIFREEZECHARGE"`             // 期初手续费冻结
	ORIMORTGAGECREDIT     float64   `json:"orimortgagecredit" xorm:"ORIMORTGAGECREDIT"`         // 期初授信金额
	ORIOTHERCREDIT        float64   `json:"oriothercredit" xorm:"ORIOTHERCREDIT"`               // 期初其它授信金额
	ORIOUTAMOUNTFREEZE    float64   `json:"orioutamountfreeze" xorm:"ORIOUTAMOUNTFREEZE"`       // 期初出金冻结
	FREEZEMARGIN          float64   `json:"freezemargin" xorm:"FREEZEMARGIN"`                   // 冻结保证金
	USEDMARGIN            float64   `json:"usedmargin" xorm:"USEDMARGIN"`                       // 占用保证金
	OTHERFREEZEMARGIN     float64   `json:"otherfreezemargin" xorm:"OTHERFREEZEMARGIN"`         // 其他冻结保证金(交割买方冻结 申购冻结 全款买入 商城买入)
	FREEZECHARGE          float64   `json:"freezecharge" xorm:"FREEZECHARGE"`                   // 手续费冻结
	MORTGAGECREDIT        float64   `json:"mortgagecredit" xorm:"MORTGAGECREDIT"`               // 授信金额
	OTHERCREDIT           float64   `json:"othercredit" xorm:"OTHERCREDIT"`                     // 其它授信金额
	OUTAMOUNTFREEZE       float64   `json:"outamountfreeze" xorm:"OUTAMOUNTFREEZE"`             // 出金冻结
	INAMOUNT              float64   `json:"inamount" xorm:"INAMOUNT"`                           // 今日入金金额(包括三方入金)
	CURRENTBALANCE        float64   `json:"currentbalance" xorm:"CURRENTBALANCE"`               // 期末余额
	OUTAMOUNT             float64   `json:"outamount" xorm:"OUTAMOUNT"`                         // 今日出金金额(包括三方出金)
	PAYCHARGE             float64   `json:"paycharge" xorm:"PAYCHARGE"`                         // 今日手续费支出
	CLOSEPL               float64   `json:"closepl" xorm:"CLOSEPL"`                             // 今日平仓盈亏
	CREDITINCREASE        float64   `json:"creditincrease" xorm:"CREDITINCREASE"`               // 今日授信增加
	CREDITDECREASE        float64   `json:"creditdecrease" xorm:"CREDITDECREASE"`               // 今日授信减少
	OTHERCREDITINCREASE   float64   `json:"othercreditincrease" xorm:"OTHERCREDITINCREASE"`     // 今日其它授信增加
	OTHERCREDITDECREASE   float64   `json:"othercreditdecrease" xorm:"OTHERCREDITDECREASE"`     // 今日其它授信减少
	TRANSFERAMOUNT        float64   `json:"transferamount" xorm:"TRANSFERAMOUNT"`               // 今日划转金额(母子账号资金划转，从划入账号为正，从账号划出为负)
	OTHERPAY              float64   `json:"otherpay" xorm:"OTHERPAY"`                           // 其他支出(交割付款 申购付款 全款买入 商城买入 卖家退货)
	OTHERINCOME           float64   `json:"otherincome" xorm:"OTHERINCOME"`                     // 其他收入(交割收款 申购收款 全款卖出 商城卖出 买家退货 会员手续费收入)
	OUTTHRESHOLD          float64   `json:"outthreshold" xorm:"OUTTHRESHOLD"`                   // 出金阈值
	TRADESTATUSCHANGETIME time.Time `json:"tradestatuschangetime" xorm:"TRADESTATUSCHANGETIME"` // 激活时间
	CHANGETIME            time.Time `json:"changetime" xorm:"CHANGETIME"`                       // 账户状态变更时间
	THIRDINAMOUNT         float64   `json:"thirdinamount" xorm:"THIRDINAMOUNT"`                 // 今日三方入金
	THIRDOUTAMOUNT        float64   `json:"thirdoutamount" xorm:"THIRDOUTAMOUNT"`               // 今日三方出金
	CAPITALBALANCE        float64   `json:"capitalbalance" xorm:"CAPITALBALANCE"`               // 本金余额[外部子母账户实际出入金余额]
	FROMACCOUNTID         int64     `json:"fromaccountid" xorm:"FROMACCOUNTID"`                 // 所属上级账户
	SUBLEVELPATH          string    `json:"sublevelpath" xorm:"SUBLEVELPATH"`                   // 账号层级路径(逗号分隔,首尾加逗号)
	SERIVCEGROUP          int64     `json:"serivcegroup" xorm:"SERIVCEGROUP"`                   // 服务分组
	ACCOUNTNAME           string    `json:"accountname" xorm:"ACCOUNTNAME"`                     // 账户名称
	ACCOUNTFLAG           int32     `json:"accountflag" xorm:"ACCOUNTFLAG"`                     // 账户标识 - 0\1 (默认为0， 当上级账户与本账户的关联用户均为自己时更新为1)
	ORIDEBT               float64   `json:"oridebt" xorm:"ORIDEBT"`                             // 期初欠款
	CURDEBT               float64   `json:"curdebt" xorm:"CURDEBT"`                             // 期末欠款
	MODIFYTIME            time.Time `json:"modifytime" xorm:"MODIFYTIME"`                       // 修改时间
	MODIFYSRC             int32     `json:"modifysrc" xorm:"MODIFYSRC"`                         // 修改来源 - 1:管理端 2:终端
	MODIFIERID            int64     `json:"modifierid" xorm:"MODIFIERID"`                       // 修改人
}

// TableName is TAACCOUNT
func (r *Taaccount) TableName() string {
	return "TAACCOUNT"
}

// Logintaaccount 登录账户资金权限表
type Logintaaccount struct {
	LOGINID    int64     `json:"loginid" xorm:"LOGINID"`       // 登录账号ID
	ACCOUNTID  int64     `json:"accountid" xorm:"ACCOUNTID"`   // 资金账号ID
	MODIFYTIME time.Time `json:"modifytime" xorm:"MODIFYTIME"` // 修改时间
	MODIFIERID int64     `json:"modifierid" xorm:"MODIFIERID"` // 修改人
}

// TableName is LOGINTAACCOUNT
func (r *Logintaaccount) TableName() string {
	return "LOGINTAACCOUNT"
}

// Userauthinfo 用户三方登录信息表
type Userauthinfo struct {
	AUTHID   string `json:"authid" xorm:"AUTHID"`     // 三方认证IID - 手机号时存储加密串
	AUTHTYPE int32  `json:"authtype" xorm:"AUTHTYPE"` // 三方认证类型 - 1:微信 2:支付宝 3:手机号 4:管理员账号
	LOGINID  int64  `json:"loginid" xorm:"LOGINID"`   // 登陆账号
	USERID   int64  `json:"userid" xorm:"USERID"`     // 用户ID
	AUTHNAME string `json:"authname" xorm:"AUTHNAME"` // 三方认证I昵称
	ISVALID  int32  `json:"isvalid" xorm:"ISVALID"`   // 是否有效 - 0:无效 1:有效
}

// TableName is USERAUTHINFO
func (r *Userauthinfo) TableName() string {
	return "USERAUTHINFO"
}
