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

View File

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

View File

@ -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(),

View File

@ -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;