调整用户uid存储的数据库结构
This commit is contained in:
		
							parent
							
								
									821c080d1f
								
							
						
					
					
						commit
						ae0e98b943
					
				| 
						 | 
					@ -19,10 +19,22 @@ const COLUMNS = {
 | 
				
			||||||
  // CK
 | 
					  // CK
 | 
				
			||||||
  ck: Types.STRING,
 | 
					  ck: Types.STRING,
 | 
				
			||||||
  device: Types.STRING,
 | 
					  device: Types.STRING,
 | 
				
			||||||
 | 
					  uids: {
 | 
				
			||||||
  gsUids: Types.STRING,
 | 
					    type: Types.STRING,
 | 
				
			||||||
 | 
					    get () {
 | 
				
			||||||
  srUids: Types.STRING
 | 
					      let data = this.getDataValue('uids')
 | 
				
			||||||
 | 
					      let ret = {}
 | 
				
			||||||
 | 
					      try {
 | 
				
			||||||
 | 
					        ret = JSON.parse(data)
 | 
				
			||||||
 | 
					      } catch (e) {
 | 
				
			||||||
 | 
					        ret = {}
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return ret
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    set (uids) {
 | 
				
			||||||
 | 
					      this.setDataValue('uids', JSON.stringify(uids))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MysUserDB extends BaseModel {
 | 
					class MysUserDB extends BaseModel {
 | 
				
			||||||
| 
						 | 
					@ -45,8 +57,7 @@ class MysUserDB extends BaseModel {
 | 
				
			||||||
    this.ck = mys.ck
 | 
					    this.ck = mys.ck
 | 
				
			||||||
    this.type = mys.type
 | 
					    this.type = mys.type
 | 
				
			||||||
    this.device = mys.device
 | 
					    this.device = mys.device
 | 
				
			||||||
    this.gsUids = (mys.gsUids || []).join(',')
 | 
					    this.uids = mys.uids
 | 
				
			||||||
    this.srUids = (mys.srUids || []).join(',')
 | 
					 | 
				
			||||||
    await db.save()
 | 
					    await db.save()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,7 @@
 | 
				
			||||||
import BaseModel from './BaseModel.js'
 | 
					import BaseModel from './BaseModel.js'
 | 
				
			||||||
import lodash from 'lodash'
 | 
					import lodash from 'lodash'
 | 
				
			||||||
 | 
					import { UserGameDB } from './index.js'
 | 
				
			||||||
 | 
					import MysUtil from '../mys/MysUtil.js'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const { Types } = BaseModel
 | 
					const { Types } = BaseModel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,15 +25,7 @@ const COLUMNS = {
 | 
				
			||||||
  // 头像
 | 
					  // 头像
 | 
				
			||||||
  face: Types.STRING,
 | 
					  face: Types.STRING,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ltuids: Types.STRING,
 | 
					  ltuids: Types.STRING
 | 
				
			||||||
 | 
					 | 
				
			||||||
  // 原神UID
 | 
					 | 
				
			||||||
  gsUid: Types.STRING,
 | 
					 | 
				
			||||||
  gsRegUids: Types.STRING,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // 星铁UID
 | 
					 | 
				
			||||||
  srUid: Types.STRING,
 | 
					 | 
				
			||||||
  srRegUids: Types.STRING
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class UserDB extends BaseModel {
 | 
					class UserDB extends BaseModel {
 | 
				
			||||||
| 
						 | 
					@ -39,7 +33,12 @@ class UserDB extends BaseModel {
 | 
				
			||||||
    // user_id
 | 
					    // user_id
 | 
				
			||||||
    id = type === 'qq' ? '' + id : type + id
 | 
					    id = type === 'qq' ? '' + id : type + id
 | 
				
			||||||
    // DB查询
 | 
					    // DB查询
 | 
				
			||||||
    let user = await UserDB.findByPk(id)
 | 
					    let user = await UserDB.findByPk(id, {
 | 
				
			||||||
 | 
					      include: {
 | 
				
			||||||
 | 
					        model: UserGameDB,
 | 
				
			||||||
 | 
					        as: 'games'
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
    if (!user) {
 | 
					    if (!user) {
 | 
				
			||||||
      user = await UserDB.build({
 | 
					      user = await UserDB.build({
 | 
				
			||||||
        id,
 | 
					        id,
 | 
				
			||||||
| 
						 | 
					@ -53,15 +52,29 @@ class UserDB extends BaseModel {
 | 
				
			||||||
    let db = this
 | 
					    let db = this
 | 
				
			||||||
    let ltuids = []
 | 
					    let ltuids = []
 | 
				
			||||||
    lodash.forEach(user.mysUsers, (mys) => {
 | 
					    lodash.forEach(user.mysUsers, (mys) => {
 | 
				
			||||||
      if (mys.ck) {
 | 
					      if (mys.ck && mys.ltuid) {
 | 
				
			||||||
        ltuids.push(mys.ltuid)
 | 
					        ltuids.push(mys.ltuid)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    db.ltuids = ltuids.join(',')
 | 
					    db.ltuids = ltuids.join(',')
 | 
				
			||||||
    lodash.forEach(['gs', 'sr'], (key) => {
 | 
					    let games = []
 | 
				
			||||||
      db[`${key}Uid`] = user[`${key}Uid`] ? user[`${key}Uid`] : user.uids[key]?.[0] || ''
 | 
					    await MysUtil.eachGame(async (key) => {
 | 
				
			||||||
      db[`${key}RegUids`] = JSON.stringify(user.uidMap[key])
 | 
					      let game = user.games[key]
 | 
				
			||||||
 | 
					      if (!game && (user.uid[key] || !lodash.isEmpty(user.uidMap[key]))) {
 | 
				
			||||||
 | 
					        game = await db.createGame({
 | 
				
			||||||
 | 
					          game: key
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (game) {
 | 
				
			||||||
 | 
					        game.uid = user.uid[key]
 | 
				
			||||||
 | 
					        game.data = user.uidMap[key]
 | 
				
			||||||
 | 
					        games.push(game)
 | 
				
			||||||
 | 
					        await game.save()
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					    if (games.length > 0) {
 | 
				
			||||||
 | 
					      await this.setGames(games)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    await this.save()
 | 
					    await this.save()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,43 @@
 | 
				
			||||||
 | 
					import BaseModel from './BaseModel.js'
 | 
				
			||||||
 | 
					import lodash from 'lodash'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const { Types } = BaseModel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const COLUMNS = {
 | 
				
			||||||
 | 
					  // 用户ID,qq为数字
 | 
				
			||||||
 | 
					  userId: {
 | 
				
			||||||
 | 
					    type: Types.STRING
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  game: Types.STRING,
 | 
				
			||||||
 | 
					  uid: Types.STRING,
 | 
				
			||||||
 | 
					  data: {
 | 
				
			||||||
 | 
					    type: Types.STRING,
 | 
				
			||||||
 | 
					    get () {
 | 
				
			||||||
 | 
					      let data = this.getDataValue('data')
 | 
				
			||||||
 | 
					      let ret = {}
 | 
				
			||||||
 | 
					      try {
 | 
				
			||||||
 | 
					        data = JSON.parse(data)
 | 
				
			||||||
 | 
					      } catch (e) {
 | 
				
			||||||
 | 
					        data = []
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      lodash.forEach(data, (ds) => {
 | 
				
			||||||
 | 
					        if (ds.uid) {
 | 
				
			||||||
 | 
					          ret[ds.uid] = ds
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      return ret
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    set (data) {
 | 
				
			||||||
 | 
					      this.setDataValue('data', JSON.stringify(lodash.values(data)))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class UserGameDB extends BaseModel {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BaseModel.initDB(UserGameDB, COLUMNS)
 | 
				
			||||||
 | 
					await UserGameDB.sync()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default UserGameDB
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
import UserDB from './UserDB.js'
 | 
					import UserDB from './UserDB.js'
 | 
				
			||||||
import MysUserDB from './MysUserDB.js'
 | 
					import MysUserDB from './MysUserDB.js'
 | 
				
			||||||
 | 
					import UserGameDB from './UserGameDB.js'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
UserDB.belongsToMany(MysUserDB, {
 | 
					UserDB.belongsToMany(MysUserDB, {
 | 
				
			||||||
| 
						 | 
					@ -9,4 +10,15 @@ MysUserDB.belongsToMany(UserDB, {
 | 
				
			||||||
  through: 'UserLtuids'
 | 
					  through: 'UserLtuids'
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export { UserDB, MysUserDB }
 | 
					UserDB.hasMany(UserGameDB, {
 | 
				
			||||||
 | 
					  onDelete: 'RESTRICT',
 | 
				
			||||||
 | 
					  onUpdate: 'RESTRICT',
 | 
				
			||||||
 | 
					  foreignKey: 'userId',
 | 
				
			||||||
 | 
					  as: 'games'
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					UserGameDB.belongsTo(UserDB, {
 | 
				
			||||||
 | 
					  foreignKey: 'userId',
 | 
				
			||||||
 | 
					  as: 'games'
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export { UserDB, MysUserDB, UserGameDB }
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
import moment from 'moment'
 | 
					import moment from 'moment'
 | 
				
			||||||
import BaseModel from './BaseModel.js'
 | 
					import BaseModel from './BaseModel.js'
 | 
				
			||||||
 | 
					import MysUtil from './MysUtil.js'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const servs = ['mys', 'hoyolab']
 | 
					const servs = ['mys', 'hoyolab']
 | 
				
			||||||
// 超时时间不必精确,直接定24小时即可
 | 
					// 超时时间不必精确,直接定24小时即可
 | 
				
			||||||
| 
						 | 
					@ -38,7 +39,7 @@ export default class DailyCache extends BaseModel {
 | 
				
			||||||
    if (!uid || game === 'config') {
 | 
					    if (!uid || game === 'config') {
 | 
				
			||||||
      key = 'sys:config'
 | 
					      key = 'sys:config'
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      game = game === 'sr' ? 'sr' : 'gs'
 | 
					      game = MysUtil.getGameKey(game)
 | 
				
			||||||
      let serv = /^[6-9]|^hoyo|^os/i.test(uid) ? servs[1] : servs[0]
 | 
					      let serv = /^[6-9]|^hoyo|^os/i.test(uid) ? servs[1] : servs[0]
 | 
				
			||||||
      key = `${game}:${serv}`
 | 
					      key = `${game}:${serv}`
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -264,7 +264,7 @@ export default class MysUser extends BaseModel {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  getUids (game = 'gs') {
 | 
					  getUids (game = 'gs') {
 | 
				
			||||||
    let gameKey = this.gameKey(game)
 | 
					    let gameKey = this.gameKey(game)
 | 
				
			||||||
    return this[`${gameKey}Uids`] || []
 | 
					    return this.uids[gameKey] || []
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
| 
						 | 
					@ -378,10 +378,10 @@ export default class MysUser extends BaseModel {
 | 
				
			||||||
    this.ck = data.ck || this.ck || ''
 | 
					    this.ck = data.ck || this.ck || ''
 | 
				
			||||||
    this.type = data.type || this.type || 'mys'
 | 
					    this.type = data.type || this.type || 'mys'
 | 
				
			||||||
    this.device = data.device || this.device || MysUtil.getDeviceGuid()
 | 
					    this.device = data.device || this.device || MysUtil.getDeviceGuid()
 | 
				
			||||||
 | 
					    this.uids = this.uids || {}
 | 
				
			||||||
    let self = this
 | 
					    let self = this
 | 
				
			||||||
    MysUtil.eachGame((game) => {
 | 
					    MysUtil.eachGame((game) => {
 | 
				
			||||||
      let key = `${game}Uids`
 | 
					      self.uids[game] = data?.uids?.[game] || self.uids[game] || []
 | 
				
			||||||
      self[key] = lodash.isString(data[key]) ? (data[key] || '').split(',') : (lodash.isArray(data[key]) ? data[key] : (self[key] || []))
 | 
					 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -400,7 +400,7 @@ export default class MysUser extends BaseModel {
 | 
				
			||||||
    uid = '' + uid
 | 
					    uid = '' + uid
 | 
				
			||||||
    if (/\d{9}/.test(uid)) {
 | 
					    if (/\d{9}/.test(uid)) {
 | 
				
			||||||
      let gameKey = this.gameKey(game)
 | 
					      let gameKey = this.gameKey(game)
 | 
				
			||||||
      let uids = this[`${gameKey}Uids`]
 | 
					      let uids = this.uids[gameKey]
 | 
				
			||||||
      if (!uids.includes(uid)) {
 | 
					      if (!uids.includes(uid)) {
 | 
				
			||||||
        uids.push(uid)
 | 
					        uids.push(uid)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -419,7 +419,7 @@ export default class MysUser extends BaseModel {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    let self = this
 | 
					    let self = this
 | 
				
			||||||
    await MysUtil.eachGame(async (game) => {
 | 
					    await MysUtil.eachGame(async (game) => {
 | 
				
			||||||
      let uids = self[`${game}Uids`]
 | 
					      let uids = self.uids[game]
 | 
				
			||||||
      await this.addQueryUid(uids, game)
 | 
					      await this.addQueryUid(uids, game)
 | 
				
			||||||
      let cache = self.getCache(game)
 | 
					      let cache = self.getCache(game)
 | 
				
			||||||
      let cacheSearchList = await cache.get(tables.del, this.ltuid, true)
 | 
					      let cacheSearchList = await cache.get(tables.del, this.ltuid, true)
 | 
				
			||||||
| 
						 | 
					@ -445,28 +445,20 @@ export default class MysUser extends BaseModel {
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * 删除缓存, 供User解绑CK时调用
 | 
					   * 删除缓存, 供User解绑CK时调用
 | 
				
			||||||
   * @param user
 | 
					 | 
				
			||||||
   * @returns {Promise<boolean>}
 | 
					   * @returns {Promise<boolean>}
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  async del (user) {
 | 
					  async del () {
 | 
				
			||||||
    if (user && user.qq) {
 | 
					    // TODO 检查一ltuid多绑定的情况
 | 
				
			||||||
      let qqList = await this.cache.kGet(tables.qq, this.ltuid, true)
 | 
					 | 
				
			||||||
      let newList = lodash.pull(qqList, user.qq * 1)
 | 
					 | 
				
			||||||
      await this.cache.kSet(tables.qq, this.ltuid, newList)
 | 
					 | 
				
			||||||
      if (newList.length > 0) {
 | 
					 | 
				
			||||||
        // 如果数组还有其他元素,说明该ltuid还有其他绑定,不进行缓存删除
 | 
					 | 
				
			||||||
        return false
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    // 将查询过的uid缓存起来,以备后续重新绑定时恢复
 | 
					    // 将查询过的uid缓存起来,以备后续重新绑定时恢复
 | 
				
			||||||
    let uids = await this.getQueryUids()
 | 
					    let self = this
 | 
				
			||||||
    await this.servCache.set(tables.del, uids)
 | 
					    await MysUtil.eachGame(async (game) => {
 | 
				
			||||||
 | 
					      let uids = await this.getQueryUids(game)
 | 
				
			||||||
    // 标记ltuid为失效
 | 
					      let cache = self.getCache(game)
 | 
				
			||||||
    await this.servCache.zDel(tables.detail, this.ltuid)
 | 
					      await cache.set(tables.del, uids)
 | 
				
			||||||
    await this.cache.zDel(tables.uid, this.ltuid)
 | 
					      // 标记ltuid为失效
 | 
				
			||||||
    await this.cache.kDel(tables.ck, this.ltuid)
 | 
					      await cache.zDel(tables.detail, this.ltuid)
 | 
				
			||||||
    await this.cache.kDel(tables.qq, this.ltuid)
 | 
					    })
 | 
				
			||||||
 | 
					    await self.db.delete()
 | 
				
			||||||
    logger.mark(`[删除失效ck][ltuid:${this.ltuid}]`)
 | 
					    logger.mark(`[删除失效ck][ltuid:${this.ltuid}]`)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -502,13 +494,13 @@ export default class MysUser extends BaseModel {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 获取当前用户已查询uid列表
 | 
					  // 获取当前用户已查询uid列表
 | 
				
			||||||
  async getQueryUids (game = 'gs') {
 | 
					  async getQueryUids (game = 'gs') {
 | 
				
			||||||
    let cache = this.getCache('game')
 | 
					    let cache = this.getCache(game)
 | 
				
			||||||
    return await cache.zList(tables.detail, this.ltuid)
 | 
					    return await cache.zList(tables.detail, this.ltuid)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 根据uid获取查询ltuid
 | 
					  // 根据uid获取查询ltuid
 | 
				
			||||||
  async getQueryLtuid (uid, game = 'gs') {
 | 
					  async getQueryLtuid (uid, game = 'gs') {
 | 
				
			||||||
    let cache = this.getCache('game')
 | 
					    let cache = this.getCache(game)
 | 
				
			||||||
    return await cache.zKey(tables.detail, uid)
 | 
					    return await cache.zKey(tables.detail, uid)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -518,7 +510,7 @@ export default class MysUser extends BaseModel {
 | 
				
			||||||
      return false
 | 
					      return false
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    let gameKey = this.gameKey(game)
 | 
					    let gameKey = this.gameKey(game)
 | 
				
			||||||
    let uids = this[`${gameKey}Uids`]
 | 
					    let uids = this.uids[gameKey]
 | 
				
			||||||
    return uids.includes(uid + '')
 | 
					    return uids.includes(uid + '')
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,7 @@
 | 
				
			||||||
import { Data } from '#miao'
 | 
					import { Data } from '#miao'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const games = ['gs', 'sr']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const MysUtil = {
 | 
					const MysUtil = {
 | 
				
			||||||
  // 获取标准ltuid
 | 
					  // 获取标准ltuid
 | 
				
			||||||
  getLtuid (data) {
 | 
					  getLtuid (data) {
 | 
				
			||||||
| 
						 | 
					@ -36,7 +38,7 @@ const MysUtil = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 循环game
 | 
					  // 循环game
 | 
				
			||||||
  async eachGame (fn) {
 | 
					  async eachGame (fn) {
 | 
				
			||||||
    await Data.forEach(['gs', 'sr'], fn)
 | 
					    await Data.forEach(games, fn)
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 循环server
 | 
					  // 循环server
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,7 @@
 | 
				
			||||||
import BaseModel from './BaseModel.js'
 | 
					import BaseModel from './BaseModel.js'
 | 
				
			||||||
import lodash from 'lodash'
 | 
					import lodash from 'lodash'
 | 
				
			||||||
import MysUser from './MysUser.js'
 | 
					import MysUser from './MysUser.js'
 | 
				
			||||||
 | 
					import MysUtil from './MysUtil.js'
 | 
				
			||||||
import gsCfg from '../gsCfg.js'
 | 
					import gsCfg from '../gsCfg.js'
 | 
				
			||||||
import { UserDB } from '../db/index.js'
 | 
					import { UserDB } from '../db/index.js'
 | 
				
			||||||
import { Data } from '#miao'
 | 
					import { Data } from '#miao'
 | 
				
			||||||
| 
						 | 
					@ -24,14 +25,6 @@ export default class NoteUser extends BaseModel {
 | 
				
			||||||
    return this._cacheThis()
 | 
					    return this._cacheThis()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * 获取当前用户uid
 | 
					 | 
				
			||||||
   * 如果为绑定用户,优先获取ck对应uid,否则获取绑定uid
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  get uid () {
 | 
					 | 
				
			||||||
    return this.getUid()
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * 当前用户是否具备CK
 | 
					   * 当前用户是否具备CK
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					@ -105,8 +98,6 @@ export default class NoteUser extends BaseModel {
 | 
				
			||||||
    let user = new NoteUser(qq)
 | 
					    let user = new NoteUser(qq)
 | 
				
			||||||
    await user.initDB(db)
 | 
					    await user.initDB(db)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 检查绑定uid (regUid)
 | 
					 | 
				
			||||||
    await user.getRegUid()
 | 
					 | 
				
			||||||
    // 传入data则使用,否则读取
 | 
					    // 传入data则使用,否则读取
 | 
				
			||||||
    return user
 | 
					    return user
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -143,39 +134,61 @@ export default class NoteUser extends BaseModel {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 初始化Uid
 | 
					  // 初始化Uid
 | 
				
			||||||
  initUids () {
 | 
					  initUids (mys = false) {
 | 
				
			||||||
    let self = this
 | 
					    let self = this
 | 
				
			||||||
 | 
					    self.uid = {}
 | 
				
			||||||
    self.uids = {}
 | 
					    self.uids = {}
 | 
				
			||||||
    self.uidMap = {}
 | 
					    self.uidMap = {}
 | 
				
			||||||
    const { db, uids, uidMap, mysUsers } = self
 | 
					    self.games = {}
 | 
				
			||||||
    lodash.forEach(['gs', 'sr'], (key) => {
 | 
					    const { db, uids, games, uidMap, mysUsers } = self
 | 
				
			||||||
      // 绑定UID
 | 
					
 | 
				
			||||||
 | 
					    let gameDBs = {}
 | 
				
			||||||
 | 
					    lodash.forEach(db?.games, (gameDB) => {
 | 
				
			||||||
 | 
					      gameDBs[gameDB.game] = gameDB
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    MysUtil.eachGame((key) => {
 | 
				
			||||||
 | 
					      let gameDB = gameDBs[key]
 | 
				
			||||||
      uidMap[key] = {}
 | 
					      uidMap[key] = {}
 | 
				
			||||||
      uids[key] = []
 | 
					      uids[key] = []
 | 
				
			||||||
      // 设置CK UID
 | 
					      games[key] = gameDB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // 优先设置CK UID
 | 
				
			||||||
      lodash.forEach(mysUsers, (mys) => {
 | 
					      lodash.forEach(mysUsers, (mys) => {
 | 
				
			||||||
        lodash.forEach(mys[`${key}Uids`], (uid) => {
 | 
					        lodash.forEach(mys.uids[key] || [], (uid) => {
 | 
				
			||||||
          if (uid && !uidMap[key][uid]) {
 | 
					          if (uid && !uidMap[key][uid]) {
 | 
				
			||||||
            uidMap[key][uid] = { uid, type: 'ck', ltuid: mys.ltuid }
 | 
					            uidMap[key][uid] = { uid, type: 'ck', ltuid: mys.ltuid }
 | 
				
			||||||
            uids[key].push(uid)
 | 
					            uids[key].push(uid)
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
      })
 | 
					
 | 
				
			||||||
      let regUids = db[`${key}RegUids`] || '{}'
 | 
					        // 存在数据库记录则进行设置
 | 
				
			||||||
      try {
 | 
					        if (gameDB) {
 | 
				
			||||||
        regUids = JSON.parse(regUids)
 | 
					          let regUids = gameDB.data
 | 
				
			||||||
      } catch (e) {
 | 
					          // 依次设置verify、reg uid数据
 | 
				
			||||||
        regUids = {}
 | 
					          lodash.forEach(['verify', 'reg'], (uidType) => {
 | 
				
			||||||
      }
 | 
					            lodash.forEach(regUids, (ds, uid) => {
 | 
				
			||||||
      lodash.forEach(['verify', 'reg'], (uidType) => {
 | 
					              if (uid && ds.type === uidType && !uidMap[key][uid]) {
 | 
				
			||||||
        lodash.forEach(regUids, (ds, uid) => {
 | 
					                uidMap[key][uid] = { uid, type: ds.type }
 | 
				
			||||||
          if (uid && ds.type === uidType && !uidMap[key][uid]) {
 | 
					                uids[key].push(uid)
 | 
				
			||||||
            uidMap[key][uid] = { uid, type: ds.type }
 | 
					              }
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          // 如果当前选中uid未在记录中,则补充为reg数据
 | 
				
			||||||
 | 
					          let uid = gameDB.uid
 | 
				
			||||||
 | 
					          if (uid && !uidMap[key][uid]) {
 | 
				
			||||||
 | 
					            uidMap[key][uid] = { uid, type: 'reg' }
 | 
				
			||||||
            uids[key].push(uid)
 | 
					            uids[key].push(uid)
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        })
 | 
					        }
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
      self[`${key}Uid`] = self[`${key}Uid`] || db[`${key}Uid`] || uids[key]?.[0] || ''
 | 
					      // 设置选中uid
 | 
				
			||||||
 | 
					      if (mys && mys.uids[key]?.[0]) {
 | 
				
			||||||
 | 
					        self.uid[key] = mys.uids[key]?.[0] || self.uid[key] || ''
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        self.uid[key] = self.uid[key] || gameDB?.uid || uids[key]?.[0] || ''
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -185,12 +198,13 @@ export default class NoteUser extends BaseModel {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 获取当前UID
 | 
					  // 获取当前UID
 | 
				
			||||||
  getUid (game = 'gs') {
 | 
					  getUid (game = 'gs') {
 | 
				
			||||||
    return this.isGs(game) ? this.gsUid : this.srUid
 | 
					    let gameKey = this.gameKey(game)
 | 
				
			||||||
 | 
					    return this.uid[gameKey] || this.uids[gameKey][0] || ''
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  getSelfUid (game = 'gs') {
 | 
					  getSelfUid (game = 'gs') {
 | 
				
			||||||
    let gameKey = this.gameKey(game)
 | 
					    let gameKey = this.gameKey(game)
 | 
				
			||||||
    let uids = this[`${gameKey}UidMap`].filter((v) => v.type === 'ck')
 | 
					    let uids = this.uidMap[gameKey].filter((v) => v.type === 'ck')
 | 
				
			||||||
    if (uids.length === 0) {
 | 
					    if (uids.length === 0) {
 | 
				
			||||||
      return false
 | 
					      return false
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -212,7 +226,7 @@ export default class NoteUser extends BaseModel {
 | 
				
			||||||
  getUidData (game = 'gs') {
 | 
					  getUidData (game = 'gs') {
 | 
				
			||||||
    let gameKey = this.gameKey(game)
 | 
					    let gameKey = this.gameKey(game)
 | 
				
			||||||
    let uid = this.getUid(game)
 | 
					    let uid = this.getUid(game)
 | 
				
			||||||
    return this.uidMap[gameKey][uid]
 | 
					    return this.uidMap[gameKey]?.[uid]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 获取当前的MysUser对象
 | 
					  // 获取当前的MysUser对象
 | 
				
			||||||
| 
						 | 
					@ -255,7 +269,7 @@ export default class NoteUser extends BaseModel {
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  async getRegUid (game = 'gs') {
 | 
					  async getRegUid (game = 'gs') {
 | 
				
			||||||
    let gameKey = this.gameKey(game)
 | 
					    let gameKey = this.gameKey(game)
 | 
				
			||||||
    return this[`${gameKey}Uid`] || ''
 | 
					    return this.uid[gameKey] || ''
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
| 
						 | 
					@ -281,27 +295,26 @@ export default class NoteUser extends BaseModel {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (this.uidMap[gameKey][uid]) {
 | 
					    if (this.uidMap[gameKey][uid]) {
 | 
				
			||||||
      if (this.isGs(game)) {
 | 
					      this.uid[gameKey] = uid
 | 
				
			||||||
        this.gsUid = uid
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        this.srUid = uid
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 添加MysUser
 | 
					  // 添加MysUser
 | 
				
			||||||
  addMysUser (mysUser) {
 | 
					  addMysUser (mysUser) {
 | 
				
			||||||
    this.mysUsers[mysUser.ltuid] = mysUser
 | 
					    this.mysUsers[mysUser.ltuid] = mysUser
 | 
				
			||||||
    this.initUids()
 | 
					    this.initUids(mysUser)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 删除当前用户绑定CK
 | 
					  // 删除当前用户绑定CK
 | 
				
			||||||
  async delCk (ltuid = '', needRefreshCache = true) {
 | 
					  async delCk (ltuid = '', needRefreshCache = true) {
 | 
				
			||||||
    if (!this.mysUsers[ltuid]) {
 | 
					    console.log('delCk', ltuid, !!this.mysUsers[ltuid])
 | 
				
			||||||
      return false
 | 
					    if (!ltuid || !this.mysUsers[ltuid]) {
 | 
				
			||||||
 | 
					      return
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    let mys = this.mysUsers[ltuid]
 | 
				
			||||||
    delete this.mysUsers[ltuid]
 | 
					    delete this.mysUsers[ltuid]
 | 
				
			||||||
    this.initUids()
 | 
					    mys.del()
 | 
				
			||||||
 | 
					    await this.initUids()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@ import common from '../../../lib/common/common.js'
 | 
				
			||||||
import MysInfo from './mys/mysInfo.js'
 | 
					import MysInfo from './mys/mysInfo.js'
 | 
				
			||||||
import NoteUser from './mys/NoteUser.js'
 | 
					import NoteUser from './mys/NoteUser.js'
 | 
				
			||||||
import MysUser from './mys/MysUser.js'
 | 
					import MysUser from './mys/MysUser.js'
 | 
				
			||||||
 | 
					import MysUtil from './mys/MysUtil.js'
 | 
				
			||||||
import { promisify } from 'node:util'
 | 
					import { promisify } from 'node:util'
 | 
				
			||||||
import YAML from 'yaml'
 | 
					import YAML from 'yaml'
 | 
				
			||||||
import { Data } from '#miao'
 | 
					import { Data } from '#miao'
 | 
				
			||||||
| 
						 | 
					@ -58,6 +59,7 @@ export default class User extends base {
 | 
				
			||||||
      return
 | 
					      return
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TODO:独立的mys数据,不走缓存ltuid
 | 
				
			||||||
    let mys = await MysUser.create(param.ltuid)
 | 
					    let mys = await MysUser.create(param.ltuid)
 | 
				
			||||||
    let data = {}
 | 
					    let data = {}
 | 
				
			||||||
    data.ck = `ltoken=${param.ltoken};ltuid=${param.ltuid || param.login_uid};cookie_token=${param.cookie_token || param.cookie_token_v2}; account_id=${param.ltuid || param.login_uid};`
 | 
					    data.ck = `ltoken=${param.ltoken};ltuid=${param.ltuid || param.login_uid};cookie_token=${param.cookie_token || param.cookie_token_v2}; account_id=${param.ltuid || param.login_uid};`
 | 
				
			||||||
| 
						 | 
					@ -81,9 +83,10 @@ export default class User extends base {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** 检查ck是否失效 */
 | 
					    /** 检查ck是否失效 */
 | 
				
			||||||
    let uidRet = await mys.reqMysUid()
 | 
					    let uidRet = await mys.reqMysUid()
 | 
				
			||||||
    console.log('uidRet', uidRet)
 | 
					 | 
				
			||||||
    if (uidRet.status !== 0) {
 | 
					    if (uidRet.status !== 0) {
 | 
				
			||||||
      logger.mark(`绑定cookie错误1:${this.checkMsg || 'cookie错误'}`)
 | 
					      logger.mark(`绑定cookie错误1:${this.checkMsg || 'cookie错误'}`)
 | 
				
			||||||
 | 
					      // 清除mys数据
 | 
				
			||||||
 | 
					      mys._delCache()
 | 
				
			||||||
      return await this.e.reply(`绑定cookie失败:${this.checkMsg || 'cookie错误'}`)
 | 
					      return await this.e.reply(`绑定cookie失败:${this.checkMsg || 'cookie错误'}`)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,10 +95,8 @@ export default class User extends base {
 | 
				
			||||||
      let userFullInfo = await mys.getUserFullInfo()
 | 
					      let userFullInfo = await mys.getUserFullInfo()
 | 
				
			||||||
      if (userFullInfo?.data?.user_info) {
 | 
					      if (userFullInfo?.data?.user_info) {
 | 
				
			||||||
        let userInfo = userFullInfo?.data?.user_info
 | 
					        let userInfo = userFullInfo?.data?.user_info
 | 
				
			||||||
        /*
 | 
					        // this.ltuid = userInfo.uid
 | 
				
			||||||
        this.ltuid = userInfo.uid
 | 
					        // this.ck = `${this.ck}ltuid=${this.ltuid};`
 | 
				
			||||||
        this.ck = `${this.ck}ltuid=${this.ltuid};`
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        logger.mark(`绑定cookie错误2:${userFullInfo.message || 'cookie错误'}`)
 | 
					        logger.mark(`绑定cookie错误2:${userFullInfo.message || 'cookie错误'}`)
 | 
				
			||||||
        return await this.e.reply(`绑定cookie失败:${userFullInfo.message || 'cookie错误'}`)
 | 
					        return await this.e.reply(`绑定cookie失败:${userFullInfo.message || 'cookie错误'}`)
 | 
				
			||||||
| 
						 | 
					@ -105,6 +106,7 @@ export default class User extends base {
 | 
				
			||||||
    logger.mark(`${this.e.logFnc} 检查cookie正常 [ltuid:${mys.ltuid}]`)
 | 
					    logger.mark(`${this.e.logFnc} 检查cookie正常 [ltuid:${mys.ltuid}]`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await user.addMysUser(mys)
 | 
					    await user.addMysUser(mys)
 | 
				
			||||||
 | 
					    await mys.initCache()
 | 
				
			||||||
    await user.save()
 | 
					    await user.save()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    logger.mark(`${this.e.logFnc} 保存cookie成功 [ltuid:${mys.ltuid}]`)
 | 
					    logger.mark(`${this.e.logFnc} 保存cookie成功 [ltuid:${mys.ltuid}]`)
 | 
				
			||||||
| 
						 | 
					@ -133,49 +135,17 @@ export default class User extends base {
 | 
				
			||||||
    await this.e.reply(msg)
 | 
					    await this.e.reply(msg)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /** 检查ck是否可用 */
 | 
					 | 
				
			||||||
  async checkCk (mys, param = {}) {
 | 
					 | 
				
			||||||
    let res
 | 
					 | 
				
			||||||
    for (let type of ['mys', 'hoyolab']) {
 | 
					 | 
				
			||||||
      let roleRes = await mys.getGameRole(type)
 | 
					 | 
				
			||||||
      if (roleRes?.retcode === 0) {
 | 
					 | 
				
			||||||
        res = roleRes
 | 
					 | 
				
			||||||
        /** 国际服的标记 */
 | 
					 | 
				
			||||||
        if (type === 'hoyolab' && typeof (param.mi18nLang) === 'string' && !/mi18nLang/.test(mys.ck)) {
 | 
					 | 
				
			||||||
          mys.ck += ` mi18nLang=${param.mi18nLang};`
 | 
					 | 
				
			||||||
          mys.type = 'hoyolab'
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        break
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      if (roleRes.retcode === -100) {
 | 
					 | 
				
			||||||
        this.checkMsg = '该ck已失效,请重新登录获取'
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        this.checkMsg = roleRes.message || 'error'
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (!res) return false
 | 
					 | 
				
			||||||
    let playerList = res?.data?.list || []
 | 
					 | 
				
			||||||
    if (!playerList || playerList.length <= 0) {
 | 
					 | 
				
			||||||
      this.checkMsg = '该账号尚未绑定原神或星穹角色!'
 | 
					 | 
				
			||||||
      return false
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      playerList = playerList.filter(v => ['hk4e_cn', 'hkrpg_cn', 'hk4e_global', 'hkrpg_global'].includes(v.game_biz))
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /** 米游社默认展示的角色 */
 | 
					 | 
				
			||||||
    for (let val of playerList) {
 | 
					 | 
				
			||||||
      mys.addUid(val.game_uid, ['hk4e_cn', 'hk4e_global'].includes(val.game_biz) ? 'gs' : 'sr')
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    await mys.save()
 | 
					 | 
				
			||||||
    return mys
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /** 删除绑定ck */
 | 
					  /** 删除绑定ck */
 | 
				
			||||||
  async delCk (uid = '') {
 | 
					  async delCk () {
 | 
				
			||||||
    let user = await this.user()
 | 
					    let user = await this.user()
 | 
				
			||||||
    let uids = await user.delCk()
 | 
					    // 获取当前uid
 | 
				
			||||||
    return `绑定cookie已删除,uid:${uids.join(',')}`
 | 
					    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已删除}`
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /** 绑定uid,若有ck的话优先使用ck-uid */
 | 
					  /** 绑定uid,若有ck的话优先使用ck-uid */
 | 
				
			||||||
| 
						 | 
					@ -193,7 +163,7 @@ export default class User extends base {
 | 
				
			||||||
  async showUid () {
 | 
					  async showUid () {
 | 
				
			||||||
    let user = await this.user()
 | 
					    let user = await this.user()
 | 
				
			||||||
    let msg = ['通过【#uid+序号】来切换uid']
 | 
					    let msg = ['通过【#uid+序号】来切换uid']
 | 
				
			||||||
    lodash.forEach({ genshin: '原神', star: '星穹铁道' }, (gameName, game) => {
 | 
					    lodash.forEach({ gs: '原神', sr: '星穹铁道' }, (gameName, game) => {
 | 
				
			||||||
      let uidList = user.getUidList(game)
 | 
					      let uidList = user.getUidList(game)
 | 
				
			||||||
      let currUid = user.getUid(game)
 | 
					      let currUid = user.getUid(game)
 | 
				
			||||||
      if (uidList.length === 0) {
 | 
					      if (uidList.length === 0) {
 | 
				
			||||||
| 
						 | 
					@ -220,7 +190,7 @@ export default class User extends base {
 | 
				
			||||||
      return await this.e.reply('uid序号输入错误')
 | 
					      return await this.e.reply('uid序号输入错误')
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    index = Number(index) - 1
 | 
					    index = Number(index) - 1
 | 
				
			||||||
    await user.setMainUid(index, game)
 | 
					    user.setMainUid(index, game)
 | 
				
			||||||
    await user.save()
 | 
					    await user.save()
 | 
				
			||||||
    return await this.showUid()
 | 
					    return await this.showUid()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -318,13 +288,16 @@ export default class User extends base {
 | 
				
			||||||
          ck,
 | 
					          ck,
 | 
				
			||||||
          device,
 | 
					          device,
 | 
				
			||||||
          ltuid,
 | 
					          ltuid,
 | 
				
			||||||
          star: {},
 | 
					          uids: {},
 | 
				
			||||||
          genshin: {},
 | 
					 | 
				
			||||||
          type: /America Server|Europe Server|Asia Server/.test(region) ? 'hoyolab' : 'mys'
 | 
					          type: /America Server|Europe Server|Asia Server/.test(region) ? 'hoyolab' : 'mys'
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        let tmp = ltuids[ltuid]
 | 
					        let tmp = ltuids[ltuid]
 | 
				
			||||||
        let game = region === '星穹列车' ? 'star' : 'genshin'
 | 
					        let game = region === '星穹列车' ? 'sr' : 'gs'
 | 
				
			||||||
        tmp[game][uid] = uid
 | 
					        tmp.uids[game] = tmp.uids[game] || []
 | 
				
			||||||
 | 
					        let gameUids = tmp.uids[game]
 | 
				
			||||||
 | 
					        if (!gameUids.includes(uid + '')) {
 | 
				
			||||||
 | 
					          gameUids.push(uid + '')
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      if (!qq) {
 | 
					      if (!qq) {
 | 
				
			||||||
        continue
 | 
					        continue
 | 
				
			||||||
| 
						 | 
					@ -334,8 +307,6 @@ export default class User extends base {
 | 
				
			||||||
        let data = ltuids[ltuid]
 | 
					        let data = ltuids[ltuid]
 | 
				
			||||||
        let mys = await MysUser.create(data.ltuid)
 | 
					        let mys = await MysUser.create(data.ltuid)
 | 
				
			||||||
        if (mys) {
 | 
					        if (mys) {
 | 
				
			||||||
          data.gsUids = lodash.keys(data.genshin)
 | 
					 | 
				
			||||||
          data.srUids = lodash.keys(data.star)
 | 
					 | 
				
			||||||
          mys.setCkData(data)
 | 
					          mys.setCkData(data)
 | 
				
			||||||
          await mys.save()
 | 
					          await mys.save()
 | 
				
			||||||
          user.addMysUser(mys)
 | 
					          user.addMysUser(mys)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue