From 43771c8e6761843a476bf224d667b8bf3eaadc54 Mon Sep 17 00:00:00 2001 From: hujiabin <519660157@qq.com> Date: Wed, 3 Jan 2024 17:40:47 +0800 Subject: [PATCH] 1 --- webapp/bootstrap/constant.php | 1 + .../controller/BaseAuthedController.class.php | 14 + webapp/models/DynData.php | 538 +++++++++--------- webapp/models/HashRateTask.php | 28 - webapp/services/HashRateService.php | 3 +- 5 files changed, 293 insertions(+), 291 deletions(-) diff --git a/webapp/bootstrap/constant.php b/webapp/bootstrap/constant.php index 7ed07239..49fd855b 100644 --- a/webapp/bootstrap/constant.php +++ b/webapp/bootstrap/constant.php @@ -39,6 +39,7 @@ define('TN_TOTAL_STAR_NUM', 8014); define('TN_TOTAL_RANK_NUM', 8015); define('TN_TOTAL_DIAMOND_CONSUME', 8016);//钻石消耗 define('TN_TOTAL_CEG_CONSUME', 8017);//ceg消耗 +define('TN_TOTAL_GATHER_GOLD', 8018);//收集金币 define('TN_DAILY_BEGIN', 9001); define('TN_DAILY_LOGINS', 9001); diff --git a/webapp/controller/BaseAuthedController.class.php b/webapp/controller/BaseAuthedController.class.php index 0f502a96..59109987 100644 --- a/webapp/controller/BaseAuthedController.class.php +++ b/webapp/controller/BaseAuthedController.class.php @@ -24,6 +24,7 @@ require_once('mt/Task.php'); require_once('mt/Drop.php'); require_once('mt/StarLevel.php'); require_once('mt/BattlePass.php'); +require_once('mt/AchievementsCycle.php'); use phpcommon\SqlHelper; use models\Bag; @@ -344,6 +345,7 @@ class BaseAuthedController extends BaseController { return "gold + ${itemNum}"; } )); + $this->_incPeriodV(TN_TOTAL_GATHER_GOLD,0,$itemNum); } break; case V_ITEM_DIAMOND: @@ -804,4 +806,16 @@ class BaseAuthedController extends BaseController { DynData::decWeeklyV($x, $y, $decVal); } + public function _incPeriodV($x, $y, $incVal){ + $currentPeriod= \mt\AchievementsCycle::getCurrentPeriod(); + if ($currentPeriod && strtotime($currentPeriod['obtain_end_time']) > myself()->_getNowTime()){ + DynData::incPeriodV($x, $y,strtotime($currentPeriod['obtain_start_time']), $incVal); + } + } + + public function _getPeriodV($x, $y, $decVal = 0){ + $currentPeriod= \mt\AchievementsCycle::getCurrentPeriod(); + return DynData::getPeriodV($x, $y,strtotime($currentPeriod['obtain_start_time']), $decVal); + } + } diff --git a/webapp/models/DynData.php b/webapp/models/DynData.php index d9fcebad..6284f532 100644 --- a/webapp/models/DynData.php +++ b/webapp/models/DynData.php @@ -1,262 +1,276 @@ -_getSelfMysql(), - 't_dyndata', - array( - 'account_id' => myself()->_getAccountId(), - ) - ); - foreach ($rows as $row) { - $key = self::calcKey($row['x'], $row['y']); - self::$dynData[$key] = array( - 'val' => $row['val'], - 'modifytime' => $row['modifytime'], - ); - } - } - } - - public static function getVEx($accountId, $x, $y, $defVal = 0) - { - $row = SqlHelper::ormSelectOne( - myself()->_getMysql($accountId), - 't_dyndata', - array( - 'account_id' => $accountId, - 'x' => $x, - 'y' => $y, - ) - ); - return $row ? $row['val'] : $defVal; - } - - public static function getV($x, $y, $defVal = 0) - { - $valData = self::internalGetV($x, $y, $defVal); - return $valData['val']; - } - - public static function setV($x, $y, $defVal) - { - $key = self::calcKey($x, $y); - self::internalSetV($x, $y, $defVal); - } - - public static function incV($x, $y, $val) - { - $key = self::calcKey($x, $y); - $oldVal = self::getV($x, $y); - self::internalSetV($x, $y, $oldVal + $val); - } - - public static function incVEx($accountId, $x, $y, $val) - { - $oldVal = self::getVEx($accountId, $x, $y); - SqlHelper::upsert - (myself()->_getMysql($accountId), - 't_dyndata', - array( - 'account_id' => $accountId, - 'x' => $x, - 'y' => $y - ), - array( - 'val' => $oldVal + $val, - 'modifytime' => myself()->_getNowTime() - ), - array( - 'account_id' => $accountId, - 'x' => $x, - 'y' => $y, - 'val' => $val, - 'createtime' => myself()->_getNowTime(), - 'modifytime' => myself()->_getNowTime() - ) - ); - } - - public static function setVEx($accountId, $x, $y, $val) - { - SqlHelper::upsert - (myself()->_getMysql($accountId), - 't_dyndata', - array( - 'account_id' => $accountId, - 'x' => $x, - 'y' => $y - ), - array( - 'val' => $val, - 'modifytime' => myself()->_getNowTime() - ), - array( - 'account_id' => $accountId, - 'x' => $x, - 'y' => $y, - 'val' => $val, - 'createtime' => myself()->_getNowTime(), - 'modifytime' => myself()->_getNowTime() - ) - ); - } - - public static function decV($x, $y, $val) - { - self::incV($x, $y, 0 - $val); - } - - public static function getDailyV($x, $y, $defVal = 0) - { - $valData = self::internalGetV($x, $y, $defVal); - if (myself()->_getDaySeconds($valData['modifytime']) < myself()->_getNowDaySeconds()) { - $valData['val'] = $defVal; - } - return $valData['val']; - } - - public static function setDailyV($x, $y, $val) - { - self::setV($x, $y, $val); - } - - public static function incDailyV($x, $y, $val) - { - $key = self::calcKey($x, $y); - $oldVal = self::getDailyV($x, $y); - self::internalSetV($x, $y, $oldVal + $val); - } - - public static function decDailyV($x, $y, $val) - { - self::incDailyV($x, $y, 0 - $val); - } - - public static function getWeeklyV($x, $y, $defVal = 0) - { - $valData = self::internalGetV($x, $y, $defVal); - if (myself()->_getDaySeconds($valData['modifytime']) < myself()->_getMondaySeconds()) { - $valData['val'] = $defVal; - } - return $valData['val']; - } - - public static function setWeeklyV($x, $y, $val) - { - self::setV($x, $y, $val); - } - - public static function incWeeklyV($x, $y, $val) - { - $key = self::calcKey($x, $y); - $oldVal = self::getWeeklyV($x, $y); - self::internalSetV($x, $y, $oldVal + $val); - } - - public static function decWeeklyV($x, $y, $val) - { - self::incWeeklyV($x, $y, 0 - $val); - } - - public static function calcKey($x, $y) - { - $low32 = (int)$x; - $high32 = (int)$y; - $key = $low32 + ($high32 << 32); - return $key; - } - - private static function internalSetV($x, $y, $val) - { - if (!is_int($x) || !is_int($y)) { - die('internalSet type error'); - return; - } - if (abs($x) > 0xFFFFFFFF) { - die('internalSet x error'); - return; - } - if (abs($y) > 0xFFFFFFFF) { - die('internalSet y error'); - return; - } - $key = self::calcKey($x, $y); - SqlHelper::upsert - (myself()->_getSelfMysql(), - 't_dyndata', - array( - 'account_id' => myself()->_getAccountId(), - 'x' => $x, - 'y' => $y - ), - array( - 'val' => $val, - 'modifytime' => myself()->_getNowTime() - ), - array( - 'account_id' => myself()->_getAccountId(), - 'x' => $x, - 'y' => $y, - 'val' => $val, - 'createtime' => myself()->_getNowTime(), - 'modifytime' => myself()->_getNowTime() - ) - ); - if (self::$dynData) { - self::$dynData[$key] = array( - 'val' => $val, - 'modifytime' => myself()->_getNowTime(), - ); - } - } - - private static function internalGetV($x, $y, $defVal = 0) - { - $key = self::calcKey($x, $y); - if (!is_null(self::$dynData)) { - if (isset(self::$dynData[$key])) { - return self::$dynData[$key]; - } else { - return array( - 'val' => $defVal, - 'modifytime' => myself()->_getNowTime() - ); - } - } else { - ++self::$hitCount; - if (self::$hitCount > 5 && is_null(self::$dynData)) { - self::preload(); - return self::internalGetV($x, $y, $defVal); - } else { - $row = SqlHelper::ormSelectOne( - myself()->_getSelfMysql(), - 't_dyndata', - array( - 'account_id' => myself()->_getAccountId(), - 'x' => $x, - 'y' => $y, - ) - ); - return array( - 'val' => $row ? $row['val'] : $defVal, - 'modifytime' => $row ? $row['modifytime'] : myself()->_getNowTime(), - ); - } - } - } - - private static $dynData = null; - private static $hitCount = 0; - -} +_getSelfMysql(), + 't_dyndata', + array( + 'account_id' => myself()->_getAccountId(), + ) + ); + foreach ($rows as $row) { + $key = self::calcKey($row['x'], $row['y']); + self::$dynData[$key] = array( + 'val' => $row['val'], + 'modifytime' => $row['modifytime'], + ); + } + } + } + + public static function getVEx($accountId, $x, $y, $defVal = 0) + { + $row = SqlHelper::ormSelectOne( + myself()->_getMysql($accountId), + 't_dyndata', + array( + 'account_id' => $accountId, + 'x' => $x, + 'y' => $y, + ) + ); + return $row ? $row['val'] : $defVal; + } + + public static function getV($x, $y, $defVal = 0) + { + $valData = self::internalGetV($x, $y, $defVal); + return $valData['val']; + } + + public static function setV($x, $y, $defVal) + { + $key = self::calcKey($x, $y); + self::internalSetV($x, $y, $defVal); + } + + public static function incV($x, $y, $val) + { + $key = self::calcKey($x, $y); + $oldVal = self::getV($x, $y); + self::internalSetV($x, $y, $oldVal + $val); + } + + public static function incVEx($accountId, $x, $y, $val) + { + $oldVal = self::getVEx($accountId, $x, $y); + SqlHelper::upsert + (myself()->_getMysql($accountId), + 't_dyndata', + array( + 'account_id' => $accountId, + 'x' => $x, + 'y' => $y + ), + array( + 'val' => $oldVal + $val, + 'modifytime' => myself()->_getNowTime() + ), + array( + 'account_id' => $accountId, + 'x' => $x, + 'y' => $y, + 'val' => $val, + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime() + ) + ); + } + + public static function setVEx($accountId, $x, $y, $val) + { + SqlHelper::upsert + (myself()->_getMysql($accountId), + 't_dyndata', + array( + 'account_id' => $accountId, + 'x' => $x, + 'y' => $y + ), + array( + 'val' => $val, + 'modifytime' => myself()->_getNowTime() + ), + array( + 'account_id' => $accountId, + 'x' => $x, + 'y' => $y, + 'val' => $val, + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime() + ) + ); + } + + public static function decV($x, $y, $val) + { + self::incV($x, $y, 0 - $val); + } + + public static function getDailyV($x, $y, $defVal = 0) + { + $valData = self::internalGetV($x, $y, $defVal); + if (myself()->_getDaySeconds($valData['modifytime']) < myself()->_getNowDaySeconds()) { + $valData['val'] = $defVal; + } + return $valData['val']; + } + + public static function setDailyV($x, $y, $val) + { + self::setV($x, $y, $val); + } + + public static function incDailyV($x, $y, $val) + { + $key = self::calcKey($x, $y); + $oldVal = self::getDailyV($x, $y); + self::internalSetV($x, $y, $oldVal + $val); + } + + public static function decDailyV($x, $y, $val) + { + self::incDailyV($x, $y, 0 - $val); + } + + public static function getWeeklyV($x, $y, $defVal = 0) + { + $valData = self::internalGetV($x, $y, $defVal); + if (myself()->_getDaySeconds($valData['modifytime']) < myself()->_getMondaySeconds()) { + $valData['val'] = $defVal; + } + return $valData['val']; + } + + public static function setWeeklyV($x, $y, $val) + { + self::setV($x, $y, $val); + } + + public static function incWeeklyV($x, $y, $val) + { + $key = self::calcKey($x, $y); + $oldVal = self::getWeeklyV($x, $y); + self::internalSetV($x, $y, $oldVal + $val); + } + + public static function decWeeklyV($x, $y, $val) + { + self::incWeeklyV($x, $y, 0 - $val); + } + + public static function calcKey($x, $y) + { + $low32 = (int)$x; + $high32 = (int)$y; + $key = $low32 + ($high32 << 32); + return $key; + } + public static function getPeriodV($x, $y,$time, $defVal = 0) + { + $valData = self::internalGetV($x, $y, $defVal); + if (myself()->_getDaySeconds($valData['modifytime']) < myself()->_getDaySeconds($time)) { + $valData['val'] = $defVal; + } + return $valData['val']; + } + + public static function incPeriodV($x, $y, $time, $val){ + $key = self::calcKey($x, $y); + $oldVal = self::getPeriodV($x, $y, $time); + self::internalSetV($x, $y, $oldVal + $val); + } + + private static function internalSetV($x, $y, $val) + { + if (!is_int($x) || !is_int($y)) { + die('internalSet type error'); + return; + } + if (abs($x) > 0xFFFFFFFF) { + die('internalSet x error'); + return; + } + if (abs($y) > 0xFFFFFFFF) { + die('internalSet y error'); + return; + } + $key = self::calcKey($x, $y); + SqlHelper::upsert + (myself()->_getSelfMysql(), + 't_dyndata', + array( + 'account_id' => myself()->_getAccountId(), + 'x' => $x, + 'y' => $y + ), + array( + 'val' => $val, + 'modifytime' => myself()->_getNowTime() + ), + array( + 'account_id' => myself()->_getAccountId(), + 'x' => $x, + 'y' => $y, + 'val' => $val, + 'createtime' => myself()->_getNowTime(), + 'modifytime' => myself()->_getNowTime() + ) + ); + if (self::$dynData) { + self::$dynData[$key] = array( + 'val' => $val, + 'modifytime' => myself()->_getNowTime(), + ); + } + } + + private static function internalGetV($x, $y, $defVal = 0) + { + $key = self::calcKey($x, $y); + if (!is_null(self::$dynData)) { + if (isset(self::$dynData[$key])) { + return self::$dynData[$key]; + } else { + return array( + 'val' => $defVal, + 'modifytime' => myself()->_getNowTime() + ); + } + } else { + ++self::$hitCount; + if (self::$hitCount > 5 && is_null(self::$dynData)) { + self::preload(); + return self::internalGetV($x, $y, $defVal); + } else { + $row = SqlHelper::ormSelectOne( + myself()->_getSelfMysql(), + 't_dyndata', + array( + 'account_id' => myself()->_getAccountId(), + 'x' => $x, + 'y' => $y, + ) + ); + return array( + 'val' => $row ? $row['val'] : $defVal, + 'modifytime' => $row ? $row['modifytime'] : myself()->_getNowTime(), + ); + } + } + } + + private static $dynData = null; + private static $hitCount = 0; + +} diff --git a/webapp/models/HashRateTask.php b/webapp/models/HashRateTask.php index 7cce9d04..bf92ae05 100644 --- a/webapp/models/HashRateTask.php +++ b/webapp/models/HashRateTask.php @@ -11,34 +11,6 @@ use mt\RankSeason; use phpcommon\SqlHelper; class HashRateTask extends BaseModel { - const KILL_TYPE = 10001; - const STAR_TYPE = 10002; - const RANK_TYPE = 10003; - const BATTLE_TIME_TYPE = 10004; - const BATTLE_WIN_TYPE = 10005; - const VS_FOUR_BATTLE_WIN_TYPE = 10006; - const DAMAGE_TYPE = 10007; - - const MOBA_WIN_ID = 1; - const MOBA_KILL_ID = 2; - const MOBA_GATHER_GRENADE_ID = 3; - const MOBA_GATHER_BURNING_ID = 4; - const MOBA_GATHER_BLOOD_ID = 5; - const MOBA_BATTLE_END_ID =6; - const MOBA_FAST_UP_ID =7; - const MOBA_BATTLE_TIMES_ID =8; - const PVP_WIN_ID =9; - const PVP_LAST_RUNNER_ID =10; - const PVP_KILL_ID =11; - const PVP_GATHER_GRENADE_ID =12; - const PVP_GATHER_BURNING_ID =13; - const PVP_GATHER_BLOOD_ID =14; - const PVP_WALKING_DISTANCE_ID =16; - const PVP_BATTLE_TIMES_ID =17; - const HERO_UP_QUALITY_ID =18; - const OWN_HERO_NFT_ID =19; - const OWN_CHIP_NFT_ID =20; - const OWN_GOLD_ID =21; public static function find(){ $rows = SqlHelper::ormSelect( diff --git a/webapp/services/HashRateService.php b/webapp/services/HashRateService.php index c4cb6b93..d0cdcbe7 100644 --- a/webapp/services/HashRateService.php +++ b/webapp/services/HashRateService.php @@ -137,12 +137,13 @@ class HashRateService extends BaseService break; //拥有金币数 case AchievementsPower::OWN_GOLD_NUM : { - //......./ + $taskDto['current'] = myself()->_getPeriodV(TN_TOTAL_GATHER_GOLD,0); } break; } if ($taskDto['current'] >= $taskDto['target']) { $taskDto['current'] = $taskDto['target']; + $taskDto['state'] = self::FINISHED_STATE; } return $taskDto; }