package service import ( "context" "matchmaking-system/internal/pkg/flags" "matchmaking-system/internal/service/virtual" v1 "matchmaking-system/api/matchmaking/v1/virtually" ) // GetBotContractTrade // // @Description: 合约订单列表 // @receiver s // @param ctx // @param req // @return *v1.GetBotContractTradeReply // @return error func (s *ConduitService) GetBotContractTrade(ctx context.Context, req *v1.GetBotContractTradeRequest) (*v1.GetBotContractTradeReply, error) { if !virtual.VerificationBotContractTrade(req) { return virtual.BotContractTradeReply(false, flags.ErrIsParameter.Error(), req, nil, 0), nil } contractTradeList, totalCount, err := s.co.BotContractTradeList(ctx, req.PageSize, req.PageCount, req.Status) if err != nil { return virtual.BotContractTradeReply(false, err.Error(), req, nil, 0), nil } return virtual.BotContractTradeReply(true, flags.SetNull, req, contractTradeList, totalCount), nil } // ContractPlaceOrder // // @Description: 合约下单 // @receiver s // @param ctx // @param req // @return *v1.ContractReply // @return error func (s *ConduitService) ContractPlaceOrder(ctx context.Context, req *v1.ContractRequest) (*v1.ContractReply, error) { if !virtual.VerificationContractPlaceOrder(req) { return virtual.ContractPlaceOrderReply(false, flags.ErrIsParameter.Error(), flags.SetNull), nil } orderId, err := s.co.ContractPlaceOrder(ctx, virtual.ContractOrderQuery(req)) if err != nil { return virtual.ContractPlaceOrderReply(false, err.Error(), flags.SetNull), nil } return virtual.ContractPlaceOrderReply(true, flags.SetNull, orderId), nil } // ContractUpdatePlaceOrder // // @Description: 合约设置止盈止损 // @receiver s // @param ctx // @param req // @return *v1.ContractReply // @return error func (s *ConduitService) ContractUpdatePlaceOrder(ctx context.Context, req *v1.UpdateContractRequest) (*v1.ContractReply, error) { if !virtual.VerificationContractUpdatePlaceOrder(req) { return virtual.ContractUpdatePlaceOrderReply(false, flags.ErrIsParameter.Error(), req), nil } _, err := s.co.ContractUpdatePlaceOrder(ctx, virtual.ContractStopQuery(req)) if err != nil { return virtual.ContractUpdatePlaceOrderReply(false, err.Error(), req), nil } return virtual.ContractUpdatePlaceOrderReply(true, flags.SetNull, req), nil } // ContractPosition // // @Description: 合约平仓 // @receiver s // @param ctx // @param req // @return *v1.ContractReply // @return error func (s *ConduitService) ContractPosition(ctx context.Context, req *v1.CancelContractRequest) (*v1.ContractReply, error) { if !virtual.VerificationContractPosition(req) { return virtual.ContractPositionOrderReply(false, flags.ErrIsParameter.Error(), req), nil } _, err := s.co.ContractPosition(ctx, req.OrderId) if err != nil { return virtual.ContractPositionOrderReply(false, err.Error(), req), nil } return virtual.ContractPositionOrderReply(true, flags.SetNull, req), nil } // ContractAllPosition // // @Description: 合约一键平仓 // @receiver s // @param ctx // @param req // @return *v1.AllContractReply // @return error func (s *ConduitService) ContractAllPosition(ctx context.Context, req *v1.AllContractRequest) (*v1.AllContractReply, error) { if err := s.co.ContractAllPosition(ctx); err != nil { return virtual.ContractAllPositionReply(false, err.Error()), nil } return virtual.ContractAllPositionReply(true, flags.SetNull), nil } // ContractCancel // // @Description: 合约撤单 // @receiver s // @param ctx // @param req // @return *v1.ContractReply // @return error func (s *ConduitService) ContractCancel(ctx context.Context, req *v1.CancelContractRequest) (*v1.ContractReply, error) { if !virtual.VerificationContractCancel(req) { return virtual.ContractCancelOrderReply(false, flags.ErrIsParameter.Error(), req), nil } _, err := s.co.ContractCancel(ctx, req.OrderId) if err != nil { return virtual.ContractCancelOrderReply(false, err.Error(), req), nil } return virtual.ContractCancelOrderReply(true, flags.SetNull, req), nil }