input('orgId/d',0), 'user_id' => input('userId/d',0), 'work_type_id' => input('type/d',0), 'content' => htmlspecialchars(input('content','','')), 'receiver' => input('receiver','','trim'), 'files' => input('files','','trim'), 'create_time' => $curTime, 'month' => input('month','','trim'), 'work1' => htmlspecialchars(input('work1','','trim')), 'work2' => htmlspecialchars(input('work2','','trim')), 'points' => input('points','','trim'), 'zx_total_sr' => input('zxTotalSr/f',0), 'xh_total_sr' => input('xhTotalSr/f',0), 'zx_total_zc' => input('zxTotalZc/f',0), 'xh_total_zc' => input('xhTotalZc/f',0), 'zx_total_gz' => input('zxTotalGz/f',0), 'xh_total_gz' => input('xhTotalGz/f',0), 'zx_total_yy' => input('zxTotalYy/f',0), 'xh_total_yy' => input('xhTotalYy/f',0), ]; $data['receiver'] = check_exp_imp($data['receiver']); $data['points'] = check_exp_imp($data['points']); $result = validate('WorkReport')->check($data,[],''); if(true !== $result){ HelpHander::error(validate('WorkReport')->getError()); } Db::startTrans(); try{ $sdata = [ 'org_id' => $data['org_id'], 'user_id' => $data['user_id'], 'work_type_id' => $data['work_type_id'], 'content' => $data['content'], 'receiver' => $data['receiver'], 'create_time' => $data['create_time'], 'files' => $data['files'] ]; $workReportId = Db::name('work_report')->insertGetId($sdata); if(!$workReportId){ \exception('提交失败'); } if($data['work_type_id'] == 1){ $edata = [ 'work_report_id' => $workReportId, 'month' => $data['month'], 'zx_total_sr' => $data['zx_total_sr'], 'xh_total_sr' => $data['xh_total_sr'], 'zx_total_zc' => $data['zx_total_zc'], 'xh_total_zc' => $data['xh_total_zc'], 'zx_total_gz' => $data['zx_total_gz'], 'xh_total_gz' => $data['xh_total_gz'], 'zx_total_yy' => $data['zx_total_yy'], 'xh_total_yy' => $data['xh_total_yy'], ]; $ret = Db::name('work_report_finance')->insertGetId($edata); if(!$ret){ \exception('提交失败'); } } else if($data['work_type_id'] == 2){ $edata = [ 'work_report_id' => $workReportId, 'month' => $data['month'], 'work1' => $data['work1'], 'work2' => $data['work2'], ]; $ret = Db::name('work_report_summary')->insertGetId($edata); if(!$ret){ \exception('提交失败'); } } else if($data['work_type_id'] == 3){ $edata = [ 'work_report_id' => $workReportId, 'month' => $data['month'], 'points' => $data['points'], ]; $ret = Db::name('work_report_point')->insertGetId($edata); if(!$ret){ \exception('提交失败'); } } // 添加接收人记录及消息 $receiver = explode(',',$data['receiver']); $username = Db::name('user_info')->where('user_id',$data['user_id'])->value('name'); foreach ($receiver as $k=>$v){ $d = [ 'org_id' => $data['org_id'], 'user_id' => $v, 'create_time' => $curTime, 'is_read' => 0, 'work_report_id' => $workReportId ]; $wrrid = Db::name('work_report_receiver')->insertGetId($d); if(!$wrrid){ \exception('提交失败'); } $typename = Db::name('work_type')->where('id',$data['work_type_id'])->value('title'); $context = $username.'提交的'.$typename; $ret = model('Message')->add(5,$wrrid,6,$v,$data['org_id'],$context); if(!$ret){ \exception('提交失败'); } } Db::commit(); }catch (Exception $e){ Db::rollback(); HelpHander::error($e->getMessage()); } return true; } public function info($id){ $info = Db::name('WorkReport') ->where('id',$id) ->field('id,user_id,work_type_id,content,create_time,files') ->find(); if(!$info){ HelpHander::error('数据不存在'); } $info['typeName'] = Db::name('work_type')->where('id',$info['work_type_id'])->value('title'); $info['userName'] = Db::name('user_info')->where('user_id',$info['user_id'])->value('name'); if($info['work_type_id'] == 1){ $ext = Db::name('work_report_finance')->where('work_report_id',$info['id'])->find(); $info['finance'] = $ext; }else if($info['work_type_id'] == 2){ $ext = Db::name('work_report_summary')->where('work_report_id',$info['id'])->find(); $info['summary'] = $ext; }else if($info['work_type_id'] == 3){ $ext = Db::name('work_report_point')->where('work_report_id',$info['id'])->find(); $list = Db::name('work_point')->where('id','in',$ext['points'])->field('id,title')->order('id desc')->select(); $ext['points'] = $list?$list:[]; $info['point'] = $ext; } return $info; } public function receiveInfo($id){ $info = Db::name('work_report_receiver') ->alias('wrr') ->join('work_report wr','wr.id = wrr.work_report_id') ->where('wrr.id',$id) ->field('wr.id,wr.user_id,wr.files,wr.work_type_id,wr.content,wrr.create_time,wrr.is_read,wrr.read_time,wrr.user_id as receiver') ->find(); if(!$info){ HelpHander::error('数据不存在'); } $info['typeName'] = Db::name('work_type')->where('id',$info['work_type_id'])->value('title'); $info['userName'] = Db::name('user_info')->where('user_id',$info['user_id'])->value('name'); if($info['work_type_id'] == 1){ $ext = Db::name('work_report_finance')->where('work_report_id',$info['id'])->find(); $info['finance'] = $ext; }else if($info['work_type_id'] == 2){ $ext = Db::name('work_report_summary')->where('work_report_id',$info['id'])->find(); $info['summary'] = $ext; }else if($info['work_type_id'] == 3){ $ext = Db::name('work_report_point')->where('work_report_id',$info['id'])->find(); $list = Db::name('work_point')->where('id','in',$ext['points'])->field('id,title')->order('id desc')->select(); $ext['points'] = $list?$list:[]; $info['point'] = $ext; } if($info['is_read'] == 0){ Db::name('work_report_receiver')->where('id',$id)->update(['is_read'=>1,'read_time'=>date('Y-m-d H:i:s')]); $msgid = Db::name('message') ->where('status',0) ->where('type',5) ->where('user_id',$info['receiver']) ->where('bus_type',6) ->where('bus_id',$id) ->value('id'); if($msgid){ model('Message')->updataStatus($msgid,$info['receiver']); // 对应标记为已读消息 } } unset($info['receiver']); return $info; } // 我提交的工作汇报 public function lists($page,$size,$userId,$orgId){ $map[] = ['org_id','=',$orgId]; $map[] = ['user_id','=',$userId]; $lists = $this ->where($map) ->page($page,$size) ->order('id desc') ->field('id,user_id,work_type_id,create_time') ->select(); $lists = $lists?$lists->toArray():[]; foreach ($lists as $k=>$v){ $lists[$k]['typeName'] = Db::name('work_type')->where('id',$v['work_type_id'])->value('title'); $lists[$k]['userName'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name'); } $total = $this->where($map)->count(); $data = [ 'total' => $total, 'list' => $lists ]; return $data; } // 我收到的工作汇报 public function receiveList($page,$size,$userId,$orgId){ $map[] = ['wrr.org_id','=',$orgId]; $map[] = ['wrr.user_id','=',$userId]; $lists = Db::name('work_report_receiver') ->alias('wrr') ->join('work_report wr','wr.id = wrr.work_report_id') ->where($map) ->field('wr.user_id,wr.work_type_id,wrr.create_time,wrr.work_report_id,wrr.is_read,wrr.id') ->page($page,$size) ->order('wrr.id desc') ->select(); $lists = $lists?$lists:[]; foreach ($lists as $k=>$v){ $lists[$k]['typeName'] = Db::name('work_type')->where('id',$v['work_type_id'])->value('title'); $lists[$k]['userName'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name'); } $total = Db::name('work_report_receiver') ->alias('wrr') ->join('work_report wr','wr.id = wrr.work_report_id') ->where($map) ->count(); $data = [ 'total' => $total, 'list' => $lists ]; return $data; } public function myReceiver($userId,$orgId){ $receiver = Db::name('work_report') ->where('org_id',$orgId) ->where('user_id',$userId) ->order('id desc') ->value('receiver'); if(!$receiver){ return []; } $receiver = explode(',',$receiver); $lists = Db::name('user') ->alias('u') ->join('user_info ui','ui.user_id = u.id') ->where('u.id','in',$receiver) ->where('u.del',0) ->where('u.enable',1) ->field('u.id,ui.name') ->select(); $lists = $lists?$lists:[]; foreach ($lists as $k=>$v){ $jobs = Db::name('user_job') ->alias('uj') ->join('job j','j.id = uj.job_id') ->where('uj.user_id',$v['id']) ->where('j.del',0) ->where('j.enable',1) ->field('j.*') ->select(); $lists[$k]['listJob'] = $jobs?$jobs:[]; } return $lists; } // 获取工作汇报未读数量 public function unReadNums($userId,$orgId){ $count = Db::name('work_record_receiver') ->where('is_read',0) ->where('user_id',$userId) ->where('org_id',$orgId) ->count(); return $count; } }