import { defineStore } from 'pinia'

export const useSpringFestival = defineStore('springFestival', {
  state: () => ({
    // 抽奖模块
    lotteryRewards: {}, // 抽奖奖池
    tickets: 0, // 抽奖券数量
    luckyUsers: [], //中奖用户列表
    userInfo: {}, // 用户信息
    userIdentity: {}, // 用户身份
    currentEarnings: 0, // 当前收益
    selectedPayee: {}, // 选中的收款人
    taskList: [], // 任务列表

    // 抽奖排名模块
    lotteryPageNo: 0, // 抽奖排名页码
    lotteryRanking: [], // 抽奖排名
    addLotteryRanking: [], // 补充的抽奖排名
    myLotteryRanking: {}, // 我的抽奖排名

    // 排行榜奖励模块
    rankingRewards: {}, // 排名奖池

    // 充值排名模块
    rechargePageNo: 0, // 充值排名页码
    rechargeRanking: [], // 充值排名
    addRechargeRanking: [], // 补充的充值排名
    myRechargeRanking: {}, // 我的充值排名

    // 充值奖池模块
    myRechargeRecode: {}, // 我的充值记录
    RechargeRewards: {}, // 充值奖池

    resultShow: false,
    result: [], // 抽奖结果

    drawRecordShow: false,
    myRecords: [], // 我的抽奖记录

    receiveRecordShow: false,
    receiveRecord: [], // 领取抽奖券记录

    taskListShow: false,
    checkDate: '', // 对应几号
    checkStatus: false, // 是否已看过

    earningsHelpShow: false, // 收益help展示
    rechargeHelpShow: false, // 充值help展示
  }),
  actions: {
    // 重置除了checkDate和checkStatus的属性
    clear() {
      const excludedFields = ['checkDate', 'checkStatus'] // 不重置的字段

      for (const key in this.$state) {
        if (!excludedFields.includes(key)) {
          if (typeof this.$state[key] === 'string') {
            this.$state[key] = ''
          } else if (Array.isArray(this.$state[key])) {
            this.$state[key] = []
          } else if (typeof this.$state[key] === 'object') {
            this.$state[key] = {}
          } else if (typeof this.$state[key] === 'number') {
            this.$state[key] = 0
          } else if (typeof this.$state[key] === 'boolean') {
            this.$state[key] = false
          } else {
            console.log('未知类型：', key, this.$state[key])
          }
        }
      }
    },
  },

  persist: true,
})
