| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | <?phpnamespace App\Http\Middleware;use App\Model\Employee;use App\Model\ProductInventorySet;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]);        if (empty($employee['employee_id'])) {            //找到对应的账号            $emp = Employee::where('del_time',0)                ->where('mobile',$employee['mobile'])                ->where('state',Employee::USE)                ->select('id')                ->first();            if(empty($emp)) return response()->json(['code'=> 202,'msg'=>'用户手机信息未匹配到系统账号!','data'=>null]);            $emp = $emp->toArray();            WxEmployee::where('id',$employee['id'])->update(['employee_id' => $emp['id']]);            $employee['employee_id'] = $emp['id'];        }        //当前请求接口        $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);            //角色里所有菜单权限            $data['role_authority'] = EmployeeService::getPersonRoleQx($data['role']);            //当前门店            $userSetTopDepartId = $request->input('userSetTopDepartId');            if(empty($userSetTopDepartId)) return response()->json(['code'=>202,'msg'=>'当前门店信息缺失','data'=>null]);            $return = EmployeeService::getLoginDepart($employee_id, $userSetTopDepartId);            //所属部门            $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['depart_select'] = $return[7] ?? [];            //是否库存校验(默认校验)            $my_top = $data['depart_top'][0] ?? [];            $is_check_stock = empty($my_top['is_stock']) ? ProductInventorySet::type_one : $my_top['is_stock'];            $data['is_check_stock'] = $is_check_stock;            //菜单ID            $query = config('morequery');            $url = $request->path();            if(isset($query[$url])){                $param = $query[$url];                if(is_array($param)){                    $key = $param['key'];                    $get = $request->input($key);                    $menu_id = $param['array'][$get] ?? 0;                }else{                    $menu_id = $param ?? 0;                }                $request->merge(['menu_id' => $menu_id]);            }            $request->userData = $data;        }        return $next($request);    }}
 |