thinkphp 5缓存 数据状态 的切换

方法描述:对输入的课程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;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值