基于ThinkPHP实现的日历功能实例详解

2019-05-01 18:42:50王旭

WorkLog.class.php文件,主要负责将用户工作信息与日历信息结合起来。

<?php
namespace Util;
class WorkLog{
  private $uid;//用户id
  private $calendar;//日历对象
  private $lastMonth;//上一个月
  private $curMonth; //本月
  private $nextMonth;//下一个月
  private $monthWorkedDays;//当月工作的天数
  private $workLog=null;//当前月的工作日历
  public function __construct($uid=0,$daytime=null){
    $this->uid=$uid;
    $this->calendar=new UtilCalenDar($daytime);
    $this->lastMonth=$this->calendar->getLastMonth();
    $this->curMonth=$this->calendar->getCurMonth();
    $this->nextMonth=$this->calendar->getNextMonth();
    $this->init();
  }
  public function init(){
    $info=$this->calendar->getCalendar();
    $userLog=array();
    if($this->uid !=0){
      $lastMonth=explode('-', $this->lastMonth);
      $curMonth=explode('-', $this->curMonth);
      $nextMonth=explode('-', $this->nextMonth);
      //获取上一个月,当前月,下一个月的工作日志,后期使用缓存
      $where='uid='.$this->uid.' AND ((`year`='.$lastMonth[0].' AND `month`='.$lastMonth[1].' ) or (`year`='.$curMonth[0].' AND `month`='.$curMonth[1].' ) or (`year`='.$nextMonth[0].' AND `month`='.$nextMonth[1].' ))';
      $rs=M('work_log')->field('year,month,day,status')->where($where)->select();
      foreach ($rs as $value) {
        $userLog[$value['year'].'-'.$value['month'].'-'.$value['day']]=$value['status'];
      }
    }
    $flag=1;
    foreach ($info as $key=>$value) {
      if($flag % 7 ==1 || $flag % 7 ==0){
        $cellbgtype=3;//没有工作
      }else{
        $cellbgtype=1;//没有工作
      }
      if(isset($userLog[$value['id']]) && $userLog[$value['id']] ==1){
        //判断是不是当前月份
        $str=date('Y-n',strtotime($value['id']));
        if($this->curMonth == $str){
          $this->monthWorkedDays+=1;
        }
        $cellbgtype+=1;
      }
      $cellbgtype='daytype'.$cellbgtype.'_'.$value['info']['type'];
      $info[$key]['info']['class']=$cellbgtype;
      $flag++;
    }
    $this->workLog=$info;
  }
  public function getLastMonth(){
    return $this->lastMonth;
  }
  public function getCurMonth(){
    return $this->curMonth;
  }
  public function getNextMonth(){
    return $this->nextMonth;
  }
  /**
  *当月已经工作的天数
  */
  public function monthWorkedDays(){
    return $this->monthWorkedDays;
  }
  /**
  *当月的天数
  **/
  public function monthDays(){
    return $this->calendar->getCurDaySum();
  }
  /**
  *获取累计工作的天数
  **/
  public function workedDays(){
  }
  /**
  *当前工作日历的月份
  **/
  public function logMonth(){
  }
  /**
  *当月截止到目前可得薪水
  **/
  public function hadSalary(){
  }
  /**
  *预计可得最高薪水
  **/
  public function maxSalary(){
  }
  /**
  *当前的工作日历
  **/
  public function workInfo(){
    return $this->workLog;
  }
}

								 
			 
相关文章 大家在看