index.ts 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. // 用户相关请求模块
  2. import { DelistingType, OperateType, OptionType, PriceType } from '@/common/constants/enumCommon';
  3. import APP from '@/services';
  4. import { getUserId } from '@/services/bus/account';
  5. import { getLongTypeLoginID } from '@/services/bus/login';
  6. import { buildProtoReq50, parseProtoRsp50 } from '@/services/socket/protobuf/buildReq';
  7. import { Callback } from '@/utils/websocket/index';
  8. import moment from 'moment';
  9. import { v4 as uuidv4 } from 'uuid';
  10. import * as orderType from './interface/index';
  11. /**
  12. * 交易委托请求
  13. */
  14. export const orderReq = (param: orderType.OrderReqType): Promise<string> => {
  15. return new Promise((resolve, reject) => {
  16. const params = {
  17. protobufName: 'OrderReq',
  18. funCodeName: 'OrderReq',
  19. reqParams: {
  20. ClientSerialNo: uuidv4(), // 客户端流水号
  21. ClientType: 4, // 终端类型
  22. ClientOrderTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss'),
  23. LoginID: getLongTypeLoginID(), // 登陆账号
  24. OperatorID: getUserId(), // 操作员账号ID
  25. OrderSrc: 1, // 客户端下单
  26. TriggerType: 1, // 终端默认为1
  27. TimevalidType: 1, // 终端默认为1
  28. ValidType: 1, // 校验类型
  29. OptionType: OptionType.Type_C, // 期权类型(1:认购(看涨)number:认沽(看跌))
  30. OperateType: OperateType.ApplyFor, // 操作类型
  31. MarketMaxSub: 0, // 市价允许最大偏差(做市)
  32. CurtQuotePrice: 0, // 保留,计算冻结金额使用
  33. PriceMode: PriceType.limit, // 取价方式
  34. TriggerOperator: 0, // 触发条件-1:大于等于 2:小于等于
  35. DelistingType: DelistingType.selected, // 摘牌类型
  36. ServiceTime: '', // 服务端时间
  37. },
  38. msgHeadParams: {
  39. AccountID: param.AccountID,
  40. MarketID: param.MarketID,
  41. GoodsID: param.GoodsID,
  42. },
  43. };
  44. Object.assign(params.reqParams, param);
  45. const package50 = buildProtoReq50(params);
  46. APP.sendTradingServer(package50, undefined, {
  47. onSuccess: (res) => {
  48. const { isSuccess, result } = parseProtoRsp50(res, 'OrderRsp');
  49. if (isSuccess) {
  50. const orderId = String(result.OrderID);
  51. resolve(orderId);
  52. } else {
  53. reject(result);
  54. }
  55. },
  56. onFail: (err) => reject(err.message),
  57. } as Callback);
  58. });
  59. };
  60. /**
  61. * 交易撤单请求
  62. */
  63. export const cancelOrderReq = (param: orderType.CancelOrderReq): Promise<string> => {
  64. return new Promise((resolve, reject) => {
  65. const params = {
  66. protobufName: 'CancelOrderReq',
  67. funCodeName: 'CancelOrderReq',
  68. reqParams: {
  69. ClientSerialNo: uuidv4(), // 客户端流水号
  70. ClientType: 4, // 终端类型
  71. ClientOrderTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss'),
  72. OperateType: 1, // 操作类型
  73. OrderSrc: 1, // 客户端下单
  74. OperatorID: getLongTypeLoginID(), // 操作员账号ID
  75. OldOrderId: param.OldOrderId, // 原委托单号
  76. AccountID: param.AccountID, // 交易账号
  77. },
  78. msgHeadParams: {
  79. AccountID: param.AccountID,
  80. MarketID: param.MarketID,
  81. GoodsID: param.GoodsID,
  82. },
  83. };
  84. const package50 = buildProtoReq50(params);
  85. APP.sendTradingServer(package50, undefined, {
  86. onSuccess: (res) => {
  87. const { isSuccess, result } = parseProtoRsp50(res, 'CancelOrderRsp');
  88. if (isSuccess) {
  89. resolve('ok');
  90. } else {
  91. reject(result);
  92. }
  93. },
  94. onFail: (err) => reject(err.message),
  95. } as Callback);
  96. });
  97. };
  98. /**
  99. * 撤销支付请求
  100. * @param param CancelPaymentReq
  101. * @returns
  102. */
  103. export function CancelPaymentReq(param: orderType.CancelPaymentReq): Promise<string> {
  104. return new Promise((resolve, reject) => {
  105. const params = {
  106. protobufName: 'CancelPaymentReq',
  107. funCodeName: 'CancelPaymentReq',
  108. reqParams: {
  109. TradeID: param.tradeID,
  110. AccountID: param.accountID,
  111. },
  112. msgHeadParams: {
  113. AccountID: param.accountID,
  114. MarketID: param.marketID,
  115. GoodsID: param.goodsID,
  116. },
  117. };
  118. const package50 = buildProtoReq50(params);
  119. APP.sendTradingServer(package50, undefined, {
  120. onSuccess: (res) => {
  121. const { isSuccess, result } = parseProtoRsp50(res, 'CancelPaymentRsp');
  122. if (isSuccess) {
  123. resolve('ok');
  124. } else {
  125. reject(result);
  126. }
  127. },
  128. onFail: (err) => reject(err.message),
  129. } as Callback);
  130. });
  131. }