Procházet zdrojové kódy

增加广钻包2预售和集采相关接口

zhou.xiaoning před 2 roky
rodič
revize
33e76a79fe
6 změnil soubory, kde provedl 1504 přidání a 0 odebrání
  1. 9 0
      global/funcode.go
  2. 5 0
      global/topic.go
  3. 68 0
      initialize/rabbitmq.go
  4. 72 0
      model/mq/request/mq.go
  5. 1208 0
      res/pb/mtp2.pb.go
  6. 142 0
      res/pb/mtp2.proto

+ 9 - 0
global/funcode.go

@@ -67,6 +67,15 @@ var (
 	THJPurchaseTradeNtf = 1441865 // 铁合金成交通知
 	PurchaseTransferNtf = 1441846 // 铁合金协议转让通知
 	WRTradeDealedNtf    = 131110  // 仓单贸易成交通知
+
+	GZPresaleApplyReq        = 1441879 // 广钻预售\申请请求
+	GZPresaleApplyRsp        = 1441880 // 广钻预售申请响应
+	GZPresaleOrderReq        = 1441883 // 广钻预售认购下单请求
+	GZPresaleOrderRsp        = 1441884 //  广钻预售认购下单响应
+	GZCenterPurchaseApplyReq = 1441887 // 广钻集采申请请求
+	GZCenterPurchaseApplyRsp = 1441888 // 广钻集采申请响应
+	GZCenterPurchaseOrderReq = 1441891 // 广钻集采认购下单请求
+	GZCenterPurchaseOrderRsp = 1441892 // 广钻集采认购下单响应
 )
 
 // 通过请求功能码获取对应主题的方法

+ 5 - 0
global/topic.go

@@ -32,4 +32,9 @@ var (
 	TOPIC_RSP_WAREHOUSE_PRESALE_THJ = "warehouse_presale_thj_rsp" // 掌上铁合金现货预售响应
 
 	TOPIC_MANAGER_THJ_NTF = "manager_thj_ntf" // 铁合金服务通知(管理端专用)
+
+	TOPIC_REQ_WAREHOUSE_PRESALE_GZ        = "warehouse_presale_gz_req"        // 广钻预售请求
+	TOPIC_RSP_WAREHOUSE_PRESALE_GZ        = "warehouse_presale_gz_rsp"        // 广钻预售响应
+	TOPIC_REQ_WAREHOUSE_CENTERPURCHASE_GZ = "warehouse_centerpurchase_gz_req" // 广钻集采请求
+	TOPIC_RSP_WAREHOUSE_CENTERPURCHASE_GZ = "warehouse_centerpurchase_gz_rsp" // 广钻集采响应
 )

+ 68 - 0
initialize/rabbitmq.go

@@ -447,6 +447,58 @@ func (t *MQProc) getRspProtobuf(msg *[]byte) (funcode uint32, sessionId uint32,
 			bytes = &bs
 			serialNumber = p.GetHeader().GetRequestID()
 		}
+	case global.GZPresaleApplyRsp: // 广钻预售申请响应
+		var p pb.GZPresaleApplyRsp
+		if err = proto.Unmarshal(b, &p); err != nil {
+			global.M2A_LOG.Error("总线回复数据反序列化失败", zap.Error(err))
+			return
+		}
+		if bs, e := protojson.Marshal(&p); e != nil {
+			global.M2A_LOG.Error("总线回复数据反序列化失败", zap.Error(err))
+			return
+		} else {
+			bytes = &bs
+			serialNumber = p.GetHeader().GetRequestID()
+		}
+	case global.GZPresaleOrderRsp: // 广钻预售认购下单响应
+		var p pb.GZPresaleOrderRsp
+		if err = proto.Unmarshal(b, &p); err != nil {
+			global.M2A_LOG.Error("总线回复数据反序列化失败", zap.Error(err))
+			return
+		}
+		if bs, e := protojson.Marshal(&p); e != nil {
+			global.M2A_LOG.Error("总线回复数据反序列化失败", zap.Error(err))
+			return
+		} else {
+			bytes = &bs
+			serialNumber = p.GetHeader().GetRequestID()
+		}
+	case global.GZCenterPurchaseApplyRsp: // 广钻集采申请响应
+		var p pb.GZCenterPurchaseApplyRsp
+		if err = proto.Unmarshal(b, &p); err != nil {
+			global.M2A_LOG.Error("总线回复数据反序列化失败", zap.Error(err))
+			return
+		}
+		if bs, e := protojson.Marshal(&p); e != nil {
+			global.M2A_LOG.Error("总线回复数据反序列化失败", zap.Error(err))
+			return
+		} else {
+			bytes = &bs
+			serialNumber = p.GetHeader().GetRequestID()
+		}
+	case global.GZCenterPurchaseOrderRsp: // 广钻集采认购下单响应
+		var p pb.GZCenterPurchaseOrderRsp
+		if err = proto.Unmarshal(b, &p); err != nil {
+			global.M2A_LOG.Error("总线回复数据反序列化失败", zap.Error(err))
+			return
+		}
+		if bs, e := protojson.Marshal(&p); e != nil {
+			global.M2A_LOG.Error("总线回复数据反序列化失败", zap.Error(err))
+			return
+		} else {
+			bytes = &bs
+			serialNumber = p.GetHeader().GetRequestID()
+		}
 	}
 
 	return
@@ -501,6 +553,14 @@ func RabbitMQSubscribeTopic() (err error) {
 		global.M2A_LOG.Error("rabbitmq subscribe topic failed, err:", zap.Error(err))
 		return
 	}
+	if err = global.SubscribeTopic(global.TOPIC_RSP_WAREHOUSE_PRESALE_GZ); err != nil {
+		global.M2A_LOG.Error("rabbitmq subscribe topic failed, err:", zap.Error(err))
+		return
+	}
+	if err = global.SubscribeTopic(global.TOPIC_RSP_WAREHOUSE_CENTERPURCHASE_GZ); err != nil {
+		global.M2A_LOG.Error("rabbitmq subscribe topic failed, err:", zap.Error(err))
+		return
+	}
 
 	global.M2A_LOG.Info("rabbitmq subscribe topic successed.")
 
@@ -575,4 +635,12 @@ func InitFuncodeTopic() {
 	global.M2A_FuncodeTopic[global.TOPIC_REQ_WAREHOUSE_PRESALE_THJ] = []int{
 		global.SpotPresaleListingOrderReq,
 	}
+	global.M2A_FuncodeTopic[global.TOPIC_REQ_WAREHOUSE_PRESALE_GZ] = []int{
+		global.GZPresaleApplyReq,
+		global.GZPresaleOrderReq,
+	}
+	global.M2A_FuncodeTopic[global.TOPIC_REQ_WAREHOUSE_CENTERPURCHASE_GZ] = []int{
+		global.GZCenterPurchaseApplyReq,
+		global.GZCenterPurchaseOrderReq,
+	}
 }

+ 72 - 0
model/mq/request/mq.go

@@ -568,6 +568,78 @@ func (r *MQBodyReq) GetProtoBytes(serialNumber *uint32) (bytes *[]byte, err erro
 		} else {
 			bytes = &b
 		}
+	case global.GZPresaleApplyReq:
+		m := pb.GZPresaleApplyReq{}
+		if err = r.reflect(data, &m); err != nil {
+			return
+		}
+		if m.Header != nil {
+			m.Header.RequestID = serialNumber
+		} else {
+			err = errors.New("请求信息序列化失败")
+			return
+		}
+		if b, e := proto.Marshal(&m); e != nil {
+			global.M2A_LOG.Error(e.Error(), zap.Error(e))
+			err = errors.New("请求信息序列化失败")
+			return
+		} else {
+			bytes = &b
+		}
+	case global.GZPresaleOrderReq:
+		m := pb.GZPresaleOrderReq{}
+		if err = r.reflect(data, &m); err != nil {
+			return
+		}
+		if m.Header != nil {
+			m.Header.RequestID = serialNumber
+		} else {
+			err = errors.New("请求信息序列化失败")
+			return
+		}
+		if b, e := proto.Marshal(&m); e != nil {
+			global.M2A_LOG.Error(e.Error(), zap.Error(e))
+			err = errors.New("请求信息序列化失败")
+			return
+		} else {
+			bytes = &b
+		}
+	case global.GZCenterPurchaseApplyReq:
+		m := pb.GZCenterPurchaseApplyReq{}
+		if err = r.reflect(data, &m); err != nil {
+			return
+		}
+		if m.Header != nil {
+			m.Header.RequestID = serialNumber
+		} else {
+			err = errors.New("请求信息序列化失败")
+			return
+		}
+		if b, e := proto.Marshal(&m); e != nil {
+			global.M2A_LOG.Error(e.Error(), zap.Error(e))
+			err = errors.New("请求信息序列化失败")
+			return
+		} else {
+			bytes = &b
+		}
+	case global.GZCenterPurchaseOrderReq:
+		m := pb.GZCenterPurchaseOrderReq{}
+		if err = r.reflect(data, &m); err != nil {
+			return
+		}
+		if m.Header != nil {
+			m.Header.RequestID = serialNumber
+		} else {
+			err = errors.New("请求信息序列化失败")
+			return
+		}
+		if b, e := proto.Marshal(&m); e != nil {
+			global.M2A_LOG.Error(e.Error(), zap.Error(e))
+			err = errors.New("请求信息序列化失败")
+			return
+		} else {
+			bytes = &b
+		}
 	}
 
 	return

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1208 - 0
res/pb/mtp2.pb.go


+ 142 - 0
res/pb/mtp2.proto

@@ -877,4 +877,146 @@ message AccountFundInfoRsp {
 		optional double AvailableMargin = 6; // 可用保证金,查询位掩码:1
 		optional double AvailableOutMoney = 7; // 可出资金,查询位掩码:2
 		optional int32 IsCleanAccount = 8; // 是否是干净账户,查询位掩码:4
+}
+
+// 广钻预售申请请求
+message GZPresaleApplyReq {
+	optional MessageHead Header = 1;
+		optional uint32 SellUserID = 2; // 发行方用户,必填
+		optional uint64 SellAccountID = 3; // 发行方资金账户ID,必填
+		optional string WRStandardName = 4; // 现货商品名称,必填
+		optional uint64 PresaleQty = 5; // 预售总量,必填
+		optional uint64 MinBuyQty = 6; // 单人最小申购量,必填
+		optional uint64 MaxBuyQty = 7; // 单人最大申购量,必填
+		optional uint64 MinSuccessQty = 8; // 最低成团量,必填
+		optional double UnitPrice = 9; // 预售价格,小数,两位,必填
+		optional string StartDate = 10; // 预售开始日期,必填
+		optional string EndDate = 11; // 预售结束日期,必填
+		optional uint32 BuyMarginAlgorithm = 12; // 买方保证金方式,必填
+		optional double BuyMarginValue = 13; // 买方保证金设置值,小数,四位,必填
+		optional int64 PerformanceTemplateID = 14; // 履约计划模板ID,必填
+		optional uint32 MarketID = 15; // 市场ID,必填
+		optional uint32 YSZSCategory = 16; // 预售钻石分类
+		optional string ZSColorTypeStr = 17; // 颜色,最大允许64个字符
+		optional string ZSClarityTypeStr = 18; // 净度,最大允许64个字符
+		optional string SizeStr = 19; // 尺寸,最大允许64个字符
+		optional string YieldRate = 20; // 成品率,最大允许64个字符
+		optional string QtyDesc = 21; // 数量描述,最大允许64个字符
+		optional string WeightDesc = 22; // 重量描述,最大允许64个字符
+		optional uint32 YSProductionMode = 23; // 生产方式
+		optional string PictureUrls = 24; // 图片路径,CLOB,多张逗号分隔
+		optional string Remark = 25; // 备注,最大允许256个字符
+		optional uint32 ClientType = 26; // 终端类型
+		optional string ClientSerialNo = 27; // 客户端流水号
+}
+
+// 广钻预售申请响应
+message GZPresaleApplyRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+		optional uint32 SellUserID = 4; // 发行方用户
+		optional uint64 PresaleApplyID = 5; // 预售申请ID
+		optional string ClientSerialNo = 6; // 客户端流水号
+}
+
+// 广钻预售认购下单请求
+message GZPresaleOrderReq {
+	optional MessageHead Header = 1;
+		optional uint32 UserID = 2; // 用户ID,必填
+		optional uint64 AccountID = 3; // 资金账户ID,必填
+		optional uint64 WRTradeOrderID = 4; // 仓单贸易委托单ID,必填
+		optional uint64 OrderQty = 5; // 认购数量,必填
+		optional uint32 MarketID = 6; // 市场ID,必填
+		optional string ClientOrderTime = 7; // 委托时间,必填
+		optional uint32 ClientType = 8; // 终端类型
+		optional string ClientSerialNo = 9; // 客户端流水号
+}
+
+// 广钻预售认购下单响应
+message GZPresaleOrderRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+		optional uint32 UserID = 4; // 用户ID
+		optional uint64 AccountID = 5; // 资金账户ID
+		optional uint64 WRTradeOrderID = 6; // 仓单贸易委托单ID
+		optional string ClientSerialNo = 7; // 客户端流水号
+}
+
+// 广钻集采价格列表
+message GZCenterPurchasePriceList {
+		optional uint32 StepIndex = 1; // 档位序号,必填
+		optional uint64 Qty = 2; // 档位数量,必填
+		optional double Price = 3; // 档位价格,小数,两位,必填
+}
+
+// 广钻集采申请请求
+message GZCenterPurchaseApplyReq {
+	optional MessageHead Header = 1;
+		optional uint32 SellUserID = 2; // 发行方用户,必填
+		optional uint64 SellAccountID = 3; // 发行方资金账户ID,必填
+		optional string WRStandardName = 4; // 现货商品名称,必填
+		optional uint64 PresaleQty = 5; // 预售总量,必填
+		optional uint64 MinBuyQty = 6; // 单人最小申购量,必填
+		optional uint64 MaxBuyQty = 7; // 单人最大申购量,必填
+		optional uint64 MinSuccessQty = 8; // 最低成团量,必填
+		optional string StartDate = 9; // 预售开始日期,必填
+		optional string EndDate = 10; // 预售结束日期,必填
+		optional uint32 BuyMarginAlgorithm = 11; // 买方保证金方式,必填
+		optional double BuyMarginValue = 12; // 买方保证金设置值,小数,四位,必填
+		optional int64 PerformanceTemplateID = 13; // 履约计划模板ID,必填
+		repeated GZCenterPurchasePriceList GZCenterPurchasePriceLists = 14; // 价格列表,必填
+		optional uint32 MarketID = 15; // 市场ID,必填
+		optional uint32 YSZSCategory = 16; // 预售钻石分类
+		optional string ZSShapeTypeStr = 17; // 形状,最大允许64个字符
+		optional string ZSColorTypeStr = 18; // 颜色,最大允许64个字符
+		optional string ZSClarityTypeStr = 19; // 净度,最大允许64个字符
+		optional string ZSCutTypeStr = 20; // 切工,最大允许64个字符
+		optional string ZSSymmetryTypeStr = 21; // 对称,最大允许64个字符
+		optional string ZSPolishTypeStr = 22; // 抛光,最大允许64个字符
+		optional string ZSFluorescenceTypeStr = 23; // 荧光,最大允许64个字符
+		optional string SizeStr = 24; // 尺寸,最大允许64个字符
+		optional string YieldRate = 25; // 成品率,最大允许64个字符
+		optional string QtyDesc = 26; // 数量描述,最大允许64个字符
+		optional string WeightDesc = 27; // 重量描述,最大允许64个字符
+		optional uint32 YSProductionMode = 28; // 生产方式
+		optional string PictureUrls = 29; // 图片路径,CLOB,多张逗号分隔
+		optional string Remark = 30; // 备注,最大允许256个字符
+		optional uint32 ClientType = 31; // 终端类型
+		optional string ClientSerialNo = 32; // 客户端流水号
+}
+
+// 广钻集采申请响应
+message GZCenterPurchaseApplyRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+		optional uint32 SellUserID = 4; // 发行方用户
+		optional uint64 PresaleApplyID = 5; // 预售申请ID
+		optional string ClientSerialNo = 6; // 客户端流水号
+}
+
+// 广钻集采认购下单请求
+message GZCenterPurchaseOrderReq {
+	optional MessageHead Header = 1;
+		optional uint32 UserID = 2; // 用户ID,必填
+		optional uint64 AccountID = 3; // 资金账户ID,必填
+		optional uint64 WRTradeOrderID = 4; // 仓单贸易委托单ID,必填
+		optional uint64 OrderQty = 5; // 认购数量,必填
+		optional uint32 MarketID = 6; // 市场ID,必填
+			optional string ClientOrderTime = 7; // 委托时间,必填
+		optional uint32 ClientType = 8; // 终端类型
+		optional string ClientSerialNo = 9; // 客户端流水号
+}
+
+// 广钻集采认购下单响应
+message GZCenterPurchaseOrderRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+		optional uint32 UserID = 4; // 用户ID
+		optional uint64 AccountID = 5; // 资金账户ID
+		optional uint64 WRTradeOrderID = 6; // 仓单贸易委托单ID
+		optional string ClientSerialNo = 7; // 客户端流水号
 }

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů