Merge branch 'dev' of https://gitee.com/yoimiya-kokomi/Miao-Yunzai
This commit is contained in:
commit
8135302b0e
|
@ -60,13 +60,13 @@ class UserDB extends BaseModel {
|
|||
let games = []
|
||||
await MysUtil.eachGame(async (key) => {
|
||||
let game = user.games[key]
|
||||
if (!game && (user.uid[key] || !lodash.isEmpty(user.uidMap[key]))) {
|
||||
if (!game && (user.mainUid[key] || !lodash.isEmpty(user.uidMap[key]))) {
|
||||
game = await db.createGame({
|
||||
game: key
|
||||
})
|
||||
}
|
||||
if (game) {
|
||||
game.uid = user.uid[key]
|
||||
game.uid = user.mainUid[key]
|
||||
game.data = user.uidMap[key]
|
||||
games.push(game)
|
||||
await game.save()
|
||||
|
|
|
@ -267,6 +267,15 @@ export default class MysUser extends BaseModel {
|
|||
return this.uids[gameKey] || []
|
||||
}
|
||||
|
||||
getMainUid () {
|
||||
let ret = {}
|
||||
let uids = this.uids
|
||||
MysUtil.eachGame((gameKey) => {
|
||||
ret[gameKey] = uids[gameKey]?.[0] || ''
|
||||
})
|
||||
return ret
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新mysUser的UID列表
|
||||
* @returns {Promise<{msg: string, status: number}>}
|
||||
|
@ -458,7 +467,8 @@ export default class MysUser extends BaseModel {
|
|||
// 标记ltuid为失效
|
||||
await cache.zDel(tables.detail, this.ltuid)
|
||||
})
|
||||
await self.db.delete()
|
||||
await self.db.destroy()
|
||||
self._delCache()
|
||||
logger.mark(`[删除失效ck][ltuid:${this.ltuid}]`)
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ import BaseModel from './BaseModel.js'
|
|||
import lodash from 'lodash'
|
||||
import MysUser from './MysUser.js'
|
||||
import MysUtil from './MysUtil.js'
|
||||
import gsCfg from '../gsCfg.js'
|
||||
import { UserDB } from '../db/index.js'
|
||||
import { Data } from '#miao'
|
||||
|
||||
|
@ -25,6 +24,11 @@ export default class NoteUser extends BaseModel {
|
|||
return this._cacheThis()
|
||||
}
|
||||
|
||||
get uid () {
|
||||
console.log('NoteUser.uid 默认返回原神UID,可更改为 user.getUid(game)')
|
||||
return this.getUid()
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前用户是否具备CK
|
||||
*/
|
||||
|
@ -39,21 +43,10 @@ export default class NoteUser extends BaseModel {
|
|||
if (!this.hasCk) {
|
||||
return []
|
||||
}
|
||||
let ret = []
|
||||
return lodash.map(this.ckData, 'uid')
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前生效CK
|
||||
*
|
||||
* 返回isMain的uid,没有的话返回首位
|
||||
*/
|
||||
get mainCk () {
|
||||
if (this.hasCk) {
|
||||
return lodash.filter(this.ckData, (ck) => ck.isMain)[0] || lodash.values(this.ckData)[0]
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户的所有ck
|
||||
* @returns { {ltuid:{ckData, ck, uids}} }
|
||||
|
@ -119,6 +112,7 @@ export default class NoteUser extends BaseModel {
|
|||
this.db = db && db !== true ? db : await UserDB.find(this.qq, 'qq')
|
||||
await this.initMysUser()
|
||||
this.initUids()
|
||||
await this.save()
|
||||
}
|
||||
|
||||
// 初始化MysUser对象
|
||||
|
@ -134,13 +128,13 @@ export default class NoteUser extends BaseModel {
|
|||
}
|
||||
|
||||
// 初始化Uid
|
||||
initUids (mys = false) {
|
||||
initUids (setMainUid = {}) {
|
||||
let self = this
|
||||
self.uid = {}
|
||||
self.uids = {}
|
||||
self.uidMap = {}
|
||||
self.mainUid = self.mainUid || {}
|
||||
self.uidList = {}
|
||||
self.uidMap = self.uidMap || {}
|
||||
self.games = {}
|
||||
const { db, uids, games, uidMap, mysUsers } = self
|
||||
const { db, mainUid, uidList, games, uidMap, mysUsers } = self
|
||||
|
||||
let gameDBs = {}
|
||||
lodash.forEach(db?.games, (gameDB) => {
|
||||
|
@ -150,27 +144,31 @@ export default class NoteUser extends BaseModel {
|
|||
MysUtil.eachGame((key) => {
|
||||
let gameDB = gameDBs[key]
|
||||
uidMap[key] = {}
|
||||
uids[key] = []
|
||||
uidList[key] = []
|
||||
games[key] = gameDB
|
||||
|
||||
// 优先设置CK UID
|
||||
lodash.forEach(mysUsers, (mys) => {
|
||||
lodash.forEach(mys.uids[key] || [], (uid) => {
|
||||
uid = uid + ''
|
||||
if (uid && !uidMap[key][uid]) {
|
||||
uidMap[key][uid] = { uid, type: 'ck', ltuid: mys.ltuid }
|
||||
uids[key].push(uid)
|
||||
uidList[key].push(uid)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
let uidReg = /\d{9}/
|
||||
|
||||
// 存在数据库记录则进行设置
|
||||
if (gameDB) {
|
||||
let regUids = gameDB.data
|
||||
// 依次设置verify、reg uid数据
|
||||
lodash.forEach(['verify', 'reg'], (uidType) => {
|
||||
lodash.forEach(regUids, (ds, uid) => {
|
||||
if (uid && ds.type === uidType && !uidMap[key][uid]) {
|
||||
uid = uid + ''
|
||||
if (uid && uidReg.test(uid) && ds.type === uidType && !uidMap[key][uid]) {
|
||||
uidMap[key][uid] = { uid, type: ds.type }
|
||||
uids[key].push(uid)
|
||||
uidList[key].push(uid)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
@ -178,16 +176,16 @@ export default class NoteUser extends BaseModel {
|
|||
// 如果当前选中uid未在记录中,则补充为reg数据
|
||||
let uid = gameDB.uid
|
||||
if (uid && !uidMap[key][uid]) {
|
||||
uid = uid + ''
|
||||
uidMap[key][uid] = { uid, type: 'reg' }
|
||||
uids[key].push(uid)
|
||||
uidList[key].push(uid)
|
||||
}
|
||||
}
|
||||
|
||||
// 设置选中uid
|
||||
if (mys && mys.uids[key]?.[0]) {
|
||||
self.uid[key] = mys.uids[key]?.[0] || self.uid[key] || ''
|
||||
if (setMainUid === false || setMainUid[key] === false) {
|
||||
mainUid[key] = uidList[key]?.[0] || ''
|
||||
} else {
|
||||
self.uid[key] = self.uid[key] || gameDB?.uid || uids[key]?.[0] || ''
|
||||
mainUid[key] = setMainUid[key] || mainUid[key] || gameDB?.uid || uidList[key]?.[0] || ''
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -199,24 +197,24 @@ export default class NoteUser extends BaseModel {
|
|||
// 获取当前UID
|
||||
getUid (game = 'gs') {
|
||||
let gameKey = this.gameKey(game)
|
||||
return this.uid[gameKey] || this.uids[gameKey][0] || ''
|
||||
return this.mainUid[gameKey] || this.uidList[gameKey][0] || ''
|
||||
}
|
||||
|
||||
getSelfUid (game = 'gs') {
|
||||
let gameKey = this.gameKey(game)
|
||||
let uids = this.uidMap[gameKey].filter((v) => v.type === 'ck')
|
||||
if (uids.length === 0) {
|
||||
let uidList = this.uidMap[gameKey].filter((v) => v.type === 'ck')
|
||||
if (uidList.length === 0) {
|
||||
return false
|
||||
}
|
||||
let find = lodash.find(uids, (v) => v.uid + '' === uid + '', 0)
|
||||
return find ? find.uid : uids[0].uid
|
||||
let find = lodash.find(uidList, (v) => v.uid + '' === uid + '', 0)
|
||||
return find ? find.uid : uidList[0].uid
|
||||
}
|
||||
|
||||
// 获取UID列表
|
||||
getUidList (game = 'gs') {
|
||||
let ret = []
|
||||
let gameKey = this.gameKey(game)
|
||||
lodash.forEach(this.uids[gameKey], (uid) => {
|
||||
lodash.forEach(this.uidList[gameKey], (uid) => {
|
||||
ret.push(this.uidMap[gameKey][uid])
|
||||
})
|
||||
return ret
|
||||
|
@ -246,11 +244,11 @@ export default class NoteUser extends BaseModel {
|
|||
// 添加UID
|
||||
addRegUid (uid, game = 'gs') {
|
||||
let gameKey = this.gameKey(game)
|
||||
uid = uid + ''
|
||||
if (!this.uidMap[gameKey][uid]) {
|
||||
this.uidMap[gameKey][uid] = { uid, type: 'reg' }
|
||||
this.uids[gameKey].push(uid)
|
||||
this.setMainUid(uid, game)
|
||||
}
|
||||
this.setMainUid(uid, game)
|
||||
}
|
||||
|
||||
// 删除UID
|
||||
|
@ -258,7 +256,7 @@ export default class NoteUser extends BaseModel {
|
|||
let gameKey = this.gameKey(game)
|
||||
if (this.uidMap[gameKey][uid] && this.uidMap[gameKey][uid].type !== 'ck') {
|
||||
delete this.uidMap[gameKey][uid]
|
||||
lodash.remove(this.uids[gameKey], (u) => u === uid)
|
||||
lodash.remove(this.uidList[gameKey], (u) => u === uid)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -269,7 +267,7 @@ export default class NoteUser extends BaseModel {
|
|||
*/
|
||||
async getRegUid (game = 'gs') {
|
||||
let gameKey = this.gameKey(game)
|
||||
return this.uid[gameKey] || ''
|
||||
return this.mainUid[gameKey] || ''
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -290,32 +288,38 @@ export default class NoteUser extends BaseModel {
|
|||
setMainUid (uid = '', game = 'gs') {
|
||||
let gameKey = this.gameKey(game)
|
||||
// 兼容传入index
|
||||
if (uid < 100 && this.uids[gameKey][uid]) {
|
||||
uid = this.uids[gameKey][uid]
|
||||
if (uid < 100 && this.uidList[gameKey][uid]) {
|
||||
uid = this.uidList[gameKey][uid]
|
||||
}
|
||||
|
||||
if (this.uidMap[gameKey][uid]) {
|
||||
this.uid[gameKey] = uid
|
||||
this.mainUid[gameKey] = uid
|
||||
}
|
||||
|
||||
this.initUids()
|
||||
let mainUid = {}
|
||||
mainUid[gameKey] = uid
|
||||
this.initUids(mainUid)
|
||||
}
|
||||
|
||||
// 添加MysUser
|
||||
addMysUser (mysUser) {
|
||||
this.mysUsers[mysUser.ltuid] = mysUser
|
||||
this.initUids(mysUser)
|
||||
this.initUids(mysUser.getMainUid())
|
||||
}
|
||||
|
||||
// 删除当前用户绑定CK
|
||||
async delCk (ltuid = '', needRefreshCache = true) {
|
||||
if (!ltuid || !this.mysUsers[ltuid]) {
|
||||
return
|
||||
async delCk (ltuid = '') {
|
||||
console.log('delCk即将废弃')
|
||||
return await this.delMysUser(ltuid)
|
||||
|
||||
}
|
||||
|
||||
async delMysUser (ltuid = '') {
|
||||
if (ltuid && this.mysUsers[ltuid]) {
|
||||
let mys = this.mysUsers[ltuid]
|
||||
delete this.mysUsers[ltuid]
|
||||
mys.del()
|
||||
await this.initUids()
|
||||
await mys.del()
|
||||
}
|
||||
this.initUids(false)
|
||||
await this.save()
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -101,7 +101,7 @@ export default class MysInfo {
|
|||
/** at用户 */
|
||||
if (at) {
|
||||
let atUser = await NoteUser.create(at)
|
||||
uid = atUser.uid
|
||||
uid = atUser.getUid(e)
|
||||
if (uid) return String(uid)
|
||||
if (e.noTips !== true) e.reply('尚未绑定uid', false, { at })
|
||||
return false
|
||||
|
@ -114,8 +114,8 @@ export default class MysInfo {
|
|||
}
|
||||
|
||||
// 消息携带UID、当前用户UID、群名片携带UID 依次获取
|
||||
uid = matchUid(msg) || user.uid || matchUid(e.sender.card)
|
||||
if (!matchMsgUid) uid = user.uid
|
||||
uid = matchUid(msg) || user.getUid(e) || matchUid(e.sender.card)
|
||||
if (!matchMsgUid) uid = user.getUid(e)
|
||||
if (uid) {
|
||||
/** 没有绑定的自动绑定 */
|
||||
return await user.setRegUid(uid, false)
|
||||
|
|
|
@ -68,7 +68,7 @@ export default class User extends base {
|
|||
if (param.cookie_token_v2 && (param.account_mid_v2 || param.ltmid_v2)) { //
|
||||
// account_mid_v2 为版本必须带的字段,不带的话会一直提示绑定cookie失败 请重新登录
|
||||
flagV2 = true
|
||||
data.ck = `account_mid_v2=${param.account_mid_v2};cookie_token_v2=${param.cookie_token_v2};ltoken_v2=${param.ltoken_v2};ltmid_v2=${param.ltmid_v2};`
|
||||
data.ck = `ltuid=${param.ltuid || param.login_uid};account_mid_v2=${param.account_mid_v2};cookie_token_v2=${param.cookie_token_v2};ltoken_v2=${param.ltoken_v2};ltmid_v2=${param.ltmid_v2};`
|
||||
}
|
||||
if (param.mi18nLang) {
|
||||
data.ck += ` mi18nLang=${param.mi18nLang};`
|
||||
|
@ -140,12 +140,11 @@ export default class User extends base {
|
|||
let user = await this.user()
|
||||
// 获取当前uid
|
||||
let uidData = user.getUidData(this.e)
|
||||
let uidms = user.getUidList(this.e)
|
||||
if (!uidData || uidData.type !== 'ck' || !uidData.ltuid) {
|
||||
return `删除失败:当前的UID${uidData.uid}无CK信息`
|
||||
}
|
||||
let uids = await user.delCk(uidData.ltuid)
|
||||
return `绑定cookie已删除}`
|
||||
await user.delMysUser(uidData.ltuid)
|
||||
return `绑定cookie已删除`
|
||||
}
|
||||
|
||||
/** 绑定uid,若有ck的话优先使用ck-uid */
|
||||
|
@ -319,11 +318,9 @@ export default class User extends base {
|
|||
}
|
||||
await user.save()
|
||||
if (fs.existsSync(`./data/MysCookie/${qq}.yaml`)) {
|
||||
/* fs.rename(`./data/MysCookie/${qq}.yaml`, `./data/MysCookieBak/${qq}.yaml`, (err) => {
|
||||
if (err) {
|
||||
console.log(err)
|
||||
}
|
||||
}) */
|
||||
fs.rename(`./data/MysCookie/${qq}.yaml`, `./data/MysCookieBak/${qq}.yaml`, (err) => {
|
||||
if (err) console.log(err)
|
||||
})
|
||||
}
|
||||
count++
|
||||
}
|
||||
|
@ -336,11 +333,10 @@ export default class User extends base {
|
|||
if (!user.hasCk) {
|
||||
this.e.reply('当前尚未绑定cookie')
|
||||
}
|
||||
let ck = user.mainCk
|
||||
|
||||
if (!lodash.isEmpty(ck)) {
|
||||
await this.e.reply(`当前绑定cookie\nuid:${ck.uid}`)
|
||||
await this.e.reply(ck.ck)
|
||||
let mys = user.getMysUser(this.e)
|
||||
if (mys) {
|
||||
await this.e.reply(`当前绑定cookie\nuid:${mys.getUid(this.e)}`)
|
||||
await this.e.reply(mys.ck)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue