finance_provider.dart 7.74 KB
import 'package:flutter/material.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:provider/provider.dart';

import '../constant/constant.dart';
import '../constant/error.dart';
import '../constant/state.dart';
import '../models/discount_order_info_model.dart';
import '../models/discount_order_model.dart';
import '../models/payment_code_model.dart';
import '../net/base_resp.dart';
import '../net/dio_util.dart';
import '../net/http_url.dart';
import '../utils/utils.dart';

class FinanceProvider extends ChangeNotifier {
  PageState pageState = PageState.Loading;
  PageState pageStateRecordHome = PageState.Loading;
  PageState pageStateRecordSearch = PageState.Loading;
  PageState pageStateRecordDetail = PageState.Loading;
  String paymentCodeUrl = '';
  List<DiscountOrderListModelData?> discountOrderList = [];

  DiscountOrderInfoModelData? discountOrderInfoModelData;

  ///客户经理获取所创建活动列表
  Future createPayQrcode(BuildContext context, {isShowLoading = true}) async {
    try {
      Map<String, String?> params = {
        'sellerid':
            Provider.of<UserModel>(context, listen: false).user!.sellerid,
      };
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.create_pay_qrcode,
          data: params, showLoading: isShowLoading);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data.isEmpty) {
          // if (isShowLoading) {
          pageState = PageState.Empty;
          // }
        } else {
          // if (isShowLoading) {
          pageState = PageState.Success;
          // }
        }
        paymentCodeUrl =
            PaymentCodeModel.fromJson(baseResp.responseData!).data ?? '';
      } else {
        if (isShowLoading) {
          pageState = PageState.ConnectivityError;
        }
        if (baseResp != null) {
          Utils.showToast(baseResp.msg ?? "");
        }
      }

      notifyListeners();
    } catch (error) {
      print(error.toString());

      if (error is MyError) {
        if (isShowLoading) {
          switch (error.type) {
            case 1:
              pageState = PageState.ConnectivityError;
              break;
            case 2:
              pageState = PageState.ConnectivityTimeOut;
              break;
            default:
              pageState = PageState.ConnectivityError;
              break;
          }
        }
      }
      notifyListeners();
    }
  }

  ///获取交易记录列表
  Future getDiscountOrderList(BuildContext context, Map<String, String?> params,
      {String from = 'home', isShowLoading = true}) async {
    PageState pageStateTemp = PageState.Loading;
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.get_discount_orderlist,
          data: params, showLoading: isShowLoading);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data.isEmpty) {
          // if (isShowLoading) {
          pageStateTemp = PageState.Empty;
          // }
        } else {
          // if (isShowLoading) {
          pageStateTemp = PageState.Success;
          // }
        }
        discountOrderList =
            DiscountOrderListModel.fromJson(baseResp.responseData!).data ?? [];

        if (discountOrderList.length > 0) {
          for (var element in discountOrderList) {
            if (element?.list != null) {
              List<DiscountOrderListModelDataList?> temp = [];
              for (var elementSub in element!.list!) {
                temp.add(DiscountOrderListModelDataList.fromJson(
                    elementSub!.toJson()));
                if ((elementSub.refundId != null && elementSub.status == '2') ||
                    elementSub.status == '4' ||
                    elementSub.status == '5') {
                  //这笔数据是退款
                  elementSub.status = '00';
                  temp.add(elementSub);
                }
              }
              element.list = temp;
            }
          }
        }
        print(discountOrderList);
      } else {
        if (isShowLoading) {
          pageStateTemp = PageState.ConnectivityError;
        }
        if (baseResp != null) {
          Utils.showToast(baseResp.msg ?? "");
        }
      }

      if (from == 'home') {
        pageStateRecordHome = pageStateTemp;
      } else {
        pageStateRecordSearch = pageStateTemp;
      }
      notifyListeners();
    } catch (error) {
      print(error.toString());

      if (error is MyError) {
        if (isShowLoading) {
          switch (error.type) {
            case 1:
              pageStateTemp = PageState.ConnectivityError;
              break;
            case 2:
              pageStateTemp = PageState.ConnectivityTimeOut;
              break;
            default:
              pageStateTemp = PageState.ConnectivityError;
              break;
          }
        }
      }
      if (from == 'home') {
        pageStateRecordHome = pageStateTemp;
      } else {
        pageStateRecordSearch = pageStateTemp;
      }
      notifyListeners();
    }
  }

  /// 通过支付订单号或退款订单号获取订单
  Future getDiscountOrderInfo(BuildContext context, Map<String, String?> params,
      {isShowLoading = true}) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.get_discount_order_info,
          data: params, showLoading: false);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data.isEmpty) {
          // if (isShowLoading) {
          pageStateRecordDetail = PageState.Empty;
          // }
        } else {
          // if (isShowLoading) {
          pageStateRecordDetail = PageState.Success;
          // }
        }
        discountOrderInfoModelData =
            DiscountOrderInfoModel.fromJson(baseResp.responseData!).data;
      } else {
        if (isShowLoading) {
          pageStateRecordDetail = PageState.ConnectivityError;
        }
        if (baseResp != null) {
          Utils.showToast(baseResp.msg ?? "");
        }
      }

      notifyListeners();
    } catch (error) {
      print(error.toString());

      if (error is MyError) {
        if (isShowLoading) {
          switch (error.type) {
            case 1:
              pageStateRecordDetail = PageState.ConnectivityError;
              break;
            case 2:
              pageStateRecordDetail = PageState.ConnectivityTimeOut;
              break;
            default:
              pageStateRecordDetail = PageState.ConnectivityError;
              break;
          }
        }
      }
      notifyListeners();
    }
  }

  /// 优惠支付订单退款
  Future discountPayRefundApply(
      BuildContext context, Map<String, String?> params,
      {isShowLoading = true}) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.discount_pay_refund_apply,
          data: params, showLoading: false);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data is Map) {
          if (baseResp.data['code'] != null) {
            //错误了
            if (baseResp.data['code'] == 'NOT_ENOUGH') {
              return '您的账户余额不足,无法支付本次退款,请往账户中充值后,再进行退款操作!';
            } else {
              return baseResp.data['message'] ?? '未知错误';
            }
          } else {
            //退款成功
            return true;
          }
        }
      } else {
        if (baseResp != null) {
          Utils.showToast(baseResp.msg ?? "");
        }
        notifyListeners();
        return false;
      }
    } catch (error) {
      print(error.toString());

      if (error is MyError) {}
      notifyListeners();
      return false;
    }
  }
}