diff --git a/game-server/app/servers/activity/handler/gachaHandler.ts b/game-server/app/servers/activity/handler/gachaHandler.ts index 1508475c4..00822260c 100644 --- a/game-server/app/servers/activity/handler/gachaHandler.ts +++ b/game-server/app/servers/activity/handler/gachaHandler.ts @@ -123,9 +123,8 @@ export class GachaHandler { let { heroes } = await createHeroes(roleId, roleName, sid, serverId, funcs, heroInfo); await addItems(roleId, roleName, sid, items); // 更新数据 - point = Math.floor((historyCount + count)/RECRUIT.RECRUIT_BONUS); userGacha = await UserGachaModel.updateInfo(roleId, gachaId, activityId, { - freeCount, hope, floor, count: historyCount + count, point + freeCount, hope, floor, count: historyCount + count }); await UserGachaRecModel.createRec(roleId, gachaId, activityId, count, resultList); @@ -139,7 +138,7 @@ export class GachaHandler { } return resResult(STATUS.SUCCESS, { gachaId, activityId, - freeCount, refFreeTime: resultRefFreeTime, count: userGacha.count, point, floor, hope, + freeCount, refFreeTime: resultRefFreeTime, count: userGacha.count, point: userGacha.point, floor, hope, heroes, result: resultList }); } @@ -184,7 +183,8 @@ export class GachaHandler { const funcs: number[] = session.get('funcs'); let userGacha = await UserGachaModel.findByRole(roleId, gachaId, 0); - let { point, turntable } = userGacha; + let { point, turntable, costPoint } = userGacha; + console.log('***drawTurnTable', point) if (point < RECRUIT.RECRUIT_BONUS_RECRUIT) return resResult(STATUS.GACHA_TURNTABLE_POINT_NOT_ENOUGH); let turntablePool: { quality: number, count: number }[] = []; @@ -233,7 +233,7 @@ export class GachaHandler { } myTurntable.hasGet = true; // 扣除积分 - userGacha = await UserGachaModel.updateInfo(roleId, gachaId, 0, { point: point - 1, turntable }); + userGacha = await UserGachaModel.updateInfo(roleId, gachaId, 0, { turntable, costPoint: costPoint + 1 }); return resResult(STATUS.SUCCESS, { gachaId, diff --git a/shared/db/UserGacha.ts b/shared/db/UserGacha.ts index e31a44b58..efbc92b6c 100644 --- a/shared/db/UserGacha.ts +++ b/shared/db/UserGacha.ts @@ -2,6 +2,7 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose'; import { getTodayZeroDate } from '../pubUtils/timeUtil'; import { REFRESH_HOUR } from '../consts'; +import { RECRUIT } from '../pubUtils/dicParam'; class Floor { @prop({ required: true }) @@ -70,7 +71,12 @@ export default class UserGacha extends BaseModel { refHopeTime: Date; // 心愿单刷新时间 @prop({ required: true, default: 0 }) - point: number; // 积分 + costPoint: number; // 消耗的积分 + + // 积分 + public get point() { + return Math.floor(this.count/RECRUIT.RECRUIT_BONUS) - (this.costPoint||0); + } @prop({ required: true, type: Turntable, default: [], _id: false }) turntable: Turntable[]; // 转盘 @@ -85,7 +91,7 @@ export default class UserGacha extends BaseModel { refVisitedTime: Date; // 玩家指定武将 public static async findAllByRole(roleId: string) { - let rec: UserGachaType[] = await UserGachaModel.find({ roleId }).lean(); + let rec: UserGachaType[] = await UserGachaModel.find({ roleId }).lean({ virtuals: true }); return rec; } @@ -93,7 +99,7 @@ export default class UserGacha extends BaseModel { const doc = new UserGachaModel(); const update = Object.assign(doc.toJSON(), { roleId, gachaId, activityId }); delete update._id; - let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, activityId }, { $setOnInsert: update }, { new: true, upsert: true }).lean(); + let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, activityId }, { $setOnInsert: update }, { new: true, upsert: true }).lean({ virtuals: true }); return rec; } @@ -104,17 +110,17 @@ export default class UserGacha extends BaseModel { for(let key in update) { delete setOnInsert[key]; } - let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, activityId }, { $set: update, $setOnInsert: setOnInsert }, { new: true, upsert: true }).lean(); + let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, activityId }, { $set: update, $setOnInsert: setOnInsert }, { new: true, upsert: true }).lean({ virtuals: true }); return rec; } public static async refreshFreeCount(roleId: string, gachaId: number, aid: number, refFreeTime: Date) { - let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, aid }, { $set: { freeCount: 0, refFreeTime } }, { new: true }).lean(); + let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, aid }, { $set: { freeCount: 0, refFreeTime } }, { new: true }).lean({ virtuals: true }); return rec; } public static async refreshHopeCount(roleId: string, gachaId: number, aid: number, refHopeTime: Date) { - let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, aid }, { $set: { 'hope.$.hasGet': false, refHopeTime } }, { new: true }).lean(); + let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, aid }, { $set: { 'hope.$.hasGet': false, refHopeTime } }, { new: true }).lean({ virtuals: true }); return rec; } }