当settlePlan创建时更新关联order的settlePlanned 调整
This commit is contained in:
parent
e5b3aee7ec
commit
c003cbc912
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue