store_wine_provider.dart 10.1 KB
import 'dart:async';
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:provider/provider.dart';

import '../constant/constant.dart';
import '../models/out_wine_record_model.dart';
import '../models/phone_code_model.dart';
import '../models/wine_manage_model.dart';
import '../net/base_resp.dart';
import '../net/dio_util.dart';
import '../net/http_url.dart';
import '../utils/utils.dart';

/**
 * 餐厅详情
 */
class StoreWineProvider with ChangeNotifier {
  PageState pageStateAll = PageState.Loading; //全部在店
  PageState pageStateRecord = PageState.Loading; //取酒记录单个存酒
  PageState pageStateDetail = PageState.Loading; //存酒详情
  PageState pageStateDetailRecord = PageState.Success; //出库记录列表详情
  PageState pageStateRecordHome = PageState.Loading; //取酒记录首页
  List<WineManageModel>? wineManageList; //存酒列表数据

  late WineManageModel wineManageDetail; //存酒详情数据

  List<OutWineRecordSunModel>? outWineRecordData; //某个存酒详情的出库记录
  List<OutWineRecordSunModel>? outWineRecordHomeData; //存酒详情的出库记录
  String? code; //验证码
  // PhoneCodeSunModel phoneCodeSunModel;

  /// 给手机发送短信验证码
  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 == null) {
          return false;
        } else {
          //解析解析
          if (jsonDecode(baseResp.data)['status'] == 'success') {
            return true;
          } else {
            return false;
          }
        }
      } else {
        Utils.showToast(baseResp.msg ?? "");
              return false;
      }
    } catch (error) {}
    return false;
  }

  //  设置商家存酒管理员
  Future<bool> setStoreWineBySellerUser(
      BuildContext context, Map<String, String?> params,
      {bool showLoading = true}) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.set_store_wine_by_seller_user,
          data: params, showLoading: showLoading);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data == 0 || baseResp.data == 1) {
          return true;
        } else {
          Utils.showToast('设置商家存酒管理员失败,请重试');
        }
      } else {
        Utils.showToast(baseResp.msg ?? '设置商家存酒管理员失败');
      }
      return false;
    } catch (error) {
      print(error.toString());
      Utils.showToast('设置商家存酒管理员失败,请重试');
      return false;
    }
  }

  //  商家新建存酒
  Future<bool> setStoreWineBySeller(
      BuildContext context, Map<String, String?> params,
      {bool showLoading = true}) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.set_store_wine_by_seller,
          data: params, showLoading: showLoading);
      if (baseResp.code == Constant.status_success) {
        if (params['id'] != null) {
          //修改存酒信息
          if (baseResp.data == 1 || baseResp.data == 0) {
            return true;
          } else {
            Utils.showToast('修改存酒失败,请重试');
          }
        } else {
          if (baseResp.data is Map && baseResp.data['id'] is String) {
            return true;
          } else {
            Utils.showToast('新建存酒失败,请重试');
          }
        }
      } else {
        if (params['id'] != null) {
          Utils.showToast(baseResp.msg ?? '修改存酒失败,请重试');
        } else {
          Utils.showToast(baseResp.msg ?? '新建存酒失败,请重试');
        }
      }
      return false;
    } catch (error) {
      print(error.toString());
      if (params['id'] != null) {
        Utils.showToast('修改存酒失败,请重试');
      } else {
        Utils.showToast('新建存酒失败,请重试');
      }
      return false;
    }
  }

  // 获取存酒列表
  Future<bool> getStoreWineBySeller(
      BuildContext context, Map<String, String?> params,
      {bool showLoading = true}) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.get_store_wine_by_seller,
          data: params,
          showLoading: pageStateAll == PageState.Loading ? false : showLoading);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data == false) {
          pageStateAll = PageState.Empty;
        } else {
          wineManageList = WineManageFaModel.fromJson(
                  baseResp.responseData as Map<String, dynamic>)
              .data;
          print(wineManageList);
          // wineManageList.sort((a, b) => a.cdate.compareTo(b.cdate));
          // print(wineManageList);
          if (wineManageList!.length == 0) {
            pageStateAll = PageState.Empty;
          } else {
            pageStateAll = PageState.Success;
          }
        }
        notifyListeners();
        return true;
      } else {
        Utils.showToast(baseResp.msg!);
        pageStateAll = PageState.ConnectivityError;
      }
      notifyListeners();
      return false;
    } catch (error) {
      pageStateAll = PageState.ConnectivityError;
      print(error.toString());
      Utils.showToast('获取存酒列表失败,请重试');
      notifyListeners();
      return false;
    }
  }

  //  取酒出库提交
  Future<bool> setStoreWineBySellerCheck(
      BuildContext context, Map<String, String?> params,
      {bool showLoading = true}) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.set_store_wine_by_seller_check,
          data: params, showLoading: showLoading);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data is Map && baseResp.data['id'] is String) {
          return true;
        } else {
          Utils.showToast('存酒出库失败,请重试');
        }
      } else {
        Utils.showToast(baseResp.msg ?? '存酒出库失败,请重试');
      }
      return false;
    } catch (error) {
      print(error.toString());
      Utils.showToast('存酒出库失败,请重试');
      return false;
    }
  }

  // 获取存酒详情
  Future<bool> getStoreWineById(
      BuildContext context, Map<String, String?> params,
      {bool showLoading = true}) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.get_store_wine_by_id,
          data: params,
          showLoading:
              pageStateDetail == PageState.Loading ? false : showLoading);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data is Map) {
          wineManageDetail = WineManageModel.fromJson(baseResp.data);
          pageStateDetail = PageState.Success;
        } else {
          pageStateDetail = PageState.Empty;
        }
        notifyListeners();
        return true;
      } else {
        Utils.showToast(baseResp.msg ?? '获取存酒详情失败');
        pageStateDetail = PageState.ConnectivityError;
      }
      notifyListeners();
      return false;
    } catch (error) {
      pageStateDetail = PageState.ConnectivityError;
      print(error.toString());
      Utils.showToast('获取存酒详情失败');
      notifyListeners();
      return false;
    }
  }

  //  根据存酒ID获取取酒记录
  Future<bool> getStoreWineCheckByWid(
      BuildContext context, Map<String, String?> params,
      {bool showLoading = true}) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.get_store_wine_check_by_wid,
          data: params,
          showLoading:
              pageStateRecord == PageState.Loading ? false : showLoading);
      if (baseResp.code == Constant.status_success) {
        outWineRecordData = OutWineRecordModel.fromJson(
                baseResp.responseData as Map<String, dynamic>)
            .data;
        if (outWineRecordData!.length == 0) {
          pageStateRecord = PageState.Empty;
        } else {
          pageStateRecord = PageState.Success;
        }

        notifyListeners();
        return true;
      } else {
        Utils.showToast(baseResp.msg ?? '获取取酒记录失败');
        pageStateRecord = PageState.ConnectivityError;
      }
      notifyListeners();
      return false;
    } catch (error) {
      pageStateRecord = PageState.ConnectivityError;
      print(error.toString());
      Utils.showToast('获取取酒记录失败');
      notifyListeners();
      return false;
    }
  }

  // 获取取酒记录
  Future<bool> getStoreWineCheckList(
      BuildContext context, Map<String, String?> params,
      {bool showLoading = true}) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.get_store_wine_check_list,
          data: params,
          showLoading:
              pageStateRecordHome == PageState.Loading ? false : showLoading);
      if (baseResp.code == Constant.status_success) {
        outWineRecordHomeData = OutWineRecordModel.fromJson(
                baseResp.responseData as Map<String, dynamic>)
            .data;
        if (outWineRecordHomeData!.length == 0) {
          pageStateRecordHome = PageState.Empty;
        } else {
          pageStateRecordHome = PageState.Success;
        }
        notifyListeners();
        return true;
      } else {
        Utils.showToast(baseResp.msg ?? '获取取酒记录失败');
        pageStateRecordHome = PageState.ConnectivityError;
      }
      notifyListeners();
      return false;
    } catch (error) {
      pageStateRecordHome = PageState.ConnectivityError;
      print(error.toString());
      Utils.showToast('获取取酒记录失败');
      notifyListeners();
      return false;
    }
  }
}