123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?php
- namespace app\common\model;
- use app\hander\HelpHander;
- use think\Db;
- use think\Exception;
- use think\Model;
- class AttendanceGroupClass extends Model
- {
- public function add(){
- $data = [
- 'group_id' => 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;
- }
- }
|