Esempio n. 1
0
        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));
        }
Esempio n. 2
0
      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));
      }