import $store from '@/sheep/store'; import $helper from '@/sheep/helper'; import dayjs from 'dayjs'; import { ref, computed } from 'vue'; import test from '@/sheep/helper/test.js'; import AuthUtil from '@/sheep/api/member/auth'; import sheep from '@/sheep'; import SignInApi from '@/sheep/api/member/signin'; let time = 30; let timer = null; // 登录 async function onSign() { const { code, data } = await SignInApi.createSignInRecord(); if (code === 0) { showSignUpModal(data) } if (timer) { clearInterval(timer); } uni.setStorageSync('isRun', false); uni.setStorageSync('isSign', true); } // 每日重置签到状态 export function resetSignStatusIfNeeded() { const today = new Date().toISOString().slice(0, 10); // 获取当前日期,格式为 YYYY-MM-DD const lastCheckDate = uni.getStorageSync('lastCheckDate'); if (today !== lastCheckDate) { // 如果跨天了,重置 isSign uni.setStorageSync('isSign', false); uni.setStorageSync('lastCheckDate', today); // 更新最后检查的日期 } } // 自动签到 export function autoSign() { resetSignStatusIfNeeded(); const isLogin = computed(() => sheep.$store('user').isLogin); if (isLogin.value) { // 倒计时是否在进行 // console.log("autoSign执行了") uni.setStorageSync('isRun', true); if (uni.getStorageSync('isRun') && !uni.getStorageSync('isSign')) { // console.log('开始倒计时') // 开始一个新的定时器 timer = setInterval(() => { time--; // console.log("time", time); if (uni.getStorageSync('isSign') || !isLogin.value){ // console.log('已经签到了或'者已经登出了 不可以在签到') cancelAutoSign() } if (time <= 0 && !uni.getStorageSync('isSign')) { clearInterval(timer); onSign(); } }, 1000); } } } // 取消自动签到 export function cancelAutoSign() { // console.log("autoSign取消了") if (timer) { clearInterval(timer); } time = 30; uni.setStorageSync('isRun', false); } // 打开签到弹框 export function showSignUpModal(obj) { $store('modal').$patch((state) => { state.signUp = true; state.signUpInfo = obj; }); } // 关闭签到弹框 export function colseSignUpModal() { $store('modal').$patch((state) => { state.signUp = false; }); } // 打开获得佣金弹窗 export function showWalletModal(obj) { $store('modal').$patch((state) => { state.getWallet = true; state.getWalletInfo = obj; }); } // 关闭获得佣金弹窗 export function colseWalletModal() { $store('modal').$patch((state) => { state.getWallet = false; }); } // 打开关注公众号弹窗 export function showSubscribeModal() { const modal = $store('modal'); modal.$patch((state) => { state.subscribe = true; }); } // 关闭关注公众号弹窗 export function closeSubscribeModal() { const modal = $store('modal'); modal.$patch((state) => { state.subscribe = false; }); } // 打开授权弹框 export function showAuthModal(type = 'accountLogin', isActive = 'accountLogin') { const modal = $store('modal'); if (modal.auth !== '') { closeAuthModal(); setTimeout(() => { modal.$patch((state) => { state.auth = type; state.isActive = isActive; }); }, 100); } else { modal.$patch((state) => { state.auth = type; state.isActive = isActive; }); } } // 关闭授权弹框 export function closeAuthModal() { $store('modal').$patch((state) => { state.auth = ''; }); } // 打开分享弹框 export function showShareModal(spuId = 0) { $store('modal').$patch((state) => { state.share = true; state.shareInfo.spuId = spuId; }); } // 关闭分享弹框 export function closeShareModal() { $store('modal').$patch((state) => { state.share = false; }); } // 打开快捷菜单 export function showMenuTools() { $store('modal').$patch((state) => { state.menu = true; }); } // 关闭快捷菜单 export function closeMenuTools() { $store('modal').$patch((state) => { state.menu = false; }); } // 发送短信验证码 60秒 export function getSmsCode(event, mobile) { const modalStore = $store('modal'); const lastSendTimer = modalStore.lastTimer[event]; if (typeof lastSendTimer === 'undefined') { $helper.toast('短信发送事件错误'); return; } const duration = dayjs().unix() - lastSendTimer; const canSend = duration >= 60; if (!canSend) { $helper.toast('请稍后再试'); return; } // 只有 mobile 非空时才校验。因为部分场景(修改密码),不需要输入手机 if (mobile && !test.mobile(mobile)) { $helper.toast('手机号码格式不正确'); return; } // 发送验证码 + 更新上次发送验证码时间 let scene = -1; switch (event) { case 'resetPassword': scene = 4; break; case 'changePassword': scene = 3; break; case 'changeMobileOld': scene = 2; break; case 'changeMobileNew': scene = 5; break; case 'smsLogin': scene = 1; break; case 'consumptionTransfers': scene = 11; break; case 'zeroBuy': scene = 12; break; } AuthUtil.sendSmsCode(mobile, scene).then((res) => { if (res.code === 0) { modalStore.$patch((state) => { state.lastTimer[event] = dayjs().unix(); }); } }); } // 获取短信验证码倒计时 -- 60秒 export function getSmsTimer(event, mobile = '') { const modalStore = $store('modal'); const lastSendTimer = modalStore.lastTimer[event]; if (typeof lastSendTimer === 'undefined') { $helper.toast('短信发送事件错误'); return; } const duration = ref(dayjs().unix() - lastSendTimer - 60); const canSend = duration.value >= 0; if (canSend) { return '获取验证码'; } if (!canSend) { setTimeout(() => { duration.value++; }, 1000); return -duration.value.toString() + ' 秒'; } } // 记录广告弹框历史 export function saveAdvHistory(adv) { const modal = $store('modal'); modal.$patch((state) => { if (!state.advHistory.includes(adv.imgUrl)) { state.advHistory.push(adv.imgUrl); } }); }