diff --git a/doc/Other.py b/doc/Other.py index ec917d5e..ffecab63 100644 --- a/doc/Other.py +++ b/doc/Other.py @@ -43,4 +43,22 @@ class Other(object): ], '信息'], ] }, + { + 'name': 'getCecRewardHistory', + 'desc': 'cec历史记录界面', + 'group': 'Other', + 'url': 'webapp/index.php?c=Other&a=getCecRewardHistory', + 'params': [ + _common.ReqHead(), + ], + 'response': [ + _common.RspHead(), + ['!list', [ + ['type',0,'1:排位 2:算力 3:质押'], + ['cecVal',0,'cec数量'], + ['createtime',0,'获取时间'] + ], '历史记录'], + ['cec',0,'cec'], + ] + }, ] \ No newline at end of file diff --git a/webapp/controller/ComputingPowerController.class.php b/webapp/controller/ComputingPowerController.class.php index 29db0b7b..4121eead 100644 --- a/webapp/controller/ComputingPowerController.class.php +++ b/webapp/controller/ComputingPowerController.class.php @@ -120,6 +120,8 @@ class ComputingPowerController extends BaseAuthedController return ; } $param = explode('|',$hashRateMeta['parameter']); + $paramEd = explode(':',$param[0]); + $paramEx = explode(':',$param[1]); $crystalNum = 0; switch ($itemId){ case ComputingPower::CRYSTAL1 : { @@ -129,22 +131,22 @@ class ComputingPowerController extends BaseAuthedController $starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0); $starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1); $starNumEx = $starNum - $starNumEd ; - $crystalNum = max(0,floor($killsNumEx / $param[0]) + - floor($starNumEx / $param[1]) ); + $crystalNum = max(0,floor($killsNumEx / $paramEd[0]) * $paramEd[1] + + floor($starNumEx / $paramEx[0]) * $paramEx[1] ); } break; case ComputingPower::CRYSTAL2 : { $consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0); $consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1); $consumeCostEx = $consumeCost - $consumeCostEd ; - $crystalNum = max(0,floor($consumeCostEx / \services\HashRateService::EXCHANGE_RATE / $param[0])); + $crystalNum = max(0,floor($consumeCostEx / \services\HashRateService::EXCHANGE_RATE / $paramEd[0]) * $paramEd[1]); } break; case ComputingPower::CRYSTAL3 : { $consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0); $consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1); $consumeCostEx = $consumeCost - $consumeCostEd; - $crystalNum = max(0,floor($consumeCostEx / \services\HashRateService::EXCHANGE_RATE / $param[0])); + $crystalNum = max(0,floor($consumeCostEx / \services\HashRateService::EXCHANGE_RATE / $paramEd[0]) * $paramEd[1]); } break; case ComputingPower::CRYSTAL4 : { @@ -155,7 +157,7 @@ class ComputingPowerController extends BaseAuthedController } $rate = Parameter::getVal('cec_exchange_rate',10); $cecVal = Staking::getStakingTotalValue(); - $crystalNum = max(0,floor($cecVal / $rate / $param[0])); + $crystalNum = max(0,floor($cecVal / $rate / $paramEd[0]) * $paramEd[1]); } } @@ -184,18 +186,19 @@ class ComputingPowerController extends BaseAuthedController $killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1); $starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0); $starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1); - $newKillsNum = floor(($killsNum-$killsNumEd)/$param[0]) * $param[0]; + //floor($killsNumEx / $paramEd[0]) * $paramEd[1] 222 100:3 222/100=2 2*3=6 6/3=2 2*100 + $newKillsNum = floor(($killsNum-$killsNumEd)/$paramEd[0]) * $paramEd[0]; myself()->_incV(TN_TOTAL_KILLS_NUM,-1,$newKillsNum); - $newStarNum = floor(($starNum-$starNumEd)/$param[1]) * $param[1]; + $newStarNum = floor(($starNum-$starNumEd)/$paramEx[0]) * $paramEx[0]; myself()->_incV(TN_TOTAL_STAR_NUM,-1,$newStarNum); } break; case ComputingPower::CRYSTAL2 : { - myself()->_incV(TN_TOTAL_DIAMOND_CONSUME,-1,$crystalNum * $param[0] * \services\HashRateService::EXCHANGE_RATE); + myself()->_incV(TN_TOTAL_DIAMOND_CONSUME,-1,$crystalNum / $paramEd[1] * $paramEd[0] * \services\HashRateService::EXCHANGE_RATE); } break; case ComputingPower::CRYSTAL3 : { - myself()->_incV(TN_TOTAL_CEG_CONSUME,-1,$crystalNum * $param[0] * \services\HashRateService::EXCHANGE_RATE); + myself()->_incV(TN_TOTAL_CEG_CONSUME,-1,$crystalNum / $paramEd[1] * $paramEd[0] * \services\HashRateService::EXCHANGE_RATE); } break; } diff --git a/webapp/controller/OtherController.class.php b/webapp/controller/OtherController.class.php index f23a37a4..cba035a3 100644 --- a/webapp/controller/OtherController.class.php +++ b/webapp/controller/OtherController.class.php @@ -9,6 +9,9 @@ require_once('models/Fragment.php'); require_once('models/Season.php'); require_once('models/SignLog.php'); require_once('models/RankingSetRecord.php'); +require_once('models/Staking.php'); +require_once('models/SeasonRanking.php'); +require_once('models/RewardsCec.php'); use models\SignLog; use phpcommon\SqlHelper; @@ -16,6 +19,9 @@ use models\Mission; use models\Fragment; use models\Season; use models\RankingSetRecord; +use models\Staking; +use models\SeasonRanking; +use models\RewardsCec; class OtherController extends BaseAuthedController { const MISSION = 1; const PIECE = 2; @@ -113,4 +119,49 @@ class OtherController extends BaseAuthedController { )); } + public function getCecRewardHistory(){ + $historyList = array(); + $totalCecVal = 0; + SeasonRanking::getSeasonList(function ($row) use (&$historyList,&$totalCecVal) { + if ($row && $row['ranking_point'] > 0){ + $totalCecVal += ($row['ranking_point'] * 0.15); + array_push($historyList,array( + 'type' => 1, + 'cecVal' => $row['ranking_point'] * 0.15, + 'createtime' => $row['createtime'], + )); + } + }); + + \models\RewardsCec::all(function ($row) use (&$historyList,&$totalCecVal) { + if ($row){ + $totalCecVal += $row['reward_cec']; + array_push($historyList,array( + 'type' => 2, + 'cecVal' => $row['reward_cec'], + 'createtime' => $row['createtime'], + )); + } + }); + + $stakingDb = Staking::all(myself()->_getAddress()); + foreach ($stakingDb as $row) { + if ($row['status'] == Staking::REDEEM_STATUS) { + $item = Staking::toDto($row); + $totalCecVal += $item['total_rewards']; + array_push($historyList, array( + "type" => 3, + "cecVal" => $item['total_rewards'], + "createtime" => $item['redeem_time'] + )); + } + } + $this->_rspData(array( + 'cec'=>$totalCecVal, + 'list'=>$historyList, + )); + + + } + } diff --git a/webapp/models/RewardsCec.php b/webapp/models/RewardsCec.php index 7779c264..d718e628 100644 --- a/webapp/models/RewardsCec.php +++ b/webapp/models/RewardsCec.php @@ -9,6 +9,20 @@ use phpcommon\SqlHelper; use phpcommon; class RewardsCec extends BaseModel { + + public static function all($cb){ + SqlHelper::ormSelect( + myself()->_getSelfMysql(), + 't_hash_rate_reward', + array( + 'account_id' => myself()->_getAccountId(), + ), + function ($row) use($cb) { + $cb($row); + } + ); + } + public static function getTotalCecNum(){ $rows = SqlHelper::ormSelect( myself()->_getSelfMysql(), diff --git a/webapp/services/HashRateService.php b/webapp/services/HashRateService.php index f6c7d38b..17fb7a48 100644 --- a/webapp/services/HashRateService.php +++ b/webapp/services/HashRateService.php @@ -43,41 +43,45 @@ class HashRateService extends BaseService 'param1' => floatval($killsNumEx), 'param2' => floatval($starNumEx), ); - $totalNum = max(0,floor($killsNumEx / $param[0]) + - floor($starNumEx / $param[1]) ); + $paramKill = explode(':',$param[0]); + $paramStar = explode(':',$param[1]); + $totalNum = max(0,floor($killsNumEx / $paramKill[0]) * $paramKill[1] + + floor($starNumEx / $paramStar[0]) * $paramStar[1] ); $crystalDto['pending'] = intval($totalNum); $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE; } break; case 2 : { // 游戏内消费总价值 + $param = explode(':',$hashRateMeta['parameter']); $consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0); $consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1); $consumeCostEx = $consumeCost - $consumeCostEd ; $crystalDto['total'] = array( 'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE), ); - $totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $hashRateMeta['parameter'])); + $totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $param[0]) * $param[1]); $crystalDto['pending'] = intval($totalNum); $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE; } break; case 3 : { // Market交易总价值 + $param = explode(':',$hashRateMeta['parameter']); $consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0); $consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1); $consumeCostEx = $consumeCost - $consumeCostEd ; $crystalDto['total'] = array( 'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE), ); - $totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $hashRateMeta['parameter'])); + $totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $param[0]) * $param[1]); $crystalDto['pending'] = intval($totalNum); $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE; } break; case 4 : { // 质压总价值 - + $param = explode(':',$hashRateMeta['parameter']); $rate = Parameter::getVal('cec_exchange_rate',10); $cecVal = Staking::getStakingTotalValue(); $crystalDto['total'] = array( @@ -87,7 +91,7 @@ class HashRateService extends BaseService if ($recordDb && myself()->_getNowDaySeconds() == myself()->_getDaySeconds($recordDb['createtime'])){ $crystalDto['pending'] = 0; }else{ - $totalNum = max(0,floor($cecVal / $rate / $hashRateMeta['parameter'])); + $totalNum = max(0,floor($cecVal / $rate / $param[0]) * $param[1]); $crystalDto['pending'] = intval($totalNum); } $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;