zhou.xiaoning 2 лет назад
Родитель
Сommit
6e70f65a82
4 измененных файлов с 513 добавлено и 425 удалено
  1. 3 1
      global/funcode.go
  2. 37 7
      initialize/rabbitmq.go
  3. 417 417
      res/pb/mtp2.pb.go
  4. 56 0
      res/pb/mtp2.proto

+ 3 - 1
global/funcode.go

@@ -1,7 +1,9 @@
 package global
 
 var (
-	MoneyChangedNtf = 131076 // 资金变化通知
+	MoneyChangedNtf       = 131076 // 资金变化通知
+	OrderDealedNtf        = 131081 // 委托单成交通知
+	MarketStatusChangeNtf = 131089 // 市场状态变更通知
 
 	AccountFundInfoReq = 262150 // 账户资金信息请求
 	AccountFundInfoRsp = 262151 // 账户资金信息响应

+ 37 - 7
initialize/rabbitmq.go

@@ -97,24 +97,54 @@ func (t *MQProc) Process(topic, queuename string, msg *[]byte) {
 }
 
 func (t *MQProc) onNtf(funcode uint32, bytes *[]byte) {
+	var clients []*client.Client
+	var err error
+
 	switch int(funcode) {
 	case global.MoneyChangedNtf: // 资金变化通知
 		var p pb.MoneyChangedNtf
-		if err := proto.Unmarshal(*bytes, &p); err != nil {
-			global.M2A_LOG.Error("总线回复数据反序列化失败", zap.Error(err))
+		if err = proto.Unmarshal(*bytes, &p); err != nil {
+			global.M2A_LOG.Error("总线数据反序列化失败", zap.Error(err))
 			return
 		}
 
-		// 组装待发送给客户端的5.0报文包
-		b, err := packet.BuildPacket(funcode, 0, 0, *bytes, true)
+		// 获取目标客户
+		clients, err = accountSrv.GetClientsByAccountID(*p.AccountID)
 		if err != nil {
-			global.M2A_LOG.Error("组装5.0报文失败", zap.Error(err))
+			return
+		}
+	case global.OrderDealedNtf: // 委托单成交通知
+		var p pb.OrderDealedNtf
+		if err = proto.Unmarshal(*bytes, &p); err != nil {
+			global.M2A_LOG.Error("总线数据反序列化失败", zap.Error(err))
+			return
+		}
+
+		// 获取目标客户
+		clients, err = accountSrv.GetClientsByAccountID(*p.AccountID)
+		if err != nil {
+			return
+		}
+	case global.MarketStatusChangeNtf: // 市场状态变更通知
+		var p pb.MarketStatusChangeNtf
+		if err = proto.Unmarshal(*bytes, &p); err != nil {
+			global.M2A_LOG.Error("总线数据反序列化失败", zap.Error(err))
 			return
 		}
 
 		// 获取目标客户
-		clients, err := accountSrv.GetClientsByAccountID(*p.AccountID)
+		clients = make([]*client.Client, 0)
+		for i := range client.Clients {
+			c := client.Clients[i]
+			clients = append(clients, c)
+		}
+	}
+
+	if err == nil && len(clients) > 0 {
+		// 组装待发送给客户端的5.0报文包
+		b, err := packet.BuildPacket(funcode, 0, 0, *bytes, true)
 		if err != nil {
+			global.M2A_LOG.Error("组装5.0报文失败", zap.Error(err))
 			return
 		}
 
@@ -136,7 +166,7 @@ func (t *MQProc) getRspProtobuf(msg *[]byte) (funcode uint32, sessionId uint32,
 	global.M2A_LOG.Info("收到总线消息", zap.Any("funcode", funcode), zap.Any("sessionId", sessionId), zap.Any("len", len(b)))
 
 	switch int(funcode) {
-	case global.MoneyChangedNtf: // 资金变化通知
+	case global.MoneyChangedNtf, global.OrderDealedNtf, global.MarketStatusChangeNtf: // 资金变化通知
 		bytes = &b
 	case global.ModifyPwdRsp: // 修改账户密码应答
 		var p pb.ModifyPwdRsp

Разница между файлами не показана из-за своего большого размера
+ 417 - 417
res/pb/mtp2.pb.go


+ 56 - 0
res/pb/mtp2.proto

@@ -33,6 +33,62 @@ message MoneyChangedNtf {
 		optional uint64 AccountID = 3; // uint64 交易账号
 }
 
+// 平仓单平仓明细
+message ArrayCloseInfo {
+		optional uint64 ClosedOrderID = 1; // 被平持仓单ID
+		optional uint64 ClosedQty = 2; // 被平仓数量
+		optional double ClosePL = 3; // 平仓盈亏
+		optional double RlsUsedMargin = 4; // 释放的占用保证金
+		optional double TradeCharge = 5; // 平仓手续费
+		optional double WareHouseCharge = 6; // 仓单服务费
+		optional double TradeAmount = 7; // 成交金额
+		optional string OpenTime = 8; // 开仓时间(对冲接口用)
+		optional double OpenPrice = 9; // 开仓价格(对冲接口用)
+		optional uint64 MatchAccountID = 10; // 对手方资金账号代码
+		optional double RealClosePL = 11; // 实际盈亏
+}
+
+// 委托单成交通知
+message OrderDealedNtf {
+	optional MessageHead Header = 1; // 消息头
+		optional NotifyHead NtfHeader = 2; // NotifyHead 公共消息头
+		optional uint64 OrderID = 3; // uint64 一级生成的订单号
+		optional string ClientSerialNo = 4; // string 客户端流水号
+		optional uint32 GoodsID = 5; // uint32 原始委托商品代码
+		optional uint64 TradeQty = 6; // uint64 成交数量
+		optional double Amount = 7; // double 成交金额
+		optional uint64 ActiveQty = 8; // uint64 激活数量,即剩余数量
+		optional uint32 OrderStatus = 9; // uint32 单据状态
+		optional uint64 TradeID = 10; // uint64 成交ID
+		optional uint64 AccountID = 11; // uint64 资金账号代码
+		optional double TradePrice = 12; // double 成交价格
+		optional uint32 BuyOrSell = 13; // uint32 买卖方向
+		optional uint64 OrderQty = 14; // uint64 委托数量
+		optional uint32 OrderType = 15; // uint32 订单类型
+		optional string TradeTime = 16; // string 成交时间
+		repeated ArrayCloseInfo CloseInfos = 17; // ArrayCloseInfo 平仓信息
+		optional uint32 SpecialAccount = 18; // uint32 特别会员账号
+		optional double TradeCharge = 19; // double 成交手续费
+		optional double WareHouseCharge = 20; // double 仓单服务费
+		optional double UsedMargin = 21; // double 占用保证金
+		optional uint32 OperatorID = 22; // uint32 操作员账号ID
+		optional uint32 MemberID = 23; // uint32 会员账号,会员系统平仓使用
+		optional uint64 MatchAccountID = 24; // uint64 对手方资金账号代码
+		optional uint32 BuildType = 25; // uint32 下单类型
+		optional uint32 CloseType = 26; // uint32 平仓类型
+}
+
+// 市场状态变更通知
+message MarketStatusChangeNtf {
+	optional MessageHead Header = 1; // 消息头
+		optional NotifyHead NtfHeader = 2; // NotifyHead 公共消息头
+		optional uint32 MarketID = 3; // uint32 市场ID
+		optional uint32 Status = 4; // uint32 状态
+		optional uint32 StepType = 5; // uint32 阶段
+		optional string TradeDay = 6; // string 交易日
+		optional string NotifyTime = 7; // string 通知发送时间
+}
+
 // 文件列表
 message FileDetail {
 		optional string FileName = 1; // 文件名

Некоторые файлы не были показаны из-за большого количества измененных файлов