CheckWx.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Model\Employee;
  4. use App\Model\SysMenu;
  5. use App\Model\WxEmployee;
  6. use App\Service\LoginService;
  7. use App\Service\Wx\WxEmployeeService;
  8. use Closure;
  9. class CheckWx
  10. {
  11. /**
  12. * Handle an incoming request.
  13. * 微信小程序中间件
  14. * @param \Illuminate\Http\Request $request
  15. * @param \Closure $next
  16. * @return mixed
  17. */
  18. public function handle($request, Closure $next)
  19. {
  20. $data = $request->all();
  21. if (!isset($data['openid'])) return response()->json(['code'=> 202,'msg'=>'缺少openid','data'=>null]);
  22. $openid = $data['openid'];
  23. $tree_type = $data['tree_type'];
  24. if (! isset(SysMenu::tree[$tree_type])) return response()->json(['code' => 1,'msg' => '缺少tree_type','data' => null]);
  25. $title = SysMenu::tree[$tree_type];
  26. $appid = config("wx_msg.appid");
  27. //校验openid是否绑定
  28. $employee = new WxEmployee();
  29. $employee = $employee->where('openid', $openid)->where('appid', $appid)->first();
  30. if (empty($employee)) return response()->json(['code'=> 202,'msg'=>'用户授权信息不存在!','data'=>null]);
  31. $employee = $employee->toArray();
  32. if (empty($employee['mobile'])) return response()->json(['code'=> 202,'msg'=>'用户手机信息不存在!','data'=>null]);
  33. //更新微信小程序表信息
  34. $service = new WxEmployeeService();
  35. list($status, $msg) = $service->fillEmployeeData($employee);
  36. if(! $status) return response()->json(['code'=> 202,'msg'=> $msg,'data'=>null]);
  37. //校验用户
  38. $employee_id = $employee['employee_id'];
  39. $checkResult = $service->checkWxUser($employee_id);
  40. list($state, $data) = $checkResult;
  41. if(! $state) return response()->json(['code'=> 202,'msg'=>$data,'data'=>null]);
  42. //账号信息
  43. $employee_array = $data;
  44. //校验是否越权拿菜单数据
  45. $bool = LoginService::hasPersonRoleForSysMenuList($employee_id, $tree_type);
  46. if(! $bool) return response()->json(['code' => 1,'msg' => '无系统' . $title . '权限','data' => null]);
  47. //人员公司部门
  48. $employee_array = array_merge($employee_array, LoginService::getPersonDepart($employee_id));
  49. list($state, $msg) = LoginService::checkCompany($employee_array);
  50. if(! $state) return response()->json(['code' => 1,'msg' => $msg,'data' => null]);
  51. //人员角色 菜单权限
  52. $employee_array = array_merge($employee_array, LoginService::getPersonRoleAndPermissions($employee_array));
  53. //当前选择的系统菜单
  54. $employee_array['select_tree_type'] = $tree_type;
  55. $request->userData = $employee_array;
  56. return $next($request);
  57. }
  58. }