85 lines
1.6 KiB
JavaScript
85 lines
1.6 KiB
JavaScript
|
import BaseModel from './BaseModel.js'
|
|||
|
import lodash from 'lodash'
|
|||
|
import { UserGameDB } from './index.js'
|
|||
|
import MysUtil from '../mys/MysUtil.js'
|
|||
|
|
|||
|
const { Types } = BaseModel
|
|||
|
|
|||
|
const COLUMNS = {
|
|||
|
// 用户ID,qq为数字
|
|||
|
id: {
|
|||
|
type: Types.STRING,
|
|||
|
autoIncrement: false,
|
|||
|
primaryKey: true
|
|||
|
},
|
|||
|
|
|||
|
type: {
|
|||
|
type: Types.STRING,
|
|||
|
defaultValue: 'qq',
|
|||
|
notNull: true
|
|||
|
},
|
|||
|
|
|||
|
// 昵称
|
|||
|
name: Types.STRING,
|
|||
|
|
|||
|
// 头像
|
|||
|
face: Types.STRING,
|
|||
|
|
|||
|
ltuids: Types.STRING
|
|||
|
}
|
|||
|
|
|||
|
class UserDB extends BaseModel {
|
|||
|
static async find (id, type = 'qq') {
|
|||
|
// user_id
|
|||
|
id = type === 'qq' ? '' + id : type + id
|
|||
|
// DB查询
|
|||
|
let user = await UserDB.findByPk(id, {
|
|||
|
include: {
|
|||
|
model: UserGameDB,
|
|||
|
as: 'games'
|
|||
|
}
|
|||
|
})
|
|||
|
if (!user) {
|
|||
|
user = await UserDB.build({
|
|||
|
id,
|
|||
|
type
|
|||
|
})
|
|||
|
}
|
|||
|
return user
|
|||
|
}
|
|||
|
|
|||
|
async saveDB (user) {
|
|||
|
let db = this
|
|||
|
let ltuids = []
|
|||
|
lodash.forEach(user.mysUsers, (mys) => {
|
|||
|
if (mys.ck && mys.ltuid) {
|
|||
|
ltuids.push(mys.ltuid)
|
|||
|
}
|
|||
|
})
|
|||
|
db.ltuids = ltuids.join(',')
|
|||
|
let games = []
|
|||
|
await MysUtil.eachGame(async (key) => {
|
|||
|
let game = user.games[key]
|
|||
|
if (!game && (user.mainUid[key] || !lodash.isEmpty(user.uidMap[key]))) {
|
|||
|
game = await db.createGame({
|
|||
|
game: key
|
|||
|
})
|
|||
|
}
|
|||
|
if (game) {
|
|||
|
game.uid = user.mainUid[key]
|
|||
|
game.data = user.uidMap[key]
|
|||
|
games.push(game)
|
|||
|
await game.save()
|
|||
|
}
|
|||
|
})
|
|||
|
if (games.length > 0) {
|
|||
|
await this.setGames(games)
|
|||
|
}
|
|||
|
await this.save()
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
BaseModel.initDB(UserDB, COLUMNS)
|
|||
|
await UserDB.sync()
|
|||
|
|
|||
|
export default UserDB
|