| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418 | 
							- <?php
 
- namespace app\common\model;
 
- use app\hander\HelpHander;
 
- use think\Db;
 
- use think\Exception;
 
- use tools\Idcard;
 
- class Worker extends Base
 
- {
 
-     public $status = [
 
-         0=>'待审核',
 
-         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;
 
-     }
 
- }
 
 
  |