game2006api/webapp/services/HashRateService.php
2023-08-22 16:15:14 +08:00

79 lines
2.9 KiB
PHP

<?php
namespace services;
require_once('mt/HashRate.php');
require_once('models/Bag.php');
require_once('models/CrystalRecord.php');
use models\Bag;
use models\CrystalRecord;
use mt\HashRate;
class HashRateService extends BaseService
{
const NONE_STATE = 0;
const RECEIVED_STATE = 1;
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 : {
$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));
$crystalDto['pending'] = intval($totalNum);
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
}
break;
case 2 : {
// 游戏内消费总价值
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
$crystalDto['total'] = array(
'param1' => intval($consumeCost),
);
$totalNum = max(0,floor($consumeCost/$hashRateMeta['parameter']));
$crystalDto['pending'] = intval($totalNum);
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
}
break;
case 3 : {
// Market交易总价值
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
$crystalDto['total'] = array(
'param1' => intval($consumeCost),
);
$totalNum = max(0,floor($consumeCost/$hashRateMeta['parameter']));
$crystalDto['pending'] = intval($totalNum);
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
}
break;
case 4 : {
// 质压总价值
$crystalDto['total'] = array(
'param1' => 0,
);
}
break;
}
}
}