public JsonResult AddJson(AddSale addSale) { Response _res = new Response(); int id = int.Parse(Session["UserID"].ToString()); double personCoinAmount = 0.00; try { personCoinAmount = _walletManager.GetWallet(id, addSale.PayCoin).Amount; } catch { } string _psd = null; if (Amount < addSale.Amount) { _res.Code = 0; _res.Message = "超过该委托寄售的货币数量"; return(Json(_res)); } int identyId = _userManager.Find(id).FKIdentyID; if (string.IsNullOrEmpty(_identy.Find(identyId).Password)) { _res.Code = 0; _res.Message = "请先设置交易密码"; return(Json(_res)); } try { _psd = Security.SHA256(addSale.Password); } catch { _res.Code = 0; _res.Message = "请先输入交易密码"; return(Json(_res)); } if (_psd != _userManager.Find(id).UserIdenty.Password) { _res.Code = 0; _res.Message = "交易密码错误"; return(Json(_res)); } if (personCoinAmount == 0.00 || (addSale.price * Amount) > personCoinAmount) { _res.Code = 0; _res.Message = "钱包余额不足,请前往充值"; return(Json(_res)); } if (ModelState.IsValid) { string cointocoin = addSale.SellCoin + "/" + addSale.PayCoin; //减少支付货币 Wallet _wallet = _walletManager.GetWallet(id, addSale.PayCoin); _wallet.Amount -= addSale.Amount * addSale.price; _walletManager.Update(_wallet); //委托方增加货币 Wallet _entrustWallet = _walletManager.GetWallet(EntrusterID, addSale.PayCoin); _entrustWallet.Amount += addSale.Amount * addSale.price; _walletManager.Update(_entrustWallet); //更新委托 如果委托数量为零 则标记委托成功 记1,添加成功时间 Entrust _entrust = new Entrust(); _entrust = _entrustManager.Find(ID); if (Amount - addSale.Amount == 0) { _entrust.IsSuccess = 1; _entrust.SucOrDefTime = DateTime.Now; _entrustManager.Update(_entrust); } //添加委托详情表 EntrustDetails _entrustDetails = new EntrustDetails(); _entrustDetails.Amount = addSale.Amount; _entrustDetails.BuyerID = id; _entrustDetails.SellID = _entrustManager.Find(ID).FUserID; _entrustDetails.EntrustID = EntrustID; _entrustsDetailsManager.Add(_entrustDetails); //一笔交易成功 添加一日中每一笔的价格表 PriceInADeal _priceInADeal = new PriceInADeal(); _priceInADeal.DealTime = DateTime.Now; _priceInADeal.Amount = addSale.Amount; _priceInADeal.Price = addSale.price; PriceInDay pd = _priceInDayManager.Find(u => u.CoinToCoin == cointocoin); _priceInADeal.PriceInDayID = pd.ID; _priceInADealManager.Add(_priceInADeal); //一笔交易进来判断是否为第一笔(总表内是否有该天的数据) try //不为空 不是第一笔 更新该数据,设置priceinday的 up volumeInday等属性 { DateTime time = _priceInADeal.DealTime; PriceTable pt = _priceTableManager.IfFirstOrNo(cointocoin, time); pt.Amount += _priceInADeal.Amount; if (pt.MaxPrice < _priceInADeal.Price) { pt.MaxPrice = _priceInADeal.Price; } if (pt.MinPrice > _priceInADeal.Price) { pt.MinPrice = _priceInADeal.Price; } pt.ClosingPrice = _priceInADeal.Price; _priceTableManager.Update(pt); //更新PriceInADay if (pd.MaxInDay < _priceInADeal.Price) { pd.MaxInDay = _priceInADeal.Price; } if (pd.MinInDay > _priceInADeal.Price) { pd.MinInDay = _priceInADeal.Price; } pd.Up = (_priceInADeal.Price - pd.Price) / pd.Price; pd.Price = _priceInADeal.Price; pd.VolumeInDay += _priceInADeal.Price * _priceInADeal.Amount; pd.AmountInDay += _priceInADeal.Amount; } catch //为空 总表添加该天的数据 { PriceTable pt = new PriceTable() { KDateTime = DateTime.Now, CoinToCoin = cointocoin, OpeningPrice = _priceInADeal.Price, ClosingPrice = _priceInADeal.Price, MaxPrice = _priceInADeal.Price, MinPrice = _priceInADeal.Price, Amount = _priceInADeal.Amount, }; _priceTableManager.Add(pt); //更新priceInADay pd.MaxInDay = _priceInADeal.Price; pd.MinInDay = _priceInADeal.Price; pd.Price = _priceInADeal.Price; pd.Up = 0; pd.VolumeInDay = _priceInADeal.Price * _priceInADeal.Amount; pd.AmountInDay = _priceInADeal.Amount; } //更新priceInDay _priceInDayManager.Update(pd); //增加购买的货币 Wallet _wallet2 = _walletManager.GetWallet(id, addSale.SellCoin); _wallet2.Amount += addSale.Amount; _walletManager.Update(_wallet2); //委托方减少货币,发布委托时已经减少了 //Wallet _entrustWallet2 = _walletManager.GetWallet(EntrusterID, addSale.SellCoin); //_entrustWallet2.Amount -= addSale.Amount; //_walletManager.Update(_entrustWallet2); } else { _res.Code = 0; _res.Message = General.GetModelErrorString(ModelState); return(Json(_res)); } _res.Code = 1; _res.Message = "购买成功"; return(Json(_res)); }
public ActionResult Add(AddCTCViewModel ctc) { int id; if (!IsEnglish(ctc.Name)) { ModelState.AddModelError("Name", "请输入英文代称"); return(View(ctc)); } try { _vir.FindVirID(ctc.Name); ModelState.AddModelError("Name", "已存在该货币,且只可存在一种结算货币"); } catch { } if (ModelState.IsValid) { Response _response = null; //添加的是结算货币 还需添加至货币体系 if (ctc.ID == 5) { Core.Type type = new Core.Type(); type.TypeName = ctc.Name; _response = _type.Add(type); VirtualCurrency vir = new VirtualCurrency(); vir.Name = ctc.Name; vir.TypeID = ctc.ID; vir.Description = ctc.Name + "/" + ctc.Name; _response = _vir.Add(vir); id = vir.VirCurID; } //添加的是交易对 直接添加至货币体系 else { VirtualCurrency vir = new VirtualCurrency(); vir.Name = ctc.Name; vir.TypeID = ctc.ID; vir.Description = ctc.Name + "/" + _type.Find(ctc.ID).TypeName; _response = _vir.Add(vir); id = vir.VirCurID; } //都需要为每一个用户添加新的钱包 List <int> users = _user.FindList().Select(u => u.UserID).ToList(); Wallet wallet = new Wallet(); foreach (var item in users) { wallet.Amount = 0; wallet.UserID = item; wallet.VirCurID = id; _wallet.Add(wallet); } //为新加的货币添加每日情况表 PriceInDay pr = new PriceInDay { CoinToCoin = ctc.Name + "/" + _type.Find(ctc.ID).TypeName, AmountInDay = 0, Price = 0, VolumeInDay = 0, MaxInDay = 0, MinInDay = 0, Up = 0 }; _pr.Add(pr); if (_response.Code == 1) { return(View("Prompt", new Prompt() { Title = "添加货币成功", Message = "您已成功添加了货币【" + _response.Data.Name + "】", Buttons = new List <string> { "<a href=\"" + Url.Action("Index", "Coin") + "\" class=\"btn btn-default\">交易对管理</a>", "<a href=\"" + Url.Action("Add", "Coin") + "\" class=\"btn btn-default\">继续添加</a>" } })); } else { ModelState.AddModelError("", _response.Message); } } //这里还需初始化一次 如果不跳转页面 var _types = new TypeManager().FindList(); List <SelectListItem> _listItems = new List <SelectListItem>(_types.Count()); foreach (var _type in _types) { _listItems.Add(new SelectListItem() { Text = _type.TypeName, Value = _type.ID.ToString() }); //这里的属性名要与view中的model属性一致 } ViewBag.Types = _listItems; return(View(ctc)); }