Esempio n. 1
0
        private void handleOnPreMintAtEndItem(TokenBalanceInfo info, long now)
        {
            var findStr   = "";
            var updateStr = "";

            if (info.onPreMint.format() == info.onPreMintAtEnd.format())
            {
                findStr = new JObject {
                    { "projId", info.projId }, { "address", info.address }
                }.ToString();
                updateStr = new JObject {
                    { "$set", new JObject {
                          { "onPreMintAtEndFinishFlag", true }, { "onPreMintAtEndTime", now }
                      } }
                }.ToString();
                mh.UpdateData(daoConn.connStr, daoConn.connDB, projFinanceBalanceCol, updateStr, findStr);
                return;
            }
            findStr = new JObject {
                { "who", info.address }, { "timestamp", new JObject {
                                               { "$lt", now }
                                           } }
            }.ToString();
            var fieldStr = new JObject {
                { "tokenAmt", 1 }
            }.ToString();
            var queryRes = mh.GetData(daoConn.connStr, daoConn.connDB, projFinanceBalanceCol, findStr, fieldStr);

            if (queryRes.Count == 0)
            {
                return;
            }

            var unlockAmt = queryRes.Sum(p => decimal.Parse(p["tokenAmt"].ToString()));

            if (info.onPreMintAtEnd.format() == unlockAmt)
            {
                return;
            }

            var updateJo = new BsonDocument();

            updateJo.Add("onPreMintAtEnd", unlockAmt.format());
            updateJo.Add("onPreMintAtEndTime", now);
            updateJo.Add("lastUpdateTime", now);
            if (info.onPreMint.format() == unlockAmt)
            {
                updateJo.Add("onPreMintAtEndFinishFlag", true);
            }
            var updateBson = new BsonDocument {
                { "$set", updateJo }
            };

            mh.UpdateDecimal(daoConn.connStr, daoConn.connDB, projFinanceBalanceCol, updateBson, findStr);
        }
Esempio n. 2
0
        private void handleInfo(TokenBalanceInfo info)
        {
            var findStr = new JObject {
                { "projId", info.projId }, { "address", info.address }
            }.ToString();
            var queryRes = mh.GetData <TokenBalanceInfo>(daoConn.connStr, daoConn.connDB, projFinanceBalanceCol, findStr);

            if (queryRes.Count == 0)
            {
                info.balance = (info.onPreMint.format() + info.onBuy.format() - info.onSell.format()).format();
                mh.PutData <TokenBalanceInfo>(daoConn.connStr, daoConn.connDB, projFinanceBalanceCol, info);
                return;
            }
            var item = queryRes[0];

            handleUpdate(item, info, findStr);
        }
Esempio n. 3
0
        private void handleUpdate(TokenBalanceInfo oldB, TokenBalanceInfo newB, string findStr)
        {
            var  zero       = decimal.Zero;
            var  updateJo   = new BsonDocument();
            bool updateFlag = false;
            var  onPreMint  = oldB.onPreMint.format();

            if (newB.onPreMint != zero)
            {
                var amt      = newB.onPreMint.format();
                var amtOld   = oldB.onPreMint.format();
                var amtOldTp = oldB.onPreMintTp.format();
                if (fundPoolTempNotClearAllFlag)
                {
                    amtOldTp = decimal.Zero;
                }
                var amtUp   = amtOld - amtOldTp + amt;
                var amtUpTp = amt;
                updateJo.Add("onPreMint", amtUp.format());
                updateJo.Add("onPreMintTp", amtUpTp.format());
                updateFlag = true;
                onPreMint  = amtUp;
            }
            var onBuy = oldB.onBuy.format();

            if (newB.onBuy != zero)
            {
                var amt      = newB.onBuy.format();
                var amtOld   = oldB.onBuy.format();
                var amtOldTp = oldB.onBuyTp.format();
                if (fundPoolTempNotClearAllFlag)
                {
                    amtOldTp = decimal.Zero;
                }
                var amtUp   = amtOld - amtOldTp + amt;
                var amtUpTp = amt;
                updateJo.Add("onBuy", amtUp.format());
                updateJo.Add("onBuyTp", amtUpTp.format());
                updateFlag = true;
                onBuy      = amtUp;
            }
            var onSell = oldB.onSell.format();

            if (newB.onSell != zero)
            {
                var amt      = newB.onSell.format();
                var amtOld   = oldB.onSell.format();
                var amtOldTp = oldB.onSellTp.format();
                if (fundPoolTempNotClearAllFlag)
                {
                    amtOldTp = decimal.Zero;
                }
                var amtUp   = amtOld - amtOldTp + amt;
                var amtUpTp = amt;
                updateJo.Add("onSell", amtUp.format());
                updateJo.Add("onSellTp", amtUpTp.format());
                updateFlag = true;
                onSell     = amtUp;
            }
            if (updateFlag)
            {
                var balance = onPreMint + onBuy - onSell;
                updateJo.Add("balance", balance.format());
            }

            //
            if (newB.transferFrom != zero)
            {
                var amt      = newB.transferFrom.format();
                var amtOld   = oldB.transferFrom.format();
                var amtOldTp = oldB.transferFromTp.format();
                if (fundPoolTempNotClearAllFlag)
                {
                    amtOldTp = decimal.Zero;
                }
                var amtUp   = amtOld - amtOldTp + amt;
                var amtUpTp = amt;
                updateJo.Add("transferFrom", amtUp.format());
                updateJo.Add("transferFromTp", amtUpTp.format());
                updateFlag = true;
            }
            if (newB.transferTo != zero)
            {
                var amt      = newB.transferTo.format();
                var amtOld   = oldB.transferTo.format();
                var amtOldTp = oldB.transferToTp.format();
                if (fundPoolTempNotClearAllFlag)
                {
                    amtOldTp = decimal.Zero;
                }
                var amtUp   = amtOld - amtOldTp + amt;
                var amtUpTp = amt;
                updateJo.Add("transferTo", amtUp.format());
                updateJo.Add("transferToTp", amtUpTp.format());
                updateFlag = true;
            }
            if (newB.onSetFdtIn != zero)
            {
                var amt      = newB.onSetFdtIn.format();
                var amtOld   = oldB.onSetFdtIn.format();
                var amtOldTp = oldB.onSetFdtInTp.format();
                if (fundPoolTempNotClearAllFlag)
                {
                    amtOldTp = decimal.Zero;
                }
                var amtUp   = amtOld - amtOldTp + amt;
                var amtUpTp = amt;
                updateJo.Add("onSetFdtIn", amtUp.format());
                updateJo.Add("onSetFdtInTp", amtUpTp.format());
                updateFlag = true;
            }
            if (newB.onGetFdtOut != zero)
            {
                var amt      = newB.onGetFdtOut.format();
                var amtOld   = oldB.onGetFdtOut.format();
                var amtOldTp = oldB.onGetFdtOutTp.format();
                if (fundPoolTempNotClearAllFlag)
                {
                    amtOldTp = decimal.Zero;
                }
                var amtUp   = amtOld - amtOldTp + amt;
                var amtUpTp = amt;
                updateJo.Add("onGetFdtOut", amtUp.format());
                updateJo.Add("onGetFdtOutTp", amtUpTp.format());
                updateFlag = true;
            }
            if (newB.onVote != zero)
            {
                var amt      = newB.onVote.format();
                var amtOld   = oldB.onVote.format();
                var amtOldTp = oldB.onVoteTp.format();
                if (fundPoolTempNotClearAllFlag)
                {
                    amtOldTp = decimal.Zero;
                }
                var amtUp   = amtOld - amtOldTp + amt;
                var amtUpTp = amt;
                updateJo.Add("onVote", amtUp.format());
                updateJo.Add("onVoteTp", amtUpTp.format());
                updateFlag = true;
            }
            //
            if (updateFlag)
            {
                var updateBson = new BsonDocument {
                    { "$set", updateJo }
                };
                mh.UpdateDecimal(daoConn.connStr, daoConn.connDB, projFinanceBalanceCol, updateBson, findStr);
            }
        }