当settlePlan创建时更新关联order的settlePlanned 调整

This commit is contained in:
lxy 2025-07-30 17:23:17 +08:00
parent e5b3aee7ec
commit c003cbc912
3 changed files with 110 additions and 35 deletions

View File

@ -12,7 +12,40 @@ const triggers = [
fn: async ({ operation }, context, option) => {
const { data } = operation;
let count = 0;
const updateOrderFn = async (settlePlan) => {
if (data instanceof Array) {
const planArr = groupBy(data, 'orderId');
const orderIds = Object.keys(planArr);
for (const orderId of orderIds) {
const [order] = await context.select('order', {
data: {
id: 1,
paid: 1,
refunded: 1,
settlePlanned: 1,
},
filter: {
id: orderId,
}
}, { forUpdate: true });
const { id, paid, refunded, settlePlanned } = order;
let planPrice = 0;
const plans = planArr[orderId];
plans.forEach((plan) => planPrice += plan.price);
const newSettlePlanned = planPrice + settlePlanned;
await context.operate('order', {
id: await generateNewIdAsync(),
action: 'update',
data: {
settlePlanned: newSettlePlanned,
},
filter: {
id,
}
}, option);
}
count += data.length;
}
else {
const [order] = await context.select('order', {
data: {
id: 1,
@ -21,11 +54,11 @@ const triggers = [
settlePlanned: 1,
},
filter: {
id: settlePlan.orderId,
id: data.orderId,
}
}, { forUpdate: true });
const { id, paid, refunded, settlePlanned } = order;
const newSettlePlanned = settlePlan.price + settlePlanned;
const newSettlePlanned = data.price + settlePlanned;
await context.operate('order', {
id: await generateNewIdAsync(),
action: 'update',
@ -36,15 +69,6 @@ const triggers = [
id,
}
}, option);
};
if (data instanceof Array) {
for (const d of data) {
await updateOrderFn(d);
count++;
}
}
else {
await updateOrderFn(data);
count++;
}
return count;

View File

@ -15,7 +15,40 @@ const triggers = [
fn: async ({ operation }, context, option) => {
const { data } = operation;
let count = 0;
const updateOrderFn = async (settlePlan) => {
if (data instanceof Array) {
const planArr = (0, lodash_1.groupBy)(data, 'orderId');
const orderIds = Object.keys(planArr);
for (const orderId of orderIds) {
const [order] = await context.select('order', {
data: {
id: 1,
paid: 1,
refunded: 1,
settlePlanned: 1,
},
filter: {
id: orderId,
}
}, { forUpdate: true });
const { id, paid, refunded, settlePlanned } = order;
let planPrice = 0;
const plans = planArr[orderId];
plans.forEach((plan) => planPrice += plan.price);
const newSettlePlanned = planPrice + settlePlanned;
await context.operate('order', {
id: await (0, uuid_1.generateNewIdAsync)(),
action: 'update',
data: {
settlePlanned: newSettlePlanned,
},
filter: {
id,
}
}, option);
}
count += data.length;
}
else {
const [order] = await context.select('order', {
data: {
id: 1,
@ -24,11 +57,11 @@ const triggers = [
settlePlanned: 1,
},
filter: {
id: settlePlan.orderId,
id: data.orderId,
}
}, { forUpdate: true });
const { id, paid, refunded, settlePlanned } = order;
const newSettlePlanned = settlePlan.price + settlePlanned;
const newSettlePlanned = data.price + settlePlanned;
await context.operate('order', {
id: await (0, uuid_1.generateNewIdAsync)(),
action: 'update',
@ -39,15 +72,6 @@ const triggers = [
id,
}
}, option);
};
if (data instanceof Array) {
for (const d of data) {
await updateOrderFn(d);
count++;
}
}
else {
await updateOrderFn(data);
count++;
}
return count;

View File

@ -16,7 +16,42 @@ const triggers: Trigger<EntityDict, 'settlePlan', BRC>[] = [
fn: async ({ operation }, context, option) => {
const { data } = operation;
let count = 0;
const updateOrderFn = async (settlePlan: EntityDict['settlePlan']['CreateOperationData']) => {
if (data instanceof Array) {
const planArr = groupBy(data, 'orderId');
const orderIds = Object.keys(planArr);
for (const orderId of orderIds) {
const [order] = await context.select('order', {
data: {
id: 1,
paid: 1,
refunded: 1,
settlePlanned: 1,
},
filter: {
id: orderId,
}
}, { forUpdate: true });
const { id, paid, refunded, settlePlanned } = order;
let planPrice = 0;
const plans = planArr[orderId];
plans!.forEach(
(plan) => planPrice += plan.price!
);
const newSettlePlanned = planPrice + settlePlanned!;
await context.operate('order', {
id: await generateNewIdAsync(),
action: 'update',
data: {
settlePlanned: newSettlePlanned,
},
filter: {
id,
}
}, option);
}
count += data.length;
} else {
const [order] = await context.select('order', {
data: {
id: 1,
@ -25,11 +60,11 @@ const triggers: Trigger<EntityDict, 'settlePlan', BRC>[] = [
settlePlanned: 1,
},
filter: {
id: settlePlan.orderId,
id: data.orderId,
}
}, { forUpdate: true });
const { id, paid, refunded, settlePlanned } = order;
const newSettlePlanned = settlePlan.price! + settlePlanned!;
const newSettlePlanned = data.price! + settlePlanned!;
await context.operate('order', {
id: await generateNewIdAsync(),
action: 'update',
@ -40,14 +75,6 @@ const triggers: Trigger<EntityDict, 'settlePlan', BRC>[] = [
id,
}
}, option);
}
if (data instanceof Array) {
for (const d of data) {
await updateOrderFn(d);
count++;
}
} else {
await updateOrderFn(data);
count++;
}
return count;