/**
 * 微信小程序签到功能API调用示例
 */

/**
 * 用户签到
 * @param {string} userId - 用户ID
 * @param {string} loginId - 登录ID
 * @returns {Promise} 返回签到结果
 */
function doWeappSignin(userId, loginId) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: '/apiajax.ashx', // 根据实际部署路径调整
      method: 'POST',
      data: {
        action: 'weapp_signin',
        userId: userId,
        LoginId: loginId
      },
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      success: function(res) {
        if (res.data) {
          resolve(res.data);
        } else {
          reject({ msg: '网络错误或服务器无响应' });
        }
      },
      fail: function(err) {
        reject(err);
      }
    });
  });
}

/**
 * 获取用户签到信息
 * @param {string} userId - 用户ID
 * @param {string} loginId - 登录ID
 * @returns {Promise} 返回签到信息
 */
function getWeappSigninInfo(userId, loginId) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: '/apiajax.ashx', // 根据实际部署路径调整
      method: 'GET',
      data: {
        action: 'weapp_getsignininfo',
        userId: userId,
        LoginId: loginId
      },
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      success: function(res) {
        if (res.data) {
          resolve(res.data);
        } else {
          reject({ msg: '网络错误或服务器无响应' });
        }
      },
      fail: function(err) {
        reject(err);
      }
    });
  });
}

/**
 * 微信小程序签到页面示例
 */
Page({
  data: {
    userInfo: null,
    continuousDays: 0,      // 连续签到天数
    isTodaySigned: false,   // 今天是否已签到
    lastSignInDate: '',     // 最近签到日期
    weekSigned: [],         // 本周签到情况
    rewardPoints: 0,        // 本次签到获得积分
    totalPoints: 0          // 总积分
  },

  onLoad: function(options) {
    // 页面加载时获取用户签到信息
    this.loadSigninInfo();
  },

  /**
   * 加载签到信息
   */
  loadSigninInfo: function() {
    const userId = wx.getStorageSync('userId');
    const loginId = wx.getStorageSync('LoginId');

    if (!userId || !loginId) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      return;
    }

    getWeappSigninInfo(userId, loginId)
      .then(res => {
        if (res.status === 1) {
          this.setData({
            continuousDays: parseInt(res.continuousDays),
            isTodaySigned: parseInt(res.isTodaySigned) === 1,
            lastSignInDate: res.lastSignInDate,
            weekSigned: res.weekSigned || []
          });
        } else {
          console.error('获取签到信息失败:', res.msg);
          wx.showToast({
            title: res.msg || '获取信息失败',
            icon: 'none'
          });
        }
      })
      .catch(err => {
        console.error('请求失败:', err);
        wx.showToast({
          title: '网络错误',
          icon: 'none'
        });
      });
  },

  /**
   * 执行签到
   */
  doSignin: function() {
    const userId = wx.getStorageSync('userId');
    const loginId = wx.getStorageSync('LoginId');

    if (!userId || !loginId) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      return;
    }

    if (this.data.isTodaySigned) {
      wx.showToast({
        title: '今天已签到',
        icon: 'none'
      });
      return;
    }

    wx.showLoading({
      title: '正在签到...'
    });

    doWeappSignin(userId, loginId)
      .then(res => {
        wx.hideLoading();
        
        if (res.status === 1) {
          // 签到成功
          this.setData({
            isTodaySigned: true,
            continuousDays: parseInt(res.continuousDays),
            rewardPoints: parseInt(res.rewardPoints),
            totalPoints: parseInt(res.totalPoints)
          });

          // 显示签到成功提示
          wx.showToast({
            title: `签到成功！获得${res.rewardPoints}积分`,
            icon: 'success'
          });

          // 更新界面显示
          this.updateUIAfterSignin();

        } else {
          wx.showToast({
            title: res.msg || '签到失败',
            icon: 'none'
          });
        }
      })
      .catch(err => {
        wx.hideLoading();
        console.error('签到请求失败:', err);
        wx.showToast({
          title: '网络错误',
          icon: 'none'
        });
      });
  },

  /**
   * 签到后更新UI
   */
  updateUIAfterSignin: function() {
    // 延迟重新加载信息，确保数据同步
    setTimeout(() => {
      this.loadSigninInfo();
    }, 1000);
  },

  /**
   * 显示签到奖励规则
   */
  showRule: function() {
    wx.showModal({
      title: '签到规则',
      content: '连续签到奖励规则：\n第1天: 5积分\n第2天: 10积分\n第3天: 15积分\n第4天: 20积分\n第5天: 25积分\n第6天: 30积分\n第7天: 50积分\n\n注意：中间断签将重新开始计算周期。',
      showCancel: false,
      confirmText: '我知道了'
    });
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh: function() {
    this.loadSigninInfo();
    wx.stopPullDownRefresh();
  }
});