方法描述:对输入的课程id进行判断,并进行相应的操作。
1.相关知识tp5缓存类
2.时间比较
3.json数据格式化——json_decode
4.加入返回码,方便查找原因
function getscene($id) {
if($id > 0){
//查找缓存
$scene = F("scene.". $id, '', 'file');
if($scene){
$time = time();
//对存在的缓存的课程状态判断并做相应的操作
if($scene['begin'] == 1){
//时间比较
if($time >= strtotime('+2 day', $scene['endtime'])) {//当前时间大于等于结束后两天
F("scene." . $id . ".begin", -1, 'file');
//为什么?
F("user_" . $id, null);
$result = [
'code' => -1,
'msg' => '课程已结束'
];
} elseif(($time <= strtotime('-30 minute', $scene['startime']))){//当前时间大于等于开始前30分钟
$result = [
'code' => 0,
'msg' => '课程未开始'
];
} else {
$result = [
'code' => 1,
'msg' => '课程已开始'
];
}
return $result;
} elseif($scene['begin'] == 0) {
if(($time >= strtotime('-30 minute', $scene['startime']))){//当前时间大于等于开始前30分钟
F("scene." . $id . ".begin", 1, 'file');
$result = [
'code' => 1,
'msg' => '课程已开始'
];
} elseif($time >= strtotime('+2 day', $scene['endtime'])) {//当前时间大于等于结束后两天
F("scene." . $id . ".begin", -1, 'file');
F("user_" . $id, null);
$result = [
'code' => -1,
'msg' => '课程已结束'
];
} else {
$result = [
'code' => 0,
'msg' => '课程未开始'
];
}
return $result;
} elseif($scene['begin'] == -1) {
F("user_" . $id, null);
$result = [
'code' => -1,
'msg' => '课程已结束'
];
return $result;
}
} else {
$allscene = http_get(config('getallsceneinfo'));
$res = json_decode($allscene, true);
if($res['code'] == "200"){
foreach($res['data'] as $k => $v){
$scene = [
"startime" => $v['startime'] / 1000,
"endtime" => $v['endtime'] / 1000,
"begin" => 0
];
F("scene.". $v['sceneid'], $scene, 'file');
}
if(F("scene.". $id, '', 'file')){
return getscene($id);
} else {
$result = [
'code' => -2,
'msg' => '课程不存在'
];
return $result;
}
}
}
} else {
$result = [
'code' => -3,
'msg' => '课程ID错误'
];
return $result;
}
}