コード例 #1
0
ファイル: SpotService.cs プロジェクト: 810912015/option
        public SpotOrderResult AddOrder(int trader, int coinId, Core.TradeDirectType dir, OrderPolicy policy,
                                        decimal count, decimal price)
        {
            try
            {
                if (isStop)
                {
                    return new SpotOrderResult {
                               ResultCode = 330, Desc = "系统已停止,请稍后重试"
                    }
                }
                ;
                var r = creator.Create(trader, coinId, dir, policy, count, price);
                if (r.ResultCode != 0)
                {
                    return(r);
                }
                var pr = pre.CouldOrder(r.Spot);
                if (pr != 0)
                {
                    if (pr == 1)
                    {
                        return new SpotOrderResult
                               {
                                   Spot       = r.Spot,
                                   ResultCode = 100,
                                   Desc       = "虚拟币不足"
                               }
                    }
                    ;
                    else if (pr == 2)
                    {
                        return new SpotOrderResult
                               {
                                   Spot       = r.Spot,
                                   ResultCode = 100,
                                   Desc       = "现金资金不足"
                               }
                    }
                    ;
                }
                post.Handle(r.Spot);
                match.Match(r.Spot);
                model.SaveUndeal(r.Spot);
                return(new SpotOrderResult
                {
                    ResultCode = 0,
                    Spot = r.Spot,
                    Desc = "下单成功"
                });
            }
            catch (Exception e)
            {
                Singleton <TextLog> .Instance.Error(e, "spot");

                return(new SpotOrderResult {
                    ResultCode = 100, Desc = "服务器错误"
                });
            }
        }
コード例 #2
0
ファイル: TradeController.cs プロジェクト: 810912015/option
        /// <summary>
        /// 现货下单
        /// </summary>
        /// <param name="uid">用户标志</param>
        /// <param name="coinId">虚拟币编号:必须为2(当前只提供比特币)</param>
        /// <param name="dir">买卖</param>
        /// <param name="pwd">交易密码</param>
        /// <param name="count">数量</param>
        /// <param name="price">价格</param>
        /// <returns>下单结果</returns>
        public OpResult <SpotOrderResultDto> SpotOrderIt(int uid, int coinId, Core.TradeDirectType dir, OrderPolicy policy,
                                                         string pwd,
                                                         decimal count, decimal price)
        {
            return(Handle <SpotOrderResultDto>(uid, () =>
            {
                try
                {
                    if (count <= 0 || price <= 0)
                    {
                        return new SpotOrderResultDto {
                            Desc = "价格或数量不能小于等于0", ResultCode = 101, Spot = null
                        };
                    }
                    var tid = im.GetTraderId(uid);

                    var r = MvcApplication.SpotService.AddOrder(tid, coinId, dir, policy, count, price);
                    var rr = new SpotOrderResultDto {
                        Desc = r.Desc, IsSuccess = r.IsSuccess, ResultCode = r.ResultCode, Spot = new SpotOrderDto(r.Spot)
                    };
                    return rr;
                }
                catch (Exception e)
                {
                    Singleton <TextLog> .Instance.Error(e, "spotapi");
                    return new SpotOrderResultDto {
                        Desc = "服务器错误", ResultCode = 100, Spot = null
                    };
                }
            }));
        }
コード例 #3
0
ファイル: TradeController.cs プロジェクト: 810912015/option
 public OpResult <OrderResultDto> OrderIt(int uid, string code, Core.OrderPolicy policy,
                                          decimal price, int count, Core.TradeDirectType direct,
                                          Core.OrderType openclose, string userOpId)
 {
     return(Handle <OrderResultDto>(uid, () =>
     {
         var tid = im.GetTraderId(uid);
         var r = itm.OrderIt(tid, code, policy, price, count, direct, openclose, userOpId);
         return r;
     }));
 }
コード例 #4
0
        public JsonResult OrderIt(int coinId, Core.TradeDirectType dir, OrderPolicy policy,
                                  string pwd,
                                  decimal count, decimal price)
        {
            try
            {
                var au = UserManager.FindByName(User.Identity.Name);
                if (au == null)
                {
                    return(Json(new OperationResult(501, "必须登录"), JsonRequestBehavior.AllowGet));
                }
                var u = User.GetTraderId();

                if (u == -1)
                {
                    return(Json(new OperationResult(1, "无此用户"), JsonRequestBehavior.AllowGet));
                }

                var ThisUser = adb.Users.Where(a => a.UserName == User.Identity.Name).FirstOrDefault();
                if (ThisUser.PhoneNumber == "" || ThisUser.PhoneNumber == null)
                {
                    return(Json(new OperationResult(3, "请进入安全中心绑定手机号"), JsonRequestBehavior.AllowGet));
                }
                string pwdPolicy = GetInputTradeCount();
                if (pwdPolicy == "n" || pwdPolicy == "1")
                {
                    if (pwd != ThisUser.TradePwd)
                    {
                        return(Json(new OperationResult(501, "交易密码错误"), JsonRequestBehavior.AllowGet));
                    }
                }
                if (count <= 0)
                {
                    return(Json(new OperationResult(2, "数量不能小于等于0"), JsonRequestBehavior.AllowGet));
                }
                if (!policy.IsPriceValid(price))
                {
                    return(Json(new OperationResult(4, "非市价策略价格必须有价格"), JsonRequestBehavior.AllowGet));
                }

                var r = spotService.AddOrder(u, coinId, dir, policy, count, price);
                return(Json(new { ResultCode = r.ResultCode, Desc = r.Desc, Spot = new SpotOrderDto(r.Spot) }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                Singleton <TextLog> .Instance.Error(e, "spotcontroller");

                return(Json(new OperationResult(100, "服务器未知错误"), JsonRequestBehavior.AllowGet));
            }
        }
コード例 #5
0
ファイル: SpotOrderCreator.cs プロジェクト: 810912015/option
        public SpotOrderResult Create(int trader, int coinId, Core.TradeDirectType dir, OrderPolicy policy,
                                      decimal userCount, decimal price)
        {
            var count = Math.Round(userCount, 2);

            if (count <= 0)
            {
                return new SpotOrderResult
                       {
                           ResultCode = 1,
                           Desc       = "金额不能小于等于0",
                           Spot       = null
                       }
            }
            ;
            if (!policy.IsPriceValid(price))
            {
                return new SpotOrderResult
                       {
                           ResultCode = 1,
                           Desc       = "非市价策略必须有价格",
                           Spot       = null
                       }
            }
            ;
            var t = sm.Model.Traders.Where(a => a.Id == trader).FirstOrDefault();

            if (t == null)
            {
                return new SpotOrderResult {
                           Spot = null, Desc = "无此用户", ResultCode = 2
                }
            }
            ;
            var c = sm.Model.Coins.Where(a => a.Id == coinId).FirstOrDefault();

            if (c == null)
            {
                return new SpotOrderResult {
                           Spot = null, Desc = "无此虚拟币", ResultCode = 3
                }
            }
            ;
            var ap = Math.Round(price, 2);

            lock (loc)
            {
                var so = new SpotOrder
                {
                    Id          = IdService <SpotOrder> .Instance.NewId(),
                    Coin        = c,
                    CoinId      = c.Id,
                    Count       = count,
                    Direction   = dir,
                    OrderTime   = DateTime.Now,
                    Price       = ap,
                    State       = OrderState.等待中,
                    Trader      = t,
                    TraderId    = t.Id,
                    ReportCount = count,
                    OrderPolicy = policy
                };

                return(new SpotOrderResult {
                    ResultCode = 0, Desc = "创建委托成功", Spot = so
                });
            }
        }
    }
}
コード例 #6
0
 public void AddOrder(int contract, Core.TradeDirectType dir, Core.OrderType orderType, Core.OrderPolicy policy, decimal count, decimal price, string userOpId = "")
 {
     ts.AddOrder(contract, dir, orderType, policy, count, price, userOpId);
 }