feat: 유산 포인트 획득, 소모 정도를 동적으로 명장 일람 항목으로 기록
- 1월, 7월 - 베팅, 베팅 당첨을 소모/획득으로 분리 - 일단 유산 포인트 획득은 별도 분리
This commit is contained in:
+37
-3
@@ -1,8 +1,9 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
use sammo\Enums\InheritanceKey;
|
||||
use sammo\Enums\RankColumn;
|
||||
|
||||
use Ds\Map;
|
||||
/**
|
||||
* 시간 단위로 일어나는 이벤트들에 대한 함수 모음
|
||||
*/
|
||||
@@ -11,13 +12,46 @@ use sammo\Enums\RankColumn;
|
||||
function processSumInheritPointRank(){
|
||||
$db = DB::db();
|
||||
|
||||
$db->update(
|
||||
$generals = General::createGeneralObjListFromDB(null, null, 2);
|
||||
|
||||
$points = new Map();
|
||||
$points->allocate(count($generals));
|
||||
foreach($generals as $general){
|
||||
$generalID = $general->getID();
|
||||
$points[$generalID] = 0;
|
||||
}
|
||||
|
||||
foreach(InheritanceKey::cases() as $key){
|
||||
if($key === InheritanceKey::previous){
|
||||
continue;
|
||||
}
|
||||
$subPoints = InheritancePointManager::getInstance()->getInheritancePointFromAll($generals, $key);
|
||||
foreach($generals as $general){
|
||||
$generalID = $general->getID();
|
||||
$points[$generalID] += $subPoints[$generalID] ?? 0;
|
||||
}
|
||||
}
|
||||
|
||||
$pointsPairs = [];
|
||||
foreach($points as $generalID => $point){
|
||||
$pointsPairs[] = [
|
||||
'nation_id' => $generals[$generalID]->getNationID(),
|
||||
'general_id' => $generalID,
|
||||
'type' => RankColumn::inherit_point_earned_by_merge->value,
|
||||
'value' => $point,
|
||||
];
|
||||
}
|
||||
//XXX: multiple batch update가 제공되지 않으므로..
|
||||
$db->delete('rank_data', '`type` = %s', RankColumn::inherit_point_earned_by_merge->value);
|
||||
$db->insert('rank_data', $pointsPairs);
|
||||
|
||||
$db->query(
|
||||
'UPDATE `rank_data` D SET `value` = (SELECT SUM(`value`) FROM `rank_data` S WHERE S.general_id = D.general_id AND S.`type` IN %ls) WHERE D.`type` = %s',
|
||||
[RankColumn::inherit_point_earned_by_action->value, RankColumn::inherit_point_earned_by_merge->value],
|
||||
RankColumn::inherit_point_earned->value
|
||||
);
|
||||
|
||||
$db->update(
|
||||
$db->query(
|
||||
'UPDATE `rank_data` D SET `value` = (SELECT `value` FROM `rank_data` S WHERE S.general_id = D.general_id AND S.`type` = %s) WHERE D.`type` = %s',
|
||||
RankColumn::inherit_point_spent_dynamic->value,
|
||||
RankColumn::inherit_point_spent->value
|
||||
|
||||
Reference in New Issue
Block a user