Wx.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace app\index\controller;
  3. use app\model\Company;
  4. use app\model\Employee;
  5. use app\model\User;
  6. use think\facade\Request;
  7. use wx\Oplatform;
  8. use openssl\Aes;
  9. class Wx
  10. {
  11. /**
  12. * 开放平台扫码登录接口
  13. */
  14. public function platformLogin($code, $r)
  15. {
  16. $appid = config('app.kfweb_appid');
  17. $secret = config('app.kfweb_secret');
  18. $field = 'unionid';
  19. $data = (new Oplatform())->getAccessToken($appid, $secret, $code);
  20. if (!$data) {
  21. return json(['code' => 1, 'msg' => '登录失败']);
  22. }
  23. if (isset($data['errcode'])) { // code已经被使用
  24. if (in_array($data['errcode'], [40029, 40163, 41008, 42003])) {
  25. return json(['code' => 1, 'msg' => '登录失败,请刷新页面后重试!']);
  26. } else {
  27. return json(['code' => 1, 'msg' => $data['errmsg']]);
  28. }
  29. }
  30. $aes = new Aes('zqxg@screen');
  31. $r = $aes->decrypt($r);
  32. // 查询用户信息
  33. $userIds = User::where([
  34. ['root_id', '=', $r],
  35. [$field, '=', $data['unionid']]
  36. ])->column('id');
  37. // 领导登录
  38. $emp = Employee::where([['root_id', '=', $r], ['uid', 'in', $userIds], ['is_manager', '=', 1], ['state', '=', '在职']])->find();
  39. if ($emp == null) {
  40. return json(['code' => 1, 'msg' => '登录失败,未授权的账号']);
  41. }
  42. session('platform', $emp);
  43. $companyName = Company::where([['root_id', '=', $emp->root_id]])->value('company_name');
  44. return json(['code' => 0, 'msg' => '登录成功', 'data' => $companyName]);
  45. }
  46. public function getQrcodeConfig()
  47. {
  48. $data = [
  49. 'appid' => config('app.kfweb_appid'),
  50. 'domain' => Request::domain(),
  51. 'state' => rand(111111, 999999)
  52. ];
  53. $r = input('r');
  54. $aes = new Aes('zqxg@screen');
  55. $r = $aes->decrypt($r);
  56. $companyName = Company::where(['root_id' => $r])->value('company_name');
  57. $companyName = str_replace(['集团', '装饰'], '', $companyName);
  58. return json(['code' => 0, 'data' => $data, 'company_name' => $companyName]);
  59. }
  60. }