103 lines
4.5 KiB
PHP
103 lines
4.5 KiB
PHP
<?php
|
|
|
|
|
|
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
|
|
{
|
|
const NONE_STATE = 0;
|
|
const RECEIVED_STATE = 1;
|
|
const EXCHANGE_RATE = 10;
|
|
public function getCrystalDto($crystalMeta,&$crystalDto){
|
|
$crystalDto = array(
|
|
'item_id' => $crystalMeta['id'],
|
|
'pending' => 0,
|
|
'total' => array(),
|
|
'claimed' => 0,
|
|
'state' => self::NONE_STATE,
|
|
);
|
|
$hashRateMeta = HashRate::findHash($crystalMeta['id']);
|
|
$ownedNum = CrystalRecord::getCrystalNum($crystalMeta['id']);
|
|
$crystalDto['claimed'] = intval($ownedNum);
|
|
switch ($crystalMeta['sub_type']){
|
|
case 1 : {
|
|
$param = explode('|',$hashRateMeta['parameter']);
|
|
$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),
|
|
);
|
|
$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 / $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 / $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(
|
|
'param1' => floatval($cecVal ),
|
|
);
|
|
$recordDb = CrystalRecord::getNewestRecordOne($crystalMeta['id']);
|
|
if ($recordDb && myself()->_getNowDaySeconds() == myself()->_getDaySeconds($recordDb['createtime'])){
|
|
$crystalDto['pending'] = 0;
|
|
}else{
|
|
$totalNum = max(0,floor($cecVal / $param[0]) * $param[1]);
|
|
$crystalDto['pending'] = intval($totalNum);
|
|
}
|
|
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
} |