团购:后台配置定时器以及邮件
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user