From 03307153a7640244f37f3e26f785fc7f5494a244 Mon Sep 17 00:00:00 2001 From: yangduo Date: Thu, 10 Oct 2024 14:16:33 +0800 Subject: [PATCH 1/3] staking vip details --- .../controller/UnitTestController.class.php | 13 +++- webapp/services/StakingVipService.php | 74 +++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 webapp/services/StakingVipService.php diff --git a/webapp/controller/UnitTestController.class.php b/webapp/controller/UnitTestController.class.php index 4e8adda5..f78faaae 100644 --- a/webapp/controller/UnitTestController.class.php +++ b/webapp/controller/UnitTestController.class.php @@ -17,10 +17,10 @@ class UnitTestController extends BaseAuthedController { $marqueeType= getReqVal('type', 1); $loop = getReqVal('loop', 1); $interval = getReqVal('interval', 10); - + $contents= file_get_contents('php://input'); $postdata = json_decode($contents, true); - + $content = ''; if ($marqueeType == 1) { $elements = $postdata["elements"]; @@ -48,4 +48,13 @@ class UnitTestController extends BaseAuthedController { )); } + public function testVip() + { + try { + $addr = getReqVal('addr', ''); + echo json_encode(myself()->_callServiceStatic('StakingVipService', 'getDetails', $addr)); + } catch (Exception $e) { + error_log('testVip:' . $e); + } + } } diff --git a/webapp/services/StakingVipService.php b/webapp/services/StakingVipService.php new file mode 100644 index 00000000..f8125e72 --- /dev/null +++ b/webapp/services/StakingVipService.php @@ -0,0 +1,74 @@ +_getMarketMysql(), + 't_vip_user', + array( + 'account_address' => $accountAddr, + ) + ); + + $details = array( + 'lv' => 0, + 'cur' => 0, + 'target' => 0, + ); + + if ($row) { + $lv = $row['vip_lv']; + $cfg = mt\StakingVip::find($lv); + $details['lv'] = $lv; + + if ($cfg) { + $details['target'] = $cfg['thisPoint']; + $balance = phpcommon\bnInit($row['escec_balance']); + $staking = phpcommon\bnInit($row['escec_stacking']); + $convert = phpcommon\bnInit($row['escec_convert']); + + $diff = time() - $row["last_convert_time"]; + if ($diff < 0) { + $diff = 0; + } + + $eclapse = phpcommon\bnInit($diff); + $depositExec = phpcommon\bnDiv(phpcommon\bnMul($convert, $eclapse), phpcommon\bnInit(365 * 24 * 3600)); + if (phpcommon\bnCmp($depositExec, $convert) < 0) { + $depositExec = phpcommon\bnSub($convert, $depositExec); + } else { + $depositExec = phpcommon\bnInit(0); + } + + $curExec = phpcommon\bnAdd(phpcommon\bnAdd($staking, $balance), $depositExec); + + $convercurExec = intval(phpcommon\bnDiv($curExec, phpcommon\bnInit(1000 * 1000 * 1000 * 1000 * 1000 * 1000))); + + $nextlvcfg = mt\StakingVip::find($lv + 1); + $upgraderequire = $cfg['require']; + if ($nextlvcfg && $convercurExec >= $upgraderequire) { + $details['cur'] = $cfg['thisPoint'] * ($convercurExec - $upgraderequire) / ($nextlvcfg['require'] - $upgraderequire); + } else { + $details['cur'] = $details['target']; + } + } + } else { + $cfg = mt\StakingVip::find(0); + if ($cfg) { + $details['target'] = $cfg['thisPoint']; + } + } + + return $details; + } +} From b841e5aa2ea596c87638bebf2fa4425fcf97fc19 Mon Sep 17 00:00:00 2001 From: yangduo Date: Fri, 11 Oct 2024 10:52:18 +0800 Subject: [PATCH 2/3] fix --- webapp/services/StakingVipService.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/services/StakingVipService.php b/webapp/services/StakingVipService.php index f8125e72..1b3467f1 100644 --- a/webapp/services/StakingVipService.php +++ b/webapp/services/StakingVipService.php @@ -57,8 +57,8 @@ class StakingVipService extends BaseService $nextlvcfg = mt\StakingVip::find($lv + 1); $upgraderequire = $cfg['require']; if ($nextlvcfg && $convercurExec >= $upgraderequire) { - $details['cur'] = $cfg['thisPoint'] * ($convercurExec - $upgraderequire) / ($nextlvcfg['require'] - $upgraderequire); - } else { + $details['cur'] = intval($cfg['thisPoint'] * ($convercurExec - $upgraderequire) / ($nextlvcfg['require'] - $upgraderequire)); + } else if (!$nextlvcfg) { $details['cur'] = $details['target']; } } From fb9ebc2104a83d50f420056fc785c052e96519ee Mon Sep 17 00:00:00 2001 From: yangduo Date: Sat, 12 Oct 2024 16:56:00 +0800 Subject: [PATCH 3/3] 1 --- webapp/services/StakingVipService.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/webapp/services/StakingVipService.php b/webapp/services/StakingVipService.php index 1b3467f1..56915cf2 100644 --- a/webapp/services/StakingVipService.php +++ b/webapp/services/StakingVipService.php @@ -12,6 +12,10 @@ class StakingVipService extends BaseService { public static function getDetails($accountAddr) { + if (empty($accountAddr) || !is_string($accountAddr)) { + return; + } + $row = phpcommon\SqlHelper::ormSelectOne( myself()->_getMarketMysql(), 't_vip_user',