// 消息头
message MessageHead {
	optional uint32 FunCode = 1; // 功能号
	optional uint32 RequestID = 2; // 客户端的流水ID
	optional uint64 AccountID = 3; // 账号ID
	optional uint32 AccessID = 4; //二级分配给客户端的接入ID
	optional int64 ClientTime = 5; //消息发起时间
	optional uint32 GoodsID = 6; //商品ID
	optional string UUID = 7; // 消息唯一ID
	optional uint32 MarketID = 8; // 所属市场ID
	optional uint32 UserID = 9; // 用户ID
	optional string ResponseTopic = 10; // 应答消息所属主题
	optional uint64 AccountID2 = 11; // 账号ID-币币交易使用
}

// 用户登录请求
message LoginReq {
	optional MessageHead Header = 1;
	optional uint64 LoginID = 2; // 登录ID
	optional string LoginPWD = 3; // 登录密码
	optional uint32 LoginType = 4; // 登陆类型
	optional uint32 ClientType = 5; // 终端软件类型
	optional string Version = 6; // 终端软件版本号
	optional string MobilePhone = 7; // 移动电话
	optional string GUID = 8; // 唯一标识码
	optional string LoginIp = 9; // 登录IP地址
	optional uint32 LoginPort = 10; // 登陆通信端口
	optional string DeviceID = 11; // 设备标识
	optional string EnvironmentInfo = 12; // 软件环境信息
	optional string LoginCode = 13; // 登陆码
	optional bytes ClientSystemInfo = 14; // 终端系统信息
	optional string ClientAppID = 15; // 终端AppID
}

// 用户登录应答
message LoginRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 LoginID = 4; // 登录ID
	optional uint32 LoginUserType = 5; // 登陆用户类型
	optional uint32 AccountStatus = 6; // 用户状态
	optional uint32 UserID = 7; // 用户ID
	optional uint32 MemberUserID = 8; // 用户所属会员用户ID
	repeated uint64 AccountIDs = 9; // 账户ID列表(有权限的)
	optional string Token = 10; // 用户令牌
	optional uint64 SystemTime = 11; // 系统时间
	optional uint32 HasUpdatedPwd = 12; // 是否已更改密码
	optional uint32 PwdWrongCnt = 13; // 当前密码输入错误次数
	optional uint32 PwdWrongLockCnt = 14; // 登陆账号锁定密码输入错误次数
	optional uint32 LoginLockHourNum = 15; // 登陆账号锁定时长(小时)
	optional string LoginCode = 16; // 登陆码
	optional bytes ClientSystemInfo = 17; // 终端系统信息
	optional uint64 ClientID = 18; // 终端ID(登陆服务分配，用于通道交易关联链路)
}

// 用户登出请求
message LogoutReq {
	optional MessageHead Header = 1;
	optional uint64 LoginID = 2; // 登录ID
	optional string Token = 3; // 登录时返回的用户令牌
	optional string LoginIp = 4; // 登出IP地址
	optional uint32 LoginPort = 5; // 登出通信端口
}

// 用户登出应答
message LogoutRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
}

// 用户令牌校验请求
message TokenCheckReq {
	optional MessageHead Header = 1;
	optional uint64 LoginID = 2; // 登陆账户ID
	optional string Token = 3; // 用户令牌
	optional uint64 SystemTime = 4; // 校验时的系统时间
	optional uint32 CheckType = 5; // 校验类型
}

// 用户令牌校验应答
message TokenCheckRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 LoginID = 4; // 登陆账户ID
	optional uint32 TokenStatus = 5; // 令牌状态
	optional uint32 LoginUserType = 6; // 登陆用户类型
	optional uint32 UserID = 7; // 用户ID
	optional uint32 MemberUserID = 8; // 用户所属会员用户ID
	repeated uint64 AccountIDs = 9; // 账户ID列表(有权限的)
	optional uint64 SystemTime = 10; // 返回服务器最新时间
}

// 修改账户密码请求
message ModifyPwdReq {
	optional MessageHead Header = 1;
	optional uint32 ModifyPwdType = 2; // 修改密码类型1：登陆密码2：资金账户密码
	optional uint64 ModifyPwdID = 3; // 被修改的ID(ModifyType=1:LoginIDModifyType=2:AccountID)
	optional string OldPwd = 4; // 旧资金密码
	optional string NewPwd = 5; // 新资金密码
}

// 修改账户密码应答
message ModifyPwdRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
}

// 投资者销户申请请求
message InvestorDelReq {
	optional MessageHead Header = 1;
	optional uint64 UserID = 2; // 用户ID
	optional string ImageUrl = 3; // 图片地址
}

// 投资者销户申请请求响应
message InvestorDelRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
}

// 登录查询请求
message LoginQueryReq {
	optional MessageHead Header = 1;
	optional uint64 LoginID = 2; // 登陆账号id
	optional string QueryItem = 3; // 不填返回全部结果集，填写后表示按需查询，多个以“,”隔开1-账号信息2-资金账户列表3-
}

// 登录查询应答
message LoginQueryRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional AccountInfo AccountInfo = 4; // 账号信息
	repeated TAAccountAll TAAccountList = 5; // 资金账户列表
	repeated GoodsRuleAndFee GoodsRuleAndFeeList = 6; // 商品交易规则和费用规则列表
	repeated ParamValue ParamValues = 7; // 时间戳集合
	optional uint32 ServerLastNoticeId = 8; // 最大通知id
}

// 账户信息
message AccountInfo {
	optional uint32 UserID = 1; // 用户ID
	optional uint32 UserType = 2; // 账户类型
	optional uint32 ParentUserID = 3; // 所属机构ID
	optional string AccountName = 4; // 账户名称
	optional string CustomerName = 5; // 用户名称（签约用）
	optional uint32 UserInfoType = 6; // 1:个人2:企业（签约用）
	optional uint32 CardTypeID = 7; // 证件类型（签约用）
	optional string CardNum = 8; // 证件号码（签约用）
	optional string Mobile = 9; // 手机号码（签约用）
	optional uint32 HasAuth = 10; // 是否已实名认证-0:未认证
	optional uint64 MemberUserid = 11; // 所属会员
	optional uint32 IsAnonymous = 12; // 是否匿名0否
	optional uint32 taaccountrighttype = 13; // 资金账号权限类型-1:不选默认为所有权限
}

// 账户相关信息
message TAAccountAll {
	optional TaAccountInfo TaAccountInfo = 1; // 资金账户信息
	repeated TradePosition TradePositionList = 2; // 持仓头寸列表
	repeated uint32 MarketsIdList = 3; // 市场id数组
}

// 资金账户信息
message TaAccountInfo {
	optional uint64 AccountId = 1; // 账户id
	optional uint32 TradeStatus = 2; // 交易状态
	optional string Currency = 3; // 币种
	optional uint32 IsMain = 4; // 是否母账户
	optional uint64 ParentAccountID = 5; // 所属母账户
	optional uint32 TAAccountType = 6; // 内、外部
	optional uint64 RelatedMainAccountID = 7; // 关联账户
	optional double Balance = 8; // 期初余额
	optional double CurrentBalance = 9; // 期末余额
	optional double UsedMargin = 10; // 占用保证金
	optional double FreezeMargin = 11; // 冻结保证金
	optional double OtherFreezeMargin = 12; // 其他冻结保证金
	optional double FreezeCharge = 13; // 手续费冻结
	optional double MortgageCredit = 14; // 授信金额
	optional double OtherCredit = 15; // 其它授信金额
	optional double OutAmountFreeze = 16; // 出金冻结
	optional double InAmount = 17; // 今日入金
	optional double OutAmount = 18; // 今日出金
	optional double PayCharge = 19; // 今日手续费支出
	optional double ClosePL = 20; // 今日平仓盈亏
	optional double CreditIncrease = 21; // 今日授信增加
	optional double CreditDecrease = 22; // 今日授信减少
	optional double OtherCreditIncrease = 23; // 今日其它授信增加
	optional double OtherCreditDecrease = 24; // 今日其它授信减少
	optional double TransferAmount = 25; // 今日划转金额
	optional double OtherPay = 26; // 其他支出
	optional double OtherIncome = 27; // 其他收入
	optional double OutThreshold = 28; // 出金阀值
	optional uint32 IsMarketAccount = 29; // 是否机构接单账号0:不是1:是
	optional uint32 Currencyid = 30; // 报价货币ID
}

// 资金变化通知
message MoneyChangedNtf {
	optional MessageHead Header = 1; // 消息头
	optional NotifyHead NtfHeader = 2; // NotifyHead 公共消息头
	optional uint64 AccountID = 3; // uint64 交易账号
}

// 新增修改收货地址请求
message UserReceiveInfoReq {
	optional MessageHead Header = 1;
	optional uint64 ClientSerialID = 2; // 客户端唯一ID
	optional uint32 UserID = 3; // 用户ID
	optional string ReceiverName = 4; // 提货人姓名
	optional uint32 CardTypeID = 5; // 证件类型
	optional string CardNum = 6; // 证件号码
	optional string PhoneNum = 7; // 提货人联系方式
	optional uint32 CountryID = 8; // 国家
	optional uint32 ProvinceID = 9; // 省
	optional uint32 CityID = 10; // 市
	optional uint32 DistrictID = 11; // 地区
	optional string Address = 12; // 提货人详细地址
	optional string TakeRemark = 13; // 提货备注
	optional uint64 ReceiveInfoId = 14; // 修改时填收货地址id
}

// 新增修改收货地址请求响应
message UserReceiveInfoRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 ReceiveInfoId = 4; // 响应返回autoid
}

// 删除收货地址请求
message DelUserReceiveInfoReq {
	optional MessageHead Header = 1;
	optional uint64 ReceiveInfoId = 2; // 收货地址id
}

// 删除收货地址请求响应
message DelUserReceiveInfoRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
}

// 设置默认收货地址请求
message UserReceiveIsDefaultReq {
	optional MessageHead Header = 1;
	optional uint64 AutoId = 2; // 提货地址ID
	optional uint64 UserId = 3; // 用户ID
}

// 设置默认收货地址应答
message UserReceiveIsDefaultRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 AutoId = 4; // 提货地址ID
}

// 新增修改用户发票信息请求
message UserReceiptInfoReq {
	optional MessageHead Header = 1;
	optional uint64 ClientSerialID = 2; // 客户端唯一ID
	optional uint32 UserID = 3; // 用户ID
	optional string UserName = 4; // 发票抬头姓名
	optional uint32 ReceiptType = 5; // 发票类型
	optional string TaxpayerID = 6; // 纳税人识别号
	optional string ContactInfo = 7; // 联系方式
	optional uint64 ReceiptInfoId = 8; // 修改时填用户发票信息id
	optional string ReceiptBank = 9; // 发票开户行[发票类型:企业]
	optional string ReceiptAccount = 10; // 发票帐号[发票类型:企业]
	optional string Address = 11; // 地址[发票类型:企业]
	optional string IDNum = 12; // 身份证号码[发票类型:个人]
}

// 新增修改用户发票信息请求响应
message UserReceiptInfoRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 ReceiptInfoId = 4; // 响应返回发票信息id
}

// 删除用户发票信息请求
message DelUserReceiptInfoReq {
	optional MessageHead Header = 1;
	optional uint64 ReceiptInfoId = 2; // 删除发票信息id
}

// 删除用户发票信息请求响应
message DelUserReceiptInfoRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
}

// 签约请求
message t2bBankSignReq {
	optional MessageHead Header = 1;
	required uint64 ExtOperatorID = 2; // 外部操作流水号
	optional string ExchId = 3; // 交易所编号
	optional string TradeDate = 4; // 交易所业务日期
	optional string ExchTicket = 5; // 交易所流水号
	required string AccountCode = 6; // 账户
	required string AccountName = 7; // 客户名称
	required string CusBankID = 8; // 托管银行编号
	required int32 OperateType = 9; // 变更类型[1-增加;2-修改;4-绑卡;
	required int32 IsForce = 10; // 是否强制[0-否;1-是]强制，只更新中心签约信息，不发送银行。用于银行信息不一致的情况
	optional string Currency = 11; // 币种
	optional int32 AccountType = 12; // 账户类型[1-对私;2-对公]
	required string OpenBankAccId = 13; // 银行卡行号
	optional string ForceSignBankAccountNo = 14; // 银行账户[强制签约时填写]
	optional string ForceSignBankAccountName = 15; // 银行账户名称[强制签约时填写]
	required string BankAccountNo = 16; // 银行账户
	optional string BankAccountName = 17; // 银行账户名称
	required string ExBankName = 18; // 开户行名称
	optional string OpenBankNo = 19; // 开户支行编号
	optional string OpenBankName = 20; // 开户支行名称
	required string CertType = 21; // 证件类型
	required string CertID = 22; // 证件号码
	optional string BankAccountPWD = 23; // 银行账户密码
	optional string AgentName = 24; // 授权代理人姓名
	optional int32 AgentCertType = 25; // 授权代理人证件类型
	optional string AgentCertID = 26; // 授权代理人证件号
	optional int32 BankAccountType = 27; // 银行账户类型
	optional string BankProvince = 28; // 开户银行所在省份
	optional string BankCity = 29; // 开户银行所在市
	optional int32 BankCardType = 30; // 银行卡类型
	optional string MobilePhone = 31; // 移动电话
	optional string IdentifyCode = 32; // 验证码
	optional string email = 33; // 电子邮箱
	optional string Extend_Info = 34; // 扩展信息（JSON串，参考配置要求进行填充）
}

// 签约应答
message t2bBankSignRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 ExtOperatorID = 4; // 外部操作流水号
	optional string AccountCode = 5; // 账户
	optional string NetAddr = 6; // 网络地址（当这里有网址时，应自动跳转网页）
	optional int32 Status = 7; // 状态（0成功,其他数值参考银行服务的错误码）
	required string ExchTicket = 8; // 交易所流水号
	optional string ExchId = 9; // 交易所编号
	optional string TradeDate = 10; // 交易所业务日期
	optional string CenterTicket = 11; // 中心流水号
	optional string CenterErrCode = 12; // 返回码
	optional string CenterErrMsg = 13; // 返回结果说明
	optional string bankChildAcc = 14; // 银行账号
	optional string bankChildAccName = 15; // 银行账户名
	optional string BankId = 16; // 银行卡行号
	optional string BankAccNum = 17; // 银行卡号
	optional string BankAccName = 18; // 银行卡户名
}

// 解约请求
message t2bBankCancelSignReq {
	optional MessageHead Header = 1;
	required uint64 ExtOperatorID = 2; // 外部操作流水号
	optional string ExchId = 3; // 交易所编号
	required string AccountCode = 4; // 账户
	required string CusBankID = 5; // 托管银行编号
	required int32 IsForce = 6; // 是否强制
	optional string Currency = 7; // 币种
	optional string TradeDate = 8; // 交易所业务日期
	optional string ExchTicket = 9; // 交易所流水号
	optional string BankChildAcc = 10; // 银行子账号
	optional string BankChildAccName = 11; // 银行子账号名
}

// 解约应答
message t2bBankCancelSignRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 ExtOperatorID = 4; // 外部操作流水号
	optional string AccountCode = 5; // 账户
	optional string NetAddr = 6; // 网络地址（当这里有网址时，应自动跳转网页）
	optional int32 Status = 7; // 状态（0成功,其他数值参考银行服务的错误码）
	required string ExchTicket = 8; // 交易所流水号
	optional string ExchId = 9; // 交易所编号
	optional string TradeDate = 10; // 交易所业务日期
	optional string CenterTicket = 11; // 中心流水号
	optional string CenterErrCode = 12; // 返回码
	optional string CenterErrMsg = 13; // 返回结果说明
}

// 出金请求
message t2bBankWithdrawReq {
	optional MessageHead Header = 1;
	required uint64 ExtOperatorID = 2; // 外部操作流水号
	optional string ExchId = 3; // 交易所编号
	required string AccountCode = 4; // 资金账户
	required string CusBankID = 5; // 托管银行编号
	required string Currency = 6; // 币种
	optional int32 AccountType = 7; // 账户类型
	optional string BankChildAccount = 8; // 银行子账号
	optional string BankChildAccountName = 9; // 银行子账号名
	optional string OpenCardBankId = 10; // 银行卡行号
	optional string BankAccoutNum = 11; // 银行卡号
	optional string BankAccoutName = 12; // 银行卡户名
	required double Amount = 13; // 出金金额
	optional string AppDateTime = 14; // 申请日期和时间
	optional string OldTaPWD = 15; // 资金密码
	optional string Desc = 16; // 备注
	optional string IdentifyCode = 17; // 验证码
	optional string BranchBankName = 18; // 收款支行名称
	optional string Extend_Info = 19; // 扩展信息（JSON串，参考配置要求进行填充）
	optional string Remark = 20; // 备注
	optional string ExchTicket = 21; // 交易所流水号
}

// 出金应答
message t2bBankWithdrawRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 ExtOperatorID = 4; // 外部操作流水号
	optional int32 Status = 5; // 状态（0成功,其他数值参考银行服务的错误码）
	required string ExchTicket = 6; // 交易所流水号
	optional string ExchId = 7; // 交易所编号
	optional string TradeDate = 8; // 交易日
	optional string CenterTicket = 9; // 中心流水号
	optional string CenterErrCode = 10; // 中心返回码
	optional string CenterErrMsg = 11; // 中心返回结果说明
	optional string CerterCheckDate = 12; // 中心对账日期
	optional string NetAddr = 13; // 网络地址（当这里有网址时，应自动跳转网页）
}

// 入金请求
message t2bBankDepositReq {
	optional MessageHead Header = 1;
	required uint64 ExtOperatorID = 2; // 外部操作流水号
	required string CusBankID = 3; // 托管银行编号
	optional string ExchId = 4; // 交易所编号
	optional string TradeDate = 5; // 交易日
	optional string ExchTicket = 6; // 交易所流水号
	required string AccountCode = 7; // 资金账户
	optional string BusinessNo = 8; // 银行业务编号
	optional string BankChildAccount = 9; // 银行子账号
	optional string BankChildAccountName = 10; // 银行子账号名
	optional string OldTaPWD = 11; // 资金密码
	required double Amount = 12; // 金额
	required string Currency = 13; // 币种
	optional string Remark = 14; // 备注
	optional string OpenCardBankId = 15; // 银行卡行号
	optional string BankAccoutNum = 16; // 银行卡号
	optional string BankAccoutName = 17; // 银行卡户名
	optional string Extend_Info = 18; // 扩展信息（JSON串，参考配置要求进行填充）
}

// 入金应答
message t2bBankDepositRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 ExtOperatorID = 4; // 外部操作流水号
	optional int32 Status = 5; // 状态（0成功,其他数值参考银行服务的错误码）
	required string ExchTicket = 6; // 交易所流水号
	optional string ExchId = 7; // 交易所编号
	optional string TradeDate = 8; // 交易日
	optional string CenterTicket = 9; // 中心流水号
	optional string CenterErrCode = 10; // 中心返回码
	optional string CenterErrMsg = 11; // 中心返回结果说明
	optional string CerterCheckDate = 12; // 中心对账日期
	optional string NetAddr = 13; // 网络地址（当这里有网址时，应自动跳转网页）
}

// 铁合金现货预售摘牌接口请求
message SpotPresaleDestingOrderReq {
	optional MessageHead Header = 1;
	optional uint32 UserID = 2; // 用户ID，必填
	optional uint64 AccountID = 3; // 资金账号，必填
	optional uint64 PresaleApplyID = 4; // 预售申请ID，必填
	optional uint64 Qty = 5; // 预售数量，必填
	optional uint64 DepositID = 6; // 定金方式，THJ_PresaleApplyDeposit表ID,必填
	optional uint32 THJDeliveryMode = 7; // 交割方式，必填1：平台仓储2：自提
	optional string ContactName = 8; // 联系人姓名,THJDeliveryMode=2，3时必填
	optional string ContactInfo = 9; // 联系方式,THJDeliveryMode=2，3时必填
	optional string DesAddress = 10; // 目的地地址,THJDeliveryMode=3时必填
	optional string ReceiptInfo = 11; // 发票信息,THJDeliveryMode=2，3时必填
	optional uint32 ClientType = 12; // 终端类型
	optional string ClientSerialNo = 13; // 客户端流水号
}

// 铁合金现货预售摘牌接口应答
message SpotPresaleDestingOrderRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 PresaleApplyID = 4; // 预售申请ID
	optional uint64 WRTradeDetailID = 5; // 成交单ID
	optional string ClientSerialNo = 6; // 客户端流水号
}

// 铁合金现货预售交收确认接口请求
message SpotPresaleDeliveryConfirmReq {
	optional MessageHead Header = 1;
	optional uint32 UserID = 2; // 用户ID，必填
	optional uint64 WRTradeDetailID = 3; // 采购成交单ID，必填
	optional string Remark = 4; // 备注
	optional uint32 ClientType = 5; // 终端类型
	optional string ClientSerialNo = 6; // 客户端流水号
}

// 铁合金现货预售交收确认接口应答
message SpotPresaleDeliveryConfirmRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint32 UserID = 4; // 用户ID，必填
	optional uint64 WRTradeDetailID = 5; // 采购成交单ID
	optional string ClientSerialNo = 6; // 客户端流水号
}

// 铁合金现货预售违约确认接口请求
message SpotPresaleBreachOfContractConfirmReq {
	optional MessageHead Header = 1;
	optional uint64 WRTradeDetailID = 2; // 采购成交单ID，必填
	optional double BuyAmount = 3; // 买方应退费用，必填
	optional double ExchangeAmount = 4; // 平台应收，必填
	optional string HandleRemark = 5; // 处理备注
	optional uint32 ClientType = 6; // 终端类型
	optional string ClientSerialNo = 7; // 客户端流水号
}

// 铁合金现货预售违约确认接口应答
message SpotPresaleBreachOfContractConfirmRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint32 UserID = 4; // 用户ID，必填
	optional uint64 WRTradeDetailID = 5; // 采购成交单ID
	optional string ClientSerialNo = 6; // 客户端流水号
}

// 铁合金现货预售违约申请接口请求
message SpotPresaleBreachOfContractApplyReq {
	optional MessageHead Header = 1;
	optional uint32 UserID = 2; // 用户ID，必填
	optional uint64 WRTradeDetailID = 3; // 采购成交单ID，必填
	optional uint32 ClientType = 4; // 终端类型
	optional string ClientSerialNo = 5; // 客户端流水号
}

// 铁合金现货预售违约申请接口应答
message SpotPresaleBreachOfContractApplyRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint32 UserID = 4; // 用户ID，必填
	optional uint64 WRTradeDetailID = 5; // 采购成交单ID
	optional string ClientSerialNo = 6; // 客户端流水号
}

// 铁合金现货预售付款处理接口请求
message SpotPresalePlaymentReq {
	optional MessageHead Header = 1;
	optional uint32 UserID = 2; // 用户ID，必填
	optional uint64 WRTradeDetailID = 3; // 采购成交单ID，必填
	optional uint32 ClientType = 4; // 终端类型
	optional string ClientSerialNo = 5; // 客户端流水号
}
// 铁合金现货预售付款处理接口应答
message SpotPresalePlaymentRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint32 UserID = 4; // 用户ID，必填
	optional uint64 WRTradeDetailID = 5; // 采购成交单ID
	optional string ClientSerialNo = 6; // 客户端流水号
}

// 铁合金抽奖接口请求
message THJRedPacketLotteryReq {
	optional MessageHead Header = 1;
	optional uint32 UserID = 2; // 用户ID，必填
	optional uint32 ClientType = 3; // 终端类型
	optional string ClientSerialNo = 4; // 客户端流水号
}

// 铁合金抽奖接口响应
message THJRedPacketLotteryRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint32 UserID = 4; // 用户ID，必填
	optional double RedPacketAmount = 5; // 中奖红包金额
	optional uint32 GearLevel = 6; // 档位
	optional string ClientSerialNo = 7; // 客户端流水号
}

// 账户资金信息请求 0 4 6
message AccountFundInfoReq {
	optional MessageHead Header = 1; // MessageHead
	optional uint64 OrderId = 2; // uint64 查询委托单号
	optional uint64 AccountId = 3; // uint64 查询资金账号
	optional uint32 QueryBitMask = 4; // uint32 查询位掩码
}
// 账户资金信息响应 0 4 7
message AccountFundInfoRsp {
	optional MessageHead Header = 1; // MessageHead 消息头
	optional int32 RetCode = 2; // int32 返回码
	optional string RetDesc = 3; // string 描述信息
	optional uint64 OrderId = 4; // uint64 查询委托单号
	optional uint64 AccountId = 5; // uint64 查询资金账号
	optional double AvailableMargin = 6; // double 可用保证金,查询位掩码: 1
	optional double AvailableOutMoney = 7; // double 可出资金,查询位掩码: 2
	optional int32 IsCleanAccount = 8; // int32 是否是干净账户，查询位掩码: 4
}

// 挂牌撤单请求
message WRListingCancelOrderReq {
	optional MessageHead Header = 1;
	optional uint32 UserID = 2; // 用户ID
	optional uint64 AccountID = 3; // 资金账号
	optional uint64 OldWRTradeOrderID = 4; // 目标仓单贸易委托单ID
	optional uint32 OrderSrc = 5; // 委托来源
	optional string ClientSerialNo = 6; // 客户端流水号
	optional string ClientOrderTime = 7; // 客户端委托时间
	optional uint32 ClientType = 8; // 终端类型
	optional uint64 OperatorID = 9; // 操作员账号ID
	optional uint32 BuyOrSell = 10; // 买卖方向
	optional uint64 WRID = 11; // 仓单ID,卖的时候填写
}
// 挂牌撤单应答
message WRListingCancelOrderRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 WRTradeCancelID = 4; // 仓单贸易撤单号
	optional uint64 OldWRTradeOrderID = 5; // 目标仓单贸易委托单ID
	optional uint32 UserID = 6; // 用户ID
	optional uint64 AccountID = 7; // 资金账号
	optional uint64 CancelQty = 8; // 撤单数量
	optional string OrderTime = 9; // 接受撤单的时间
	optional string ClientSerialNo = 10; // 客户端流水号
}

// 仓单出库提单明细数据
message WROutInDetail {
	optional string LadingBillID = 1; // 提单ID
	optional uint64 SubNum = 2; // 提单子单号
	optional uint64 Qty = 3; // 子提单总数量
	optional uint64 OutQty = 4; // 预约数量
}

// 仓单出库申请
message WROutApplyReq {
	optional MessageHead Header = 1;
	optional uint64 ClientSerialID = 2; // 客户端唯一ID
	optional uint64 WRStandardID = 3; // 仓单标准ID
	optional uint64 WarehouseID = 4; // 仓库ID
	optional uint64 UserID = 5; // 申请人ID
	optional uint64 AccountID = 6; // 申请人账户ID
	optional string Mobile = 7; // 申请人手机号
	optional string AppointmentDate = 8; // 预约出库时间（格式：20200101）
	optional uint32 AppointmentModel = 9; // 预约方式:1-物流,2-自送，3-自提
	optional uint64 CountryID = 10; // 国家
	optional uint64 ProvinceID = 11; // 省
	optional uint64 DistrictID = 12; // 区
	optional uint64 CityID = 13; // 市
	optional string Address = 14; // 详细地址
	optional string ContactName = 15; // 收货人提货人
	optional string ContactNum = 16; // 收货人提货人手机
	optional string AppointmentRemark = 17; // 预约备注
	optional uint64 CreatorID = 18; // 创建人ID
	repeated WROutInDetail WROutInDetails = 19; // 仓单出库提单明细数据
}

// 仓单出库申请响应
message WROutApplyRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 ClientSerialID = 4; // 客户端唯一ID
}

// 要素类型明细
message DGFactoryItems {
	optional uint64 DGFactoryItemTypeID = 1; // 要素项类型ID
	optional uint64 DGFactoryItemID = 2; // 预约要素项类型值
	optional uint32 ItemTypeMode = 3; // 要素项类型模式
}

// 仓单贸易浮动价商品配置信息
message WRGoodsInfo {
	optional uint32 GoodsID = 1; // 配置商品ID
	optional string GoodsCode = 2; // 配置商品代码
	optional double PriceFactor = 3; // 商品价格系数
	optional double PriceMove = 4; // 商品升贴水值
	optional double WeightRatio = 5; // 商品重量系数
}

// 持仓单挂牌请求
message HdWROrderReq {
	optional MessageHead Header = 1;
	optional uint64 LadingBillId = 2; // 提单id(wrholdlb的LadingBillId字段),卖的时候填写
	required string TradeDate = 3; // 交易日
	optional uint64 SubNum = 4; // 提单子单号(wrholdlb的SubNum字段),卖的时候填写
	optional uint64 WRFactorTypeId = 5; // 仓单要素ID(wrholdlb的WRFactorTypeId字段),卖的时候填写
	required uint32 UserID = 6; // 用户ID
	required uint64 AccountID = 7; // 资金账号
	optional uint32 IsSpecified = 8; // 是否指定对手
	repeated uint64 MatchAccIDs = 9; // 仓单贸易对手用户ID集合(指定对手时填写)
	required uint64 OrderQty = 10; // 委托数量(可挂部分数据量)
	required uint32 DeliveryGoodsID = 11; // 交割商品商品ID
	optional uint32 WRPriceType = 12; // 价格方式
	optional double FixedPrice = 13; // 固定价格
	repeated WRGoodsInfo WRTradeGoods = 14; // 仓单贸易商品配置集合(浮动价时填写)
	optional double PriceFactor = 15; // 价格系数(浮动价时填写)-[挂牌]
	optional double PriceMove = 16; // 升贴水(浮动价时填写)
	optional uint32 TimevalidType = 17; // 时间有效类型
	optional string ValidTime = 18; // 有效期限
	optional double FirstRatio = 19; // 首付比例
	optional int64 PerformanceTemplateID = 20; // 履约计划模板ID
	optional uint32 OrderSrc = 21; // 委托来源
	optional string ClientSerialNo = 22; // 客户端流水号
	optional string ClientOrderTime = 23; // 客户端委托时间
	optional uint32 ClientType = 24; // 终端类型
	optional uint64 OperatorID = 25; // 操作员账号ID
	optional uint32 BuyOrSell = 26; // 买卖方向
	optional uint32 PriceDisplayMode = 27; // 浮动价显示方式
	optional uint32 CanBargain = 28; // 挂牌是否可议价0:不可1:可-摘牌是否议价
	optional string Attachment1 = 29; // 附件1
	optional string Attachment2 = 30; // 附件2
	optional string Remark = 31; // 备注
	optional uint64 ApplyID = 32; // 申请ID
	optional uint32 CanPart = 33; // 是否允许部份摘牌0:不允许;1:允许
	repeated string MatchAccIDsString = 34; // 仓单贸易对手用户ID集合(指定对手时填写)
	optional string DeliveryMonth = 35; // 交收月
	optional uint32 HasWr = 36; // 是否有仓单-0:没有仓单1:有仓单
	optional uint32 WRStandardID = 37; // 现货品种ID
	repeated DGFactoryItems FactoryItems = 38; // 要素类型明细集合(没有仓单要素ID填写)
	optional uint64 DelistMinQty = 39; // 起摘数量
	optional uint32 MarginFlag = 40; // 挂牌是否指定保证金0:否1:是
	optional uint32 MarginAlgorithm = 41; // 指定保证金方式1:比率2:固定
	optional double MarginValue = 42; // 指定保证金设置值
	optional uint32 AllFriendsFlag = 43; // 是否全好友可见0：否1:是
}

// 持仓单挂牌应答
message HdWROrderRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint32 UserID = 4; // 用户ID
	optional uint64 AccountID = 5; // 资金账号
	optional uint64 WRTradeOrderID = 6; // 仓单贸易委托单ID
	optional uint64 FreezeQty = 7; // 冻结数量
	optional string OrderTime = 8; // 接收委托交易的时间
	optional string ClientSerialNo = 9; // 客户端流水号
}

// 持仓单摘牌请求
message HdWRDealOrderReq {
	optional MessageHead Header = 1;
	optional uint32 UserID = 2; // 用户ID
	optional uint64 AccountID = 3; // 资金账号
	optional uint64 RelatedWRTradeOrderID = 4; // 关联委托单号(摘牌委托关联挂牌委托单ID)
	optional uint32 WRTransferUserID = 5; // 仓单受让用户
	optional uint64 OrderQty = 6; // 委托数量
	optional uint32 OrderSrc = 7; // 委托来源
	optional string ClientSerialNo = 8; // 客户端流水号
	optional string ClientOrderTime = 9; // 客户端委托时间
	optional uint32 ClientType = 10; // 终端类型
	optional uint64 OperatorID = 11; // 操作员账号ID
	optional uint32 BuyOrSell = 12; // 买卖方向
	optional uint64 ApplyID = 13; // 申请ID
	optional uint64 LadingBillId = 14; // 提单id(wrholdlb的LadingBillId字段),卖的时候填写
	optional uint64 SubNum = 15; // 提单子单号(wrholdlb的SubNum字段),卖的时候填写
	optional uint64 WRFactorTypeId = 16; // 仓单要素ID(wrholdlb的WRFactorTypeId字段),卖的时候填写
	optional string TradeDate = 17; // 交易日
	optional string DeliveryMonth = 18; // 交收月
	optional uint32 HasWr = 19; // 是否有仓单-0:没有仓单1:有仓单
	optional uint32 IsFinancing = 20; // 是否融资购买(买摘牌时有效)-0:否1:是
	optional uint64 ProductDetailID = 21; // 金融机构产品组合ID(融资购买时有效)
}

// 持仓单摘牌应答
message HdWRDealOrderRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint32 UserID = 4; // 用户ID
	optional uint64 AccountID = 5; // 资金账号
	optional uint64 WRTradeOrderID = 6; // 仓单贸易委托单ID
	optional uint64 RelatedWRTradeOrderID = 7; // 关联委托单号(摘牌委托关联挂牌委托单ID)
	optional double FreezeAmount = 8; // 冻结货款
	optional string OrderTime = 9; // 接收委托交易的时间
	optional string ClientSerialNo = 10; // 客户端流水号
}

// 铁合金现货预售转让挂牌接口请求
message SpotPresaleTransferListingReq {
	optional MessageHead Header = 1;
	optional uint32 UserID = 2; // 用户ID，必填
	optional uint64 WRTradeDetailID = 3; // 采购成交单ID，必填
	optional double TransferPrice = 4; // 转让价格，必填
	optional uint32 ClientType = 5; // 终端类型
	optional string ClientSerialNo = 6; // 客户端流水号
}
// 铁合金现货预售转让挂牌接口响应
message SpotPresaleTransferListingRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint32 UserID = 4; // 用户ID，必填
	optional uint64 TransferID = 5; // 协议转让ID
	optional uint64 WRTradeDetailID = 6; // 采购成交单ID
	optional string ClientSerialNo = 7; // 客户端流水号
}
// 铁合金现货预售转让撤销接口请求
message SpotPresaleTransferCancelReq {
	optional MessageHead Header = 1;
	optional uint32 UserID = 2; // 用户ID，必填
	optional uint64 WRTradeDetailID = 3; // 采购成交单ID，必填
	optional uint32 ClientType = 4; // 终端类型
	optional string ClientSerialNo = 5; // 客户端流水号
}
// 铁合金现货预售转让撤销接口响应
message SpotPresaleTransferCancelRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint64 TransferID = 4; // 协议转让ID
	optional uint64 WRTradeDetailID = 5; // 采购成交单ID
	optional string ClientSerialNo = 6; // 客户端流水号
}
// 铁合金现货预售转让摘牌接口请求
message SpotPresaleTransferDestingReq {
	optional MessageHead Header = 1;
	optional uint32 UserID = 2; // 用户ID，必填
	optional uint64 AccountID = 3; // 摘牌资金账户ID，必填
	optional uint64 TransferID = 4; // 协议转让ID
	optional uint32 ClientType = 5; // 终端类型
	optional string ClientSerialNo = 6; // 客户端流水号
}
// 铁合金现货预售转让摘牌接口响应
message SpotPresaleTransferDestingRsp {
	optional MessageHead Header = 1; // 消息头
	optional int32 RetCode = 2; // 返回码
	optional string RetDesc = 3; // 描述信息
	optional uint32 UserID = 4; // 用户ID
	optional uint64 TransferID = 5; // 协议转让ID
	optional string ClientSerialNo = 6; // 客户端流水号
}