// +---------------------------------------------------------------------- namespace Modules\Wechat\Controllers\Api; use Illuminate\Http\Request; use App\Http\Controllers\BaseController; use Modules\Wechat\Services\OauthService; use Modules\Wechat\Services\WechatService; class Index extends BaseController { /** * 获取微信用户授权跳转 */ public function oauth(Request $request, OauthService $service){ if($request->filled('code')){ if($request->filled('url')){ return redirect($request->input('url') . '?code=' . $request->input('code', '')); } }else{ $res = $service->oauth($request); return redirect($res); } } /** * @title 微信登录 * * @param Request $request * @param OauthService $service * @return void */ public function login(Request $request, OauthService $service){ $type = $request->input('type', 'wechat'); if($request->filled('code')){ $info = []; switch ($type) { case 'wechat': try { $info = $service->wechatLogin($request->input('code', '')); } catch (\Throwable $th) { $this->data['message'] = $th->getMessage(); $this->data['code'] = 0; return $this->data; } break; case 'miniapp': try { $info = $service->miniappLogin($request); } catch (\Throwable $th) { $this->data['message'] = $th->getMessage(); $this->data['code'] = 0; return $this->data; } break; default: $this->data['message'] = "非法操作!"; $this->data['code'] = 0; break; } if(isset($info['member_id']) && $info['member_id']){ $token = auth('api')->tokenById($info['member_id']); if($token){ $this->data['data'] = [ 'access_token' => $token, 'token_type' => 'bearer', 'expires_in' => auth('api')->factory()->getTTL() * 60 ]; }elseif(isset($info['openid']) && $info['openid']){ $this->data['data'] = $info; $this->data['message'] = "初次登录未绑定用户,请先绑定用户,或注册新用户绑定!"; $this->data['code'] = 100; }else{ $this->data['message'] = "登录失败!"; $this->data['code'] = 0; } }else{ if(isset($info['openid']) && $info['openid']){ $this->data['data'] = $info; $this->data['message'] = "初次登录未绑定用户,请先绑定用户,或注册新用户绑定!"; $this->data['code'] = 100; }else{ $this->data['message'] = "登录失败!"; $this->data['code'] = 0; } } }else{ $this->data['message'] = "非法操作!"; $this->data['code'] = 0; } return response()->json($this->data); } /** * @title 微信公众号验证 * * @param OauthService $service * @return void */ public function serve(OauthService $service){ return $service->WechatServe(); } /** * @title 获取微信jssdk配置 * * @param WechatService $service * @return void */ public function jssdk(OauthService $service){ try { $this->data['data'] = $service->getJsSdk($this->request); } catch (\think\Exception $e) { $this->data['message'] = $e->getMessage(); $this->data['code'] = 0; } return $this->data; } public function invitecode(Request $request, WechatService $service){ try { $this->data['data'] = $service->getInviteCode($request); } catch (\think\Exception $e) { $this->data['message'] = $e->getMessage(); $this->data['code'] = 0; } return $this->data; } public function qrcode(Request $request, WechatService $service){ try { $request->mergeIfMissing([ 'doctor_id' => auth('doctor')->id(), ]); $this->data['data'] = $service->getSingleQrcode($request); } catch (\think\Exception $e) { $this->data['message'] = $e->getMessage(); $this->data['code'] = 0; } return $this->data; } }