import moment from 'moment' import lodash from 'lodash' import base from './base.js' import { MysInfo } from 'yunzai/mys' // tudo import { Character } from '#miao.models' export default class Note extends base { constructor(e) { super(e) this.model = 'dailyNote' } /** 生成体力图片 */ static async get(e) { let note = new Note(e) return await note.getData() } async getData() { let device_fp = await MysInfo.get(this.e, 'getFp') let headers = { 'x-rpc-device_fp': device_fp?.data?.device_fp } let res = await MysInfo.get(this.e, 'dailyNote', { headers }) let resUser if (!res || res.retcode !== 0) return false /** 截图数据 */ let data = this.e.isSr ? this.noteSr(res) : this.noteData(res) let screenData = this.screenData if (this.e.isSr) { resUser = await MysInfo.get(this.e, 'UserGame', { headers }) resUser.data?.list?.forEach(v => this.e.uid.includes(v.game_biz)) if (!resUser || resUser.retcode !== 0) return false } return { name: this.e.sender.card, quality: 80, ...screenData, ...data, ...resUser?.data?.list[0] } } noteSr(res) { let { data } = res let nowDay = moment().date() let nowUnix = Number(moment().format('X')) /** 树脂 */ let resinMaxTime if (data.stamina_recover_time > 0) { let d = moment.duration(data.stamina_recover_time, 'seconds') let day = Math.floor(d.asDays()) let hours = d.hours() let minutes = d.minutes() let seconds = d.seconds() resinMaxTime = hours + '小时' + minutes + '分钟' + seconds + '秒' // 精确到秒。。。。 if (day > 0) { resinMaxTime = day + '天' + hours + '小时' + minutes + '分钟' + seconds + '秒' } else if (hours > 0) { resinMaxTime = hours + '小时' + minutes + '分钟' + seconds + '秒' } else if (minutes > 0) { resinMaxTime = minutes + '分钟' + seconds + '秒' } else if (seconds > 0) { resinMaxTime = seconds + '秒' } if (day > 0 || hours > 0 || seconds > 0) { let total_seconds = 3600 * hours + 60 * minutes + seconds const now = new Date() const dateTimes = now.getTime() + total_seconds * 1000 const date = new Date(dateTimes) const dayDiff = date.getDate() - now.getDate() const str = dayDiff === 0 ? '今日' : '明日' const timeStr = `${date.getHours().toString().padStart(2, '0')}:${date .getMinutes() .toString() .padStart(2, '0')}` let recoverTimeStr = ` | [${str}]${timeStr}` resinMaxTime += recoverTimeStr } } data.bfStamina = (data.current_stamina / data.max_stamina) * 100 + '%' /** 派遣 */ for (let item of data.expeditions) { let d = moment.duration(item.remaining_time, 'seconds') let day = Math.floor(d.asDays()) let hours = d.hours() let minutes = d.minutes() item.dateTime = [day + '天', hours + '时', minutes + '分'] .filter(v => !['0天', '0时', '0分'].includes(v)) .join('') item.bfTime = ((72000 - item.remaining_time) / 72000) * 100 + '%' if (item.avatars.length == 1) { item.avatars.push('派遣头像') } } // 标识属性图标~ let iconChar = lodash.sample([ '希儿', '白露', '艾丝妲', '布洛妮娅', '姬子', '卡芙卡', '克拉拉', '停云', '佩拉', '黑塔', '希露瓦', '银狼' ]) let char = Character.get(iconChar, 'gs') let week = [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ] let day = `${week[moment().day()]}` return { uid: this.e.uid, saveId: this.e.uid, icon: char.imgs?.face, day, resinMaxTime, nowDay: moment(new Date()).format('YYYY年MM月DD日'), ...data } } noteData(res) { let { data } = res let nowDay = moment().date() let nowUnix = Number(moment().format('X')) /** 树脂 */ let resinMaxTime if (data.resin_recovery_time > 0) { resinMaxTime = nowUnix + Number(data.resin_recovery_time) let maxDate = moment.unix(resinMaxTime) resinMaxTime = maxDate.format('HH:mm') if (maxDate.date() != nowDay) { resinMaxTime = `明天 ${resinMaxTime}` } else { resinMaxTime = ` ${resinMaxTime}` } } /** 派遣 */ let remainedTime = '' if (data.expeditions && data.expeditions.length >= 1) { remainedTime = lodash.map(data.expeditions, 'remained_time') remainedTime = lodash.min(remainedTime) if (remainedTime > 0) { remainedTime = nowUnix + Number(remainedTime) let remainedDate = moment.unix(remainedTime) remainedTime = remainedDate.format('HH:mm') if (remainedDate.date() != nowDay) { remainedTime = `明天 ${remainedTime}` } else { remainedTime = ` ${remainedTime}` } } } /** 宝钱 */ let coinTime = '' if (data.home_coin_recovery_time > 0) { let coinDay = Math.floor(data.home_coin_recovery_time / 3600 / 24) let coinHour = Math.floor((data.home_coin_recovery_time / 3600) % 24) let coinMin = Math.floor((data.home_coin_recovery_time / 60) % 60) if (coinDay > 0) { coinTime = `${coinDay}天${coinHour}小时${coinMin}分钟` } else { let coinDate = moment.unix( nowUnix + Number(data.home_coin_recovery_time) ) if (coinDate.date() != nowDay) { coinTime = `明天 ${coinDate.format('HH:mm')}` } else { coinTime = coinDate.format('HH:mm') } } } let week = [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ] let day = `${moment().format('MM-DD HH:mm')} ${week[moment().day()]}` /** 参量质变仪 */ if (data?.transformer?.obtained) { data.transformer.reached = data.transformer.recovery_time.reached let recoveryTime = '' if (data.transformer.recovery_time.Day > 0) { recoveryTime += `${data.transformer.recovery_time.Day}天` } if (data.transformer.recovery_time.Hour > 0) { recoveryTime += `${data.transformer.recovery_time.Hour}小时` } if (data.transformer.recovery_time.Minute > 0) { recoveryTime += `${data.transformer.recovery_time.Minute}分钟` } data.transformer.recovery_time = recoveryTime } return { uid: this.e.uid, saveId: this.e.uid, resinMaxTime, remainedTime, coinTime, day, ...data } } }