From 74da8ff34de181a68aa092abe5546304c571834d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 19 Sep 2022 18:55:00 +0800 Subject: [PATCH] 1 --- webapp/models/FragmentPool.php | 42 +++++++++++++++++++++++++-- webapp/services/BattleDataService.php | 1 + 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/webapp/models/FragmentPool.php b/webapp/models/FragmentPool.php index e499c24a..68292c93 100644 --- a/webapp/models/FragmentPool.php +++ b/webapp/models/FragmentPool.php @@ -10,17 +10,30 @@ class FragmentPool extends BaseModel { public static function dropHero() { $items = self::internalGet(0); + if (count($items)) { + $idx = array_rand($items, 1); + $fragmentId = $items[$idx]['fragment_id']; + self::decNum($fragmentId); + return $fragmentId; + } + return 0; } public static function dropGun() { $items = self::internalGet(1); + if (count($items)) { + $idx = array_rand($items, 1); + $fragmentId = $items[$idx]['fragment_id']; + self::decNum($fragmentId); + return $fragmentId; + } + return 0; } private static function internalGet($type) { - $allocTime = myself()->_getNowDaySeconds() + - intval((myself()->_getNowTime() - myself()->_getNowDaySeconds()) / 3600) * 3600; + $allocTime = self::getAllocTime(); $rows = SqlHelper::ormSelect (myself()->_getMysql($targetId), 't_fragment_pool', @@ -40,4 +53,29 @@ class FragmentPool extends BaseModel { return $items; } + private static function decNum($itemId) + { + $allocTime = self::getAllocTime(); + SqlHelper::update + (myself()->_getMysql($targetId), + 't_fragment_pool', + array( + 'fragment_id' => $itemId, + 'alloc_time' => $allocTime, + ), + array( + 'fragment_num' => function () { + return 'GREATEST(0, fragment_num - 1)'; + }, + ) + ); + } + + private static function getAllocTime() + { + $allocTime = myself()->_getNowDaySeconds() + + intval((myself()->_getNowTime() - myself()->_getNowDaySeconds()) / 3600) * 3600; + return $allocTime; + } + } diff --git a/webapp/services/BattleDataService.php b/webapp/services/BattleDataService.php index 7baa4843..fc2a73a3 100644 --- a/webapp/services/BattleDataService.php +++ b/webapp/services/BattleDataService.php @@ -34,6 +34,7 @@ use models\Bag; use models\Hero; use models\Gun; use models\RealtimeData; +use models\FragmentPool; use services\FormulaService; class BattleDataService extends BaseService {