WxEmployeeService.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace App\Service\Wx;
  3. use App\Model\Employee;
  4. use App\Model\WxEmployee;
  5. use App\Service\LoginService;
  6. class WxEmployeeService extends Service
  7. {
  8. public function setUser($data){
  9. if(empty($data['code'])) return [false, '用户登录凭证(code)不能为空'];
  10. $code = $data['code'];
  11. $service = new WxService();
  12. list($status,$openid) = $service->getOpenid($code);
  13. if(!$status) return [false,$openid];
  14. $user = WxEmployee::where('openid',$openid)->where('appid',$service->appid)->first();
  15. if(empty($user)) {
  16. $user = new WxEmployee();
  17. $user->mobile = '';
  18. $user->openid = $openid;
  19. $user->appid = $service->appid;
  20. $user->save();
  21. $state = 0;
  22. }else{
  23. $state = 1;
  24. if(empty($user->mobile)){
  25. $state = 0;
  26. }else{
  27. $bool = Employee::where('del_time',0)
  28. ->where('mobile',$user->mobile)
  29. ->where('is_wx_admin', Employee::IS_WX_ADMIN_ONE)
  30. ->exists();
  31. if(! $bool) $state = 0;
  32. }
  33. }
  34. return [true,['openid'=>$openid, 'state'=> $state]];
  35. }
  36. public function setMobile($data){
  37. if(empty($data['code'])) return [false, '用户登录凭证(code)不能为空'];
  38. if(empty($data['openid'])) return [false, 'openID不能为空'];
  39. $code = $data['code'];
  40. $openid = $data['openid'];
  41. $service = new WxService();
  42. list($status,$mobile) = $service->getMobile($code);
  43. if(!$status) return [false,$mobile];
  44. $user = WxEmployee::where('openid',$openid)->where('appid',$service->appid)->first();
  45. if(empty($user)) return [false,'openID在系统中暂无记录'];
  46. $user->mobile = $mobile;
  47. $user->save();
  48. return [true, ['mobile' => $mobile]];
  49. }
  50. public static function checkWxUser($userId){
  51. $res = Employee::where('id', $userId)
  52. ->where('del_time',0)
  53. ->first();
  54. if(empty($res)) return [false, '该系统账号不存在'];
  55. $res = $res->toArray();
  56. if(! $res['is_wx_admin']) return [false, '该系统账号不允许登录微信小程序'];
  57. return [true, $res];
  58. }
  59. public function getSystemMenuList($data){
  60. if(empty($data['openid'])) return [false,'openid不能为空!'];
  61. $employee = WxEmployee::where('openid',$data['openid'])->first();
  62. if(empty($employee)) return [false,'未找到用户信息'];
  63. $employee = $employee->toArray();
  64. list($status, $msg) = $this->fillEmployeeData($employee);
  65. if(! $status) return [false, $msg];
  66. //获取人员所有的所有的顶级菜单
  67. $sysMenu = (new LoginService())->getPersonRoleForSysMenuList($employee['id']);
  68. if(empty($sysMenu)) return [false, '账户未设置菜单功能'];
  69. return [true, $sysMenu];
  70. }
  71. // 根据微信小程序表记录的手机号,查找唯一对应的账号且账号允许登录微信小程序后台,最后更新到微信小程序表中
  72. public function fillEmployeeData(&$employee){
  73. if (empty($employee['employee_id'])) {
  74. //找到对应的账号
  75. $emp = Employee::where('del_time',0)
  76. ->where('mobile',$employee['mobile'])
  77. ->where('is_wx_admin', Employee::IS_WX_ADMIN_ONE)
  78. ->select('id')
  79. ->first();
  80. if(empty($emp)) return [false, '用户手机信息未匹配到系统账号'];
  81. $emp = $emp->toArray();
  82. $employee['employee_id'] = $emp['id'];
  83. //更新到微信小程序中
  84. WxEmployee::where('id',$employee['id'])->update(['employee_id' => $emp['id']]);
  85. }
  86. return [true, ''];
  87. }
  88. }