'待审核', 1=>'同意', 2=>'拒绝', ]; public function updates($orgId){ $data = request()->post(); $validate = new \app\common\validate\User(); $result = $validate->check($data,[],'add'); if(true !== $result){ $this->error = $validate->getError(); return false; } $validate = new \app\common\validate\Worker(); $result = $validate->check($data,[]); if(true !== $result){ $this->error = $validate->getError(); return false; } $idCard = new Idcard(); if(!$idCard->isChinaIDCard($data['card'])){ $this->error = '身份证格式错误'; return false; } $userData = [ 'id' => input('id/d',0), 'account' => input('account','','trim'), 'real_name' => input('real_name','','trim'), 'mobile' => input('mobile','','trim'), 'password' => input('password','','trim'), 'head_image' => input('head_image','','trim'), 'depId' => input('depId/d',0), 'rolesId' => input('rolesId/d',0), 'enable' => input('enable/d',1), ]; Db::startTrans(); try{ $id = $userData['id']; unset($userData['id']); $depId = $userData['depId']; $rolesId = $userData['rolesId']; unset($userData['depId']); unset($userData['rolesId']); if($id > 0){ if(!$userData['password']){ unset($userData['password']); } $userData['update_time'] = date('Y-m-d H:i:s'); $ret =Db::name('user') ->where(['id'=>$id]) ->update($userData); if(!$ret){ \exception('操作失败'); } Db::name('user_dep') ->where('user_id',$id) ->setField('dep_id',$depId); Db::name('user_roles') ->where('user_id',$id) ->setField('roles_id',$rolesId); $workerData = [ 'birthday'=>$idCard->getBirthday($data['card']), 'gender'=>$idCard->getChinaIDCardSex($data['card'])=='男'?1:2, 'card_imgs'=>!empty($data['card_imgs'])?implode(',',$data['card_imgs']):'' , 'id_imgs'=>!empty($data['id_imgs'])?implode(',',$data['id_imgs']):'', 'work'=>$data['work']?$data['work']:null, 'content'=>$data['content'], 'recommend'=>$data['recommend'], 'card'=>$data['card'], 'update_time'=>getTime(), ]; $res = $this->where('user_id',$id) ->update($workerData); if(!$res){ \exception('护工信息更新失败'); } }else{ $userData['create_time'] = date('Y-m-d H:i:s'); $userData['ip'] = request()->ip(); $ret = Db::name('user')->insertGetId($userData); if(!$ret){ \exception('操作失败'); } Db::name('user_org') ->insert(['user_id'=>$ret,'org_id'=>$orgId]); Db::name('user_dep') ->insert(['user_id'=>$ret,'dep_id'=>$depId]); Db::name('user_roles') ->insert(['user_id'=>$ret,'roles_id'=>$rolesId]); } $workerData = [ 'user_id'=>$ret, 'birthday'=>$idCard->getBirthday($data['card']), 'gender'=>$idCard->getChinaIDCardSex($data['card'])=='男'?1:2, 'card_imgs'=>!empty($data['card_imgs'])?implode(',',$data['card_imgs']):'' , 'id_imgs'=>!empty($data['id_imgs'])?implode(',',$data['id_imgs']):'', 'work'=>$data['work']?$data['work']:null, 'content'=>$data['content'], 'recommend'=>$data['recommend'], 'card'=>$data['card'], ]; $res = $this->save($workerData); if(!$res){ \exception('护工信息更新失败'); } Db::commit(); return true; }catch (Exception $e){ Db::rollback(); $this->error = $e->getMessage(); return false; } } //护工列表 public function lists($orgId,$where,$page,$size){ $map[] = ['o.org_id','=',$orgId]; $map[] = ['u.del','=',0]; if(isset($where['name']) && $where['name']!=''){ $map[] = ['u.real_name','like','%'.$where['name'].'%']; } if(isset($where['enable']) && $where['enable']!=''){ $map[] = ['u.enable','=',$where['enable']]; } if(isset($where['recommend']) && $where['recommend']!=''){ $map[] = ['a.recommend','=',$where['recommend']]; } if(isset($where['gender']) && $where['gender']!=''){ $map[] = ['a.gender','=',$where['gender']]; } if(isset($where['balance']) && $where['balance']!=''){ $map[] = ['a.balance','>',0]; } $roles = Db::name('roles') ->where('parent_id',11) ->where('del',0) ->where('enable',1) ->column('id'); if(empty($roles)){ $result['zhZye'] = 0; $result['page'] = $page; $result['total'] = 0; $result['records'] = []; $result['rows'] = 0; return $result; } $map[] = ['r.roles_id','in',$roles]; $offset = ($page-1)*$size; $list = $this->alias('a') ->join('user u','a.user_id=u.id') ->join('user_org o','a.user_id=o.user_id') ->join('user_roles r','a.user_id=r.user_id') ->field('u.real_name,u.enable,u.mobile,u.create_time,u.head_image,a.*') ->limit($offset,$size) ->where($map) ->order('a.id','desc') ->select(); $count = $this->alias('a') ->join('user u','a.user_id=u.id') ->join('user_org o','a.user_id=o.user_id') ->join('user_roles r','a.user_id=r.user_id') ->field('u.real_name,u.mobile,u.create_time,u.head_image,a.*') ->where($map) ->count(); $lists = $list?$list->toArray():[]; foreach ($lists as $k=>$v){ $lists[$k]['work'] = $v['work']?birthday($v['work']):0; $lists[$k]['content'] = $v['content']?$v['content']:''; $lists[$k]['birthday'] = $v['birthday']?$v['birthday']:''; $lists[$k]['card_imgs'] = $v['card_imgs']?$v['card_imgs']:''; $lists[$k]['id_imgs'] = $v['id_imgs']?$v['id_imgs']:''; $lists[$k]['update_time'] = $v['update_time']?$v['update_time']:''; $lists[$k]['card'] = $v['card']?$v['card']:''; $lists[$k]['age'] = $v['birthday']?birthday($v['birthday']):0; } $result['zhZye'] = $this->alias('a') ->join('user u','a.user_id=u.id') ->join('user_org o','a.user_id=o.user_id') ->join('user_roles r','a.user_id=r.user_id') ->field('u.real_name,u.mobile,u.create_time,u.head_image,a.*') ->where($map) ->sum('a.balance');; $totalPage = ceil($count/$size); $result['page'] = $page; $result['total'] = $totalPage; $result['records'] = $count; $result['rows'] = $lists; return $result; } public function apiLists($orgId,$where,$page,$size){ $map[] = ['o.org_id','=',$orgId]; $map[] = ['u.del','=',0]; $map[] = ['u.enable','=',1]; if(isset($where['name']) && $where['name']!=''){ $map[] = ['u.real_name','like','%'.$where['name'].'%']; } if(isset($where['enable']) && $where['enable']!=''){ $map[] = ['u.enable','=',$where['enable']]; } if(isset($where['recommend']) && $where['recommend']!=''){ $map[] = ['a.recommend','=',$where['recommend']]; } if(isset($where['gender']) && $where['gender']!=''){ $map[] = ['a.gender','=',$where['gender']]; } if(isset($where['balance']) && $where['balance']!=''){ $map[] = ['a.balance','>',0]; } $roles = Db::name('roles') ->where('parent_id',11) ->where('del',0) ->where('enable',1) ->column('id'); if(empty($roles)){ $result['zhZye'] = 0; $result['page'] = $page; $result['total'] = 0; $result['records'] = []; $result['rows'] = 0; return $result; } $map[] = ['r.roles_id','in',$roles]; $offset = ($page-1)*$size; $list = $this->alias('a') ->join('user u','a.user_id=u.id') ->join('user_org o','a.user_id=o.user_id') ->join('user_roles r','a.user_id=r.user_id') ->field('u.real_name,u.enable,u.mobile,u.create_time,u.head_image,a.*') ->limit($offset,$size) ->where($map) ->order('a.id','desc') ->select(); $count = $this->alias('a') ->join('user u','a.user_id=u.id') ->join('user_org o','a.user_id=o.user_id') ->join('user_roles r','a.user_id=r.user_id') ->field('u.real_name,u.mobile,u.create_time,u.head_image,a.*') ->where($map) ->count(); $lists = $list?$list->toArray():[]; foreach ($lists as $k=>$v){ $lists[$k]['work'] = $v['work']?birthday($v['work']):0; $lists[$k]['content'] = $v['content']?$v['content']:''; $lists[$k]['birthday'] = $v['birthday']?$v['birthday']:''; $lists[$k]['card_imgs'] = $v['card_imgs']?$v['card_imgs']:''; $lists[$k]['id_imgs'] = $v['id_imgs']?$v['id_imgs']:''; $lists[$k]['update_time'] = $v['update_time']?$v['update_time']:''; $lists[$k]['card'] = $v['card']?$v['card']:''; $lists[$k]['age'] = $v['birthday']?birthday($v['birthday']):0; } $result['zhZye'] = $this->alias('a') ->join('user u','a.user_id=u.id') ->join('user_org o','a.user_id=o.user_id') ->join('user_roles r','a.user_id=r.user_id') ->field('u.real_name,u.mobile,u.create_time,u.head_image,a.*') ->where($map) ->sum('a.balance');; $totalPage = ceil($count/$size); $result['page'] = $page; $result['total'] = $totalPage; $result['records'] = $count; $result['rows'] = $lists; return $result; } public function getUserInfo($id){ $info = db('user') ->alias('u') ->join('user_dep ud','ud.user_id = u.id') ->join('user_roles ur','ur.user_id = u.id') ->join('worker a','u.id = a.user_id') ->field('u.account,u.enable,u.real_name,u.mobile,u.create_time,u.head_image,ud.dep_id,ur.roles_id,a.*') ->where('u.id',$id)->find(); return $info; } public function getAllByOrg($org_id){ $map[] = ['o.org_id','=',$org_id]; $map[] = ['u.del','=',0]; $map[] = ['u.enable','=',1]; $roles = Db::name('roles') ->where('parent_id',11) ->where('del',0) ->where('enable',1) ->column('id'); $map[] = ['r.roles_id','in',$roles]; $lists = $this->alias('a') ->join('user u','a.user_id=u.id') ->join('user_org o','a.user_id=o.user_id') ->join('user_roles r','a.user_id=r.user_id') ->field('a.id,u.real_name as name,u.enable,u.mobile,u.create_time,u.head_image as img') ->where($map) ->order('a.id','desc') ->select(); $lists = $lists?$lists->toArray():[]; foreach ($lists as $k=>$v){ $lists[$k]['count'] = Db::name('ph_todo') ->where('worker_id',$v['id']) ->where('status',1)->count(); $lists[$k]['title'] = $v['name'].'('.$lists[$k]['count'].')'; } return $lists; } //护工人数 public function getAllByOrgCount($org_id,$map=[]){ $map[] = ['o.org_id','=',$org_id]; $map[] = ['u.enable','=',1]; $map[] = ['u.del','=',0]; $roles = Db::name('roles') ->where('parent_id',11) ->where('del',0) ->where('enable',1) ->column('id'); $map[] = ['r.roles_id','in',$roles]; $lists = $this->alias('a') ->join('user u','a.user_id=u.id') ->join('user_org o','a.user_id=o.user_id') ->join('user_roles r','a.user_id=r.user_id') ->field('a.id,u.real_name as name,u.enable,u.mobile,u.create_time,u.head_image as img') ->where($map) ->count(); return $lists; } public function hotList($org_id){ $map[] = ['o.org_id','=',$org_id]; $map[] = ['u.del','=',0]; $map[] = ['u.enable','=',1]; $roles = Db::name('roles') ->where('parent_id',11) ->where('del',0) ->where('enable',1) ->column('id'); $map[] = ['r.roles_id','in',$roles]; $lists = $this->alias('a') ->join('user u','a.user_id=u.id') ->join('user_org o','a.user_id=o.user_id') ->join('user_roles r','a.user_id=r.user_id') ->field('a.id,a.birthday,a.work,u.real_name as name,u.enable,u.mobile,u.create_time,u.head_image as img') ->where($map) ->where('a.recommend',1) ->order('a.id','desc') ->select(); $lists = $lists?$lists->toArray():[]; foreach ($lists as $k=>$v){ $lists[$k]['age'] = $v['birthday']?birthday($v['birthday']):0; $lists[$k]['worker'] = $v['work']?birthday($v['work']):0;; } return $lists; } public function getAddressName($id){ $addressInfo = Db::name('address') ->where('id',$id) ->find(); $name = $addressInfo['title']; if($addressInfo['pid'] > 0){ $pInfo = Db::name('address') ->where('id',$addressInfo['pid']) ->value('title'); $name = $pInfo.$name; } return $name; } //护工详情 public function workerDetail($id,$orgId,$userId=0){ $info = Db::name('worker') ->where('id',$id) ->find(); if(empty($info)) HelpHander::error('护工信息不存在'); $info['serviceList'] = $this->getService(explode(',',$info['services'])); $info['age'] = birthday($info['birthday']); $info['work'] = strpos($info['work'],'-')!==false?birthday($info['work']):''; $info['serviceStatus'] =$this->checkServiceStatus($info['id'])?'服务中':'空闲中'; $info['minPrice'] =$this->getWorkerMinPrice($info['id']); $info['maxPrice'] =$this->getWorkerMaxPrice($info['id']); $info['servicesNum'] =count(Db::name('orders') ->where('worker_id',$id) ->group('user_id') ->select()->toArray()); $info['servicesDay'] =diffBetweenTwoDays($info['create_time'],date('Y-m-d H:i:s')); $info['commentNum'] = (new Comment())->getCommentNum($info['id']); $info['cateList'] = $this->getWorkerPrice($id,$orgId); if($userId > 0){ $info['isCollect'] = (new Collect())->checkIsCollect($info['id'],$userId);//是否收藏该护工 } $info['serviceInfo'] = implode('、',array_column($this->getService(explode(',',$info['services'])),'title')); return $info; } }