拍卖行:领取奖励、查看关注、查看出价的接口实现和测试用例

This commit is contained in:
liangtongchuan
2021-03-19 00:54:52 +08:00
parent 39228e1fc9
commit 63e0d33846
6 changed files with 143 additions and 15 deletions
@@ -1,3 +1,5 @@
import { AUCTION_BID_STATUS } from './../../../consts/constModules/auctionConst';
import { pick } from 'lodash';
import { DividendModel } from './../../../db/Dividend';
import { Application, BackendSession, ChannelService } from "pinus";
import { AUCTION_STAGE, DEBUG_MAGIC_WORD, STATUS, OFFER_RATIO, CURRENCY_BY_TYPE, CURRENCY_TYPE, DATA_NAME, LOT_STATUS } from "../../../consts";
@@ -82,7 +84,7 @@ export class AuctionHandler {
newPrice = maxPrice;
await addItems(roleId, roleName, sid, [{ id: gid, count }]);
}
bidRoles.push({roleId, price: newPrice, time: new Date()});
bidRoles.push({ roleId, price: newPrice, time: new Date() });
const newLot = await LotModel.updateLot({ code, curBuyer: roleId, curPrice: newPrice, bidRoles, status: maxFlag ? LOT_STATUS.SOLD : LOT_STATUS.ING, watchingRoles: Array.from(new Set([...watchingRoles, roleId])) });
res.releaseCallback();
@@ -122,15 +124,52 @@ export class AuctionHandler {
}
async getDividend(msg: { sourceType: number }, session: BackendSession) {
return resResult(STATUS.SUCCESS);
const roleId = session.get('roleId');
const sid = session.get('sid');
const roleName = session.get('roleName');
const guildCode = session.get('guildCode');
const { sourceType } = msg;
const dividendData = await DividendModel.findReadyDividend(guildCode, sourceType);
if (!dividendData) return resResult(STATUS.DIVIDEND_NOT_READY);
const { dividends } = dividendData;
const dividend = dividends.find(item => { return item.roleId === roleId });
if (!dividend) return resResult(STATUS.DIVIDEND_GUILD_PLAYER_ONLY);
await addItems(roleId, roleName, sid, [{ id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.GOLD), count: dividend.total }]);
await DividendModel.updateReceiveStatus(dividendData.code, roleId);
return resResult(STATUS.SUCCESS, { dividend });
}
async myOffers(msg: {}, session: BackendSession) {
return resResult(STATUS.SUCCESS);
async myWatching(msg: {}, session: BackendSession) {
const roleId = session.get('roleId');
const serverId = session.get('serverId');
const begin = todayGuildBegin();
const lots = await LotModel.watchingLotsByBegin(serverId, roleId, begin);
return resResult(STATUS.SUCCESS, { lots });
}
async offerRecs(msg: { count: number }, session: BackendSession) {
return resResult(STATUS.SUCCESS);
const roleId = session.get('roleId');
const serverId = session.get('serverId');
const lotsData = await LotModel.recentBidLots(serverId, roleId, msg.count);
const bidRecs = lotsData.map(lot => {
const bidRec = lot.bidRoles.find(role => { return role.roleId === roleId });
const { curBuyer } = lot;
return { ...bidRec, status: curBuyer === roleId ? AUCTION_BID_STATUS.SUC : AUCTION_BID_STATUS.RETURN };
});
return resResult(STATUS.SUCCESS, { bidRecs });
}
// ! 测试接口
async debugSetDividendReady(msg: { magicWord: string, sourceType: number}, session: BackendSession) {
const { magicWord, sourceType } = msg;
if (magicWord !== DEBUG_MAGIC_WORD) {
return resResult(STATUS.TOKEN_ERR);
}
const guildCode: string = session.get('guildCode');
if (!guildCode) return resResult(STATUS.GUILD_NOT_FOUND)
const dividend = await DividendModel.updateDividendReady(guildCode, sourceType);
return resResult(STATUS.SUCCESS, { dividend });
}
// ! 测试接口