other_login_provider.dart 3.76 KB
import 'dart:async';

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';
import 'dart:convert';

/**
 * 第三方登陆
 */
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 {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.send_vc_code,
          data: params, showLoading: false);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data.isEmpty) {
          return false;
        } else {
          Map<String, dynamic> data = jsonDecode(baseResp.data);
          //解析解析
          if (data['status'] == 'success') {
            return true;
          }
          // phoneCodeSunModel = PhoneCodeModel.fromJson(jsonDecode(baseResp.data)).data;
          return false;
        }
      } else {
        Utils.showToast(baseResp.msg ?? "");

        return false;
      }
    } catch (error) {}
    return false;
  }

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

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

        return checkbindPhoneSunModel;
      }
    } catch (error) {}
    return null;
  }
}