game2006api/webapp/models/HashRateTask.php
hujiabin c6b602ebf2 1
2024-01-02 16:20:11 +08:00

198 lines
6.0 KiB
PHP

<?php
namespace models;
require_once('mt/Rank.php');
require_once('mt/RankSeason.php');
use mt\Rank;
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(
myself()->_getSelfMysql(),
't_hash_rate_task',
array(
'account_id' => myself()->_getAccountId(),
)
);
if (count($rows) < 1){
$rows = array();
}
return $rows;
}
public static function toDto($row){
array(
'task_id' => $row['task_id']
);
}
public static function findByTaskId($taskId){
return SqlHelper::ormSelectOne(
myself()->_getSelfMysql(),
't_hash_rate_task',
array(
'account_id' => myself()->_getAccountId(),
'task_id' => $taskId,
)
);
}
public static function incRecordNum($period,$taskId,$num){
SqlHelper::upsert
(myself()->_getSelfMysql(),
't_hash_rate_task',
array(
'account_id' => myself()->_getAccountId(),
'period' => $period,
'task_id' => $taskId,
),
array(
'total_num' => function () use($num) {
return "total_num + ${num}";
},
'modifytime' => myself()->_getNowTime()
),
array(
'account_id' => myself()->_getAccountId(),
'period' => $period,
'task_id' => $taskId,
'total_num' => $num,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
)
);
}
public static function getDailyReward($taskId){
$row = SqlHelper::ormSelectOne(
myself()->_getSelfMysql(),
't_hash_rate_task',
array(
'account_id' => myself()->_getAccountId(),
'task_id' => $taskId,
)
);
$modifytime = $row ? $row['modifytime'] : myself()->_getNowTime();
$num = $row ? $row['claim_day'] : 0;
if (myself()->_getDaySeconds($modifytime) < myself()->_getNowDaySeconds()) {
$num = 0;
}
return $num;
}
public static function incDailyReward($taskId,$val,$total){
$oldVal = self::getDailyReward($taskId);
$val += $oldVal;
SqlHelper::upsert
(myself()->_getSelfMysql(),
't_hash_rate_task',
array(
'account_id' => myself()->_getAccountId(),
'task_id' => $taskId,
),
array(
'claim_day' => $val,
'claim_total' => function () use($total) {
return "claim_total + ${total}";
},
'modifytime' => myself()->_getNowTime()
),
array(
'account_id' => myself()->_getAccountId(),
'task_id' => $taskId,
'claim_day' => $val,
'claim_total' => $total,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
)
);
}
public static function updateKv($taskId,$fieldKv){
SqlHelper::update
(myself()->_getSelfMysql(),
't_hash_rate_task',
array(
'account_id' => myself()->_getAccountId(),
'task_id' => $taskId,
),
$fieldKv
);
}
public static function setRankedData(){
$SeasonMeta = RankSeason::getCurrentSeason();
if (!$SeasonMeta){
error_log("当前赛季结束");
return;
}
if (! self::findByTaskIdOrSeason(self::RANK_TYPE,$SeasonMeta['id'])){
$userDb = myself()->_safeGetOrmUserInfo();
$rankMeta = Rank::getRankById($userDb['rank']);
SqlHelper::insert
(myself()->_getSelfMysql(),
't_hash_rate_task',
array(
'account_id' => myself()->_getAccountId(),
'task_id' => self::RANK_TYPE,
'season' => $SeasonMeta['id'],
'record_total' => $rankMeta['rank_order2'],
'claim_total' => $rankMeta['rank_order2'],
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
)
);
}
}
public static function findByTaskIdOrSeason($taskId,$season){
return SqlHelper::ormSelectOne(
myself()->_getSelfMysql(),
't_hash_rate_task',
array(
'account_id' => myself()->_getAccountId(),
'task_id' => $taskId,
'season' => $season,
)
);
}
}