import { baseUrl } from "../../../request";
const { notLogin } = require('../../../utils/util')

// pages/course/courseOrderList/courseOrderList.js
Page({
  data: {
    orderList: [],              // 后端返回的订单列表
    hasModalShown: false,   // 弹框只显示一次
    isMaskVisible: false
  },

  onLoad(options) {
    this.fetchOrders();
  },
  onHide() {
    clearInterval(this._timer);
  },
  onUnload() {
    clearInterval(this._timer);
  },
  onShow() {
    this.fetchOrders()
  },

  // 拉取后端接口
  fetchOrders() {
    wx.request({
      url: baseUrl + '/courseOrder/query/list',  // 替换为真实接口
      method: 'POST',
      header: {
        Authorization: wx.getStorageSync('token')
      },
      success: res => {
        console.log('课程订单列表---->',res.data.data);
        if (res.data.code === 1) {
          const now = Date.now();
          let list = res.data.data.map(item => {
            // 计算从 createTime 到 now 剩余秒数
            const createMs = new Date(item.createTime.replace(/-/g,'/')).getTime();
            let diff = Math.floor((createMs + 15*60*1000 - now) / 1000);

            // 只有“待支付”才需要倒计时、过期置“交易取消”
            if (item.orderStatus === '待支付') {
              if (diff <= 0) {
                item.orderStatus = '交易取消';
                diff = 0;
                // 首次检测到过期就弹框
                if (!this.data.hasModalShown) {
                  wx.showModal({
                    title: '提示',
                    content: '订单超时未支付，已取消',
                    showCancel: false
                  });
                  this.setData({ hasModalShown: true });
                }
              }
              item.countDown = diff;
              const m = Math.floor(diff / 60);
              const s = diff % 60;
              item.countDownStr = `${m}分${s < 10 ? '0'+s : s}秒`;
            } else {
              item.countDown = 0;
              item.countDownStr = '';
            }
            return item;
          });

          this.setData({ orderList: list }, () => {
            // 初始处理完后启动全局定时器
            this.startTimer();
          });

        } else {
          notLogin(res.data.message)
        }
      },
      fail: () => {
        wx.showToast({ title: '网络错误', icon: 'none' });
      }
    });
  },

  // 每秒更新所有待支付订单的倒计时
  startTimer() {
     // ← 新增：如果已有定时器，先清掉它
     if (this._timer) {
      clearInterval(this._timer);
    }
    this._timer = setInterval(() => {
      const updated = this.data.orderList.map(item => {
        if (item.orderStatus === '待支付' && item.countDown > 0) {
          const cd = item.countDown - 1;
          item.countDown = cd;
          const m = Math.floor(cd / 60);
          const s = cd % 60;
          item.countDownStr = `${m}分${s < 10 ? '0'+s : s}秒`;

          if (cd <= 0) {
            item.orderStatus = '交易取消';
            item.countDownStr = '';
            if (!this.data.hasModalShown) {
              wx.showModal({
                title: '提示',
                content: '订单超时未支付，已取消',
                showCancel: false
              });
              this.setData({ hasModalShown: true });
            }
          }
        }
        return item;
      });
      this.setData({ orderList: updated });
    }, 1000);
  },

  showIsPayModal(e) {
    const orderId = e.currentTarget.dataset.orderId;
    wx.showModal({
      title: '下单成功',
      content: '您确定要支付吗？',
      cancelText: '取消',
      confirmText: '确定',
      success: (res) => {
        if (res.confirm) {
          this.payOrder(orderId);
        } else if (res.cancel) {
          this.setData({ isMaskVisible: false });
        }
      },
      fail: () => {
        wx.hideLoading();
        wx.showToast({
          title: '网络错误，下单失败',
          icon: 'none'
        });
      }
    });
  },
  payOrder(orderId) {
    // 同样先显示遮罩
 this.setData({ isMaskVisible: true });
   wx.showLoading({ title: '支付中...'});
   wx.request({
     url: baseUrl + '/courseOrder/payment',
     method: 'POST',
     header: { Authorization: wx.getStorageSync('token') },
     data: { id: orderId},
     success: res => {
       wx.hideLoading();
       if (res.data.code === 1) {
         // 支付成功，跳转详情页
         wx.redirectTo({
           url: `/pages/course/orderDetail/orderDetail?id=${orderId}`,
           success: res => {
               // 先把遮罩关掉
               this.setData({ isMaskVisible: false });
           }
         });
       } else {
         this.setData({ isMaskVisible: false });
         wx.showToast({ title: res.data.message || '支付失败', icon: 'none' });
       }
     },
     fail: () => {
       wx.hideLoading();
       this.setData({ isMaskVisible: false });
       wx.showToast({ title: '网络错误，支付失败', icon: 'none' });
     }
   });
 },

  // 跳转订单详情
  gotoOrderDetail(e) {
    const orderId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/course/orderDetail/orderDetail?id=${orderId}`,
    })
  },

  // 取消订单
  cancelOrder(e) {
    // console.log(e);
    const id = e.currentTarget.dataset.id;
    wx.showModal({
      title: '取消订单',
      content: '是否要取消订单？',
      success: res => {
        if (res.confirm) {
          wx.request({
            url: baseUrl + "/courseOrder/cancel",
            method: 'POST',
            data: { courseId: id },
            header: { Authorization: wx.getStorageSync('token') },
            success: () => this.fetchOrders()
          });
        }
      }
    });
  }

});
