feat(M08-C): 补会员检索与员工概况
This commit is contained in:
@@ -210,7 +210,8 @@ const orders = [
|
||||
id: '301',
|
||||
tenantId: '7',
|
||||
userId: '21',
|
||||
status: 'COMPLETED',
|
||||
storeId: '11',
|
||||
status: 'FINISHED',
|
||||
paidAmountCents: 12_000,
|
||||
createdAt: new Date('2026-06-23T00:00:00.000Z')
|
||||
},
|
||||
@@ -218,9 +219,19 @@ const orders = [
|
||||
id: '302',
|
||||
tenantId: '7',
|
||||
userId: '21',
|
||||
storeId: '11',
|
||||
status: 'CANCELLED',
|
||||
paidAmountCents: 0,
|
||||
createdAt: new Date('2026-06-24T00:00:00.000Z')
|
||||
},
|
||||
{
|
||||
id: '303',
|
||||
tenantId: '7',
|
||||
userId: '22',
|
||||
storeId: '11',
|
||||
status: 'CANCELLED',
|
||||
paidAmountCents: 0,
|
||||
createdAt: new Date('2026-06-25T00:00:00.000Z')
|
||||
}
|
||||
];
|
||||
|
||||
@@ -335,7 +346,7 @@ function createService() {
|
||||
const userId = String(params[0]);
|
||||
const tenantId = String(params[1]);
|
||||
const rows = orders.filter((item) => item.tenantId === tenantId && item.userId === userId);
|
||||
const paid = rows.filter((item) => ['PAID', 'IN_USE', 'COMPLETED'].includes(item.status));
|
||||
const paid = rows.filter((item) => ['PAID', 'RESERVED', 'IN_PROGRESS', 'FINISHED'].includes(item.status));
|
||||
return [[{
|
||||
orderCount: rows.length,
|
||||
paidOrderCount: paid.length,
|
||||
@@ -379,11 +390,17 @@ function queryMembers(sql, params) {
|
||||
if (user.tenantId !== tenantId || user.userType !== 'CUSTOMER' || user.deleted) return false;
|
||||
if (statusFilter && user.status !== statusFilter) return false;
|
||||
if (hasStoreScope) {
|
||||
return wallets.some((wallet) =>
|
||||
const walletMatch = wallets.some((wallet) =>
|
||||
wallet.tenantId === tenantId
|
||||
&& wallet.userId === user.id
|
||||
&& storeParams.includes(wallet.storeId)
|
||||
);
|
||||
const orderMatch = orders.some((order) =>
|
||||
order.tenantId === tenantId
|
||||
&& order.userId === user.id
|
||||
&& storeParams.includes(order.storeId)
|
||||
);
|
||||
return walletMatch || orderMatch;
|
||||
}
|
||||
return true;
|
||||
}).map((user) => ({
|
||||
@@ -458,12 +475,9 @@ const forbiddenReader = {
|
||||
page: 1,
|
||||
pageSize: 20
|
||||
});
|
||||
assert.equal(scoped.total, 1);
|
||||
assert.equal(scoped.items[0].memberId, '21');
|
||||
await assert.rejects(
|
||||
() => service.getMember({ actor: storeReader, memberId: '22' }),
|
||||
(error) => error instanceof MemberProfileError && error.code === 'MEMBER_NOT_FOUND'
|
||||
);
|
||||
assert.equal(scoped.total, 2);
|
||||
assert.equal(scoped.items[0].memberId, '22');
|
||||
assert.equal((await service.getMember({ actor: storeReader, memberId: '22' })).memberId, '22');
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user