拍卖行:价格修改

This commit is contained in:
luying
2021-09-24 11:38:41 +08:00
parent f3c73ade66
commit 1384074736
8 changed files with 98 additions and 56 deletions
+12 -12
View File
@@ -1,17 +1,17 @@
import { MailModel, MailType } from './../db/Mail';
import { DividendModel } from './../db/Dividend';
import { LOT_CODE_LEN, AUCTION_STAGE, AUCTION_TIME, DIVIDEND_CODE_LEN, DIVIDEND_STATUS, LOT_STATUS, MAIL_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, STATUS, DIVIDENDWEEKENDRATE, DIVIDENDMAXRATIO, DIVIDENDPOSITIONMAXRATIO, ROLE_RECEIVE_STATUS, AUCTION_BID_STATUS, DEBUG_MAGIC_WORD, AUCTION_SOURCE } from './../consts';
import { LOT_CODE_LEN, AUCTION_STAGE, AUCTION_TIME, DIVIDEND_CODE_LEN, DIVIDEND_STATUS, LOT_STATUS, MAIL_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, DIVIDENDMAXRATIO, DIVIDENDPOSITIONMAXRATIO, ROLE_RECEIVE_STATUS, AUCTION_BID_STATUS, DEBUG_MAGIC_WORD, AUCTION_SOURCE } from './../consts';
import { DividendRec, ItemReward } from "../domain/dbGeneral";
import { genCode, resResult } from '../pubUtils/util';
import { genCode } from '../pubUtils/util';
import { LotModel, LotParam } from '../db/Lot';
import { getZeroPointD, getTimeFunD } from '../pubUtils/timeUtil';
import { getTimeFunD } from '../pubUtils/timeUtil';
import { gameData, getGoodById } from '../pubUtils/data';
import { DividendParam, DividendType } from '../db/Dividend';
import { pushMail } from '../pubUtils/interface';
import { sendMailByContent } from './mailService';
import { pinus, BackendSession, FrontendOrBackendSession } from 'pinus';
import { FrontendOrBackendSession } from 'pinus';
import { participants } from './guildActivityService';
import { Member } from '../domain/battleField/guildActivity';
import * as dicParam from '../pubUtils/dicParam';
import { RewardInter } from '../pubUtils/interface';
// ! 获取底价,假数据
export function getBasePrice(gid: number, count: number) {
@@ -142,7 +142,7 @@ export function getBossAuctionEnd() {
* @param {number} serverId
* @param {ItemReward[]} rewards
*/
export async function genAuction(guildCode: string, sourceType: number, sourceCode: string, serverId: number, rewards: ItemReward[]) {
export async function genAuction(guildCode: string, sourceType: number, sourceCode: string, serverId: number, rewards: { goods: RewardInter, basePrice: number, maxPrice: number}[]) {
let begin = auctionBegin();
let end = auctionEnd();
if(sourceType == AUCTION_SOURCE.BOSS) { // 军团boss本
@@ -150,13 +150,13 @@ export async function genAuction(guildCode: string, sourceType: number, sourceCo
end = getBossAuctionEnd();
}
const guildEnd = guildAuctionEnd();
const lotsData: LotParam[] = rewards.map(reward => {
const { id, count } = reward;
const lotsData: LotParam[] = rewards.map(({ goods, basePrice, maxPrice }) => {
const { id, count } = goods;
const code = genCode(LOT_CODE_LEN);
return {
auctionStage: AUCTION_STAGE.DEFAULT, sourceType,
sourceCode, serverId, guildCode, code, gid: id, count, begin, end, status: LOT_STATUS.DEFAULT,
maxPrice: getMaxPrice(id, count), curPrice: getBasePrice(id, count),
maxPrice, curPrice: basePrice,
}
});
const lots = await LotModel.createRecs(lotsData);
@@ -179,7 +179,7 @@ function posDividend(totalPrice: number, roleRatio: number, totalRatio: number)
function weekendDividend(posNum: number, date: Date) {
const day = date.getDay();
return (day === 0 || day === 6) ? Math.floor(posNum * DIVIDENDWEEKENDRATE) : 0;
return (day === 0 || day === 6) ? Math.floor(posNum * dicParam.GUILD_AUCTION.DIVIDEND_WEEKEND_RATE) : 0;
}
function dividendRate(data: Member) {
@@ -197,7 +197,7 @@ export async function calculateDividend(dividend: DividendType) {
if (!dividend) return null;
const { code, guildCode, sourceType, sourceCode, lots, totalPrice, status, begin } = dividend;
if (status === DIVIDEND_STATUS.SENT) return dividend;
const calcuTotalPrice = lots.reduce((acc, lot) => { return acc + lot.price }, 0);
const calcuTotalPrice = lots.reduce((acc, lot) => { return acc + lot.price }, 0) * dicParam.GUILD_AUCTION.DIVIDEND_RATE;
if (calcuTotalPrice !== totalPrice) {
await DividendModel.updateDividend(code, { totalPrice: calcuTotalPrice });
// 更新 totalPrice
@@ -393,7 +393,7 @@ export async function gateActivitySettleReward(guildCode: string, serverId: numb
rank, score: guildScore, remainGateHp: gateHp,
members, memberCnt: members.length,
auctionType: AUCTION_SOURCE.GATE,
rewards
rewards: rewards.map(cur => cur.goods)
});
// 结算功勋等奖励
let dic = gameData.guildActivity.get(GUILD_ACTIVITY_TYPE.GATE_ACTIVITY);
@@ -455,7 +455,7 @@ export async function cityActivitySettleReward(cityId: number, serverId: number)
memberCnt: members.length, members,
isSuccess, isCompleted: true,
rank: guildRank, damage: num, remainGateHp: gateHp,
rewards,
rewards: rewards.map(cur => cur.goods),
auctionType: AUCTION_SOURCE.CITY,
});
@@ -690,7 +690,7 @@ export async function raceActivitySettleReward(guildCode: string, woodenHorse: W
let rec = await GuildActivityRecordModel.updateInfo(guildCode, {
memberCnt: members.length, members,
isSuccess, isCompleted: true, rank: myGuildRank,
rewards,
rewards: rewards.map(cur => cur.goods),
woodenHorse,
});
if (rec) {