input('groupId/d',0), 'json' => input('json','','trim'), 'month' => input('month','','trim'), 'org_id' => input('orgId/d',0), ]; if($data['group_id'] <= 0 || !$data['month']){ HelpHander::error('参数错误'); } $json = json_decode($data['json'],true); Db::startTrans(); try{ $month = $data['month'].'-01'; // 删除原数据 Db::name('attendance_group_class') ->where('group_id',$data['group_id']) ->where('day','>=',$month) ->delete(); $arr = []; foreach ($json as $k=>$v){ $arr[] = [ 'org_id' => $data['org_id'], 'group_id' => $data['group_id'], 'class_id' => $v['classId'], 'day' => $v['day'] ]; } if($arr){ $res = Db::name('attendance_group_class')->insertAll($arr); if($res != count($arr)){ \exception('操作失败1'); } } Db::commit(); }catch (Exception $e){ Db::rollback(); HelpHander::error($e->getMessage()); } return true; } public function listDuringMonth($month,$groupId,$orgId){ $map[] = ['agc.org_id','=',$orgId]; $map[] = ['agc.group_id','=',$groupId]; if($month != ''){ $map[] = ['agc.day','like', $month.'%']; } $lists = Db::name('attendance_group_class') ->alias('agc') ->join('attendance_class ac','ac.id = agc.class_id') ->where($map) ->field('agc.class_id,ac.name as class_name,agc.day as date_time') ->order('agc.id asc') ->select(); return $lists?$lists:[]; } public function getClassByDay($userId){ $group = Db::name('attendance_group_user') ->alias('agu') ->join('attendance_group ag','ag.id = agu.group_id') ->where('agu.user_id',$userId) ->where('ag.del',0) ->field('ag.*') ->find(); if(!$group){ return false; } $day = date('Y-m-d'); if($group['type'] == 1){ //固定班制 $w = date('w'); $content = json_decode($group['content'],true); $week = $content['week']; $classId = 0; foreach ($week as $k=>$v){ if($w == $v['week']){ $classId = empty($v['class_id'])?0:$v['class_id']; } } // 今日是否有必打卡特殊日 $sign = $content['sign']; foreach ($sign as $k=>$v){ if($day == $v['day']){ $classId = empty($v['class_id'])?0:$v['class_id']; } } // 今日是否有不必打卡特殊日 $unsign = $content['unsign']; foreach ($unsign as $k=>$v){ if($day == $v['day']){ $classId = 0; } } $class = []; if($classId > 0){ $class = Db::name('attendance_class')->where('id',$classId)->where('del',0)->field('content,org_id,id as class_id')->find(); if($class){ $class['group_id'] = $group['id']; $class['group_name'] = $group['name']; $class['cate'] = $group['cate']; $class['addr'] = $group['addr']; } } }else{ // 排班制 $class = Db::name('attendance_group') ->alias('ag') ->join('attendance_group_class agc','ag.id = agc.group_id') ->join('attendance_class ac','ac.id = agc.class_id') ->where('ag.id',$group['id']) ->where('agc.day',$day) ->field('ac.content,agc.group_id,agc.class_id,ag.org_id,ag.name as group_name,ag.cate,ag.addr') ->find(); // 今日排班 } return $class; } }