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); }
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); }
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); } }