import { cancelOrder, takeOrder, delOrder, payOrder } from "@/api/order";
import dialog from "@/utils/dialog";
import { weappPay } from "@/libs/wechat";

import { _router } from '@/utils'

export function cancelOrderHandle(orderId) {
  return new Promise((resolve, reject) => {
    uni.showModal({
      title: '提示',
      content: '确认取消该订单?',
      success(res) {
        if (res.confirm) {
          cancelOrder(orderId)
            .then(res => {
              uni.showToast({
                title: '取消成功', icon: 'success', duration: 2000
              });
              resolve(res);
            })
            .catch(err => {
              uni.showToast({
                title: '取消失败', icon: 'none', duration: 2000
              });
              reject(err);
            });
        } else if (res.cancel) {
        }
      }
    })
  });
}

export function takeOrderHandle(orderId) {
  return new Promise((resolve, reject) => {
    takeOrder(orderId)
      .then(res => {
        uni.showToast({
          title: '收货成功', icon: 'success', duration: 2000
        });
        resolve(res);
      })
      .catch(err => {
        uni.showToast({
          title: '收货失败', icon: 'none', duration: 2000
        });
        reject(err);
      });
  });
}

export function delOrderHandle(orderId) {
  return new Promise((resolve, reject) => {
    dialog.confirm({
      mes: "确认删除该订单?",
      opts() {
        delOrder(orderId)
          .then(res => {
            uni.showToast({
              title: '删除成功', icon: 'success', duration: 2000
            });
            resolve(res);
          })
          .catch(err => {
            uni.showToast({
              title: '删除失败', icon: 'none', duration: 2000
            });
            reject(err);
          });
      }
    });
  });
}

// 使用订单号进行支付
export async function payOrderHandle(orderId, type, from) {
  return new Promise((resolve, reject) => {
    uni.showLoading({
      title: "支付中",
      mask: true
    });
    payOrder(orderId, type, from)
      .then(async res => {
        await handleOrderPayResults(res.data, type)
        resolve()
      })
      .catch(err => {
        reject()
        uni.hideLoading()
        uni.showToast({
          title: err.msg || err.response.data.msg || err.response.data.message || '订单支付失败',
          icon: "none",
          duration: 2000,
        });
      });
  });
}

// 处理调用支付接口的逻辑
// @type create(创建订单)||pay(支付订单)
export function handleOrderPayResults(data, type, payType) {
  console.log(data, type, payType)

  console.log(data, type)
  return new Promise((resolve, reject) => {
    uni.hideLoading()
    switch (data.status) {
      // 订单号已存在
      case "ORDER_EXIST":
        resolve()
        break;
      // 取消支付
      case "EXTEND_ORDER":
        uni.showToast({
          title: data.msg,
          icon: "none",
          duration: 2000,
        });
        resolve()
        goOrderDetails(data.result.orderId, type)
        break;
      case "PAY_DEFICIENCY":
        break;
      // 支付出错
      case "PAY_ERROR":
        uni.showToast({
          title: data.msg,
          icon: "none",
          duration: 2000,
        });
        reject()
        goOrderDetails(data.result.orderId, type)
        break;
      // 未传递支付环境
      case "SUCCESS":
        uni.showToast({
          title: data.msg || data.payMsg,
          icon: "none",
          duration: 2000,
        });
        resolve()
        goOrderDetails(data.result.orderId, type)
        break;
      // H5支付
      case "WECHAT_H5_PAY":
        goOrderDetails(data.result.orderId, type)
        console.log(data)
        setTimeout(() => {
          resolve()
          // #ifdef H5
          // "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx15171343713577e9f3a418b0865ef90000&package=2547890641"
          // location.href = data.result.jsConfig.mweb_url;
          // #endif
        }, 100);
        break;
      // 小程序支付
      case "WECHAT_PAY":
        weappPay(data.result.jsConfig).finally(() => {
          resolve()
          goOrderDetails(data.result.orderId, type)
        }).then(res => {
          // #ifdef MP-WEIXIN
          subscribeMessage()
          // #endif
        })
        break;
      // APP支付
      case "WECHAT_APP_PAY":
        weappPay(data.result.jsConfig).finally(() => {
          resolve()
          goOrderDetails(data.result.orderId, type)
        })
        break;
    }
  })
}

export function subscribeMessage() {
  // 调用订阅
  console.log('调用订阅')
  uni.requestSubscribeMessage({
    tmplIds: ['W5r2c2kzhbq8uxStkPAVx_sk-5aapMFCqe7b7KU5jXI', '2CB_1UyQrbnlyjJa5syraqJ3cfztPPDOAHe3DEXpMjg', 'vuztugw9VbKbKJDAAVePkjqPpT5mdoREpd4Aq7EGPRU'],
    success(res) { 
      console.log(res)
    },
    fail(error){
      console.log(error)
    }
  })
}


export function goOrderDetails(id, type) {
  // 创建订单时跳转到详情
  if (type == 'create') {
    console.log(_router)
    _router.replace({
      path: "/pages/order/OrderDetails/index",
      query: {
        id
      },
    });
  }
}