package option import ( "google.golang.org/protobuf/types/known/timestamppb" "matchmaking-system/internal/biz/structure" "matchmaking-system/internal/service/order" "strconv" v1 "matchmaking-system/api/matchmaking/v1/option" models "matchmaking-system/internal/pkg/model" ) // OptionInrCancelReply // // @Description: // @param check // @param err // @param req // @return *v1.OptionInrOrderReply func OptionInrCancelReply(check bool, err string, req *v1.CancelOptionInrOrderRequest) *v1.OptionInrOrderReply { code, replyStr := order.ResultCodeSrr(check, err) return &v1.OptionInrOrderReply{ Code: code, Data: ResultOptionInrOrderMessage(req.OrderId), Message: replyStr, } } // VerificationOptionInrCancel // // @Description: // @param req // @return bool func VerificationOptionInrCancel(req *v1.CancelOptionInrOrderRequest) bool { if len(req.GetOrderId()) <= 0 { return false } return true } // OptionInrAllPositionRequest // // @Description: // @param check // @param err // @param req // @return *v1.AllOptionInrOrderReply func OptionInrAllPositionRequest(check bool, err string) *v1.AllOptionInrOrderReply { code, replyStr := order.ResultCodeSrr(check, err) return &v1.AllOptionInrOrderReply{ Code: code, Data: "", Message: replyStr, } } // OptionInrPositionOrderReply // // @Description: // @param check // @param err // @param req // @return *v1.OptionInrOrderReply func OptionInrPositionOrderReply(check bool, err string, req *v1.CancelOptionInrOrderRequest) *v1.OptionInrOrderReply { code, replyStr := order.ResultCodeSrr(check, err) return &v1.OptionInrOrderReply{ Code: code, Data: ResultOptionInrOrderMessage(req.OrderId), Message: replyStr, } } // VerificationOptionInrPosition // // @Description: // @param req // @return bool func VerificationOptionInrPosition(req *v1.CancelOptionInrOrderRequest) bool { if len(req.GetOrderId()) <= 0 { return false } return true } // StopOptionInrOrderQuery // // @Description: // @param request // @return structure.StopOrder func StopOptionInrOrderQuery(request *v1.UpdateOptionInrOrderRequest) structure.StopOrder { return structure.StopOrder{ OrderId: request.OrderId, StopType: request.StopType, StopLossPrice: request.StopLossPrice, StopWinPrice: request.StopWinPrice, } } // OptionInrUpdateOrderReply // // @Description: // @param check // @param err // @param req // @return *v1.OptionInrOrderReply func OptionInrUpdateOrderReply(check bool, err string, req *v1.UpdateOptionInrOrderRequest) *v1.OptionInrOrderReply { code, replyStr := order.ResultCodeSrr(check, err) return &v1.OptionInrOrderReply{ Code: code, Data: ResultOptionInrOrderMessage(req.OrderId), Message: replyStr, } } // VerificationOptionInrStopOrderQuery // // @Description: // @param request // @return bool func VerificationOptionInrStopOrderQuery(request *v1.UpdateOptionInrOrderRequest) bool { if len(request.GetOrderId()) <= 0 { return false } switch request.StopType { case 1: if len(request.GetStopLossPrice()) <= 0 && len(request.GetStopWinPrice()) <= 0 { return false } case 0: //if len(request.GetStopLossPrice()) <= 0 && len(request.GetStopWinPrice()) <= 0 { // return false //} return true default: return false } return true } // OptionInrOrderQuery // // @Description: // @param request // @return structure.ShareOrder func OptionInrOrderQuery(request *v1.OptionInrOrderRequest) structure.ShareOrder { return structure.ShareOrder{ StockId: request.StockId, TradeType: request.TradeType, DealType: request.DealType, LimitPrice: request.LimitPrice, MarketPrice: request.MarketPrice, MarketMoney: request.MarketMoney, OrderNumber: request.OrderNumber, ServiceCost: request.ServiceCost, StopType: request.StopType, StopLossPrice: request.StopLossPrice, StopWinPrice: request.StopWinPrice, PryNum: request.PryNum, StrikePrice: request.StrikePrice, StockCode: request.StockCode, StopTime: request.StopTime, Multiplier: request.Multiplier, TradingType: request.TradingType, Ask: request.Ask, Bid: request.Bid, } } // ResultOptionInrOrderMessage // // @Description: // @param orderId // @return *v1.OptionInrOrderResult func ResultOptionInrOrderMessage(orderId string) *v1.OptionInrOrderResult { return &v1.OptionInrOrderResult{ OrderId: orderId, } } // OptionInrPlaceOrderReply // // @Description: // @param check // @param err // @param orderId // @return *v1.OptionInrOrderReply func OptionInrPlaceOrderReply(check bool, err string, orderId string) *v1.OptionInrOrderReply { code, replyStr := order.ResultCodeSrr(check, err) return &v1.OptionInrOrderReply{ Code: code, Data: ResultOptionInrOrderMessage(orderId), Message: replyStr, } } // VerificationOptionInrOrderQuery // // @Description: // @param request // @return bool func VerificationOptionInrOrderQuery(request *v1.OptionInrOrderRequest) bool { if len(request.GetMultiplier()) <= 0 { return false } if len(request.GetStockCode()) <= 0 { return false } if len(request.GetStockId()) <= 0 { return false } if len(request.GetMarketMoney()) <= 0 { return false } if len(request.GetOrderNumber()) <= 0 { return false } if len(request.GetServiceCost()) <= 0 { return false } if len(request.GetStrikePrice()) <= 0 { return false } if len(request.GetStopTime()) <= 0 { return false } if len(request.GetAsk()) <= 0 { return false } if len(request.GetBid()) <= 0 { return false } switch request.DealType { case 1: // 限价 if len(request.GetLimitPrice()) <= 0 { return false } case 2: // 市价 if len(request.GetMarketPrice()) <= 0 { return false } default: return false } switch request.StopType { case 1: // 止盈止损 if len(request.GetStopLossPrice()) <= 0 && len(request.GetStopWinPrice()) <= 0 { return false } } switch request.TradeType { case 1: // 看涨 case 2: // 看跌 default: return false } switch request.TradingType { case 1: // 买入 case 2: // 卖出 default: return false } return true } // BotStockOptionInrTradeMessage // // @Description: // @param stockList // @return BotInrStockInrTrade func BotStockOptionInrTradeMessage(stockList []*models.BotStockOptionInrTrade) (stockTrade []*v1.BotStockOptionInrTrade) { for _, value := range stockList { stockTrade = append(stockTrade, &v1.BotStockOptionInrTrade{ OrderId: value.OrderId, StockId: value.StockId, TradeType: int64(value.TradeType), DealType: int64(value.DealType), LimitPrice: value.LimitPrice, MarketPrice: value.MarketPrice, DealPrice: value.DealPrice, ClosingPrice: value.ClosingPrice, OrderNumber: value.OrderNumber, StopType: int64(value.StopType), StopLossPrice: value.StopLossPrice, StopWinPrice: value.StopWinPrice, ServiceCost: value.ServiceCost, MarketMoney: value.MarketMoney, OrderMoney: value.OrderMoney, ClosingCost: value.ClosingCost, Status: int64(value.Status), CreateTime: timestamppb.New(value.CreateTime), UpdateTime: timestamppb.New(value.UpdateTime), OpenTime: timestamppb.New(value.OpenTime), ClosingTime: timestamppb.New(value.ClosingTime), KeepDecimal: strconv.Itoa(value.KeepDecimal), StockName: value.StockName, PryNum: strconv.Itoa(value.PryNum), StopTime: value.StopTime, StrikePrice: value.StrikePrice, StockCode: value.StockCode, TradingType: int64(value.TradingType), Multiplier: int64(value.Multiplier), CostPrice: value.CostPrice, Ratio: int64(value.Ratio), Bid: value.Bid, Ask: value.Ask, }) } return } // BotStockOptionInrTradeReply // // @Description: // @param check // @param err // @param req // @param data // @param totalCount // @return *v1.GetBotStockOptionInrTradeReply func BotStockOptionInrTradeReply(check bool, err string, req *v1.GetBotStockOptionInrTradeRequest, data []*models.BotStockOptionInrTrade, totalCount int64) *v1.GetBotStockOptionInrTradeReply { code, replyStr := order.ResultCodeSrr(check, err) return &v1.GetBotStockOptionInrTradeReply{ Code: code, Data: &v1.BotStockOptionInrTradeData{ PageSize: req.PageSize, PageCount: req.PageCount, Data: BotStockOptionInrTradeMessage(data), TotalCount: totalCount, }, Message: replyStr, } } // VerificationBotStockOptionInrTrade // // @Description: // @param req // @return bool func VerificationBotStockOptionInrTrade(req *v1.GetBotStockOptionInrTradeRequest) bool { if req.GetPageSize() < 0 { return false } if req.GetStatus() < 0 { return false } if req.GetPageCount() < 0 { return false } return true }