添加一个物品消耗通用方法
This commit is contained in:
@@ -51,4 +51,12 @@ export enum ABI_TYPE{
|
||||
/**属性固定值加成(百分比) */
|
||||
TYPE102 = 102,
|
||||
}
|
||||
|
||||
|
||||
export enum ABI_STAGE {
|
||||
HP = 1,
|
||||
ATK = 2,
|
||||
DEF = 3,
|
||||
MDEF = 4,
|
||||
AGI = 5,
|
||||
LUK = 6
|
||||
}
|
||||
+4
-3
@@ -49,10 +49,11 @@ export default class Item extends BaseModel {
|
||||
}
|
||||
|
||||
public static async decreaseItems(roleId: string, items: Array<{id: number, count: number}>, lean = true) {
|
||||
let updateItems = new Array<{id: number, count: number}>(), hasError: boolean = false;
|
||||
let updateItems = new Array<{id: number, count: number}>(), hasError: boolean = false, result = new Array();
|
||||
for(let {id, count} of items) {
|
||||
const rec = await ItemModel.findOneAndUpdate({roleId, id, count: {$gte: count} },{ $inc: { count: -1 * count }}, {new: true}).lean(lean);
|
||||
if(rec) {
|
||||
result.push(rec);
|
||||
updateItems.push({id, count});
|
||||
} else {
|
||||
hasError = true; break;
|
||||
@@ -62,9 +63,9 @@ export default class Item extends BaseModel {
|
||||
for(let {id, count} of updateItems) {
|
||||
await ItemModel.findOneAndUpdate({roleId, id },{ $inc: { count }}, {new: true}).lean(lean);
|
||||
}
|
||||
return false
|
||||
return {hasError: true}
|
||||
} else {
|
||||
return true
|
||||
return {hasError: false, result}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -242,6 +242,11 @@ export default class Role extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async costCoin(roleId: string, cnt: number, lean = true) {
|
||||
let result = await RoleModel.findOneAndUpdate({roleId, coin: {$gte: cnt}}, { $inc: { coin: -cnt } }, { "new": true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async costGold(roleId: string, cnt: number, lean = true) {
|
||||
let result = await RoleModel.findOneAndUpdate({roleId, gold: {$gte: cnt}}, { $inc: { gold: -cnt, totalCost: cnt } }, { "new": true}).lean(lean);
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user