添加查询和创建角色功能;建立长连接后返回部分初始数据
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
import { COUNTER } from './../consts/consts';
|
||||
import { CounterModel } from './Counter';
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
import User from './User';
|
||||
@@ -10,7 +8,6 @@ import User from './User';
|
||||
@index({ roleId: 1 })
|
||||
// @index({ userInfo.uid: 1, serverId: 1 })
|
||||
export default class Role extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
userInfo: User;
|
||||
|
||||
@@ -25,68 +22,87 @@ export default class Role extends BaseModel {
|
||||
serverType: string; // 服务器类型
|
||||
@prop({ required: true })
|
||||
serverId: number; // 区服 id
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: false })
|
||||
blocked: boolean; // 是否屏蔽
|
||||
@prop({ required: true })
|
||||
code: string; // 邀请码
|
||||
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: 0 })
|
||||
exp: number; // 经验值
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: 1 })
|
||||
lv: number; // 主公等级
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: 0 })
|
||||
ce: number; // 总战力
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: 100 })
|
||||
tili: number; // 体力值
|
||||
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: 0 })
|
||||
vLv: number; // VIP 等级
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: 100 })
|
||||
gold: number; // 总金币
|
||||
@prop({ required: true, default: 0 })
|
||||
paidGold: number; // 支付所得金币
|
||||
@prop({ required: true, default: 100 })
|
||||
giftGold: number; // 赠送所得金币
|
||||
@prop({ required: true, default: 0 })
|
||||
totalPay: number; // 总支付金额
|
||||
@prop({ required: true, default: 0 })
|
||||
totalBuy: number; // 总金币购买
|
||||
@prop({ required: true, default: 0 })
|
||||
totalCost: number; // 金币总花费
|
||||
@prop({ required: true, default: [] })
|
||||
payRecord: [{ // 支付记录
|
||||
id: string; // 购买项 product id
|
||||
cnt: number; // 购买次数
|
||||
}];
|
||||
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: [] })
|
||||
consumeGoods: [{ // 消耗品
|
||||
id: number; // id
|
||||
cnt: number; // 数量
|
||||
}];
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: [] })
|
||||
souls: [{ // 将魂
|
||||
id: number; // 武将 id
|
||||
cnt: number; // 数量
|
||||
}];
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: [] })
|
||||
pieces: [{ // 装备碎片
|
||||
id: number; // 装备 id
|
||||
cnt: number; // 数量
|
||||
}];
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: [] })
|
||||
jewels: [{ // 珠宝
|
||||
id: number; // 待定,也可能是 type + lv
|
||||
cnt: number; // 数量
|
||||
}];
|
||||
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: [] })
|
||||
warStar: [{ // 关卡星级
|
||||
id: number; // 关卡 id
|
||||
star: number; // 星级
|
||||
}];
|
||||
|
||||
@prop({ required: true })
|
||||
@prop({ required: true, default: 1 })
|
||||
loginCnt: number; // 登录次数
|
||||
@prop({ required: true })
|
||||
createTime: Date; // 创建时间
|
||||
@prop({ required: true })
|
||||
loginTime: Date; // 更新 / 登录时间
|
||||
|
||||
|
||||
public static async findByUid(uid: number, serverId: number, lean = true) {
|
||||
const role = await RoleModel.findOne({ 'userInfo.uid': uid, serverId }).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
public static async createRole(uid: number, serverId: number, roleInfo: {roleId: string; roleName: string; seqId: number; code: string}, lean = true) {
|
||||
const user = await User.findUserByUid(uid);
|
||||
if (!user) return null;
|
||||
const info = Object.assign(roleInfo, { userInfo: user, serverType: user.serverType, serverId });
|
||||
const role = await RoleModel.findOneAndUpdate({ 'userInfo.uid': uid, serverId }, info, { upsert: true, new: true }).lean(lean);
|
||||
return role;
|
||||
}
|
||||
}
|
||||
|
||||
export const RoleModel = getModelForClass(Role);
|
||||
|
||||
Reference in New Issue
Block a user