修改新手10连抽结果的返回

This commit is contained in:
zhl 2021-02-03 16:56:14 +08:00
parent 3132724f15
commit be6a247e18
4 changed files with 92 additions and 74 deletions

View File

@ -24,7 +24,7 @@ export default class ActivityController extends BaseController {
} else { } else {
day = (new Date(0)).format('yyyy-MM-dd', true) day = (new Date(0)).format('yyyy-MM-dd', true)
} }
let record = (await ActRecord.findOrCreate({accountid, day})).doc let record = (await ActRecord.findOrCreate({accountid, actid: id, day})).doc
if (!cfg.repeat && record.count > 0) { if (!cfg.repeat && record.count > 0) {
throw new ZError(12, 'already goted') throw new ZError(12, 'already goted')
} }
@ -41,8 +41,14 @@ export default class ActivityController extends BaseController {
record.lasttime = Date.now() record.lasttime = Date.now()
await record.save() await record.save()
const itemInfos: ItemInfo[] = ItemCtrl.getItemsByInfo(cfg.income) const itemInfos: ItemInfo[] = ItemCtrl.getItemsByInfo(cfg.income)
let results
if (id == 90001 || id == 90002) {
results = await BagItem.parseCardItems(req.user, itemInfos)
} else {
await BagItem.addItems(accountid, itemInfos) await BagItem.addItems(accountid, itemInfos)
results = itemInfos
}
await record.save() await record.save()
return itemInfos return results
} }
} }

View File

@ -161,77 +161,9 @@ export default class CardController extends BaseController {
throw new ZError(105, '解锁物品数量不足') throw new ZError(105, '解锁物品数量不足')
} }
const items: ItemInfo[] = [] const items: ItemInfo[] = []
for (let z = 0 ; z < count; z ++) { items.push(...ItemCtrl.getItemsByInfo(cfg.get))
items.push(ItemCtrl.getItemsByInfo(cfg.get)[0])
}
let account = req.user let account = req.user
const cfgMap = global.$cfg.get(BaseConst.ITEMCARD) const results = await BagItem.parseCardItems(account, items)
let results: any = []
const cardMap = account.cardMap
let itemToSave: ItemInfo[] = []
for (let item of items) {
if (item.type != ItemType.CARD) {
results.push({
id: item.id,
used: 0,
count: item.count
});
itemToSave.push(item)
continue
}
if (item.type == ItemType.CARD &&!cfgMap.has(item.id)) {
error(`抽卡 ${item.id} 的配置不存在`)
continue
}
const data = cfgMap.get(item.id)
if (data.unlocking >= 30000 ) { // 英雄
for (let i = 0; i < item.count; i ++) {
let result = account.unlockHero(data.unlocking, data.unlockingtimes)
if (result == 1) {
await addHeroDefaultCardGroup(accountid, data.unlocking, cardMap)
}
if (result > 0) {
results.push({
id: item.id,
used: 1,
count: 1,
heroid: data.unlocking
})
} else {
let saveItem = new ItemInfo(item.id, 1, item.weight)
saveItem.type = item.type
itemToSave.push(saveItem)
results.push({
id: item.id,
count: 1,
used: 0
})
}
}
} else { // 随从卡
for (let i = 0; i < item.count; i ++) {
const result = account.unlockCard(data.unlocking, data.unlockingtimes)
if (result > 0) {
results.push({
id: item.id,
used: 1,
count: 1,
cardid: data.unlocking
})
} else {
let saveItem = new ItemInfo(item.id, 1, item.weight)
saveItem.type = item.type
itemToSave.push(saveItem)
results.push({
id: item.id,
count: 1,
used: 0,
})
}
}
}
}
await BagItem.addItems(accountid, itemToSave)
await account.save() await account.save()
record.count -= itemInfo[0].count record.count -= itemInfo[0].count
await record.save() await record.save()

View File

@ -19,7 +19,7 @@ interface ActRecordClass extends Base<string>, TimeStamps {
} }
@dbconn() @dbconn()
@index({ 'accountid': 1 , actid: 1, 'day': 1}, { unique: true }) @index({ 'accountid': 1 , 'actid': 1, 'day': 1}, { unique: true })
@plugin(findOrCreate) @plugin(findOrCreate)
@modelOptions({ @modelOptions({
schemaOptions: schemaOptions:

View File

@ -18,6 +18,8 @@ import { BaseConst } from '../constants/BaseConst'
import { DropItemCfg } from '../cfg/parsers/DropItemCfg' import { DropItemCfg } from '../cfg/parsers/DropItemCfg'
import { ItemCardCfg } from '../cfg/parsers/ItemCardCfg' import { ItemCardCfg } from '../cfg/parsers/ItemCardCfg'
import { ItemInfo } from '../logic/ItemDef' import { ItemInfo } from '../logic/ItemDef'
import { error } from '../common/Debug'
import { addHeroDefaultCardGroup } from '../dao/CardGroupDao'
export enum ItemType { export enum ItemType {
UNKNOW = 0, // 未知 UNKNOW = 0, // 未知
@ -94,6 +96,84 @@ class BagItemClass extends FindOrCreate {
type: this.itemtype type: this.itemtype
} }
} }
/**
* 10
* @param account
* @param {ItemInfo[]} items
* @return {Promise<any>}
*/
public static async parseCardItems(account: any, items: ItemInfo[]) {
const cardMap = account.cardMap
const cfgMap = global.$cfg.get(BaseConst.ITEMCARD)
let itemToSave: ItemInfo[] = []
const accountid = account._id
let results: any = []
for (let item of items) {
if (item.type != ItemType.CARD) {
results.push({
id: item.id,
used: 0,
count: item.count
});
itemToSave.push(item)
continue
}
if (item.type == ItemType.CARD &&!cfgMap.has(item.id)) {
error(`抽卡 ${item.id} 的配置不存在`)
continue
}
const data = cfgMap.get(item.id)
if (data.unlocking >= 30000 ) { // 英雄
for (let i = 0; i < item.count; i ++) {
let result = account.unlockHero(data.unlocking, data.unlockingtimes)
if (result == 1) {
await addHeroDefaultCardGroup(accountid, data.unlocking, cardMap)
}
if (result > 0) {
results.push({
id: item.id,
used: 1,
count: 1,
heroid: data.unlocking
})
} else {
let saveItem = new ItemInfo(item.id, 1, item.weight)
saveItem.type = item.type
itemToSave.push(saveItem)
results.push({
id: item.id,
count: 1,
used: 0
})
}
}
} else { // 随从卡
for (let i = 0; i < item.count; i ++) {
const result = account.unlockCard(data.unlocking, data.unlockingtimes)
if (result > 0) {
results.push({
id: item.id,
used: 1,
count: 1,
cardid: data.unlocking
})
} else {
let saveItem = new ItemInfo(item.id, 1, item.weight)
saveItem.type = item.type
itemToSave.push(saveItem)
results.push({
id: item.id,
count: 1,
used: 0,
})
}
}
}
}
await BagItem.addItems(accountid, itemToSave)
return results
}
} }
export const BagItem = getModelForClass(BagItemClass, export const BagItem = getModelForClass(BagItemClass,