团购:后台配置定时器以及邮件

This commit is contained in:
luying
2022-10-12 19:31:32 +08:00
parent c0bc6fdf15
commit ebf4158ea2
4 changed files with 28 additions and 13 deletions
@@ -4,6 +4,7 @@ import { ActivityGroupShopRecModel } from "../../db/ActivityGroupShopRec";
import { ActivityGroupShopRefundModel, RefundRec } from "../../db/ActivityGroupShopRefund";
import { ActivityGroupShopUserRecModel } from "../../db/ActivityGroupShopUserRec";
import { GroupShopData } from "../../domain/activityField/groupShopField";
import { gameData } from "../../pubUtils/data";
import { RewardInter } from "../../pubUtils/interface";
import { sendMailByContent } from "../mailService";
import { sendMessageToGroupShopWithSuc } from "../pushService";
@@ -62,6 +63,7 @@ export async function getGroupShopTimers(activity: ActivityModelType) {
}
export async function setGroupShopToSetSum(arr: { activityId: number, itemId: number, sum: number }[]) {
console.log('###### setGroupShopToSetSum', JSON.stringify(arr));
for(let { activityId, itemId, sum } of arr) {
let serverRecord = await ActivityGroupShopRecModel.setSum(activityId, itemId, sum);
if(serverRecord) {
@@ -89,24 +91,24 @@ export async function refundGroupShop(isDebug = false) {
if(!isDebug && playerData.endTime >= Date.now()) continue;
let items = playerData.items||[];
let refundRecs: RefundRec[] = [];
for(let item of items) {
let curDiscount = item.getCurDiscount();
let playerRecords = await ActivityGroupShopUserRecModel.findByPrice(activityData.activityId, item.itemId, item.getCurDiscount().price);
for(let { roleId, records } of playerRecords) {
let rewards: {id: number, count: number}[] = [], sumGold = 0;
for(let { price, buyCnt } of records) {
if(price <= item.getCurDiscount().price) continue;
let diff = (price - item.getCurDiscount().price) * buyCnt;
if(!recs.has(roleId)) recs.set(roleId, []);
recs.get(roleId).push({ itemId: item.itemId, diff });
if(price <= curDiscount.price) continue;
let diff = (price - curDiscount.price) * buyCnt;
rewards.push(getGoldObject(diff));
sumGold += diff;
refundRecs.push({ roleId, itemId: item.itemId, diff });
}
let itemName = gameData.goods.get(item.id)?.name?? `${item.id}`;
let resultDiscount = curDiscount.discount;
await sendMailByContent(MAIL_TYPE.GROUP_SHOP_REFUND, roleId, { goods: rewards, params: [itemName, `${resultDiscount}`, `${sumGold}`] });
}
}
let refundRecs: RefundRec[] = [];
for(let [ roleId, arr ] of recs) {
let reward = arr.map(({ diff }) => getGoldObject(diff));
await sendMailByContent(MAIL_TYPE.GROUP_SHOP_REFUND, roleId, { goods: reward });
refundRecs.push(...arr.map(cur => ({ roleId, ...cur })));
}
await ActivityGroupShopRefundModel.refund(activityData.activityId, refundRecs);
}
}