cec记录

This commit is contained in:
hujiabin 2023-08-30 15:47:43 +08:00
parent 6e179337e0
commit 99de6c1a45
5 changed files with 105 additions and 15 deletions

View File

@ -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'],
]
},
] ]

View File

@ -120,6 +120,8 @@ class ComputingPowerController extends BaseAuthedController
return ; return ;
} }
$param = explode('|',$hashRateMeta['parameter']); $param = explode('|',$hashRateMeta['parameter']);
$paramEd = explode(':',$param[0]);
$paramEx = explode(':',$param[1]);
$crystalNum = 0; $crystalNum = 0;
switch ($itemId){ switch ($itemId){
case ComputingPower::CRYSTAL1 : { case ComputingPower::CRYSTAL1 : {
@ -129,22 +131,22 @@ class ComputingPowerController extends BaseAuthedController
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0); $starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
$starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1); $starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1);
$starNumEx = $starNum - $starNumEd ; $starNumEx = $starNum - $starNumEd ;
$crystalNum = max(0,floor($killsNumEx / $param[0]) + $crystalNum = max(0,floor($killsNumEx / $paramEd[0]) * $paramEd[1] +
floor($starNumEx / $param[1]) ); floor($starNumEx / $paramEx[0]) * $paramEx[1] );
} }
break; break;
case ComputingPower::CRYSTAL2 : { case ComputingPower::CRYSTAL2 : {
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0); $consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
$consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1); $consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1);
$consumeCostEx = $consumeCost - $consumeCostEd ; $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; break;
case ComputingPower::CRYSTAL3 : { case ComputingPower::CRYSTAL3 : {
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0); $consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
$consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1); $consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1);
$consumeCostEx = $consumeCost - $consumeCostEd; $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; break;
case ComputingPower::CRYSTAL4 : { case ComputingPower::CRYSTAL4 : {
@ -155,7 +157,7 @@ class ComputingPowerController extends BaseAuthedController
} }
$rate = Parameter::getVal('cec_exchange_rate',10); $rate = Parameter::getVal('cec_exchange_rate',10);
$cecVal = Staking::getStakingTotalValue(); $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); $killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1);
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0); $starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
$starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1); $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); 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); myself()->_incV(TN_TOTAL_STAR_NUM,-1,$newStarNum);
} }
break; break;
case ComputingPower::CRYSTAL2 : { 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; break;
case ComputingPower::CRYSTAL3 : { 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; break;
} }

View File

@ -9,6 +9,9 @@ require_once('models/Fragment.php');
require_once('models/Season.php'); require_once('models/Season.php');
require_once('models/SignLog.php'); require_once('models/SignLog.php');
require_once('models/RankingSetRecord.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 models\SignLog;
use phpcommon\SqlHelper; use phpcommon\SqlHelper;
@ -16,6 +19,9 @@ use models\Mission;
use models\Fragment; use models\Fragment;
use models\Season; use models\Season;
use models\RankingSetRecord; use models\RankingSetRecord;
use models\Staking;
use models\SeasonRanking;
use models\RewardsCec;
class OtherController extends BaseAuthedController { class OtherController extends BaseAuthedController {
const MISSION = 1; const MISSION = 1;
const PIECE = 2; 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,
));
}
} }

View File

@ -9,6 +9,20 @@ use phpcommon\SqlHelper;
use phpcommon; use phpcommon;
class RewardsCec extends BaseModel 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(){ public static function getTotalCecNum(){
$rows = SqlHelper::ormSelect( $rows = SqlHelper::ormSelect(
myself()->_getSelfMysql(), myself()->_getSelfMysql(),

View File

@ -43,41 +43,45 @@ class HashRateService extends BaseService
'param1' => floatval($killsNumEx), 'param1' => floatval($killsNumEx),
'param2' => floatval($starNumEx), 'param2' => floatval($starNumEx),
); );
$totalNum = max(0,floor($killsNumEx / $param[0]) + $paramKill = explode(':',$param[0]);
floor($starNumEx / $param[1]) ); $paramStar = explode(':',$param[1]);
$totalNum = max(0,floor($killsNumEx / $paramKill[0]) * $paramKill[1] +
floor($starNumEx / $paramStar[0]) * $paramStar[1] );
$crystalDto['pending'] = intval($totalNum); $crystalDto['pending'] = intval($totalNum);
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE; $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
} }
break; break;
case 2 : { case 2 : {
// 游戏内消费总价值 // 游戏内消费总价值
$param = explode(':',$hashRateMeta['parameter']);
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0); $consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
$consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1); $consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1);
$consumeCostEx = $consumeCost - $consumeCostEd ; $consumeCostEx = $consumeCost - $consumeCostEd ;
$crystalDto['total'] = array( $crystalDto['total'] = array(
'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE), '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['pending'] = intval($totalNum);
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE; $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
} }
break; break;
case 3 : { case 3 : {
// Market交易总价值 // Market交易总价值
$param = explode(':',$hashRateMeta['parameter']);
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0); $consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
$consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1); $consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1);
$consumeCostEx = $consumeCost - $consumeCostEd ; $consumeCostEx = $consumeCost - $consumeCostEd ;
$crystalDto['total'] = array( $crystalDto['total'] = array(
'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE), '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['pending'] = intval($totalNum);
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE; $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
} }
break; break;
case 4 : { case 4 : {
// 质压总价值 // 质压总价值
$param = explode(':',$hashRateMeta['parameter']);
$rate = Parameter::getVal('cec_exchange_rate',10); $rate = Parameter::getVal('cec_exchange_rate',10);
$cecVal = Staking::getStakingTotalValue(); $cecVal = Staking::getStakingTotalValue();
$crystalDto['total'] = array( $crystalDto['total'] = array(
@ -87,7 +91,7 @@ class HashRateService extends BaseService
if ($recordDb && myself()->_getNowDaySeconds() == myself()->_getDaySeconds($recordDb['createtime'])){ if ($recordDb && myself()->_getNowDaySeconds() == myself()->_getDaySeconds($recordDb['createtime'])){
$crystalDto['pending'] = 0; $crystalDto['pending'] = 0;
}else{ }else{
$totalNum = max(0,floor($cecVal / $rate / $hashRateMeta['parameter'])); $totalNum = max(0,floor($cecVal / $rate / $param[0]) * $param[1]);
$crystalDto['pending'] = intval($totalNum); $crystalDto['pending'] = intval($totalNum);
} }
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE; $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;