user_id)->where('type',1)->find(); $where = []; $where[] = ['l.type','=',1]; if($check_flow)$where[] = ['l.sort','>',$check_flow->sort]; $list = CarFlow::field('l.user_id,u.name user_name,u.headimg') ->alias('l') ->where($where) ->order('l.sort asc') ->leftJoin('StoreMember u','u.id = l.user_id') ->select()->toArray(); $this->success('ok',['list'=>$list]); } /** * @title 获取抄送人流程 * @desc 获取抄送人流程 * @author qc * @url /api/User_car/getCopyFlow * @method GET * @tag 个人信息 * @header name:Authorization require:1 desc:Token * @return name:user_name type:string default:-- desc:会员名称 * @return name:headimg type:string default:-- desc:会员头像 */ public function getCopyFlow() { $check_flow = CarFlow::where('user_id',$this->user_id)->where('type',2)->find(); $where = []; $where[] = ['l.type','=',2]; if($check_flow)$where[] = ['l.sort','>',$check_flow->sort]; $list = CarFlow::field('l.user_id,u.name user_name,u.headimg') ->alias('l') ->where($where) ->order('l.sort asc') ->leftJoin('StoreMember u','u.id = l.user_id') ->select()->toArray(); $this->success('ok',['list'=>$list]); } /** * @title 用车用车 * @desc 用车用车 * @author qc * @url /api/User_car/applyCar * @method GET * @tag 个人信息 * @header name:Authorization require:1 desc:Token * @param name:departure type:string default:-- desc:出发地址 * @param name:start_time type:string default:-- desc:出发时间 * @param name:arrive type:string default:-- desc:到达地址 * @param name:end_time type:string default:-- desc:返回时间 * @param name:back_address type:string default:-- desc:返回地址 */ public function applyCar() { $departure = input('post.departure'); $start_time = input('post.start_time'); $arrive = input('post.arrive'); $end_time = input('post.end_time'); $back_address = input('post.back_address'); $request_param = input('post.'); $request_param['user_id'] = $this->user_id; $request_param['apply_user'] = $this->user_id; $flow = CarFlow::getApproveUser();// 用车审批流程设置 $flow_user = array_column($flow,'user_id'); $flow_key = array_search($request_param['user_id'],$flow_user);// 请用车是否在审批流程人员中 $copy = CarFlow::getCopyTo(); $copy_user = array_column($copy,'user_id'); $copy_key = array_search($request_param['user_id'],$copy_user);// 用车人是否在抄送人员中 $flow_info = CarInfo::create($request_param);//生成用车记录 $flow_data = [];// 审批流程 $flow_num = 0; foreach ($flow as $fk=>$fv) { if($flow_key !== false && $flow_key >= $fk) continue; $flow_num++; $flow_data[] = [ 'car_id' => $flow_info->id, 'approve_user' => $fv['user_id'], 'flow' =>$flow_num, 'create_at'=>date('Y-m-d H:i:s'), 'start_time'=> $flow_num == 1 ? date('Y-m-d H:i:s'):null, 'status'=> $flow_num == 1 ? 1 : 0, ]; } foreach ($copy as $ck=>$cv) { if($copy_key !== false && $copy_key >= $ck) continue; $flow_data[] = [ 'car_id' => $flow_info->id, 'approve_user' => $cv['user_id'], 'approve_type' =>2 ]; } if(!empty($flow_data)) { CarInfo::where('id',$flow_info->id)->update(['approve_num'=>$flow_num]); (new CarApprove())->saveAll($flow_data); }else{ CarInfo::where('id',$flow_info->id)->update(['status'=>2]); } $this->success('用车申请已提交,请等待审核',['detail'=>$flow_info->toArray()]); } /** * @title 我的申请用车记录【列表】 * @desc 我的申请用车记录 * @author qc * @url /api/User_car/getApplyList * @method GET * @tag 个人信息 * @header name:Authorization require:1 desc:Token * @param name:page type:int default:-- desc:页数 * @param name:page_num type:int default:-- desc:每页数量 * @param name:status type:int default:0 desc:审批状态0全部,1审批中,2审批通过,3审批拒绝,9取消 * @param name:sel_time type:string default:0 desc:时间查询 * @return name:create_at type:string default:-- desc:提交申请用车时间 * @return name:departure type:string default:-- desc:出发地址 * @return name:start_time type:string default:-- desc:出发时间 * @return name:arrive type:string default:-- desc:到达地址 * @return name:end_time type:string default:-- desc:返回时间 * @return name:back_address type:string default:-- desc:返回地址 * @return name:user_name type:string default:-- desc:会员名称 * @return name:headimg type:string default:-- desc:用车会员头像 */ public function getApplyList() { $sel_where[] = ['user_id','=',$this->user_id]; if(input('get.status') > 0) $sel_where[] = ['status','=',input('get.status')]; if(input('get.sel_time')) $sel_where[] = ['create|end_date','=',input('get.sel_time')]; $list = CarInfo::where($sel_where) ->field('c.id,c.create_at,c.departure,c.start_time,c.arrive,c.end_time,c.back_address,u.name user_name,u.headimg') ->alias('c') ->leftJoin('StoreMember u','u.id = c.user_id') ->limit($this->off_set,$this->page_num) ->select()->toArray(); $this->success('ok',['list'=>$list]); } /** * @title 用车记录详情 * @desc 用车记录详情 * @author qc * @url /api/User_car/getApplyDetail * @method GET * @tag 个人信息 * @header name:Authorization require:1 desc:Token * @param name:id type:int default:-- desc:用车记录id * @return name:create_at type:string default:-- desc:提交申请用车时间 * @return name:departure type:string default:-- desc:出发地址 * @return name:start_time type:string default:-- desc:出发时间 * @return name:arrive type:string default:-- desc:到达地址 * @return name:end_time type:string default:-- desc:返回时间 * @return name:back_address type:string default:-- desc:返回地址 * @return name:approve_list type:array default:-- desc:审批记录 * @return name:approve_list.status type:int default:-- desc:审批状态:0待审批(未到该审批人审批),1审批中(已到该审批人审批,还未审批)2审批通过3审批拒绝 * @return name:approve_list.approve_time type:string default:-- desc:审批时间 * @return name:approve_list.remark type:string default:-- desc:审批备注 * @return name:approve_list.user_name type:string default:-- desc:审批人 * @return name:approve_list.headimg type:string default:-- desc:审批人头像 * @return name:approve_list.time type:string default:-- desc:审批用时(上一次审批完成到本次审批的时间,单位秒) */ public function getApplyDetail() { $id = input('get.id'); $detail = CarInfo::field('c.id,c.create_at,c.departure,c.start_time,c.arrive,c.end_time,c.back_address,u.name user_name,u.headimg') ->alias('c')->with('approveList')->where(['user_id'=>$this->user_id])->where(['id'=>$id]) ->limit($this->off_set,$this->page_num) ->find()->toArray(); $this->success('ok',['detail'=>$detail]); } /** * @title 需要我审批的 * @desc 需要我审批的 * @author qc * @url /api/User_car/getApproveApply * @method POST * @tag 个人信息 * @header name:Authorization require:1 desc:Token * @param name:page type:int default:-- desc:页数 * @param name:page_num type:int default:-- desc:每页数量 */ public function getApproveApply() { $list = CarApprove::with('carInfo')->where(['approve_user'=>$this->user_id]) ->where('status','>','0') ->limit($this->off_set,$this->page_num) ->select()->toArray(); $this->success('ok',['list'=>$list]); } }