other_login_provider.dart 3.43 KB
import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/check_seller_acc_model.dart';
import 'package:one_key/models/checkbind_phone_model.dart';
import 'package:one_key/models/phone_code_model.dart';
import 'package:one_key/net/base_resp.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/net/http_url.dart';
import 'package:one_key/utils/utils.dart';

/**
 * 第三方登陆
 */
class OtherLoginProvider extends ChangeNotifier {
  String code; //验证码
  PhoneCodeSunModel phoneCodeSunModel;
  PageState pageState = PageState.Loading; //是否有店铺
  List<CheckSellerAccSunModel> sellerList = []; //绑定微信或者手机号码的商家列表

  /// 给手机发送短信验证码
  Future<bool> getPhoneCode(BuildContext context, Map<String, String> params,
      {isShowLoading = true}) async {
    BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
        .request<Map<String, dynamic>>(
            context, Method.post, HttpUrl.send_vc_code,
            data: params, showLoading: false)
        .catchError((error) {});
    if (baseResp.code == Constant.status_success) {
      if (baseResp.data.isEmpty) {
        return false;
      } else {
        //解析解析
        phoneCodeSunModel = PhoneCodeModel.fromJson(baseResp.responseData).data;
        return true;
      }
    } else {
      if (baseResp != null) {
        Utils.showToast(baseResp.msg ?? "");
      }
      return false;
    }
  }

  /// APP微信登录后检测是否存在商家
  Future<List<CheckSellerAccSunModel>> checkSellerAcc(
      BuildContext context, Map<String, String> params,
      {isShowLoading = true, showLoading = false}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.post, HttpUrl.check_seller_acc,
            data: params,
            showLoading: pageState == PageState.Loading ? false : showLoading)
        .catchError((error) {
      print(error);
    });
    if (baseResp.code == Constant.status_success) {
      if (baseResp.data != null) {
        //解析解析
        pageState = PageState.Success;
        sellerList = CheckSellerAccModel.fromJson(baseResp.responseData).data;
      } else {
        pageState = PageState.Empty;
      }
    } else {
      if (baseResp != null) {
        Utils.showToast(baseResp.msg ?? "");
      }
      pageState = PageState.ConnectivityError;
    }
    notifyListeners();
    return sellerList;
  }

  /// APP微信登录后检测是否绑定过手机号
  Future<CheckbindPhoneSunModel> checkbindPhone(
      BuildContext context, Map<String, String> params,
      {isShowLoading = true}) async {
    BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
        .request<Map<String, dynamic>>(
            context, Method.post, HttpUrl.check_bind_phone,
            data: params, showLoading: false)
        .catchError((error) {});
    CheckbindPhoneSunModel checkbindPhoneSunModel;
    if (baseResp.code == Constant.status_success) {
      if (baseResp.data == null) {
        return checkbindPhoneSunModel;
      } else {
        //解析解析
        checkbindPhoneSunModel =
            CheckbindPhoneModel.fromJson(baseResp.responseData).data;
        return checkbindPhoneSunModel;
      }
    } else {
      if (baseResp != null) {
        Utils.showToast(baseResp.msg ?? "");
      }
      return checkbindPhoneSunModel;
      
    }
  }
}