input('id/d',0), 'files' => input('files','','trim'), 'users' => input('users','','trim'), 'remark' => input('remark','','trim'), 'org_id' => input('orgId/d',0), 'user_id' => input('userId/d',0), ]; $result = validate('FileRecord')->check($data,[],''); if(true !== $result){ HelpHander::error(validate('FileRecord')->getError()); } $id = $data['id']; unset($data['id']); Db::startTrans(); try{ if($id > 0){ unset($data['user_id']); $data['update_time'] = date('Y-m-d H:i:s'); Db::name('file_record_files')->where('file_record_id',$id)->delete(); Db::name('file_record_users')->where('file_record_id',$id)->delete(); $ret = $this->allowField(true)->save($data,['id'=>$id]); }else{ $data['create_time'] = date('Y-m-d H:i:s'); $ret = $this->allowField(true)->save($data); $id = $this->id; } if(!$ret){ \exception('操作失败'); } // 更新文件及用户 $files = explode(',',$data['files']); $farr = []; foreach ($files as $key=>$val){ $farr[] = [ 'file_record_id' => $id, 'file_id' => $val ]; } Db::name('file_record_files')->insertAll($farr); if($data['users']){ $users = explode(',',$data['users']); $uarr = []; foreach ($users as $key=>$val){ $uarr[] = [ 'file_record_id' => $id, 'user_id' => $val ]; } Db::name('file_record_users')->insertAll($uarr); } Db::commit(); }catch (Exception $e){ Db::rollback(); HelpHander::error($e->getMessage()); } return true; } public function info($id){ $info = $this->where('id',$id)->find(); if(!$info){ HelpHander::error('数据不存在'); } $data = $info->toArray(); // $data['create_time'] = date('Y-m-d',strtotime($data['create_time'])); return $data; } public function del($id){ $ret = $this->where('id',$id)->update(['del'=>1]); if(!$ret){ HelpHander::error('删除失败'); } return true; } public function lists($page,$size,$title,$name,$orgId){ $map[] = ['fr.org_id','=',$orgId]; $map[] = ['fr.del','=',0]; if($name){ $map[] = ['ui.name','like','%'.$name.'%']; } if($title){ $map[] = ['f.title','like','%'.$title.'%']; } $lists = Db::name('file_record') ->alias('fr') ->join('file_record_users fru','fru.file_record_id = fr.id','left') ->join('file_record_files frf','frf.file_record_id = fr.id','left') ->join('user_info ui','fru.user_id = ui.user_id','left') ->join('file f','f.id = frf.file_id','left') ->where($map) ->group('fr.id') ->field('fr.*') ->order('fr.id desc') ->page($page,$size) ->select(); // $lists = Db::name('file_record') // ->where($map) // ->page($page,$size) // ->order('id desc') // ->select(); $lists = $lists?$lists:[]; foreach ($lists as $k=>$v){ // $lists[$k]['ulist'] = Db::name('user_info') // ->where('user_id','in',$v['users']) // ->field('user_id,name') // ->select(); // $userNames = []; // foreach ($lists[$k]['ulist'] as $key=>$val){ // $userNames[] = $val['name']; // } $userids = $v['users']?explode(',',$v['users']):[]; $userNames = []; $users = []; foreach ($userids as $kk=>$vv){ $uinfo = Db::name('user_info') ->where('user_id',$vv) ->field('user_id,name') ->find(); $users[] = $uinfo?$uinfo:[]; $userNames[] = $uinfo?$uinfo['name']:''; } $lists[$k]['ulist'] = $users; $lists[$k]['flist'] = Db::name('file') ->where('id','in',$v['files']) ->field('id,sn,source,title') ->select(); $files = []; foreach ($lists[$k]['flist'] as $key=>$val){ $files[] = $val['title']; } $lists[$k]['userNames'] = $userNames?implode(',',$userNames):''; $lists[$k]['fileNames'] = $files?implode(',',$files):''; $files = explode(',',$v['files']); $farr = []; foreach ($files as $kk=>$vv){ $info = Db::name('file')->where('id',$vv)->find(); if($info){ $farr[] = $info; } } $lists[$k]['fileArr'] = $farr; $lists[$k]['create_time2'] = date('Y年m月d日',strtotime($v['create_time'])); } $total = Db::name('file_record') ->alias('fr') ->join('file_record_users fru','fru.file_record_id = fr.id','left') ->join('file_record_files frf','frf.file_record_id = fr.id','left') ->join('user_info ui','fru.user_id = ui.user_id','left') ->join('file f','f.id = frf.file_id','left') ->where($map) ->group('fr.id') ->count(); $data = [ 'total' => $total, 'list' => $lists ]; return $data; } // 获取上次选择的用户 public function getLastUser(){ $users = Db::name('file_record')->where('del',0)->order('id desc')->value('users'); return explode(',',$users); } }