114 lines
3.1 KiB
TypeScript
114 lines
3.1 KiB
TypeScript
import { ApiCall } from 'tsrpc';
|
|
import { hongdianVal } from '../shared/protocols/hongdian/PtlGet';
|
|
import { ctype } from '../shared/protocols/sign/type';
|
|
import { PublicShared } from '../shared/public/public';
|
|
import { PlayerFun } from './player';
|
|
|
|
|
|
export class SignFun {
|
|
/**获取配置信息 */
|
|
static async getCon() {
|
|
let _con = G.gc.qiandao
|
|
return _con
|
|
}
|
|
/**获取宝箱配置 */
|
|
static async getBoxCon() {
|
|
let _con = G.gc.qiandaocom
|
|
return _con
|
|
}
|
|
|
|
/**初始数据 */
|
|
static async initData() {
|
|
let _nt = G.time
|
|
let _r = {
|
|
refreshtime: _nt,
|
|
gotarr: [],
|
|
login: 1,
|
|
logintime: _nt,
|
|
boxgotarr: []
|
|
}
|
|
return _r
|
|
}
|
|
|
|
/**获取签到信息 */
|
|
static async getInfo(uid: string, where: { ctype: string }) {
|
|
let info: {} = await PlayerFun.getAttrOne(uid, where)
|
|
const _con = await this.getCon()
|
|
let _isSet = 0
|
|
let _nt = G.time
|
|
if (!info) {
|
|
info = await this.initData()
|
|
info["key"] = "1"
|
|
_isSet = 1
|
|
}
|
|
|
|
// 是否到下月
|
|
let _diff = PublicShared.getDiff(info["refreshtime"])
|
|
if (_diff > Object.keys(_con[info["key"]]).length) {
|
|
Object.assign(info, await this.initData())
|
|
info["key"] = await this.getNewMonth(info)
|
|
_isSet = 1
|
|
}
|
|
|
|
// 设置数据
|
|
if (_isSet == 1) {
|
|
this.setInfo(uid, info)
|
|
}
|
|
return info
|
|
}
|
|
|
|
/**更换月份key */
|
|
static async getNewMonth(info) {
|
|
const _con = await this.getCon()
|
|
let _keys = Object.keys(_con)
|
|
let _idx = _keys.indexOf(info.key)
|
|
let _res: string
|
|
if (_idx + 1 >= _keys.length) {
|
|
_res = _keys[0]
|
|
} else {
|
|
_res = _keys[_idx + 1]
|
|
}
|
|
return _res
|
|
}
|
|
|
|
/**更新登录信息 按照实际登录来算*/
|
|
static async updateLogin(uid: string) {
|
|
let _info = await this.getInfo(uid, { ctype: ctype })
|
|
if (!PublicShared.chkSameDate(_info["logintime"], G.time)) {
|
|
_info["login"] += 1
|
|
_info["logintime"] = G.time
|
|
this.setInfo(uid, _info)
|
|
}
|
|
}
|
|
|
|
/**设置数据 */
|
|
static async setInfo(uid: string, data: {}) {
|
|
PlayerFun.setAttr(uid, { ctype: ctype }, data)
|
|
}
|
|
|
|
/**红点 */
|
|
static async getHongDian(call: ApiCall) {
|
|
let _res: hongdianVal = {
|
|
show: false
|
|
}
|
|
|
|
let [isOpen, tips] = PublicShared.getOpenCond(call, "zc_img6")
|
|
if (!isOpen) return _res;
|
|
|
|
let info = await this.getInfo(call.uid, { ctype: ctype })
|
|
// 登录奖励
|
|
if (info["login"] > info["gotarr"].length) {
|
|
_res.show = true
|
|
return _res
|
|
}
|
|
// 宝箱奖励
|
|
const _boxCon = await this.getBoxCon()
|
|
for (let i in _boxCon) {
|
|
if (parseInt(i) <= info["login"] && info["boxgotarr"].indexOf(i) == -1) {
|
|
_res.show = true
|
|
return _res
|
|
}
|
|
}
|
|
return _res
|
|
}
|
|
} |