198 lines
6.0 KiB
PHP
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,
|
|
)
|
|
);
|
|
}
|
|
|
|
|
|
} |