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 = "服务器错误" }); } }
/// <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 }; } })); }
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; })); }
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)); } }
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 }); } } } }
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); }