diff --git a/webapp/controller/BagController.class.php b/webapp/controller/BagController.class.php index c3f4d8f5..fd1ed797 100644 --- a/webapp/controller/BagController.class.php +++ b/webapp/controller/BagController.class.php @@ -10,6 +10,7 @@ require_once('models/Bag.php'); require_once('models/Hero.php'); require_once('models/User.php'); require_once('models/DiamondConsumeProduct.php'); +require_once('models/RealtimeData.php'); require_once('services/AwardService.php'); @@ -22,6 +23,7 @@ use phpcommon\SqlHelper; use models\Bag; use models\Hero; use models\User; +use models\RealtimeData; use models\DiamondConsumeProduct; use services\LogService; @@ -391,33 +393,28 @@ class BagController extends BaseAuthedController { return; } } - - $lootMeta = mt\LootConfig::find($itemMeta['loot']); - if ($lootMeta['isAffected']){ -// $lucky = Hero::getAccountLucky(myself()->_getAddress()); - $lucky = Hero::getAccountLuckyTemp(); - $luckyParam = \mt\Parameter::getVal('economy_account_luck_K',0); - - $rangeArr = explode("|",\mt\Parameter::getVal('economy_account_luck_range',0)); - $rate = ($rangeArr[1]-$rangeArr[0]) * $lucky/($lucky+$luckyParam) + $rangeArr[0]; - $rnd = rand() / (mt_getrandmax() + 1); - $items = array(); - if ($rnd <= $rate){ - $itemsTemp = \services\LootService::dropOutItem($itemMeta['loot']); - foreach ($itemsTemp as $itemTemp){ - array_push($items,$itemTemp); - } - } - + if ($itemMeta['quality'] > 3){ + $maxCec = \mt\Parameter::getVal('CEC_ServerDailyLootMax_Special',1500); + $nameIndex = RealtimeData::CEC_NAME_INDEX2; }else{ + $maxCec = \mt\Parameter::getVal('CEC_ServerDailyLootMax_Normal',500); + $nameIndex = RealtimeData::CEC_NAME_INDEX1; + } $items = array(); for ($i=0;$i<$itemNum;$i++){ $itemsTemp = \services\LootService::dropOutItem($itemMeta['loot']); foreach ($itemsTemp as $itemTemp){ - array_push($items,$itemTemp); + if ($itemTemp['item_id'] == V_ITEM_BCEG){ + $currentOutPutCec = RealtimeData::getDailyCec($nameIndex); + if ($currentOutPutCec + $itemTemp['item_num'] <= $maxCec){ + RealtimeData::incDailyCec($nameIndex,$itemTemp['item_num']); + array_push($items,$itemTemp); + } + }else{ + array_push($items,$itemTemp); + } } } - } $hashItems = array(); foreach ($items as $item){ if (isset($hashItems[$item['item_id']])){ diff --git a/webapp/models/RealtimeData.php b/webapp/models/RealtimeData.php index c0864732..ff7c8f6e 100644 --- a/webapp/models/RealtimeData.php +++ b/webapp/models/RealtimeData.php @@ -126,4 +126,44 @@ class RealtimeData extends BaseModel { return $row ? $row : ''; } + public static function getDailyCec($nameIndex) + { + $row = self::internalGet("daily_output_cec_".$nameIndex); + if (!$row){ + return 0; + } + if (myself()->_getDaySeconds($row['modifytime']) < myself()->_getNowDaySeconds()) { + $row['value1'] = 0; + } + return $row['value1']; + } + + public static function incDailyCec($nameIndex,$value){ + $oldValue = self::getDailyCec($nameIndex); + self::internalSet('daily_output_cec_'.$nameIndex,$oldValue+$value); + } + + private static function internalSet($name,$value){ + SqlHelper::upsert + (myself()->_getMysql(''), + 't_realtime_data', + array( + 'name' => $name + ), + array( + 'value1' => $value, + 'modifytime' => myself()->_getNowTime() + ), + array( + 'name' => $name, + 'value1' => $value, + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime() + ) + ); + } + + const CEC_NAME_INDEX1 = "normal"; + const CEC_NAME_INDEX2 = "special"; + } diff --git a/webapp/services/ContributionService.php b/webapp/services/ContributionService.php index 939cf837..61ca9e8c 100644 --- a/webapp/services/ContributionService.php +++ b/webapp/services/ContributionService.php @@ -5,10 +5,10 @@ namespace services; class ContributionService extends BaseService { private static $ignoreCa = array( - 'BlockChain@mintGoldBullion', - 'InGameMall@sellS', - 'InGameMall@buyS', - 'InGameMall@shoppingCartBuyS', + 'BlockChain@mintGoldBullion'=>1, + 'InGameMall@sellS'=>2, + 'InGameMall@buyS'=>3, + 'InGameMall@shoppingCartBuyS'=>4, ); public static function onGoldConsume($params) {