算力功能
This commit is contained in:
parent
85c7e3c166
commit
3826f93534
@ -2,6 +2,7 @@
|
||||
require_once('mt/HashRate.php');
|
||||
require_once('mt/HashRateCommon.php');
|
||||
require_once('mt/Item.php');
|
||||
require_once('mt/Parameter.php');
|
||||
require_once('services/HashRateService.php');
|
||||
require_once('services/AwardService.php');
|
||||
require_once('services/PropertyChgService.php');
|
||||
@ -9,11 +10,14 @@ require_once('services/PropertyChgService.php');
|
||||
require_once('models/ComputingPower.php');
|
||||
require_once('models/CrystalRecord.php');
|
||||
require_once('models/RewardsCec.php');
|
||||
require_once('models/Staking.php');
|
||||
|
||||
use models\ComputingPower;
|
||||
use models\CrystalRecord;
|
||||
use models\RewardsCec;
|
||||
use models\Staking;
|
||||
use mt\HashRate;
|
||||
use mt\Parameter;
|
||||
use phpcommon\SqlHelper;
|
||||
class ComputingPowerController extends BaseAuthedController
|
||||
{
|
||||
@ -105,7 +109,6 @@ class ComputingPowerController extends BaseAuthedController
|
||||
|
||||
public function exchangeCrystal(){
|
||||
$itemId = getReqVal('item_id', 0);
|
||||
// $itemNum = getReqVal('item_num', 0);
|
||||
$itemMeta = \mt\Item::get($itemId);
|
||||
if (!$itemMeta || $itemMeta['type'] != \mt\Item::CRYSTAL_TYPE ){
|
||||
$this->_rspErr(1, 'param error');
|
||||
@ -121,22 +124,42 @@ class ComputingPowerController extends BaseAuthedController
|
||||
switch ($itemId){
|
||||
case ComputingPower::CRYSTAL1 : {
|
||||
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
|
||||
$killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1);
|
||||
$killsNumEx = $killsNum - $killsNumEd;
|
||||
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
|
||||
$crystalNum = max(0,floor($killsNum/$param[0]) +
|
||||
floor($starNum/$param[1]) );
|
||||
$starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1);
|
||||
$starNumEx = $starNum - $starNumEd ;
|
||||
$crystalNum = max(0,floor($killsNumEx / $param[0]) +
|
||||
floor($starNumEx / $param[1]) );
|
||||
}
|
||||
break;
|
||||
case ComputingPower::CRYSTAL2 : {
|
||||
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
|
||||
$crystalNum = max(0,floor($consumeCost/ \services\HashRateService::EXCHANGE_RATE/$param[0]));
|
||||
$consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1);
|
||||
$consumeCostEx = $consumeCost - $consumeCostEd ;
|
||||
$crystalNum = max(0,floor($consumeCostEx / \services\HashRateService::EXCHANGE_RATE / $param[0]));
|
||||
}
|
||||
break;
|
||||
case ComputingPower::CRYSTAL3 : {
|
||||
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
|
||||
$crystalNum = max(0,floor($consumeCost/ \services\HashRateService::EXCHANGE_RATE/$param[0]));
|
||||
$consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1);
|
||||
$consumeCostEx = $consumeCost - $consumeCostEd;
|
||||
$crystalNum = max(0,floor($consumeCostEx / \services\HashRateService::EXCHANGE_RATE / $param[0]));
|
||||
}
|
||||
break;
|
||||
case ComputingPower::CRYSTAL4 : {
|
||||
$recordDb = CrystalRecord::getNewestRecordOne($itemId);
|
||||
if ($recordDb && myself()->_getNowDaySeconds() == myself()->_getDaySeconds($recordDb['createtime'])){
|
||||
$this->_rspErr(1, 'There are no available crystals');
|
||||
return ;
|
||||
}
|
||||
$rate = Parameter::getVal('cec_exchange_rate',10);
|
||||
$cecVal = Staking::getStakingTotalValue();
|
||||
$crystalNum = max(0,floor($cecVal / $rate / $param[0]));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if ($crystalNum < 1){
|
||||
$this->_rspErr(1, 'There are no available crystals');
|
||||
return ;
|
||||
@ -156,24 +179,23 @@ class ComputingPowerController extends BaseAuthedController
|
||||
CrystalRecord::addCrystalRecord($itemId,$crystalNum);
|
||||
switch ($itemId) {
|
||||
case ComputingPower::CRYSTAL1 : {
|
||||
|
||||
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
|
||||
$killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1);
|
||||
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
|
||||
$newKillsNum = floor($killsNum/$param[0]) * $param[0];
|
||||
myself()->_decV(TN_TOTAL_KILLS_NUM,0,$newKillsNum);
|
||||
$newStarNum = floor($starNum/$param[1]) * $param[1];
|
||||
myself()->_decV(TN_TOTAL_STAR_NUM,0,$newStarNum);
|
||||
$starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1);
|
||||
$newKillsNum = floor(($killsNum-$killsNumEd)/$param[0]) * $param[0];
|
||||
myself()->_incV(TN_TOTAL_KILLS_NUM,-1,$newKillsNum);
|
||||
$newStarNum = floor(($starNum-$starNumEd)/$param[1]) * $param[1];
|
||||
myself()->_incV(TN_TOTAL_STAR_NUM,-1,$newStarNum);
|
||||
}
|
||||
break;
|
||||
case ComputingPower::CRYSTAL2 : {
|
||||
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
|
||||
$newConsumeCost = floor($consumeCost/$param[0]) * $param[0];
|
||||
myself()->_decV(TN_TOTAL_DIAMOND_CONSUME,0,$newConsumeCost);
|
||||
myself()->_incV(TN_TOTAL_DIAMOND_CONSUME,-1,$crystalNum * $param[0] * \services\HashRateService::EXCHANGE_RATE);
|
||||
}
|
||||
break;
|
||||
case ComputingPower::CRYSTAL3 : {
|
||||
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
|
||||
$newConsumeCost = floor($consumeCost/$param[0]) * $param[0];
|
||||
myself()->_decV(TN_TOTAL_CEG_CONSUME,0,$newConsumeCost);
|
||||
myself()->_incV(TN_TOTAL_CEG_CONSUME,-1,$crystalNum * $param[0] * \services\HashRateService::EXCHANGE_RATE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -54,4 +54,13 @@ class CrystalRecord extends BaseModel
|
||||
);
|
||||
}
|
||||
|
||||
public static function getNewestRecordOne($itemId){
|
||||
$sql = "select * from t_crystal_exchange_record where `account_id` = :account_id and item_id = :item_id order by createtime desc limit 1";
|
||||
$rows = myself()->_getMysql('')->execQuery($sql,array(
|
||||
'account_id' =>myself()->_getAccountId(),
|
||||
'item_id' =>$itemId,
|
||||
));
|
||||
return count($rows) > 0 ? $rows[0] : array();
|
||||
}
|
||||
|
||||
}
|
@ -3,12 +3,16 @@
|
||||
|
||||
namespace services;
|
||||
require_once('mt/HashRate.php');
|
||||
require_once('mt/Parameter.php');
|
||||
require_once('models/Bag.php');
|
||||
require_once('models/CrystalRecord.php');
|
||||
require_once('models/Staking.php');
|
||||
|
||||
use models\Bag;
|
||||
use models\CrystalRecord;
|
||||
use models\Staking;
|
||||
use mt\HashRate;
|
||||
use mt\Parameter;
|
||||
|
||||
class HashRateService extends BaseService
|
||||
{
|
||||
@ -28,19 +32,19 @@ class HashRateService extends BaseService
|
||||
$crystalDto['claimed'] = intval($ownedNum);
|
||||
switch ($crystalMeta['sub_type']){
|
||||
case 1 : {
|
||||
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
|
||||
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
|
||||
// $rankNum = myself()->_getV(TN_TOTAL_RANK_NUM,0);
|
||||
$crystalDto['total'] = array(
|
||||
'param1' => intval($killsNum),
|
||||
'param2' => intval($starNum),
|
||||
// 'param3' => intval($rankNum),
|
||||
);
|
||||
$param = explode('|',$hashRateMeta['parameter']);
|
||||
$totalNum = max(0,floor($killsNum/$param[0]) +
|
||||
floor($starNum/$param[1]) );
|
||||
|
||||
// $crystalDto['pending'] = intval(max(0,$totalNum - $ownedNum));
|
||||
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
|
||||
$killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1);
|
||||
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
|
||||
$starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1);
|
||||
$killsNumEx = $killsNum - $killsNumEd;
|
||||
$starNumEx = $starNum - $starNumEd ;
|
||||
$crystalDto['total'] = array(
|
||||
'param1' => floatval($killsNumEx),
|
||||
'param2' => floatval($starNumEx),
|
||||
);
|
||||
$totalNum = max(0,floor($killsNumEx / $param[0]) +
|
||||
floor($starNumEx / $param[1]) );
|
||||
$crystalDto['pending'] = intval($totalNum);
|
||||
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
||||
}
|
||||
@ -48,10 +52,12 @@ class HashRateService extends BaseService
|
||||
case 2 : {
|
||||
// 游戏内消费总价值
|
||||
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
|
||||
$consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1);
|
||||
$consumeCostEx = $consumeCost - $consumeCostEd ;
|
||||
$crystalDto['total'] = array(
|
||||
'param1' => intval($consumeCost/self::EXCHANGE_RATE),
|
||||
'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE),
|
||||
);
|
||||
$totalNum = max(0,floor($consumeCost/self::EXCHANGE_RATE/$hashRateMeta['parameter']));
|
||||
$totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $hashRateMeta['parameter']));
|
||||
$crystalDto['pending'] = intval($totalNum);
|
||||
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
||||
}
|
||||
@ -59,19 +65,32 @@ class HashRateService extends BaseService
|
||||
case 3 : {
|
||||
// Market交易总价值
|
||||
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
|
||||
$consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1);
|
||||
$consumeCostEx = $consumeCost - $consumeCostEd ;
|
||||
$crystalDto['total'] = array(
|
||||
'param1' => intval($consumeCost/self::EXCHANGE_RATE),
|
||||
'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE),
|
||||
);
|
||||
$totalNum = max(0,floor($consumeCost/self::EXCHANGE_RATE/$hashRateMeta['parameter']));
|
||||
$totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $hashRateMeta['parameter']));
|
||||
$crystalDto['pending'] = intval($totalNum);
|
||||
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
||||
}
|
||||
break;
|
||||
case 4 : {
|
||||
// 质压总价值
|
||||
|
||||
$rate = Parameter::getVal('cec_exchange_rate',10);
|
||||
$cecVal = Staking::getStakingTotalValue();
|
||||
$crystalDto['total'] = array(
|
||||
'param1' => 0,
|
||||
'param1' => floatval($cecVal / $rate),
|
||||
);
|
||||
$recordDb = CrystalRecord::getNewestRecordOne($crystalMeta['id']);
|
||||
if ($recordDb && myself()->_getNowDaySeconds() == myself()->_getDaySeconds($recordDb['createtime'])){
|
||||
$crystalDto['pending'] = 0;
|
||||
}else{
|
||||
$totalNum = max(0,floor($cecVal / $rate / $hashRateMeta['parameter']));
|
||||
$crystalDto['pending'] = intval($totalNum);
|
||||
}
|
||||
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user