// nova-werun/pages/home/signin/index.js const Parse = getApp().Parse; const company = getApp().globalData.company; const uid = Parse.User.current()?.id const getSportData = require('../../../service/getSportData') const { getConsecutiveSignIns } = require("../../../service/day") Page({ /** * 页面的初始数据 */ data: { //屏幕高度 statusBarHeight: 0, // 状态栏高度 screenHeight: 0, // 屏幕高度 customHeight: 0, // 自定义导航栏高度(如小程序右上角胶囊按钮) bottomNavHeight: 0, // 底部导航栏高度 contentHeight: 0, // 可用内容高度 contentHeight2: 0, contentpadding: 0, //顶部padding高度 //是否打卡 issigin: false, images: [ // 'https://file-cloud.fmode.cn/qpFbRRSZrO/20250113/1p97lf053250915.png', // 'https://file-cloud.fmode.cn/qpFbRRSZrO/20250113/bt19fm050427168.png', 'https://file-cloud.fmode.cn/qpFbRRSZrO/20250113/191d1m053251615.png' ], randomImage: '', accumulateChink: 0, continuousChink: 0 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { // 计算 const systemInfo = wx.getSystemInfoSync(); const statusBarHeight = systemInfo.statusBarHeight || 0; const screenHeight = systemInfo.screenHeight || 0; const custom = wx.getMenuButtonBoundingClientRect(); const customHeight = custom.height + 10 + 2 || 0; const bottomNavHeight = systemInfo.screenHeight - systemInfo.safeArea.bottom || 0; const contentpadding = (statusBarHeight + customHeight) * 750 / systemInfo.windowWidth; const contentHeight = (screenHeight - bottomNavHeight - statusBarHeight - customHeight) * 750 / systemInfo.windowWidth; this.setData({ statusBarHeight, screenHeight, customHeight, bottomNavHeight, contentpadding, contentHeight }); this.showRandomImage() this.order() this.accumulateChink() this.continuousChink() }, /**连续打卡 */ async continuousChink() { console.log(uid) let d = await getSportData.getContinuousCount(uid, 'EventLog') this.setData({ continuousChink: d||0 }) }, /** 积累打卡*/ async accumulateChink() { const currentUser = Parse.User.current(); let EventLogquery = new Parse.Query('EventLog'); EventLogquery.equalTo('user', currentUser.id); EventLogquery.equalTo('company', company); EventLogquery.notEqualTo('isDeleted', true) let count = await EventLogquery.count(); this.setData({ accumulateChink: count || 0 }) }, /** 随机展示图片*/ showRandomImage: function () { const randomIndex = Math.floor(Math.random() * this.data.images.length); this.setData({ randomImage: this.data.images[randomIndex] }); }, /**检查当天是否签到 */ async order() { const currentUser = Parse.User.current(); let EventLogquery = new Parse.Query('EventLog'); EventLogquery.equalTo('user', currentUser.id); EventLogquery.equalTo('company', company); EventLogquery.notEqualTo('isDeleted', true) // 获取今天的日期 const today = new Date(); const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate()); // 今天的开始时间 const todayEnd = new Date(todayStart); todayEnd.setHours(23, 59, 59, 999); // 今天的结束时间 // 在查询条件中添加对 createdAt 的限制 EventLogquery.greaterThanOrEqualTo('createdAt', todayStart); EventLogquery.lessThanOrEqualTo('createdAt', todayEnd); let P = await EventLogquery.first(); if (P) { this.setData({ issigin: true }) return; } }, /**打卡 */ async submit() { const currentUser = Parse.User.current(); let EventLogquery = new Parse.Query('EventLog'); EventLogquery.equalTo('user', currentUser.id); EventLogquery.equalTo('company', company); EventLogquery.notEqualTo('isDeleted', true) // 获取今天的日期 const today = new Date(); const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate()); // 今天的开始时间 const todayEnd = new Date(todayStart); todayEnd.setHours(23, 59, 59, 999); // 今天的结束时间 // 在查询条件中添加对 createdAt 的限制 EventLogquery.greaterThanOrEqualTo('createdAt', todayStart); EventLogquery.lessThanOrEqualTo('createdAt', todayEnd); let P = await EventLogquery.first(); if (P) { this.setData({ issigin: true }) console.log('今日已打卡'); return; } else { const currentUser = Parse.User.current(); let userquery = new Parse.Query('_User'); userquery.equalTo('company', company); userquery.equalTo('objectId', currentUser.id); userquery.notEqualTo('isDeleted', true) let user = await userquery.first(); let companyPointer = Parse.Object.extend('Company').createWithoutData(company); let EventLog = new Parse.Object('EventLog'); EventLog.set('points', 10) EventLog.set('company', companyPointer); EventLog.set('user', user.toPointer()); try { let saveDate = await EventLog.save(); console.log(saveDate); this.accumulateChink() this.setData({ issigin: true }) console.log("打卡成功"); this.accumulateChink() this.continuousChink() } catch (error) { console.error("保存数据时出现错误:", error); } } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { }, })