✨ feat(gvg): 征战中原动态、任务、贡献
This commit is contained in:
@@ -104,26 +104,28 @@ export default class GVGVestigeRank extends BaseModel {
|
||||
await GVGVestigeRankModel.updateMany({ day: today, hasDefense: true, roleId, 'lineup.hid': hid }, { $set: { 'lineupCe.$.ce': ce } });
|
||||
}
|
||||
|
||||
public static async changeRank(isSuccess: boolean, attackInfo: { roleId: string }, defenseInfo: { isRobot: boolean, roleId: string, oldRank: number }): Promise<{ isChange: boolean, atkData?: GVGVestigeRankType, defData?: GVGVestigeRankType, endTime: number }> {
|
||||
public static async changeRank(isSuccess: boolean, vestigeId: number, attackInfo: { roleId: string }, defenseInfo: { isRobot: boolean, roleId: string, oldRank: number }): Promise<{ isChange: boolean, atkData?: GVGVestigeRankType, defData?: GVGVestigeRankType, endTime: number }> {
|
||||
|
||||
let today = getZeroPoint();
|
||||
const session = await mongoose.connection.startSession();
|
||||
session.startTransaction()
|
||||
try {
|
||||
let newAtkData: GVGVestigeRankType, newDefData: GVGVestigeRankType, isChange = false, endTime = Date.now();
|
||||
if(defenseInfo.isRobot) {
|
||||
let atkData = await GVGVestigeRankModel.findOne({ roleId: attackInfo.roleId }).lean();
|
||||
let atkData = await GVGVestigeRankModel.findOne({ day: today, vestigeId, roleId: attackInfo.roleId }).lean();
|
||||
if(isSuccess && atkData && (atkData.rank == 0 || atkData.rank > defenseInfo.oldRank)) {
|
||||
newAtkData = await GVGVestigeRankModel.findOneAndUpdate({ roleId: attackInfo.roleId }, { $set: { rank: defenseInfo.oldRank, oldRank: atkData.rank } }, { new: true, session }).lean();
|
||||
newAtkData = await GVGVestigeRankModel.findOneAndUpdate({ day: today, vestigeId, roleId: attackInfo.roleId }, { $set: { rank: defenseInfo.oldRank, oldRank: atkData.rank } }, { new: true, session }).lean();
|
||||
isChange = true;
|
||||
endTime = Date.now();
|
||||
} else {
|
||||
newAtkData = atkData;
|
||||
}
|
||||
} else {
|
||||
let atkData = await GVGVestigeRankModel.findOne({ roleId: attackInfo.roleId }).lean();
|
||||
let defData = await GVGVestigeRankModel.findOne({ roleId: defenseInfo.roleId }).lean();
|
||||
let atkData = await GVGVestigeRankModel.findOne({ day: today, vestigeId, roleId: attackInfo.roleId }).lean();
|
||||
let defData = await GVGVestigeRankModel.findOne({ day: today, vestigeId, roleId: defenseInfo.roleId }).lean();
|
||||
if(isSuccess && atkData && defData && (atkData.rank == 0 || atkData.rank > defData.rank)) {
|
||||
newAtkData = await GVGVestigeRankModel.findOneAndUpdate({ roleId: attackInfo.roleId }, { $set: { rank: defData.rank, oldRank: atkData.rank } }, { new: true, session }).lean();
|
||||
newDefData = await GVGVestigeRankModel.findOneAndUpdate({ roleId: defenseInfo.roleId }, { $set: { rank: atkData.rank, oldRank: defData.rank } }, { new: true, session }).lean();
|
||||
newAtkData = await GVGVestigeRankModel.findOneAndUpdate({ day: today, vestigeId, roleId: attackInfo.roleId }, { $set: { rank: defData.rank, oldRank: atkData.rank } }, { new: true, session }).lean();
|
||||
newDefData = await GVGVestigeRankModel.findOneAndUpdate({ day: today, vestigeId, roleId: defenseInfo.roleId }, { $set: { rank: atkData.rank, oldRank: defData.rank } }, { new: true, session }).lean();
|
||||
isChange = true;
|
||||
endTime = Date.now();
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user