Login.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <?php
  2. namespace app\api\controller\v1;
  3. use app\hander\HelpHander;
  4. use think\Controller;
  5. use think\Db;
  6. class Login extends Controller
  7. {
  8. public function checkLogin(){
  9. $accountName = input('accountName','','trim');
  10. $password = input('password','','trim');
  11. if(!$accountName || !$password){
  12. HelpHander::error('账号密码不能为空');
  13. }
  14. $data = model('User')->login($accountName,$password);
  15. if(!$data){
  16. HelpHander::error(model('User')->getError());
  17. }
  18. HelpHander::success($data);
  19. }
  20. // 公共静态页链接
  21. public function staticUrl(){
  22. $data = [
  23. 'aboutUrl' => (string) url('/h5/index/sysarticle',['name'=>'about'],true,true),
  24. 'privacyUrl' => (string) url('/h5/index/sysarticle',['name'=>'privacy'],true,true),
  25. 'disclaimerUrl' =>(string) url('/h5/index/sysarticle',['name'=>'disclaimer'],true,true),
  26. ];
  27. HelpHander::success($data);
  28. }
  29. //发送验证码
  30. public function sendSms(){
  31. HelpHander::success([],'操作成功');
  32. }
  33. // 小程序手机号登录
  34. public function wxpLogin(){
  35. $code = input('code','','trim');
  36. $encryptedData = input('encryptedData','','trim');
  37. $iv = input('iv','','trim');
  38. $orgId = input('orgId/d',0);
  39. // $orgId = $orgId <= 0 ? 33 : $orgId;
  40. if($orgId <= 0){
  41. HelpHander::error('请扫描项目二维码进入小程序');
  42. }
  43. try{
  44. $config = config('app.wx_mini_config');
  45. $app = \EasyWeChat\Factory::miniProgram($config);
  46. $ret = $app->auth->session($code);
  47. if(!isset($ret['openid']) || !$ret['openid']){
  48. exception('登录失败');
  49. }
  50. $decryptedData = $app->encryptor->decryptData($ret['session_key'], $iv, $encryptedData);
  51. if(!isset($decryptedData['phoneNumber']) || !$decryptedData['phoneNumber']){
  52. exception('解密失败');
  53. }
  54. // $data = model('User')->wxLogin($ret['openid'],$decryptedData['nickName'],$decryptedData['avatarUrl'],$orgId);
  55. }catch (\Exception $e){
  56. trace('小程序登录:'.$e->getMessage());
  57. HelpHander::error('登录失败',-101);
  58. }
  59. $data = model('User')->wxpLogin($decryptedData['phoneNumber'],$orgId);
  60. if(!$data){
  61. HelpHander::error('登录失败',-101);
  62. }
  63. HelpHander::success($data);
  64. }
  65. // 小程序登录
  66. public function wxLogin(){
  67. $code = input('code','','trim');
  68. $encryptedData = input('encryptedData','','trim');
  69. $iv = input('iv','','trim');
  70. $orgId = input('orgId/d',0);
  71. // $orgId = $orgId <= 0 ? 33 : $orgId;
  72. if($orgId <= 0){
  73. HelpHander::error('请扫描项目二维码进入小程序');
  74. }
  75. try{
  76. $config = config('app.wx_mini_config');
  77. $app = \EasyWeChat\Factory::miniProgram($config);
  78. $ret = $app->auth->session($code);
  79. if(!isset($ret['openid']) || !$ret['openid']){
  80. exception('登录失败');
  81. }
  82. $decryptedData = $app->encryptor->decryptData($ret['session_key'], $iv, $encryptedData);
  83. if(!isset($decryptedData['nickName']) || !$decryptedData['nickName']){
  84. exception('解密失败');
  85. }
  86. $data = model('User')->wxLogin($ret['openid'],$decryptedData['nickName'],$decryptedData['avatarUrl'],$orgId);
  87. if(!$data){
  88. exception(model('User')->getError());
  89. }
  90. }catch (\Exception $e){
  91. trace('小程序登录:'.$e->getMessage());
  92. HelpHander::error('登录失败',-101);
  93. }
  94. HelpHander::success($data);
  95. }
  96. // 小程序预登陆
  97. public function wxPreLogin(){
  98. $code = input('code','','trim');
  99. $orgId = input('orgId/d',0);
  100. // $orgId = $orgId <= 0 ? 33 : $orgId;
  101. if($orgId <= 0){
  102. HelpHander::error('请扫描项目二维码');
  103. }
  104. $config = config('app.wx_mini_config');
  105. try{
  106. $app = \EasyWeChat\Factory::miniProgram($config);
  107. $ret = $app->auth->session($code);
  108. if(!isset($ret['openid']) || !$ret['openid']){
  109. exception('登录失败');
  110. }
  111. $data = model('User')->wxPreLogin($ret['openid'],$orgId);
  112. if(!$data){
  113. exception(model('User')->getError());
  114. }
  115. }catch (\Exception $e){
  116. trace($e->getMessage());
  117. HelpHander::error('登录失败'.$e->getMessage(),-101);
  118. }
  119. HelpHander::success($data);
  120. }
  121. public function wxRegister(){
  122. $data = [
  123. 'mobile' => input('phone','','trim'),
  124. 'real_name' => input('name','','trim'),
  125. 'password' => input('pass','','trim'),
  126. 'depId' => input('depId/d',0),
  127. 'orgId' => input('orgId/d',0)
  128. ];
  129. if($data['orgId'] <= 0){
  130. HelpHander::error('请扫描项目二维码');
  131. }
  132. $res = model('User')->wxRegister($data);
  133. if(!$res){
  134. HelpHander::error(model('User')->getError());
  135. }
  136. HelpHander::success($res);
  137. }
  138. public function decodePhone()
  139. {
  140. $code = input('code','','trim');
  141. $userId = input('userId','','trim');
  142. $encryptedData = input('encryptedData','','trim');
  143. $iv = input('iv','','trim');
  144. // $orgId = input('orgId/d',0);
  145. // if($orgId <= 0){
  146. // HelpHander::error('请扫描项目二维码进入小程序');
  147. // }
  148. try{
  149. $config = config('app.wx_mini_config');
  150. $app = \EasyWeChat\Factory::miniProgram($config);
  151. $ret = $app->auth->session($code);
  152. if(!isset($ret['openid']) || !$ret['openid']){
  153. exception('code失效');
  154. }
  155. $decryptedData = $app->encryptor->decryptData($ret['session_key'], $iv, $encryptedData);
  156. if(!isset($decryptedData['phoneNumber']) || !$decryptedData['phoneNumber']){
  157. exception('解密失败');
  158. }
  159. }catch (\Exception $e){
  160. trace('小程序登录:'.$e->getMessage());
  161. HelpHander::error('获取失败',-101);
  162. }
  163. $data = Db::name('User')->where('id',$userId)->update(['mobile'=>$decryptedData['phoneNumber']]);
  164. if(!$data){
  165. HelpHander::error('更新失败',-101);
  166. }
  167. HelpHander::success($decryptedData['phoneNumber'],'获取成功');
  168. }
  169. }