├── php-api/ # 改造后的PHP接口层 ├── java-ad-service/ # 若依框架微服务(广告+VIP+分账) ├── uniapp-reader/ # UniApp前端项目 │ ├── pages/ # 各端页面 │ └──
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { ref } from 'vue'
  2. import { request } from '@/utils/request'
  3. // 签到状态管理
  4. export function useSignSystem() {
  5. const signedDays = ref(0)
  6. const todaySigned = ref(false)
  7. const signRewards = ref([])
  8. // 加载签到状态
  9. const loadSignStatus = async () => {
  10. try {
  11. const res = await request({
  12. url: '/sign/status',
  13. method: 'GET',
  14. headers: { 'Authorization': `Bearer ${uni.getStorageSync('token')}` }
  15. })
  16. signedDays.value = res.data.signedDays || 0
  17. todaySigned.value = res.data.todaySigned || false
  18. signRewards.value = res.data.rewards || generateDefaultRewards()
  19. return true
  20. } catch (err) {
  21. console.error('签到状态加载失败', err)
  22. return false
  23. }
  24. }
  25. // 执行签到
  26. const doSign = async () => {
  27. if (todaySigned.value) return
  28. try {
  29. uni.showLoading({ title: '签到中...' })
  30. const res = await request({
  31. url: '/sign/do',
  32. method: 'POST',
  33. headers: { 'Authorization': `Bearer ${uni.getStorageSync('token')}` }
  34. })
  35. if (res.data.success) {
  36. signedDays.value++
  37. todaySigned.value = true
  38. uni.showToast({ title: `签到成功!获得${res.data.reward}金币`, icon: 'success' })
  39. return res.data.reward
  40. }
  41. } catch (err) {
  42. uni.showToast({ title: '签到失败', icon: 'none' })
  43. } finally {
  44. uni.hideLoading()
  45. }
  46. }
  47. // 生成默认奖励规则
  48. const generateDefaultRewards = () => {
  49. return [
  50. { day: 1, reward: 10 },
  51. { day: 2, reward: 15 },
  52. { day: 3, reward: 20 },
  53. { day: 4, reward: 25 },
  54. { day: 5, reward: 30 },
  55. { day: 6, reward: 40 },
  56. { day: 7, reward: 50, extra: '双倍金币卡' }
  57. ]
  58. }
  59. return {
  60. signedDays,
  61. todaySigned,
  62. signRewards,
  63. loadSignStatus,
  64. doSign
  65. }
  66. }