HJ_Server/src/api_s2c/event/huangqijiuguan/ApiDuiHuan.ts
xichaoyin 61afa26e45 feat:
黄旗酒馆
2024-01-09 17:12:11 +08:00

41 lines
1.4 KiB
TypeScript

import HQJGFun from "./fun";
import { ApiCall } from "tsrpc";
import { PlayerFun } from "../../../public/player";
import { ReqDuiHuan, ResDuiHuan } from "../../../shared/protocols/event/huangqijiuguan/PtlDuiHuan";
export default async function (call: ApiCall<ReqDuiHuan, ResDuiHuan>) {
let hd = await HQJGFun.HdInfo(call, call.req.hdid);
if (!hd || Object.keys(hd).length <= 0) {
// 无此活动
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
}
let need = [];
let prize = [];
let mydata = await HQJGFun.getMydata(call, call.req.hdid);
for (let id in call.req.dh) {
let con = hd.data.duihuan.filter(x => x.id == Number(id))[0];
if ((mydata.duihuan[id] || 0) + call.req.dh[id] > con.buyNum) {
return call.error("", { code: -2, message: globalThis.lng.hqjgtips_28 })
}
for (let i = 0; i < call.req.dh[id]; i++) {
need.push(...con.need);
prize.push(...con.prize);
}
mydata.duihuan[id] = (mydata.duihuan[id] || 0) + call.req.dh[id];
}
// 检查消耗
await PlayerFun.checkNeedIsMeet(call, need);
// 发送奖励
await PlayerFun.sendPrize(call, prize);
// 记录兑换次数
await HQJGFun.setMyData(call.uid, hd.hdid, { duihuan: mydata.duihuan });
call.succ({ prize: prize, data: mydata })
}