You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.0 KiB
131 lines
4.0 KiB
2 months ago
|
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
|
||
|
}
|