| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | <?phpnamespace App\Http\Middleware;use App\Model\Employee;use App\Model\WxEmployee;use App\Service\EmployeeService;use App\Service\Wx\WxEmployeeService;use Closure;class CheckWx{    /**     * Handle an incoming request.     *     * @param  \Illuminate\Http\Request  $request     * @param  \Closure  $next     * @return mixed     */    public function handle($request, Closure $next)    {        $data=$request->all();        if (!isset($data['openid'])) return response()->json(['code'=> 202,'msg'=>'缺少openid','data'=>null]);        $openid = $data['openid'];        //校验openid是否绑定        $employee = new WxEmployee();        $employee = $employee->where('openid',$openid)->first();        if (empty($employee)) return response()->json(['code'=> 202,'msg'=>'用户信息不存在!','data'=>null]);        $employee = $employee->toArray();        if (empty($employee['mobile'])) return response()->json(['code'=> 202,'msg'=>'用户手机信息不存在!','data'=>null]);        //当前请求接口        $uri = $request->path();        //不需要校验是否绑定账号的接口        $url = config('nocheck');        if(in_array($uri,$url)){            $request->userData = new Employee();        }else{            $employee_id = $employee['employee_id'];            if(empty($employee_id)) return response()->json(['code'=> 202,'msg'=>'用户未绑定账号!','data'=>null]);            //校验用户            $service = new WxEmployeeService();            $checkResult = $service->checkWxUser($employee_id);            list($state, $data) = $checkResult;            if(! $state) return response()->json(['code'=> 202,'msg'=>$data,'data'=>null]);            //人员角色            $data['role'] = EmployeeService::getPersonRole($employee_id);            $return = EmployeeService::getLoginDepart($employee_id);            //所属部门            $data['rule_depart'] = $return[0] ?? [];            //顶级公司            $data['depart_top'] = $return[1] ?? [];            //部门对应的顶级公司            $data['depart_map'] = $return[2] ?? [];            //权限范围内的部门以及公司            $data['depart_range'] = $return[3] ?? [];            //是否有所有的部门权限            $data['is_all_depart'] = $return[4] ?? 0;            //总公司            $data['head'] = $return[5] ?? [];            //是否是总公司下的人            $data['is_behind_main'] = $return[6] ?? 0;            //是否库存校验            $data['is_check_stock'] = true;            $request->userData = $data;        }        return $next($request);    }}
 |