Ejemplo n.º 1
0
 public static QuickFix.Fields.Side c(OrderAction s)
 {
     var val = s_sides.Find(v => v.second == s);
     if (val == null)
         throw new Exception("Unmapped OrderAction value : " + s.ToString());
     return val.first;
 }
Ejemplo n.º 2
0
 public static MarketOrder Create(string traderId, string asset, string baseCurrency, OrderAction action, double volume)
 {
     return new MarketOrder
     {
         TraderId = traderId,
         Asset = asset,
         Action = action,
         Volume = volume,
         BaseCurrency = baseCurrency
     };
 }
        public static void FromFIX_SendOrder(OrderFixBridge orderFixBridge, string instrumentId, OrderAction orderAction, OrderType orderType, int quantity, double limitPrice, double stopPrice, string signalName)
        {
            lock (locker_)
            {
                MarketDataDef mdd = s_fixConnectors.GetMarketDataDefForSymbol(instrumentId);
                if (mdd == null)
                {
                    throw new Exception("No FixConnector available for symbol to create order on '" + instrumentId + "'.");
                }

                mdd.fixConnector.FromFIX_SendOrder(orderFixBridge, mdd.internal_barinprogress, orderAction, orderType, quantity, limitPrice, stopPrice, signalName);
            }
        }
Ejemplo n.º 4
0
 public abstract List <TEntity> GetAllList(Expression <Func <TEntity, bool> > predicate, OrderAction <TEntity> orderAction = null, params Expression <Func <TEntity, dynamic> >[] eagerLoadingProperties);
Ejemplo n.º 5
0
 private static OrderBL NewMarketOrder(String accountId, OrderAction type, String ticker, int quantity)
 {
     return(new OrderBL(accountId, type, ticker, OrderType.OrderMarket, quantity,
                        0, OrderTimeInForce.OrderDay));
 }
Ejemplo n.º 6
0
    private void Refresh(int waitmillisecond = 0, List <CellInfo> cells = null, FightStadus fightStadus = FightStadus.prop_refresh)
    {
        bool hasRefresh = false;

        rootAction = new OrderAction();
        ParallelAction scale1 = new ParallelAction();
        ParallelAction movos  = new ParallelAction();
        ParallelAction scale2 = new ParallelAction();

        if (cells == null)
        {
            for (int i = 0; i < CellModel.Instance.allCells.Count; i++)
            {
                List <CellInfo> xCells = CellModel.Instance.allCells[i];
                for (int j = 0; j < xCells.Count; j++)
                {
                    CellInfo  cellInfo  = xCells[j];
                    CoverInfo coverInfo = CoverModel.Instance.GetCoverByPos(cellInfo.posY, cellInfo.posX);
                    if (cellInfo.isBlank == false && cellInfo.config.cell_type == (int)CellType.five && coverInfo.IsNull())
                    {
                        hasRefresh = true;

                        FightCellItem item = GetItemByRunId(cellInfo.runId);

                        if (fightStadus == FightStadus.changer)
                        {
                            item.transform.localRotation = Quaternion.identity;
                            scale1.AddNode(new RoatateActor((RectTransform)item.transform, new Vector3(0, 0, 180), 0.2f));
                        }
                        else
                        {
                            scale1.AddNode(new ScaleActor((RectTransform)item.transform, new Vector3(0, 0, 0), 0.3f));
                        }

                        if (fightStadus == FightStadus.changer)
                        {
                            scale2.AddNode(new RoatateActor((RectTransform)item.transform, new Vector3(0, 0, 360), 0.2f));
                        }
                        else
                        {
                            Vector2 toPos = PosUtil.GetFightCellPos(cellInfo.posX, cellInfo.posY);
                            movos.AddNode(new MoveActor((RectTransform)item.transform, new Vector3(toPos.x, toPos.y, 0), 0, 0.1f));

                            scale2.AddNode(new ScaleActor((RectTransform)item.transform, new Vector3(1, 1, 1), 0.3f));
                        }
                    }
                }
            }
        }
        else
        {
            for (int j = 0; j < cells.Count; j++)
            {
                CellInfo cellInfo = cells[j];
                if (cellInfo.isBlank == false && cellInfo.config.cell_type == (int)CellType.five)
                {
                    hasRefresh = true;

                    FightCellItem item = GetItemByRunId(cellInfo.runId);

                    if (fightStadus == FightStadus.changer)
                    {
                        item.transform.localRotation = Quaternion.identity;
                        scale1.AddNode(new RoatateActor((RectTransform)item.transform, new Vector3(0, 0, 180), 0.2f));
                    }
                    else
                    {
                        scale1.AddNode(new ScaleActor((RectTransform)item.transform, new Vector3(0, 0, 0), 0.3f));
                    }


                    if (fightStadus == FightStadus.changer)
                    {
                        scale2.AddNode(new RoatateActor((RectTransform)item.transform, new Vector3(0, 0, 360), 0.2f));
                    }
                    else
                    {
                        Vector2 toPos = PosUtil.GetFightCellPos(cellInfo.posX, cellInfo.posY);
                        movos.AddNode(new MoveActor((RectTransform)item.transform, new Vector3(toPos.x, toPos.y, 0), 0, 0.1f));

                        scale2.AddNode(new ScaleActor((RectTransform)item.transform, new Vector3(1, 1, 1), 0.3f));
                    }
                }
            }
        }

        if (waitmillisecond > 0)
        {
            rootAction.AddNode(new WaitActor(waitmillisecond));
        }

        if (hasRefresh)
        {
            rootAction.AddNode(new PlaySoundActor("Refresh"));
        }

        rootAction.AddNode(scale1);
        rootAction.AddNode(movos);
        rootAction.AddNode(scale2);

        ExecuteAction(fightStadus);
    }
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='assetIdTo'>
 /// </param>
 /// <param name='orderAction'>
 /// Possible values include: 'Buy', 'Sell'
 /// </param>
 /// <param name='assetsFrom'>
 /// </param>
 public static IList <ConversionResult> ApiRateCalculatorGetMarketAmountInBaseByAssetIdToByOrderActionPost(this IRateCalculatorAPI operations, string assetIdTo, OrderAction orderAction, IList <AssetWithAmount> assetsFrom = default(IList <AssetWithAmount>))
 {
     return(operations.ApiRateCalculatorGetMarketAmountInBaseByAssetIdToByOrderActionPostAsync(assetIdTo, orderAction, assetsFrom).GetAwaiter().GetResult());
 }
Ejemplo n.º 8
0
        /// <summary>
        ///     每小时检索待付款以及待收货的订单并且判断是否修改状态
        /// </summary>
        /// <param name="context"></param>
        /// <param name="scope"></param>
        /// <returns></returns>
        protected override Task Execute(IJobExecutionContext context, IScope scope)
        {
            var orders = scope.Resolve <IOrderService>()
                         .GetListExtension(u =>
                                           u.OrderStatus == OrderStatus.WaitingBuyerPay || u.OrderStatus == OrderStatus.WaitingReceiptProduct);

            if (orders.Count > 0)
            {
                var orderConfig = scope.Resolve <IAutoConfigService>().GetValue <OrderConfig>();
                foreach (var item in orders)
                {
                    var ts = DateTime.Now.Subtract(item.CreateTime);
                    if (item.OrderExtension == null || item.OrderExtension.ProductSkuItems == null)
                    {
                        continue;
                    }
                    //待付款定时关闭
                    if (item.OrderStatus == OrderStatus.WaitingBuyerPay)
                    {
                        if (ts.Hours >= orderConfig.OrderClosedHour)
                        {
                            item.OrderStatus = OrderStatus.Closed;

                            #region 根据订单内商品 增加对应库存

                            //先获取skuId的list
                            var skuList = new List <long>();

                            foreach (var view in item.OrderExtension.ProductSkuItems)
                            {
                                skuList.Add(view.ProductSkuId);
                            }
                            //根据获取的skulist来获取数据 减少循环数量
                            var productSkus = scope.Resolve <IProductSkuService>().GetList(skuList);
                            foreach (var view in productSkus)
                            {
                                var buyCount =
                                    item.OrderExtension.ProductSkuItems.FirstOrDefault(u => u.ProductSkuId == view.Id)
                                    .BuyCount;
                                var stock = view.Stock + buyCount;
                                view.Stock = stock;
                                scope.Resolve <IProductSkuService>().Update(view);
                            }

                            #endregion 根据订单内商品 增加对应库存

                            scope.Resolve <IOrderService>().Update(item);
                            var orderAction = new OrderAction
                            {
                                Intro           = "买家未在指定时间内付款,系统已关闭订单",
                                OrderId         = item.Id,
                                ActionUserId    = item.UserId,
                                OrderActionType = OrderActionType.AdminClose
                            };

                            scope.Resolve <IOrderActionService>().Add(orderAction);
                        }
                    }

                    //待收货定时确认收货
                    if (item.OrderStatus == OrderStatus.WaitingReceiptProduct)
                    {
                        if (ts.Days >= orderConfig.OrderTakeDay)
                        {
                            item.OrderStatus = OrderStatus.WaitingEvaluated;
                            scope.Resolve <IOrderService>().Update(item);
                            var orderAction = new OrderAction
                            {
                                Intro           = "买家15天内未确认收货,系统已自动确认收货",
                                OrderId         = item.Id,
                                ActionUserId    = item.UserId,
                                OrderActionType = OrderActionType.AdminClose
                            };

                            scope.Resolve <IOrderActionService>().Add(orderAction);
                        }
                    }
                }
            }

            return(Task.FromResult(true));
        }
Ejemplo n.º 9
0
        private void MakeOrder(OrderType orderType, OrderAction orderAction)
        {
            Contract contract = new Contract();

            IBApi.Order order = new IBApi.Order();

            switch (orderType)
            {
            case OrderType.MTL:

                // AUC
                contract.Symbol   = "IBKR";
                contract.SecType  = "STK";
                contract.Currency = "USD";
                contract.Exchange = "SMART";

                OrderAuction orderAuction = new OrderAuction();
                orderAuction.Action     = orderAction;
                orderAuction.LimitPrice = 10;
                orderAuction.Quantity   = 1;

                order = orderAuction.GetOrder;

                break;

            case OrderType.MKT:


                contract.Symbol   = "IBKR";
                contract.SecType  = "STK";
                contract.Currency = "USD";
                contract.Exchange = "SMART";

                OrderMarket orderMarket = new OrderMarket();
                orderMarket.Action      = orderAction;
                orderMarket.Quantity    = 1;
                orderMarket.TimeInForce = OrderTimeInForce.GTC;

                order = orderMarket.GetOrder;

                break;

            case OrderType.LMT:

                contract.Symbol   = "IBKR";
                contract.SecType  = "STK";
                contract.Currency = "USD";
                contract.Exchange = "SMART";

                OrderLimit orderLimit = new OrderLimit();

                orderLimit.Action      = orderAction;
                orderLimit.LimitPrice  = 10;
                orderLimit.Quantity    = 1;
                orderLimit.TimeInForce = OrderTimeInForce.GTC;

                order = orderLimit.GetOrder;

                break;
            }

            manager.SubmitOrder(contract, order);
        }
Ejemplo n.º 10
0
        private async void PlaceOrder(OrderAction action)
        {
            if (this.SelectedOrderType == OrderType.Limit && !this.LimitPrice.HasValue)
            {
                this.SetFieldError(true, "LimitPrice");
                return;
            }

            if (this.SelectedOrderType == OrderType.Stop && !this.StopPrice.HasValue)
            {
                this.SetFieldError(true, "StopPrice");
                return;
            }

            this.cancellationTokenSource = new CancellationTokenSource();

            var searchRequest = new SearchRequest{NumberOfResults = 1};

            if (this.Ticker.Length == 7 && this.Ticker[3] == '.')
            {
                searchRequest.LocalSymbol = this.Ticker;
                searchRequest.SecurityType = SecurityType.CASH;
            }
            else
            {
                searchRequest.Symbol = this.Ticker;
            }

            Contract contract;

            try
            {
                contract = (await this.client.FindContracts(searchRequest,
                    this.cancellationTokenSource.Token)).First();
            }
            catch (IbException)
            {
                this.SetFieldError(true, "Ticker");
                return;
            }

            try
            {
                var orderParams = new OrderParams
                {
                    Contract = contract,
                    LimitPrice = this.LimitPrice,
                    OrderAction = action,
                    OrderType = this.SelectedOrderType,
                    Quantity = this.Quantity,
                    StopPrice = this.StopPrice,
                };

                var account = this.client.Accounts.First(acc => acc.AccountId == this.SelectedAccount);

                await account.PlaceOrder(orderParams, this.cancellationTokenSource.Token);

            }
            catch (IbException)
            {
            }
        }
Ejemplo n.º 11
0
 protected void Page_Load(object sender, System.EventArgs e)
 {
     base.NeedLogin = true;
     base.ReturnUrl = base.Request.RawUrl;
     if (base.IsPost)
     {
         this.Action = WebUtils.GetFormString("action").ToLower();
         OrdersInfo dataById = Orders.GetDataById(WebUtils.GetFormInt("oid"));
         if (!string.IsNullOrEmpty(this.Action) && dataById != null)
         {
             string action = this.Action;
             if (action != null)
             {
                 if (!(action == "sign"))
                 {
                     if (!(action == "cancel"))
                     {
                         if (action == "delete")
                         {
                             if (dataById != null && dataById.OrderStatus >= 99)
                             {
                                 Orders.Delete(dataById.AutoID);
                                 OrderItem.DeleteItemByOrderID(dataById.AutoID);
                                 base.WriteJsonTip(true, base.GetCaption("OperationSuccess"), UrlRewrite.Get("myorders_url"));
                             }
                             else
                             {
                                 base.WriteJsonTip(base.GetCaption("Order_StatusIncorrect"));
                             }
                         }
                     }
                     else if (dataById != null && dataById.OrderStatus <= 1)
                     {
                         System.Collections.Generic.IList <OrderItemInfo> listByOID = OrderItem.GetListByOID(dataById.AutoID);
                         if (listByOID.Count > 0)
                         {
                             foreach (OrderItemInfo current in listByOID)
                             {
                                 Orders.ReBackStock(Product.GetDataById(current.ProID), GoodsSpecify.Get(current.ProID, current.GuiGePath), current.Quantity);
                             }
                         }
                         OrderAction.AddLog(dataById, base.UserName, "会员[" + base.UserName + "]取消了订单");
                         base.WriteJsonTip(true, base.GetCaption("OperationSuccess"), UrlRewrite.Get("myorders_url"));
                     }
                     else
                     {
                         base.WriteJsonTip(base.GetCaption("Order_StatusIncorrect"));
                     }
                 }
                 else if (dataById != null && dataById.OrderStatus == 11)
                 {
                     dataById.GoodsServedTime = System.DateTime.Now;
                     dataById.OrderFinishTime = System.DateTime.Now;
                     dataById.OrderStatus     = 99;
                     if (Orders.Update(dataById))
                     {
                         OrderAction.AddLog(dataById, base.UserName, "会员[" + base.UserName + "]签收了订单");
                         base.WriteJsonTip(true, base.GetCaption("OperationSuccess"), UrlRewrite.Get("myorders_url"));
                     }
                     else
                     {
                         base.WriteJsonTip(base.GetCaption("Order_StatusIncorrect"));
                     }
                 }
                 else
                 {
                     base.WriteJsonTip(base.GetCaption("Order_StatusIncorrect"));
                 }
             }
         }
     }
     else
     {
         Orders.CancelExpireOrder(base.UserID);
         Orders.AutoSignOrder(base.UserID);
         this.Condition = this.Condition + " 1=1 AND UserID=" + base.UserID.ToString();
         System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
         System.DateTime           dateTime      = WebUtils.GetQueryDatetime("filter_dtstart");
         System.DateTime           dateTime2     = WebUtils.GetQueryDatetime("filter_dtend");
         if (dateTime == new System.DateTime(1900, 1, 1))
         {
             dateTime = System.DateTime.Now.AddYears(-1);
         }
         if (dateTime2 == new System.DateTime(1900, 1, 1))
         {
             dateTime2 = System.DateTime.Now;
         }
         if (dateTime2 < dateTime)
         {
             dateTime2 = dateTime.AddMonths(1);
         }
         if (dateTime2 > dateTime.AddYears(5))
         {
             dateTime2 = dateTime.AddYears(5);
             this.Alert("仅允许查询5年之内的数据");
         }
         int    queryInt    = WebUtils.GetQueryInt("filter_status", -1);
         int    queryInt2   = WebUtils.GetQueryInt("filter_ordertype", -1);
         string queryString = WebUtils.GetQueryString("filter_searchkey");
         base.Put("filter_dtstart", dateTime.ToString("yyyy-MM-dd"));
         base.Put("filter_dtend", dateTime2.ToString("yyyy-MM-dd"));
         base.Put("filter_status", queryInt);
         base.Put("filter_ordertype", queryInt2);
         base.Put("filter_searchkey", queryString);
         stringBuilder.Append(string.Concat(new string[]
         {
             " AND OrderAddTime between CONVERT(datetime,'",
             dateTime.ToString("yyyy-MM-dd"),
             " 00:00:00') and CONVERT(datetime,'",
             dateTime2.ToString("yyyy-MM-dd"),
             " 23:59:59') "
         }));
         if (queryInt != -1)
         {
             if (queryInt == 12)
             {
                 stringBuilder.Append(" AND OrderStatus>11 and OrderStatus<=99 and exists(select 1 from shop_OrderItem where OrderID=shop_Orders.AutoID and IsEva=0) ");
             }
             else
             {
                 stringBuilder.Append(" AND OrderStatus= " + queryInt);
             }
         }
         if (queryInt2 != -1)
         {
             stringBuilder.Append(" AND OrderType= " + queryInt2);
         }
         if (!string.IsNullOrEmpty(queryString))
         {
             stringBuilder.Append(" AND OrderNo like '%" + queryString + "%' ");
         }
         this.Condition += stringBuilder.ToString();
         this.UrlPattern = string.Concat(new object[]
         {
             UrlRewrite.Get("myorders_url"),
             "?filter_dtstart=",
             dateTime.ToString("yyyy-MM-dd"),
             "&filter_dtend=",
             dateTime2.ToString("yyyy-MM-dd"),
             "&filter_status=",
             queryInt,
             "&filter_ordertype=",
             queryInt2,
             "&filter_searchkey=",
             queryString,
             "&page=$page"
         });
         OrderStatusSTAT orderStatusSTAT = new OrderStatusSTAT(base.UserID);
         base.Put("AllCount", orderStatusSTAT.AllCount);
         base.Put("DaiFKCount", orderStatusSTAT.WaitPayCount);
         base.Put("DaiFHCount", orderStatusSTAT.WaitSendGoodsCount);
         base.Put("DaiSHCount", orderStatusSTAT.WaitSignGoodsCount);
         base.Put("DaiPJCount", orderStatusSTAT.WaitEvaCount);
         base.Put("SuccessCount", orderStatusSTAT.SuccessCount);
         base.AutoPageing <OrdersInfo>(new OrdersInfo());
         base.UsingClient("user/我的订单.html");
     }
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Initializes a new instance of the StopLimitOrderRequest class.
 /// </summary>
 /// <param name="orderAction">Possible values include: 'Buy',
 /// 'Sell'</param>
 public StopLimitOrderRequest(string assetPairId, double volume, double lowerLimitPrice, double lowerPrice, double upperLimitPrice, double upperPrice, OrderAction orderAction)
 {
     AssetPairId     = assetPairId;
     Volume          = volume;
     LowerLimitPrice = lowerLimitPrice;
     LowerPrice      = lowerPrice;
     UpperLimitPrice = upperLimitPrice;
     UpperPrice      = upperPrice;
     OrderAction     = orderAction;
     CustomInit();
 }
Ejemplo n.º 13
0
        /// <summary>
        /// Get the last signal before barNo by OrderActionType
        /// </summary>
        /// <param name="barNo"></param>
        /// <param name="signalActionType"></param>
        /// <returns></returns>
        public TradeSignal GetLastTradeSignalByActionType(int barNo, SortedDictionary <int, List <TradeSignal> > listSignals, OrderAction ord_actiontype)
        {
            int k = barNo;

            foreach (int kk in listSignals.Keys.Reverse())
            {
                if (kk < k)
                {
                    Print(CurrentBar + ": kk,k=" + kk + "," + k);
                    TradeSignal sig = GetTradeSignalByActionType(k, listSignals, ord_actiontype);
                    if (sig != null)
                    {
                        return(sig);
                    }
                    k = kk;
                }
            }
            return(null);
        }
Ejemplo n.º 14
0
 public FakeOrderForRejectReport(int qty, OrderAction side)
 {
     m_qty = qty;
     m_side = side;
 }
Ejemplo n.º 15
0
 public void FromFIX_SendOrder(NinjaTrader_FixBridge.OrderFixBridge orderFixBridge, int index, OrderAction orderAction, OrderType orderType, int quantity, double limitPrice, double stopPrice, string signalName)
 {
     lock (locker_)
     {
         try
         {
             orderFixBridge.Order = this.SubmitOrder(index, orderAction, orderType, quantity, limitPrice, stopPrice, string.Empty, signalName);
         }catch(Exception e)
         {
             orderFixBridge.Order = null;
             this.Error("[FromFIX_SendOrder]", e.ToString());
         }
     }
 }
Ejemplo n.º 16
0
 public virtual PagedResult <TEntity> GetPaged(int pageNumber, int pageSize, OrderAction <TEntity> orderAction, params Expression <Func <TEntity, dynamic> >[] eagerLoadingProperties)
 {
     return(GetPaged(pageNumber, pageSize, null, orderAction, eagerLoadingProperties));
 }
        private void order_Click(object sender, RoutedEventArgs e)
        {
            if (instrumentSelector.Instrument == null)
            {
                Console.WriteLine("Select an Instrument");
                return;
            }
            string Btn = (sender as Button).Name;

            Order       entryOrder;
            OrderAction orderAction = OrderAction.Buy;
            OrderType   type        = OrderType.Market;
            double      price       = 0;

            if (Btn == "buy")
            {
                orderAction = OrderAction.Buy;
            }
            else if (Btn == "sell")
            {
                orderAction = OrderAction.Sell;
            }
            else if (Btn == "close")
            {
                return;
            }
            else
            {
                return;
            }

            if (orderType == "bid")
            {
                marketData = new MarketData(instrumentSelector.Instrument);
                type       = OrderType.Limit;
                price      = marketData.Bid.Price;
            }
            else if (orderType == "ask")
            {
                marketData = new MarketData(instrumentSelector.Instrument);
                type       = OrderType.Limit;
                price      = marketData.Ask.Price;
            }
            else if (orderType == "mkt")
            {
                type  = OrderType.Market;
                price = 0;
            }
            else
            {
                type  = OrderType.Market;
                price = 0;
            }
            entryOrder = accountSelector.SelectedAccount.CreateOrder(
                instrumentSelector.Instrument,    // Order instrument
                orderAction,                      // Possible values:
                                                  //  OrderAction.Buy
                                                  //  OrderAction.BuyToCover
                                                  //  OrderAction.Sell
                                                  //  OrderAction.SellShort

                type,                             // Possible values:
                                                  //  OrderType.Limit
                                                  //  OrderType.Market
                                                  //  OrderType.MIT
                                                  //  OrderType.StopMarket
                                                  //  OrderType.StopLimit

                OrderEntry.Automated,             // Possible values:
                                                  //  OrderEntry.Automated
                                                  //  OrderEntry.Manual
                                                  // Allows setting the tag for orders submitted manually or via automated trading logic
                TimeInForce.Day,                  // Possible values:
                                                  //  TimeInForce.Day
                                                  //  TimeInForce.Gtc
                                                  //  TimeInForce.Gtd
                                                  //  TimeInForce.Ioc
                                                  //  TimeInForce.Opg

                qudSelector.Value,                // Order quantity

                0,                                // Order limit price. Use "0" should this parameter be irrelevant for the OrderType being submitted.

                price,                            // Order stop price.Use "0" should this parameter be irrelevant for the OrderType being submitted.

                string.Empty,                     // A string representing the OCO ID used to link OCO orders together

                string.Empty,                     // A string representing the name of the order. Max 50 characters.

                NinjaTrader.Core.Globals.MaxDate, // A DateTime value to be used with TimeInForce.Gtd - for all other cases you can pass in Core.Globals.MaxDate

                null                              // Custom order if it is being used
                );
            accountSelector.SelectedAccount.Submit(new[] { entryOrder });
            Console.WriteLine("Order Type: " + orderType + " Action: " + orderAction + " Price: " + Convert.ToString(price));
        }
Ejemplo n.º 18
0
        public string SyncReturn(HttpRequestBase request)
        {
            var payment = _paymentService.LoadPayment(PaymentType.WeiXin.ToString());
            var config  = _configService.Get <WeiXinConfig>();

            WxPayData notifyData = GetNotifyData(request, config.Key);

            //检查支付结果中transaction_id是否存在
            if (!notifyData.IsSet("transaction_id"))
            {
                //若transaction_id不存在,则立即返回结果给微信支付后台
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "支付结果中微信订单号不存在");
                Log.Error(this.GetType().ToString(), "The Pay result is error : " + res.ToXml());
                return("支付结果中微信订单号不存在");
            }

            string transaction_id = notifyData.GetValue("transaction_id").ToString();

            string out_trade_no = notifyData.GetValue("out_trade_no").ToString();

            //查询订单,判断订单真实性
            if (!QueryOrder(transaction_id))
            {
                //若订单查询失败,则立即返回结果给微信支付后台
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "订单查询失败");
                Log.Error(this.GetType().ToString(), "Order query failure : " + res.ToXml());
                return("订单查询失败");
            }
            //查询订单成功
            else
            {
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "SUCCESS");
                res.SetValue("return_msg", "OK");
                Log.Info(this.GetType().ToString(), "order query success : " + res.ToXml());

                PayLog payLog = _currencyService.GetSingleByConditon <PayLog>(o => o.TransactionNo == out_trade_no);
                if (payLog != null)
                {
                    using (TransactionScope scope = new TransactionScope())
                    {
                        payLog.PayTime   = DateTime.Now;
                        payLog.LogStatus = LogStatus.Paid;
                        _currencyService.Update(payLog);
                        Order order = _currencyService.GetSingleByConditon <Order>(o => o.Id == payLog.OrderId);
                        order.PayStatus   = PayStatus.Paid;
                        order.PayTime     = DateTime.Now;
                        order.PaymentId   = payment.Id;
                        order.PaymentName = payment.Name;
                        order.OrderStatus = OrderStatus.WaitingForDelivery;
                        _orderService.ChangeOrderStatus(order.Id, order.OrderStatus, order.PayStatus);
                        _currencyService.Update(order);

                        var orderAction = new OrderAction
                        {
                            Id             = KeyGenerator.GetGuidKey(),
                            OrderId        = order.Id,
                            Memo           = "微信支付",
                            CreateTime     = DateTime.Now,
                            OrderStatus    = order.OrderStatus,
                            PayStatus      = order.PayStatus,
                            ShippingStatus = order.ShippingStatus,
                            EvaluateStatus = order.EvaluateStatus,
                            UserId         = order.MemberId,
                            UserName       = order.MemberName
                        };
                        _currencyService.Create(orderAction);
                        //提交
                        scope.Complete();
                    }
                }

                return("OK");
            }
        }
        private async Task <IResponse> UpdateOrder <TPayload>(string purchaseOrderId, OrderAction desiredAction, TPayload payload)
        {
            // to avoid deadlock if this method is executed synchronously
            await new ContextRemover();

            string action = "";

            switch (desiredAction)
            {
            case OrderAction.Ack:
                action = "acknowledge";
                break;

            case OrderAction.Cancel:
                action = "cancel";
                break;

            case OrderAction.Refund:
                action = "refund";
                break;

            case OrderAction.Shipping:
                action = "shipping";
                break;

            default:
                throw new Base.Exception.InvalidValueException("Unknown order action provided >" + action.ToString() + "<");
            }

            var request = CreateRequest();

            request.ApiFormat = ApiFormat.XML;

            // Allow for stream or conventional typed payload
            if (payload != null)
            {
                if (payload is System.IO.Stream)
                {
                    request.AddMultipartContent(payload as System.IO.Stream);
                }
                else
                {
                    request.AddPayload(payload);
                }
            }

            request.EndpointUri = String.Format("/v3/orders/{0}/{1}", purchaseOrderId, action);
            var response = await client.PostAsync(request);

            return(response);
        }
Ejemplo n.º 20
0
        public async Task <string> EditAsync(OrderEditInputModel input)
        {
            var order = this.orders.All().FirstOrDefault(o => o.Id == input.Id);

            order.OrderFrom.ReferenceNum = input.OrderFromReferenceNum;

            foreach (var orderTo in order.OrderTos)
            {
                var orderToInput = input.OrderTos.FirstOrDefault(o => o.Id == orderTo.Id);
                orderTo.CarrierOrder.CompanyId = orderToInput.CarrierOrderCompanyId;
                orderTo.PriceNetOut            = orderToInput.PriceNetOut;
                orderTo.CurrencyOutId          = orderToInput.CurrencyOutId;
                orderTo.PriceNetIn             = orderToInput.PriceNetIn;
                orderTo.CurrencyInId           = orderToInput.CurrencyInId;
                orderTo.ContactId = orderToInput.ContactId;
                orderTo.VehicleId = orderToInput.VehicleId;

                var actions       = orderTo.OrderActions;
                var notDeletedIds = new List <int>();
                foreach (var inputAction in orderToInput.OrderActions)
                {
                    var orderAction = actions.FirstOrDefault(a => a.Id == inputAction.Id);
                    if (orderAction is null)
                    {
                        orderAction                 = new OrderAction();
                        orderAction.Address         = new Address();
                        orderAction.AdminId         = order.AdminId;
                        orderAction.Address.AdminId = order.AdminId;
                        actions.Add(orderAction);
                    }

                    orderAction.TypeId             = inputAction.TypeId;
                    orderAction.Address.City       = inputAction.Address.City;
                    orderAction.Address.Postcode   = inputAction.Address.Postcode;
                    orderAction.Address.Area       = inputAction.Address.Area;
                    orderAction.Address.State      = inputAction.Address.State;
                    orderAction.Address.StreetLine = inputAction.Address.StreetLine;
                    orderAction.Until   = inputAction.Until;
                    orderAction.Details = inputAction.Details;
                    notDeletedIds.Add(orderAction.Id);
                }

                foreach (var action in actions)
                {
                    if (!notDeletedIds.Contains(action.Id))
                    {
                        action.IsDeleted = true;
                    }
                }

                var cargo = orderTo.Cargo;
                cargo.TypeId        = orderToInput.Cargo.TypeId;
                cargo.VehicleType   = this.vehicleTypes.All().FirstOrDefault(vt => vt.Name == VehicleTypeNames.Truck.ToString());
                cargo.LoadingBodyId = orderToInput.Cargo.LoadingBodyId;
                cargo.Name          = orderToInput.Cargo.Name;
                cargo.Lenght        = orderToInput.Cargo.Lenght;
                cargo.Width         = orderToInput.Cargo.Width;
                cargo.Height        = orderToInput.Cargo.Height;
                cargo.WeightGross   = orderToInput.Cargo.WeightGross;
                cargo.WeightNet     = orderToInput.Cargo.WeightNet;
                cargo.Cubature      = orderToInput.Cargo.Cubature;
                cargo.Quantity      = orderToInput.Cargo.Quantity;
                cargo.Details       = orderToInput.Cargo.Details;

                var inputDocumentation = orderToInput.Documentation;
                var documentation      = orderTo.Documentation;
                documentation.CMR          = inputDocumentation.CMR;
                documentation.BillOfLading = inputDocumentation.BillOfLading;
                documentation.AOA          = inputDocumentation.AOA;
                documentation.DeliveryNote = inputDocumentation.DeliveryNote;
                documentation.PackingList  = inputDocumentation.PackingList;
                documentation.ListItems    = inputDocumentation.ListItems;
                documentation.Invoice      = inputDocumentation.Invoice;
                documentation.BillOfGoods  = inputDocumentation.BillOfGoods;
            }

            await this.documentations.SaveChangesAsync();

            await this.orders.SaveChangesAsync();

            return(order.Id);
        }
Ejemplo n.º 21
0
    private void PlayEliminate()
    {
        FuncEliminate.Eliminate();

        List <List <CellAnimInfo> >    cellAnims    = CellModel.Instance.anims;
        List <List <FloorAnimInfo> >   floorAnims   = FloorModel.Instance.anims;
        List <List <WallAnimInfo> >    wallAnims    = WallModel.Instance.anims;
        List <List <CoverAnimInfo> >   coverAnims   = CoverModel.Instance.anims;
        List <List <MonsterAnimInfo> > monsterAnims = MonsterModel.Instance.anims;

        rootAction = new OrderAction();
        for (int i = 0; i < cellAnims.Count; i++)
        {
            ParallelAction paralle = new ParallelAction();

            List <CellAnimInfo> cellAnimss = cellAnims[i];
            int j;
            for (j = 0; j < cellAnimss.Count; j++)
            {
                CellAnimInfo  animInfo = cellAnimss[j];
                FightCellItem item     = GetItemByRunId(animInfo.runId);
                if (item == null && animInfo.animationType != CellAnimType.nullbomb)
                {
                    continue;                    //todo不因该有这个判断 变色技能需要再研究
                }

                OrderAction order = new OrderAction();

                switch (animInfo.animationType)
                {
                case CellAnimType.clear:
                    order.AddNode(new PlaySoundActor("clear"));
                    order.AddNode(new ScaleActor((RectTransform)item.transform, new Vector3(0, 0, 0), 0.1f));
                    FightEffectItem effectItem = effectLayer.GetEffectItemByPos(animInfo.toInfo.posX, animInfo.toInfo.posY);
                    order.AddNode(new ShowBombActor(item, effectItem, false));
                    order.AddNode(new ShowEffectActor(item.transform, "effect_cell_clear", fightModule.transform));
                    order.AddNode(new DestroyActor(item.gameObject));
                    break;

                case CellAnimType.wreck:
                    order.AddNode(new PlaySoundActor("wreck"));
                    order.AddNode(new ScaleActor((RectTransform)item.transform, new Vector3(0, 0, 0), 0.1f));
                    effectItem = effectLayer.GetEffectItemByPos(animInfo.toInfo.posX, animInfo.toInfo.posY);
                    order.AddNode(new ShowBombActor(item, effectItem, false));
                    order.AddNode(new ShowEffectActor(item.transform, "effect_cell_bomb", fightModule.transform));
                    order.AddNode(new ChangeCellActor(item, animInfo.toInfo));
                    if (animInfo.toInfo.isBlank)
                    {
                        order.AddNode(new DestroyActor(item.gameObject));
                    }
                    break;

                case CellAnimType.bomb:
                    order.AddNode(new PlaySoundActor("wreck"));
                    order.AddNode(new ScaleActor((RectTransform)item.transform, new Vector3(1.2f, 1.2f, 1), 0.1f));
                    effectItem = effectLayer.GetEffectItemByPos(animInfo.toInfo.posX, animInfo.toInfo.posY);
                    order.AddNode(new ShowBombActor(item, effectItem, false));
                    order.AddNode(new ShowEffectActor(item.transform, "effect_cell_bomb", fightModule.transform));
                    order.AddNode(new ChangeCellActor(item, animInfo.toInfo));
                    if (animInfo.toInfo.isBlank)
                    {
                        order.AddNode(new DestroyActor(item.gameObject));
                    }
                    break;

                case CellAnimType.nullbomb:
                    effectItem = effectLayer.GetEffectItemByPos(animInfo.toInfo.posX, animInfo.toInfo.posY);
                    order.AddNode(new ShowBombActor(item, effectItem, false));
                    break;
                }

                if (item != null && item.cell_info.isBlank)
                {
                    if (item.cell_info.timer > 0)
                    {
                        order.AddNode(new AddStepActor(item.cell_info.addCount));
                        order.AddNode(new WaitActor(200));
                    }
                }

                paralle.AddNode(order);
            }

            floorLayer.PlayEliminate(floorAnims[i], paralle);
            coverLayer.PlayEliminate(coverAnims[i], paralle);
            fancelayer.PlayEliminate(wallAnims[i], paralle);
            monsterLayer.PlayEliminate(monsterAnims[i], paralle);

            rootAction.AddNode(paralle);
        }

        ExecuteAction(FightStadus.eliminate);
    }
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='assetIdTo'>
 /// </param>
 /// <param name='orderAction'>
 /// Possible values include: 'Buy', 'Sell'
 /// </param>
 /// <param name='assetsFrom'>
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <IList <ConversionResult> > ApiRateCalculatorGetMarketAmountInBaseByAssetIdToByOrderActionPostAsync(this IRateCalculatorAPI operations, string assetIdTo, OrderAction orderAction, IList <AssetWithAmount> assetsFrom = default(IList <AssetWithAmount>), CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.ApiRateCalculatorGetMarketAmountInBaseByAssetIdToByOrderActionPostWithHttpMessagesAsync(assetIdTo, orderAction, assetsFrom, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Ejemplo n.º 23
0
    private void UnlockMonster(bool isJet = false)
    {
        List <int> unLockIds = MonsterModel.Instance.UnLock(isJet);

        MonsterModel.Instance.BackUpUnLockMonster(unLockIds);
        rootAction = new OrderAction();
        for (int j = 0; j < unLockIds.Count; j++)
        {
            int monsterRunId             = unLockIds[j];
            FightMonsterItem monsterItem = monsterLayer.GetItemByRunId(monsterRunId);
            rootAction.AddNode(new SetLayerActor(monsterItem.transform, effectLayer.transform));

            CellInfo monsterCell = new CellInfo();
            monsterCell.posX = monsterItem.monsterInfo.posX;
            monsterCell.posY = monsterItem.monsterInfo.posY;
            if (isJet)
            {
                if (monsterItem.monsterInfo.IsNull())
                {
                    CellDirType dirType = WallModel.Instance.GetGapWallDir(monsterCell);
                    int         zrotate = PosUtil.GetRotateByDir(dirType);
                    rootAction.AddNode(new RoatateActor((RectTransform)monsterItem.transform, new Vector3(0, 0, zrotate), 0.25f));
                }
                else
                {
                    rootAction.AddNode(new ScaleActor((RectTransform)monsterItem.transform, new Vector3(1.15f, 1.15f, 1f), 0.2f));
                }
            }

            List <CellInfo> releaseList = MonsterModel.Instance.ReleaseList(monsterRunId);
            if (releaseList.Count > 0)
            {
                ParallelAction paralle = new ParallelAction();
                for (int i = 0; i < releaseList.Count; i++)
                {
                    CellInfo      cellInfo = releaseList[i];
                    FightCellItem item     = GetItemByRunId(cellInfo.runId);
                    if (item == null)
                    {
                        GameObject itemObj = CreateCellItem(cellInfo);
                        item = itemObj.GetComponent <FightCellItem>();
                    }
                    OrderAction order = new OrderAction();
                    order.AddNode(new PlaySoundActor("Refresh"));

                    order.AddNode(new ShowEffectLineActor(effectLayer, cellInfo, monsterCell, monsterItem.monsterInfo.releaseId));

                    order.AddNode(new ScaleActor((RectTransform)item.transform, new Vector3(0, 0, 0), 0.1f));

                    order.AddNode(new ChangeCellActor(item, cellInfo, monsterItem.monsterInfo.releaseId));

                    paralle.AddNode(order);
                }
                rootAction.AddNode(paralle);
            }
            if (monsterItem.monsterInfo.IsNull())
            {
                rootAction.AddNode(new ScaleActor((RectTransform)monsterItem.transform, new Vector3(1.25f, 1.25f, 0), 0.15f));
                if (j == 0)
                {
                    rootAction.AddNode(new ScaleActor((RectTransform)monsterItem.transform, new Vector3(0, 0, 0), 0.25f));
                }
                else
                {
                    rootAction.AddNode(new ScaleActor((RectTransform)monsterItem.transform, new Vector3(0, 0, 0), 0.15f));
                }
            }
            else
            {
                rootAction.AddNode(new ScaleActor((RectTransform)monsterItem.transform, new Vector3(1, 1, 1), 0.05f));

                CoverInfo coverInfo = CoverModel.Instance.GetCoverByPos(monsterItem.monsterInfo.posY, monsterItem.monsterInfo.posX);

                FightCoverItem coverItem = coverLayer.GetItemByRunId(coverInfo.runId);

                rootAction.AddNode(new ChangeCoverActor(coverLayer, coverItem, coverInfo));
                rootAction.AddNode(new ProgressMonsterActor(monsterItem, monsterItem.monsterInfo.progress));
                rootAction.AddNode(new SetLayerActor(monsterItem.transform, monsterLayer.transform));
            }
        }
        if (isJet)
        {
            ExecuteAction(FightStadus.jet_monster);
        }
        else
        {
            ParallelAction paralleTimer = new ParallelAction();

            List <CellInfo> timerCells = CellModel.Instance.Timing();
            for (int i = 0; i < timerCells.Count; i++)
            {
                CellInfo      cellInfo = timerCells[i];
                FightCellItem item     = GetItemByRunId(cellInfo.runId);
                if (item != null)
                {
                    OrderAction order = new OrderAction();
                    order.AddNode(new PlaySoundActor("Refresh"));
                    order.AddNode(new ChangeCellActor(item, cellInfo));
                    if (cellInfo.isBlank)
                    {
                        order.AddNode(new ScaleActor((RectTransform)item.transform, new Vector3(0, 0, 0), 0.2f));
                        order.AddNode(new DestroyActor(item.gameObject));
                    }
                    paralleTimer.AddNode(order);
                }
            }

            List <CoverInfo> timerCovers = CoverModel.Instance.Timing();
            for (int i = 0; i < timerCovers.Count; i++)
            {
                CoverInfo      coverInfo = timerCovers[i];
                FightCoverItem item      = coverLayer.GetItemByRunId(coverInfo.runId);

                OrderAction order = new OrderAction();
                order.AddNode(new PlaySoundActor("Refresh"));
                order.AddNode(new ChangeCoverActor(coverLayer, item, coverInfo));

                if (coverInfo.IsNull())
                {
                    order.AddNode(new ScaleActor((RectTransform)item.transform, new Vector3(0, 0, 0), 0.2f));
                    order.AddNode(new DestroyActor(item.gameObject));

                    List <CoverInfo> covers = CoverModel.Instance.GetNeighbors(coverInfo);
                    for (int n = 0; n < covers.Count; n++)
                    {
                        CoverInfo cover = covers[n];
                        if (cover != null)
                        {
                            item = coverLayer.GetItemByRunId(cover.runId);
                            order.AddNode(new ChangeCoverActor(coverLayer, item, cover));
                            if (cover.config != null)
                            {
                                coverFlowInterrupt = true;
                            }
                        }
                    }
                }
                paralleTimer.AddNode(order);
            }

            rootAction.AddNode(paralleTimer);

            if (coverFlowInterrupt)
            {
                rootAction.AddNode(new FuncActor(coverLayer.ShowList));                //todo 爆后流动导致多出蜘蛛网
            }

            ExecuteAction(FightStadus.unlock_monster);
        }
    }
Ejemplo n.º 24
0
        /// <summary>
        ///     主库订单确认收货
        /// </summary>
        /// <param name="parameter"></param>
        /// <returns></returns>
        public ServiceResult ConfirmToMaster(ConfirmInput parameter)
        {
            if (TenantContext.CurrentTenant != "master")
            {
                return(ServiceResult.Failed);
            }

            var user = Resolve <IUserService>().GetUserDetail(parameter.UserId);

            if (user == null)
            {
                return(ServiceResult.Failure("用户不存在!"));
            }

            //if (user.Detail.PayPassword != parameter.PayPassword.ToMd5HashString())
            //{
            //    return ServiceResult.Failure("支付密码不正确!");
            //}

            var orderId = parameter.EntityId.ConvertToLong();
            var order   = Resolve <IOrderService>().GetSingle(r => r.Id == orderId);

            if (order == null)
            {
                return(ServiceResult.Failure("订单不存在!"));
            }

            if (order.OrderStatus == OrderStatus.WaitingReceiptProduct)
            {
                order.OrderStatus = OrderStatus.WaitingEvaluated;
            }
            else
            {
                return(ServiceResult.Failure("商品状态不支持收货确认操作!"));
            }

            var result = Resolve <IOrderService>().Update(order);

            if (result)
            {
                var orderAction = new OrderAction {
                    Intro           = "会员已确认收货",
                    OrderId         = order.Id,
                    ActionUserId    = order.UserId,
                    OrderActionType = OrderActionType.UserConfirmOrder
                };
                Resolve <IOrderActionService>().Add(orderAction);

                order.OrderExtension = order.Extension.ToObject <OrderExtension>();
                if (TenantContext.CurrentTenant == "master" && order?.OrderExtension?.TenantOrderInfo?.OrderId > 0)
                {
                    // 收货后如果是租户订单, 同步到租户的自提
                    var tenant = Resolve <ITenantService>().GetSingle(x => x.UserId == order.UserId);
                    if (tenant != null)
                    {
                        var sql =
                            $@"SELECT o.id OrderId ,p.* FROM Shop_Order o JOIN Shop_OrderProduct od ON o.Id = od.OrderId JOIN Shop_Product p ON p.Id = od.ProductId
                             WHERE o.Id = {order.Id} AND o.OrderStatus = 4 AND o.UserId = {order.UserId}";
                        var orderProductList = Ioc.Resolve <IUserRepository>().RepositoryContext
                                               .Fetch <PickUpProductView>(sql);
                        if (orderProductList.Count > 0)
                        {
                            var apiUrl    = tenant.ServiceUrl + "/Api/PickUpProduct/AddPickUpProduct";
                            var dicHeader = new Dictionary <string, string>
                            {
                                { "zk-tenant", tenant.Sign }
                            };

                            apiUrl.Post(orderProductList.ToJsons(), dicHeader);
                        }
                    }
                }
            }

            return(ServiceResult.Success);
        }
Ejemplo n.º 25
0
 protected void RejectNew(QuickFix.SessionID session, string symbol, string order_id, int qty, OrderAction side, string reply_text)
 {
     IOrder fake_order = new FakeOrderForRejectReport(qty, side);
     OrderFixBridge order = new OrderFixBridge(fake_order, order_id, session);
     SendExecutionReport(order, symbol, 0, 0, reply_text);
 }
Ejemplo n.º 26
0
    private void PlayPutAutoSkill()
    {
        rootAction = new OrderAction();

        WaitActor waitActor = new WaitActor(200);

        rootAction.AddNode(waitActor);

        List <SkillEntityInfo> skillEntitys = SkillModel.Instance.GetNewSkillEntitys();

        fightUI.ShowSkill();


        if (lastTouchCell != null && skillEntitys.Count > 0)
        {
            ParallelAction parallelAction = new ParallelAction();
            int            holdIndex      = 0;
            bool           lastIsHump     = lastTouchCell.IsHump();
            for (int i = 0; i < skillEntitys.Count; i++)
            {
                OrderAction skillOrder = new OrderAction();

                SkillEntityInfo skillEntity = skillEntitys[i];

                Vector2 addPos = new Vector2();

                for (int h = holdIndex; h < 19; h++)
                {
                    Vector2 holePos = FightConst.GetHoleByLevel(h, lastIsHump);

                    Vector2 checkPos = new Vector2(lastTouchCell.posX + holePos.x, lastTouchCell.posY - holePos.y);

                    CellInfo checkCell = CellModel.Instance.GetCellByPos((int)checkPos.x, (int)checkPos.y);

                    if (checkCell != null && checkCell.isBlank)
                    {
                        addPos    = checkPos;
                        holdIndex = h + 1;
                        break;
                    }
                }

                CellInfo addItem = CellModel.Instance.AddItem(skillEntity.seed.config_cell_item.id, (int)addPos.x, (int)addPos.y);

                SkillModel.Instance.ThrowSkillEntity(skillEntity, addItem);

                GameObject itemObj = CreateCellItem(addItem);
                itemObj.transform.SetParent(effectLayer.transform, false);
                Vector2 toPos = PosUtil.GetFightCellPos(addItem.posX, addItem.posY);
                PosUtil.SetCellPos(itemObj.transform, skillEntity.seed.seed_x, skillEntity.seed.seed_y, 1.0f);

                rootAction.AddNode(new PlaySoundActor("Useskill"));

                rootAction.AddNode(new ShowEffectActor(itemObj.transform, "effect_skill_fly"));

                rootAction.AddNode(new MoveActor((RectTransform)itemObj.transform, new Vector3(toPos.x, toPos.y, 0), 1200));

                skillOrder.AddNode(new SetLayerActor(itemObj.transform, transform));
                skillOrder.AddNode(new PlaySoundActor("PutAutoSkill"));
                skillOrder.AddNode(new ClearEffectActor(itemObj.transform, "effect_skill_fly"));
                skillOrder.AddNode(new ScaleActor((RectTransform)itemObj.transform, new Vector3(1.2f, 1.2f, 0), 0.2f));
                skillOrder.AddNode(new ScaleActor((RectTransform)itemObj.transform, new Vector3(1, 1, 0), 0.1f));

                parallelAction.AddNode(skillOrder);
            }
            rootAction.AddNode(parallelAction);
        }

        waitActor = new WaitActor(200);
        rootAction.AddNode(waitActor);
        ExecuteAction(FightStadus.auto_skill);
    }
Ejemplo n.º 27
0
 public static LimitOrder Create(string traderId, string asset, string baseCurrency, OrderAction action, double volume, double price)
 {
     return new LimitOrder
     {
         TraderId = traderId,
         Asset = asset,
         Action = action,
         Volume = volume,
         Price = price,
         BaseCurrency = baseCurrency
     };
 }
Ejemplo n.º 28
0
    private void Crawl()
    {
        rootAction = new OrderAction();
        if (!isDeductStep)
        {
            MonsterModel.Instance.Crawl();

            List <MonsterCrawlInfo> crawAnims = MonsterModel.Instance.crawAnims;

            rootAction = new OrderAction();
            ParallelAction paralle = new ParallelAction();

            for (int i = 0; i < crawAnims.Count; i++)
            {
                MonsterCrawlInfo crawAnim = crawAnims[i];

                OrderAction orderAction = new OrderAction();
                paralle.AddNode(orderAction);

                FightMonsterItem monsterItem = monsterLayer.GetItemByRunId(crawAnim.monster.runId);

                for (int j = 0; j < crawAnim.pathCells.Count; j++)
                {
                    CellInfo pathCell = crawAnim.pathCells[j];
                    Vector2  toPos    = PosUtil.GetFightCellPos(pathCell.posX, pathCell.posY);

                    float zrotate = 0;
                    if (j > 0)
                    {
                        Vector2 fromPos = PosUtil.GetFightCellPos(crawAnim.pathCells[j - 1].posX, crawAnim.pathCells[j - 1].posY);
                        zrotate = PosUtil.VectorAngle(new Vector2(fromPos.x, fromPos.y), new Vector2(toPos.x, toPos.y));
                    }
                    else
                    {
                        Vector2 anchoredPos = ((RectTransform)monsterItem.transform).anchoredPosition;
                        zrotate = PosUtil.VectorAngle(new Vector2(anchoredPos.x, anchoredPos.y), new Vector2(toPos.x, toPos.y));
                    }

                    orderAction.AddNode(new RotationActor((RectTransform)monsterItem.transform, zrotate));

                    float speed = 600;
                    orderAction.AddNode(new MoveActor((RectTransform)monsterItem.transform, new Vector3(toPos.x, toPos.y, 0), speed));

                    if (pathCell.isBlank == false)
                    {
                        FightCellItem cellItem = GetItemByRunId(pathCell.runId);
                        pathCell.SetConfig((int)crawAnim.monster.releaseList[0].id);
                        pathCell.changer = 0;
                        orderAction.AddNode(new ChangeCellActor(cellItem, pathCell));
                    }
                }

                if (crawAnim.roadEnd)
                {
                    orderAction.AddNode(new ScaleActor((RectTransform)monsterItem.transform, new Vector3(0, 0, 0), 0.3f));
                    orderAction.AddNode(new ChangeMonsterActor(monsterItem, crawAnim.monster));
                }
            }

            rootAction.AddNode(paralle);
        }

        ExecuteAction(FightStadus.crawl);
    }
Ejemplo n.º 29
0
        public async Task <IEnumerable <ConversionResult> > GetMarketAmountInBase(IEnumerable <AssetWithAmount> from,
                                                                                  string assetIdTo, OrderAction orderAction)
        {
            var limitOrdersTask   = _activeLimitOrdersRepository.GetAsync();
            var assetsDictTask    = _assetsDict.GetDictionaryAsync();
            var assetPairsTask    = _assetPairsDict.Values();
            var marketProfileTask = _bestPriceRepository.GetAsync();

            var limitOrders   = await limitOrdersTask;
            var assetsDict    = await assetsDictTask;
            var assetPairs    = await assetPairsTask;
            var marketProfile = await marketProfileTask;

            return(@from.Select(item => GetMarketAmountInBase(orderAction, limitOrders, item, assetIdTo, assetsDict, assetPairs, marketProfile)));
        }
Ejemplo n.º 30
0
 private static OrderBL NewLimitDayOrder(String accountId, String ticker, int quantity,
                                         decimal orderPrice, OrderAction action)
 {
     return(new OrderBL(accountId, action, ticker, OrderType.OrderLimit, quantity,
                        orderPrice, OrderTimeInForce.OrderDay));
 }
Ejemplo n.º 31
0
        private ConversionResult GetMarketAmountInBase(OrderAction orderAction, IEnumerable <ILimitOrder> limitOrders, AssetWithAmount from,
                                                       string assetTo, IDictionary <string, IAsset> assetsDict, IEnumerable <IAssetPair> assetPairs, MarketProfile marketProfile)
        {
            var result    = new ConversionResult();
            var assetPair = assetPairs.PairWithAssets(from.AssetId, assetTo);

            if (!IsInputValid(from, assetTo, assetsDict) || assetPair == null)
            {
                result.SetResult(OperationResult.InvalidInputParameters);
                return(result);
            }

            if (from.AssetId == assetTo)
            {
                result.From  = result.To = from;
                result.Price = result.VolumePrice = 1;
                result.SetResult(OperationResult.Ok);
                return(result);
            }

            limitOrders = limitOrders.Where(x => x.AssetPairId == assetPair.Id).GetAsync(orderAction, assetPair.IsInverted(assetTo));

            double sum      = 0;
            double priceSum = 0;
            int    n        = 0;

            var neededSum = double.MaxValue;

            foreach (var order in limitOrders)
            {
                if (n != 0 && sum >= neededSum)
                {
                    break;
                }

                sum      += Math.Abs(order.Volume);
                priceSum += order.Price;
                n++;
                neededSum = from.Amount * GetRate(assetTo, assetPair, priceSum / n);
            }

            if (n == 0)
            {
                result.SetResult(OperationResult.NoLiquidity);
                return(result);
            }

            var price = priceSum / n;

            result.From = from;
            var rate        = GetRate(assetTo, assetPair, price);
            var displayRate = GetRate(from.AssetId, assetPair, price);

            result.To = new AssetWithAmount
            {
                AssetId = assetTo,
                Amount  = (rate * from.Amount).TruncateDecimalPlaces(assetsDict[assetTo].Accuracy, orderAction == OrderAction.Buy)
            };
            result.SetResult(sum < neededSum ? OperationResult.NoLiquidity : OperationResult.Ok);
            result.Price       = GetRate(from.AssetId, assetPair, marketProfile.GetPrice(assetPair.Id, orderAction).GetValueOrDefault());
            result.VolumePrice = displayRate;

            return(result);
        }
Ejemplo n.º 32
0
 public virtual List <TEntity> GetAllList(OrderAction <TEntity> orderAction = null, params Expression <Func <TEntity, dynamic> >[] eagerLoadingProperties)
 {
     return(GetAllList(null, orderAction, eagerLoadingProperties));
 }
Ejemplo n.º 33
0
 public virtual UpdateResult performOrderAction(OrderAction orderAction, Statement filterStatement) {
   object[] results = this.Invoke("performOrderAction", new object[] { orderAction, filterStatement });
   return ((UpdateResult) (results[0]));
 }
Ejemplo n.º 34
0
 public abstract PagedResult <TEntity> GetPaged(int pageNumber, int pageSize, Expression <Func <TEntity, bool> > predicate, OrderAction <TEntity> orderAction, params Expression <Func <TEntity, dynamic> >[] eagerLoadingProperties);
Ejemplo n.º 35
0
 public Task ValidateAsync(Order entity, OrderAction action)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 36
0
    public void DoBuild(Tile tile)
    {
        if (buildMode == BuildMode.ROOMBEHAVIOR)
        {
            string roomBehaviorType = buildModeType;

            if (tile.Room != null && WorldController.Instance.World.IsRoomBehaviorValidForRoom(roomBehaviorType, tile.Room))
            {
                RoomBehavior proto = PrototypeManager.RoomBehavior.Get(roomBehaviorType);
                tile.Room.DesignateRoomBehavior(proto.Clone());
            }
        }
        else if (buildMode == BuildMode.FURNITURE)
        {
            // Create the Furniture and assign it to the tile
            // Can we build the furniture in the selected tile?
            // Run the ValidPlacement function!
            string furnitureType = buildModeType;

            if (
                World.Current.FurnitureManager.IsPlacementValid(furnitureType, tile, CurrentPreviewRotation) &&
                World.Current.FurnitureManager.IsWorkSpotClear(furnitureType, tile) &&
                DoesFurnitureBuildJobOverlapExistingBuildJob(tile, furnitureType, CurrentPreviewRotation) == false)
            {
                // This tile position is valid for this furniture

                // Check if there is existing furniture in this tile. If so delete it.
                if (tile.Furniture != null)
                {
                    tile.Furniture.SetDeconstructJob();
                }

                // Create a job for it to be build
                Job job;

                Furniture   toBuildProto = PrototypeManager.Furniture.Get(furnitureType);
                OrderAction orderAction  = toBuildProto.GetOrderAction <Build>();
                if (orderAction != null)
                {
                    job = orderAction.CreateJob(tile, furnitureType);
                    if (useCratedObject)
                    {
                        // We want to use a crated furniture, so set requested items to crated version.
                        job.RequestedItems.Clear();
                        job.RequestedItems.Add(this.buildModeType, new ProjectPorcupine.Jobs.RequestedItem(this.buildModeType, 1));
                        useCratedObject = false;
                    }

                    // this is here so OrderAction can be used for utility as well as furniture
                    job.OnJobCompleted += (theJob) => World.Current.FurnitureManager.ConstructJobCompleted(theJob);
                }
                else
                {
                    UnityDebugger.Debugger.LogError("BuildModeController", "There is no furniture job prototype for '" + furnitureType + "'");
                    job             = new Job(tile, furnitureType, World.Current.FurnitureManager.ConstructJobCompleted, 0.1f, null, Job.JobPriority.High);
                    job.adjacent    = true;
                    job.Description = "job_build_" + furnitureType + "_desc";
                }

                Furniture furnitureToBuild = PrototypeManager.Furniture.Get(furnitureType).Clone();
                furnitureToBuild.SetRotation(CurrentPreviewRotation);
                job.buildablePrototype = furnitureToBuild;

                // Add the job to the queue or build immediately if in Dev mode
                if (SettingsKeyHolder.DeveloperMode)
                {
                    World.Current.FurnitureManager.PlaceFurniture(furnitureToBuild, job.tile);
                }
                else
                {
                    for (int x_off = tile.X; x_off < (tile.X + job.buildablePrototype.Width); x_off++)
                    {
                        for (int y_off = tile.Y; y_off < (tile.Y + job.buildablePrototype.Height); y_off++)
                        {
                            // FIXME: I don't like having to manually and explicitly set
                            // flags that prevent conflicts. It's too easy to forget to set/clear them!
                            Tile          offsetTile       = World.Current.GetTileAt(x_off, y_off, tile.Z);
                            HashSet <Job> pendingBuildJobs = WorldController.Instance.World.GetTileAt(x_off, y_off, tile.Z).PendingBuildJobs;
                            if (pendingBuildJobs != null)
                            {
                                // if the existing buildJobs furniture is replaceable by the current furnitureType,
                                // we can pretend it does not overlap with the new build

                                // We should only have 1 furniture building job per tile, so this should return that job and only that job
                                IEnumerable <Job> pendingFurnitureJob = pendingBuildJobs.Where(pendingJob => pendingJob.buildablePrototype.GetType() == typeof(Furniture));
                                if (pendingFurnitureJob.Count() == 1)
                                {
                                    pendingFurnitureJob.Single().CancelJob();
                                }
                            }

                            offsetTile.PendingBuildJobs.Add(job);
                            job.OnJobStopped += (theJob) => offsetTile.PendingBuildJobs.Remove(job);
                        }
                    }

                    World.Current.jobQueue.Enqueue(job);

                    // Let our workspot tile know it is reserved for us
                    World.Current.ReserveTileAsWorkSpot((Furniture)job.buildablePrototype, job.tile);
                }
            }
        }
        else if (buildMode == BuildMode.UTILITY)
        {
            // Create the Furniture and assign it to the tile
            // Can we build the furniture in the selected tile?
            // Run the ValidPlacement function!
            string utilityType = buildModeType;
            if (
                World.Current.UtilityManager.IsPlacementValid(utilityType, tile) &&
                DoesSameUtilityTypeAlreadyExist(utilityType, tile) == false &&
                DoesUtilityBuildJobOverlapExistingBuildJob(utilityType, tile) == false)
            {
                // This tile position is valid for this furniture

                // Create a job for it to be build
                Job job;

                Utility     toBuildProto = PrototypeManager.Utility.Get(utilityType);
                OrderAction orderAction  = toBuildProto.GetOrderAction <Build>();
                if (orderAction != null)
                {
                    job = orderAction.CreateJob(tile, utilityType);

                    // this is here so OrderAction can be used for utility as well as furniture
                    job.OnJobCompleted += (theJob) => World.Current.UtilityManager.ConstructJobCompleted(theJob);
                }
                else
                {
                    UnityDebugger.Debugger.LogError("BuildModeController", "There is no furniture job prototype for '" + utilityType + "'");
                    job             = new Job(tile, utilityType, World.Current.UtilityManager.ConstructJobCompleted, 0.1f, null, Job.JobPriority.High);
                    job.Description = "job_build_" + utilityType + "_desc";
                }

                job.buildablePrototype = PrototypeManager.Utility.Get(utilityType);

                // Add the job to the queue or build immediately if in dev mode
                if (SettingsKeyHolder.DeveloperMode)
                {
                    World.Current.UtilityManager.PlaceUtility(job.Type, job.tile, true);
                }
                else
                {
                    // FIXME: I don't like having to manually and explicitly set
                    // flags that preven conflicts. It's too easy to forget to set/clear them!
                    Tile offsetTile = World.Current.GetTileAt(tile.X, tile.Y, tile.Z);
                    offsetTile.PendingBuildJobs.Add(job);
                    job.OnJobStopped += (theJob) => offsetTile.PendingBuildJobs.Remove(job);

                    World.Current.jobQueue.Enqueue(job);
                }
            }
        }
        else if (buildMode == BuildMode.FLOOR)
        {
            // We are in tile-changing mode.
            ////t.Type = buildModeTile;

            TileType tileType = buildModeTile;

            if (
                tile.Type != tileType &&
                tile.Furniture == null &&
                tile.PendingBuildJobs.Count == 0 &&
                tileType.CanBuildHere(tile))
            {
                // This tile position is valid tile type

                // Create a job for it to be build
                Job buildingJob = tileType.BuildingJob;

                buildingJob.tile = tile;

                // Add the job to the queue or build immediately if in Dev mode
                if (SettingsKeyHolder.DeveloperMode)
                {
                    buildingJob.tile.SetTileType(buildingJob.JobTileType);
                }
                else
                {
                    buildingJob.OnJobStopped += (theJob) => theJob.tile.PendingBuildJobs.Remove(theJob);

                    WorldController.Instance.World.jobQueue.Enqueue(buildingJob);
                }
            }
        }
        else if (buildMode == BuildMode.DECONSTRUCT)
        {
            bool canDeconstructAll = SettingsKeyHolder.DeveloperMode;

            if (tile.Furniture != null && (canDeconstructAll || tile.Furniture.HasTypeTag("Non-deconstructible") == false))
            {
                // check if this is a WALL neighbouring a pressured and pressureless environment, and if so, bail
                if (IsTilePartOfPressuredRoom(tile))
                {
                    return;
                }

                tile.Furniture.SetDeconstructJob();
            }
            else if (tile.PendingBuildJobs != null && tile.PendingBuildJobs.Count > 0)
            {
                tile.PendingBuildJobs.Last().CancelJob();
            }
            else if (tile.Utilities.Count > 0)
            {
                tile.Utilities.Last().Value.SetDeconstructJob();
            }
        }
        else if (buildMode == BuildMode.MINE)
        {
            if (tile.Furniture != null)
            {
                Job  existingMineJob;
                bool hasMineJob = tile.Furniture.Jobs.HasJobWithPredicate(x => x.OrderName == typeof(Mine).Name, out existingMineJob);
                if (!hasMineJob)
                {
                    OrderAction mineAction = tile.Furniture.GetOrderAction <Mine>();
                    if (mineAction != null)
                    {
                        // check if this is a WALL neighbouring a pressured and pressureless environment, and if so, bail
                        if (IsTilePartOfPressuredRoom(tile))
                        {
                            return;
                        }

                        Job job = mineAction.CreateJob(tile, null);
                        if (SettingsKeyHolder.DeveloperMode)
                        {
                            // complete job right away, needs buildable
                            job.buildable = tile.Furniture;
                            job.DoWork(0);
                        }
                        else
                        {
                            tile.Furniture.Jobs.Add(job);
                        }
                    }
                }
            }
        }
        else
        {
            UnityDebugger.Debugger.LogError("BuildModeController", "UNIMPLEMENTED BUILD MODE");
        }
    }
Ejemplo n.º 37
0
    /// <summary>
    /// Reads the prototype utility from XML.
    /// </summary>
    /// <param name="readerParent">The XML reader to read from.</param>
    public void ReadXmlPrototype(XmlReader readerParent)
    {
        Type = readerParent.GetAttribute("type");

        XmlReader reader = readerParent.ReadSubtree();

        while (reader.Read())
        {
            switch (reader.Name)
            {
            case "TypeTag":
                reader.Read();
                typeTags.Add(reader.ReadContentAsString());
                break;

            case "CanBeBuiltOn":
                tileTypeBuildPermissions.Add(reader.GetAttribute("tileType"));
                break;

            case "Action":
                XmlReader subtree = reader.ReadSubtree();
                EventActions.ReadXml(subtree);
                subtree.Close();
                break;

            case "ContextMenuAction":
                contextMenuLuaActions.Add(new ContextMenuLuaAction
                {
                    LuaFunction              = reader.GetAttribute("FunctionName"),
                    LocalizationKey          = reader.GetAttribute("Text"),
                    RequireCharacterSelected = bool.Parse(reader.GetAttribute("RequireCharacterSelected")),
                    DevModeOnly              = bool.Parse(reader.GetAttribute("DevModeOnly") ?? "false")
                });
                break;

            case "GetSpriteName":
                getSpriteNameAction = reader.GetAttribute("FunctionName");
                break;

            case "Params":
                ReadXmlParams(reader);      // Read in the Param tag
                break;

            case "LocalizationCode":
                reader.Read();
                LocalizationName = reader.ReadContentAsString();
                break;

            case "UnlocalizedDescription":
                reader.Read();
                LocalizationDescription = reader.ReadContentAsString();
                break;

            case "OrderAction":
                OrderAction orderAction = OrderAction.Deserialize(reader);
                if (orderAction != null)
                {
                    orderActions[orderAction.Type] = orderAction;
                }

                break;
            }
        }
    }
Ejemplo n.º 38
0
    /// <summary>
    /// Reads the prototype furniture from XML.
    /// </summary>
    /// <param name="readerParent">The XML reader to read from.</param>
    public void ReadXmlPrototype(XmlReader readerParent)
    {
        Type = readerParent.GetAttribute("type");

        XmlReader reader = readerParent.ReadSubtree();

        while (reader.Read())
        {
            switch (reader.Name)
            {
            case "TypeTag":
                reader.Read();
                typeTags.Add(reader.ReadContentAsString());
                break;

            case "MovementCost":
                reader.Read();
                MovementCost = reader.ReadContentAsFloat();
                break;

            case "PathfindingModifier":
                reader.Read();
                PathfindingModifier = reader.ReadContentAsFloat();
                break;

            case "PathfindingWeight":
                reader.Read();
                PathfindingWeight = reader.ReadContentAsFloat();
                break;

            case "Width":
                reader.Read();
                Width = reader.ReadContentAsInt();
                break;

            case "Height":
                reader.Read();
                Height = reader.ReadContentAsInt();
                break;

            case "Health":
                reader.Read();
                health = new HealthSystem(reader.ReadContentAsFloat(), false, true, false, false);
                break;

            case "LinksToNeighbours":
                reader.Read();
                LinksToNeighbour = reader.ReadContentAsString();
                break;

            case "EnclosesRooms":
                reader.Read();
                RoomEnclosure = reader.ReadContentAsBoolean();
                break;

            case "CanReplaceFurniture":
                replaceableFurniture.Add(reader.GetAttribute("typeTag").ToString());
                break;

            case "CanRotate":
                reader.Read();
                CanRotate = reader.ReadContentAsBoolean();
                break;

            case "DragType":
                reader.Read();
                DragType = reader.ReadContentAsString();
                break;

            case "CanBeBuiltOn":
                tileTypeBuildPermissions.Add(reader.GetAttribute("tileType"));
                break;

            case "Animations":
                XmlReader animationReader = reader.ReadSubtree();
                ReadAnimationXml(animationReader);
                break;

            case "Action":
                XmlReader subtree = reader.ReadSubtree();
                EventActions.ReadXml(subtree);
                subtree.Close();
                break;

            case "ContextMenuAction":
                contextMenuLuaActions.Add(new ContextMenuLuaAction
                {
                    LuaFunction              = reader.GetAttribute("FunctionName"),
                    LocalizationKey          = reader.GetAttribute("LocalizationKey"),
                    RequireCharacterSelected = bool.Parse(reader.GetAttribute("RequireCharacterSelected")),
                    DevModeOnly              = bool.Parse(reader.GetAttribute("DevModeOnly") ?? "false")
                });
                break;

            case "IsEnterable":
                isEnterableAction = reader.GetAttribute("FunctionName");
                break;

            case "GetProgressInfo":
                getProgressInfoNameAction = reader.GetAttribute("functionName");
                break;

            case "JobWorkSpotOffset":
                Jobs.ReadWorkSpotOffset(reader);
                break;

            case "JobInputSpotOffset":
                Jobs.ReadInputSpotOffset(reader);
                break;

            case "JobOutputSpotOffset":
                Jobs.ReadOutputSpotOffset(reader);
                break;

            case "Params":
                ReadXmlParams(reader);      // Read in the Param tag
                break;

            case "LocalizationCode":
                reader.Read();
                LocalizationCode = reader.ReadContentAsString();
                break;

            case "UnlocalizedDescription":
                reader.Read();
                UnlocalizedDescription = reader.ReadContentAsString();
                break;

            case "Component":
                BuildableComponent component = BuildableComponent.Deserialize(reader);
                if (component != null)
                {
                    component.InitializePrototype(this);
                    components.Add(component);
                }

                break;

            case "OrderAction":
                OrderAction orderAction = OrderAction.Deserialize(reader);
                if (orderAction != null)
                {
                    orderActions[orderAction.Type] = orderAction;
                }

                break;
            }
        }

        if (orderActions.ContainsKey("Uninstall"))
        {
            Inventory asInventory = Inventory.CreatePrototype(Type, 1, 0f, "crated_furniture", LocalizationCode, UnlocalizedDescription);
            PrototypeManager.Inventory.Add(asInventory);
        }
    }
Ejemplo n.º 39
0
 /// <summary>
 /// Converts order action into reversed order action - buy to sell and sell to buy.
 /// </summary>
 /// <param name="orderAction">Order action to be reversed.</param>
 /// <returns>Reversed order action.</returns>
 public static OrderAction Reverse(this OrderAction orderAction)
 {
     return(orderAction == OrderAction.Buy ? OrderAction.Sell : OrderAction.Buy);
 }