抽卡:修复转盘积分bug

This commit is contained in:
luying
2021-04-26 11:02:15 +08:00
parent 4fe0b6d145
commit 15d9bf099e
2 changed files with 17 additions and 11 deletions

View File

@@ -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,

View File

@@ -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;
}
}