美文网首页
2018-01-05一段调整后的代码,逻辑比较复hun杂luan

2018-01-05一段调整后的代码,逻辑比较复hun杂luan

作者: 独聆步武 | 来源:发表于2018-01-05 16:45 被阅读0次

    背景:签到情况需求,展示7天的信息,如果连续签到不足7天,则从第一次连签开始(没有连则从今天开始)往后算7个,如果超出超出7天则今天放在最后一个位置往前算7个。

    思路:先取前一天的mark,这个字段是标记连续签到天数的,然后大部分值都是推算的(在签到接口逻辑稳定状态下),小部分是数据库取值比如今天的积分获得。具体看代码(虽然看了也可能看不懂)

    //签到情况

    public function signInStatus($uid){

    //取到昨天的签到状态

    $begin = strtotime(date('Y-m-d',strtotime('-1 day')));

    $end = strtotime(date('Y-m-d'));

    $data = $this->model('activity/Model_activity')->signInStatus($uid,$begin,$end);

    $mark = empty($data) ? 0 : $data['mark'];

    //循环赋值返回数组的7天数据,i记录比较数据的轮次,j记录赋值数组和整体轮次,mark_date用于计算日期

    $i = $mark>5 ? $mark-6 : 0;

    $j = 0;

    $mark_date = $mark>5 ? 6 : $mark;

    while($j < 7){

    //计算日期

    $result[$j]['date'] = date('Y-m-d',strtotime(($j-$mark_date).' day'));

    //计算获得的积分

    if($i > $mark){

    $result[$j]['points'] = 0;

    }else if($i == $mark){

    $getTimes = $this->model('activity/Model_activity')->getToday();

    $today = $this->model('activity/Model_activity')->signInStatus($uid,$getTimes['begin'],$getTimes['end']);

    $result[$j]['points'] = empty($today) ? 0 : $today['points'];

    } else {

    if($i == 0){

    $result[$j]['points'] = 10;

    }else if($i > 2){

    $result[$j]['points'] = 50;

    }else {

    $result[$j]['points'] = 20;

    }

    }

    //判断今天明天其他天(1为今天,2为明天,0为其他)

    if($i == $mark){

    $result[$j]['istoday'] = 1;

    }else if($i == $mark + 1){

    $result[$j]['istoday'] = 2;

    }else {

    $result[$j]['istoday'] = 0;

    }

    if($mark>6 && $j == 6){

    $result[$j]['istoday'] = 1;

    }

    $i++;

    $j++;

    }

    return $result;

    }

    相关文章

      网友评论

          本文标题:2018-01-05一段调整后的代码,逻辑比较复hun杂luan

          本文链接:https://www.haomeiwen.com/subject/nfesnxtx.html