// 管事会员记录页面逻辑
import request from '../../utils/request.js';

// 每页数据条数常量 - 统一管理，方便修改
const MEIYE_TIAOSHU = 50;

Page({
  data: {
    // 从全局变量获取的数据
    yaoqingzongshu: 0,       // 邀请打手总数
    fenyongzonge: '0.00',    // 分成总额
    
    // 从接口获取的数据
    chongzhiDashouShuliang: 0, // 充值打手数量
    dashouList: [],          // 打手列表数据
    zongTiaoshu: 0,         // 总条数
    
    // 分页相关
    dangqianYe: 1,          // 当前页
    meiyouGengduo: false,   // 没有更多数据
    jiazaiZhong: false,     // 加载中状态
    jiazaiGengduo: false,   // 加载更多状态
    
    // UI状态
    cuowuTishi: '',         // 错误提示
    shuaxinKezhi: false,    // 刷新按钮是否可点击
    shuaxinCd: 2000,        // 刷新冷却时间（毫秒）
    
    // 常量（用于模板）
    meiyeTiaoshu: MEIYE_TIAOSHU  // 每页条数
  },

  onLoad(options) {
    // 从全局变量获取管事数据
    this.huoquQuanjubianliang();
    
    // 加载第一页数据
    this.jiazaiShuju(true);
  },

  onShow() {
    // 页面显示时检查全局变量是否有更新
    this.registerNotificationComponent();
    this.huoquQuanjubianliang();
  },
    // 🆕 新增：注册通知组件
    registerNotificationComponent() {
        const app = getApp();
        const notificationComp = this.selectComponent('#global-notification');
        
        if (notificationComp && notificationComp.showNotification) {
            console.log('🏪 商城页面注册通知组件');
            app.globalData.globalNotification = {
                show: (data) => notificationComp.showNotification(data),
                hide: () => notificationComp.hideNotification()
            };
        }
    },

  // 获取全局变量数据
  huoquQuanjubianliang() {
    const app = getApp();
    const guanshiData = app.globalData.guanshi;
    
    if (guanshiData) {
      this.setData({
        yaoqingzongshu: guanshiData.yaoqingzongshu || 0,
        fenyongzonge: guanshiData.fenyongzonge || '0.00'
      });
    }
  },

  // 加载数据核心方法
  async jiazaiShuju(chushihua = false) {
    // 防止重复请求
    if (this.data.jiazaiZhong) return;
    
    // 如果是初始化加载，重置分页
    if (chushihua) {
      this.setData({
        dangqianYe: 1,
        meiyouGengduo: false,
        dashouList: [],
        zongTiaoshu: 0,
        chongzhiDashouShuliang: 0
      });
    } else {
      // 上拉加载更多时，检查是否还有更多数据
      if (this.data.meiyouGengduo) return;
      
      // 如果有数据但不足一页，说明后端已经没数据了
      if (this.data.dashouList.length > 0 && this.data.dashouList.length < MEIYE_TIAOSHU) {
        this.setData({ meiyouGengduo: true });
        return;
      }
      
      // 如果数据量已经达到总条数，则不请求
      if (this.data.dashouList.length >= this.data.zongTiaoshu && this.data.zongTiaoshu > 0) {
        this.setData({ meiyouGengduo: true });
        return;
      }
    }
    
    // 设置加载状态
    this.setData({
      jiazaiZhong: chushihua ? true : false,
      jiazaiGengduo: !chushihua ? true : false,
      cuowuTishi: ''
    });
    
    try {
      const { dangqianYe } = this.data;
      
      // 严格按照您的request规范调用
      const res = await request({
        url: '/shangpin/fenhonghq',
        method: 'POST',
        data: {
          page: dangqianYe,
          page_size: MEIYE_TIAOSHU  // 使用统一常量
        }
      });
      
      // 处理返回数据
      if (res.data.code === 200) {
        const data = res.data.data || {};
        const newList = data.list || [];
        const total = data.total || 0;
        
        // 处理头像URL拼接
        const processedList = this.chuliTouxiangURL(newList);
        
        // 计算是否有更多数据
        const hasMoreData = processedList.length === MEIYE_TIAOSHU;
        
        // 更新数据
        this.setData({
          dashouList: chushihua ? processedList : [...this.data.dashouList, ...processedList],
          zongTiaoshu: total,
          chongzhiDashouShuliang: data.chongzhi_dashou_shuliang || 0,
          meiyouGengduo: !hasMoreData,
          dangqianYe: chushihua ? 2 : this.data.dangqianYe + 1
        });
        
        // 如果数据为空，显示空状态
        if (chushihua && processedList.length === 0) {
          wx.showToast({
            title: '暂无数据',
            icon: 'none',
            duration: 1500
          });
        }
        
        // 如果加载了数据，给个提示
        if (processedList.length > 0) {
          if (chushihua) {
            wx.showToast({
              title: `已加载${processedList.length}条记录`,
              icon: 'success',
              duration: 1000
            });
          }
        }
      } else {
        this.setData({
          cuowuTishi: res.data.msg || '数据加载失败'
        });
        wx.showToast({
          title: res.data.msg || '加载失败',
          icon: 'none',
          duration: 2000
        });
      }
    } catch (error) {
      console.error('加载数据失败:', error);
      this.setData({
        cuowuTishi: '网络错误，请检查网络连接'
      });
      wx.showToast({
        title: '网络错误',
        icon: 'none',
        duration: 2000
      });
    } finally {
      this.setData({ 
        jiazaiZhong: false,
        jiazaiGengduo: false
      });
    }
  },

  // 处理头像URL拼接
  chuliTouxiangURL(list) {
    const app = getApp();
    const ossUrl = app.globalData.ossImageUrl || '';
    
    return list.map(item => {
      // 确保有头像URL，如果没有则使用默认头像
      let touxiangUrl = item.avatar || '';
      if (touxiangUrl && !touxiangUrl.startsWith('http')) {
        touxiangUrl = ossUrl + touxiangUrl;
      }
      
      // 格式化时间
      let shijian = item.create_time || '';
      if (shijian) {
        // 如果是时间戳，转换为日期格式
        if (/^\d+$/.test(shijian)) {
          const date = new Date(parseInt(shijian));
          shijian = `${date.getMonth() + 1}月${date.getDate()}日 ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;
        } else {
          // 如果是字符串，提取日期和时间
          try {
            const dateObj = new Date(shijian);
            shijian = `${dateObj.getMonth() + 1}月${dateObj.getDate()}日 ${dateObj.getHours().toString().padStart(2, '0')}:${dateObj.getMinutes().toString().padStart(2, '0')}`;
          } catch (e) {
            shijian = shijian.substring(0, 10);
          }
        }
      }
      
      return {
        ...item,
        touxiangUrl: touxiangUrl || '/images/default-avatar.png',
        shijian: shijian,
        fenhong: parseFloat(item.fenhong || 0).toFixed(2)
      };
    });
  },

  // 刷新数据（带防重复点击）
  shuaxinShuju() {
    // 检查是否在冷却中
    if (this.data.shuaxinKezhi) {
      wx.showToast({
        title: `请等待${this.data.shuaxinCd/1000}秒`,
        icon: 'none',
        duration: 1000
      });
      return;
    }
    
    // 设置冷却状态
    this.setData({ shuaxinKezhi: true });
    
    // 显示刷新动画
    this.setData({
      jiazaiZhong: true
    });
    
    // 刷新数据
    this.jiazaiShuju(true).finally(() => {
      // 2秒后恢复按钮可点击
      setTimeout(() => {
        this.setData({ shuaxinKezhi: false });
      }, this.data.shuaxinCd);
    });
  },

  // 上拉加载更多
  shanglaJiazai() {
    // 没有更多数据时不再请求
    if (this.data.meiyouGengduo) {
      wx.showToast({
        title: '已经到底了',
        icon: 'none',
        duration: 1000
      });
      return;
    }
    
    // 如果正在加载，不再请求
    if (this.data.jiazaiGengduo || this.data.jiazaiZhong) {
      return;
    }
    
    this.jiazaiShuju(false);
  },

  // 重试加载
  chongshiJiazai() {
    this.setData({ 
      cuowuTishi: '',
      meiyouGengduo: false
    });
    this.jiazaiShuju(true);
  }
});