diff --git a/doc/ComputingPower.py b/doc/ComputingPower.py index d86d9c5d..90b91b8c 100644 --- a/doc/ComputingPower.py +++ b/doc/ComputingPower.py @@ -40,7 +40,7 @@ class ComputingPower(object): 'params': [ _common.ReqHead(), ['item_id', 0, '晶体item'], - ['item_num', 0, '晶体数量'], +# ['item_num', 0, '晶体数量'], ], 'response': [ _common.RspHead(), diff --git a/webapp/controller/ComputingPowerController.class.php b/webapp/controller/ComputingPowerController.class.php index d968d33d..4ad0bfcf 100644 --- a/webapp/controller/ComputingPowerController.class.php +++ b/webapp/controller/ComputingPowerController.class.php @@ -11,6 +11,7 @@ require_once('models/CrystalRecord.php'); use models\ComputingPower; use models\CrystalRecord; +use mt\HashRate; use phpcommon\SqlHelper; class ComputingPowerController extends BaseAuthedController { @@ -99,22 +100,77 @@ class ComputingPowerController extends BaseAuthedController public function exchangeCrystal(){ $itemId = getReqVal('item_id', 0); - $itemNum = getReqVal('item_num', 0); +// $itemNum = getReqVal('item_num', 0); $itemMeta = \mt\Item::get($itemId); - if (!$itemMeta || $itemMeta['type'] != \mt\Item::CRYSTAL_TYPE || !$itemNum){ + if (!$itemMeta || $itemMeta['type'] != \mt\Item::CRYSTAL_TYPE ){ $this->_rspErr(1, 'param error'); return ; } + $hashRateMeta = HashRate::findHash($itemId); + if (!$hashRateMeta){ + $this->_rspErr(1, 'param error'); + return ; + } + $param = explode('|',$hashRateMeta['parameter']); + $crystalNum = 0; + switch ($itemId){ + case ComputingPower::CRYSTAL1 : { + $killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0); + $starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0); + $crystalNum = max(0,floor($killsNum/$param[0]) + + floor($starNum/$param[1]) ); + } + break; + case ComputingPower::CRYSTAL2 : { + $consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0); + $crystalNum = max(0,floor($consumeCost/$param[0])); + } + break; + case ComputingPower::CRYSTAL3 : { + $consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0); + $crystalNum = max(0,floor($consumeCost/$param[0])); + } + } + if ($crystalNum < 1){ + $this->_rspErr(1, 'There are no available crystals'); + return ; + } + + + $items = array( array( 'item_id' => $itemId, - 'item_num' => $itemNum, + 'item_num' => $crystalNum, ) ); $propertyChgService = new services\PropertyChgService(); $awardService = new services\AwardService(); $this->_addItems($items,$awardService,$propertyChgService); - CrystalRecord::addCrystalRecord($itemId,$itemNum); + CrystalRecord::addCrystalRecord($itemId,$crystalNum); + switch ($itemId) { + case ComputingPower::CRYSTAL1 : { + $killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0); + $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); + } + 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); + } + 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); + } + break; + } $this->_rspData(array( 'award' => $awardService->toDto(), 'property_chg' => $propertyChgService->toDto(), diff --git a/webapp/controller/GMController.class.php b/webapp/controller/GMController.class.php index 92097f1c..a454ef59 100644 --- a/webapp/controller/GMController.class.php +++ b/webapp/controller/GMController.class.php @@ -199,7 +199,11 @@ END } break; case 3 : { - myself()->_incV(TN_TOTAL_RANK_NUM,0,$num); + myself()->_incV(TN_TOTAL_DIAMOND_CONSUME,0,$num); + } + break; + case 4 : { + myself()->_incV(TN_TOTAL_CEG_CONSUME,0,$num); } } } diff --git a/webapp/services/HashRateService.php b/webapp/services/HashRateService.php index 01da19db..1f44d6a5 100644 --- a/webapp/services/HashRateService.php +++ b/webapp/services/HashRateService.php @@ -23,35 +23,54 @@ class HashRateService extends BaseService '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); +// $rankNum = myself()->_getV(TN_TOTAL_RANK_NUM,0); $crystalDto['total'] = array( 'param1' => intval($killsNum), 'param2' => intval($starNum), - 'param3' => intval($rankNum), +// 'param3' => intval($rankNum), ); $param = explode('|',$hashRateMeta['parameter']); $totalNum = max(0,floor($killsNum/$param[0]) + - floor($starNum/$param[1]) + $rankNum); - $ownedNum = CrystalRecord::getCrystalNum($crystalMeta['id']); - $crystalDto['pending'] = intval(max(0,$totalNum - $ownedNum)); - $crystalDto['claimed'] = intval($ownedNum); + 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; } diff --git a/webapp/services/TameBattleDataService.php b/webapp/services/TameBattleDataService.php index 14b38d5f..894bf6ea 100644 --- a/webapp/services/TameBattleDataService.php +++ b/webapp/services/TameBattleDataService.php @@ -220,6 +220,7 @@ class TameBattleDataService extends BaseService { //击杀 if (getXVal($this->battleInfo,'pvp_kill', 0) > 0){ + myself()->_incV(TN_TOTAL_KILLS_NUM, 0, getXVal($this->battleInfo,'pvp_kill', 0)); RankBattle::upsert($account,RankBattle::KILL_TIMES,getXVal($this->battleInfo,'pvp_kill', 0)); } } @@ -691,6 +692,7 @@ class TameBattleDataService extends BaseService { $propertyChgService = new services\PropertyChgService(); $awardService = new services\AwardService(); myself()->_addItems($items, $awardService,$propertyChgService); + myself()->_incV(TN_TOTAL_STAR_NUM, 0, $finalNum); } }