| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import { ref } from 'vue'
- import { request } from '@/utils/request'
-
- // 签到状态管理
- export function useSignSystem() {
- const signedDays = ref(0)
- const todaySigned = ref(false)
- const signRewards = ref([])
-
- // 加载签到状态
- const loadSignStatus = async () => {
- try {
- const res = await request({
- url: '/sign/status',
- method: 'GET',
- headers: { 'Authorization': `Bearer ${uni.getStorageSync('token')}` }
- })
-
- signedDays.value = res.data.signedDays || 0
- todaySigned.value = res.data.todaySigned || false
- signRewards.value = res.data.rewards || generateDefaultRewards()
- return true
- } catch (err) {
- console.error('签到状态加载失败', err)
- return false
- }
- }
-
- // 执行签到
- const doSign = async () => {
- if (todaySigned.value) return
-
- try {
- uni.showLoading({ title: '签到中...' })
- const res = await request({
- url: '/sign/do',
- method: 'POST',
- headers: { 'Authorization': `Bearer ${uni.getStorageSync('token')}` }
- })
-
- if (res.data.success) {
- signedDays.value++
- todaySigned.value = true
- uni.showToast({ title: `签到成功!获得${res.data.reward}金币`, icon: 'success' })
- return res.data.reward
- }
- } catch (err) {
- uni.showToast({ title: '签到失败', icon: 'none' })
- } finally {
- uni.hideLoading()
- }
- }
-
- // 生成默认奖励规则
- const generateDefaultRewards = () => {
- return [
- { day: 1, reward: 10 },
- { day: 2, reward: 15 },
- { day: 3, reward: 20 },
- { day: 4, reward: 25 },
- { day: 5, reward: 30 },
- { day: 6, reward: 40 },
- { day: 7, reward: 50, extra: '双倍金币卡' }
- ]
- }
-
- return {
- signedDays,
- todaySigned,
- signRewards,
- loadSignStatus,
- doSign
- }
- }
|