Skip to content

Commit

Permalink
refact(mis): 将SpecificAccountsOfTenantTarget与AccountsOfTenantTarget初步…
Browse files Browse the repository at this point in the history
…合并,还需仔细测试
  • Loading branch information
cuvalign committed Apr 30, 2024
1 parent 7dd42ae commit b424407
Show file tree
Hide file tree
Showing 17 changed files with 49 additions and 74 deletions.
4 changes: 2 additions & 2 deletions apps/audit-server/src/utils/operationLogs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@ export const getTargetAccountName = (operationEvent: OperationEvent): string | u
switch (operationEvent[operationType].target.$case) {
case "accountOfTenant" :
return operationEvent[operationType].target.accountOfTenant.accountName;
case "specificAccountsOfTenant" :
return operationEvent[operationType].target.specificAccountsOfTenant.accountName;
case "accountsOfTenant" :
return operationEvent[operationType].target.accountsOfTenant.accountNames;
default:
return;
}
Expand Down
8 changes: 4 additions & 4 deletions apps/audit-server/tests/log/operationLogs.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,9 @@ it("create operation log with targetAccountName", async () => {
operationEvent: {
$case: "exportPayRecord" as const,
exportPayRecord: { target:{
$case: "specificAccountsOfTenant" as const,
specificAccountsOfTenant: {
accountName: ["testAccount"],
$case: "accountsOfTenant" as const,
accountsOfTenant: {
accountNames: ["testAccount"],
tenantName: "testTenant",
},
},
Expand Down Expand Up @@ -245,7 +245,7 @@ it("create operation log with targetAccountName", async () => {
expect(operationLogs[1].metaData?.[operationLogs[1].metaData?.$case])
.toEqual(exportPayRecordLog.operationEvent.exportPayRecord);
expect(operationLogs[1].metaData?.targetAccountName)
.toEqual(exportPayRecordLog.operationEvent.exportPayRecord.target.specificAccountsOfTenant.accountName);
.toEqual(exportPayRecordLog.operationEvent.exportPayRecord.target.accountsOfTenant.accountNames);

expect(operationLogs[2].metaData?.$case).toEqual("exportChargeRecord");
expect(operationLogs[2].metaData?.[operationLogs[2].metaData?.$case])
Expand Down
9 changes: 4 additions & 5 deletions apps/mis-server/src/services/charging.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,7 @@ export const chargingServiceServer = plugin((server) => {
*
* case tenant:返回这个租户(tenantName)的充值记录
* case allTenants: 返回该所有租户充值记录
* case specificAccountsOfTenant: 返回该这个租户(tenantName)下特定账户([accountName])的充值记录
* case accountsOfTenant: 返回这个租户(tenantName)下所有账户的充值记录
* case accountsOfTenant: 返回这个租户(tenantName)下多个账户的充值记录
*
* @returns
*/
Expand Down Expand Up @@ -198,7 +197,7 @@ export const chargingServiceServer = plugin((server) => {
* case tenant:返回这个租户(tenantName)的消费记录
* case allTenants: 返回所有租户消费记录
* case accountOfTenant: 返回这个租户(tenantName)下这个账户(accountName)的消费记录
* case accountsOfTenant: 返回这个租户(tenantName)下所有账户的消费记录
* case accountsOfTenant: 返回这个租户(tenantName)下多个账户的消费记录
* case accountsOfAllTenants: 返回所有租户下所有账户的消费记录
*
* Deprecated Notice
Expand Down Expand Up @@ -408,7 +407,7 @@ export const chargingServiceServer = plugin((server) => {
* case tenant:返回这个租户(tenantName)的消费记录
* case allTenants: 返回所有租户消费记录
* case accountOfTenant: 返回这个租户(tenantName)下这个账户(accountName)的消费记录
* case accountsOfTenant: 返回这个租户(tenantName)下所有账户的消费记录
* case accountsOfTenant: 返回这个租户(tenantName)下多个账户的消费记录
* case accountsOfAllTenants: 返回所有租户下所有账户的消费记录
* case accounts: 返回多个特定账户的消费记录
*
Expand Down Expand Up @@ -452,7 +451,7 @@ export const chargingServiceServer = plugin((server) => {
* case tenant:返回这个租户(tenantName)的消费记录
* case allTenants: 返回所有租户消费记录
* case accountOfTenant: 返回这个租户(tenantName)下这个账户(accountName)的消费记录
* case accountsOfTenant: 返回这个租户(tenantName)下所有账户的消费记录
* case accountsOfTenant: 返回这个租户(tenantName)下多个账户的消费记录
* case accountsOfAllTenants: 返回所有租户下所有账户的消费记录
* case accounts: 返回多个特定账户的消费记录
*
Expand Down
23 changes: 10 additions & 13 deletions apps/mis-server/src/utils/chargesQuery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
*/

import { AccountOfTenantTarget, AccountsOfAllTenantsTarget,
AccountsOfTenantTarget, AccountsTarget, AllTenantsTarget, SpecificAccountsOfTenantTarget,
AccountsOfTenantTarget, AccountsTarget, AllTenantsTarget,
TenantTarget } from "@scow/protos/build/server/charging";
import { misConfig } from "src/config/mis";

Expand All @@ -23,7 +23,7 @@ import { CHARGE_TYPE_OTHERS } from "./constants";
* case tenant:返回这个租户(tenantName)的消费记录
* case allTenants: 返回所有租户消费记录
* case accountOfTenant: 返回这个租户(tenantName)下这个账户(accountName)的消费记录
* case accountsOfTenant: 返回这个租户(tenantName)下所有账户的消费记录
* case accountsOfTenant: 返回这个租户(tenantName)下任意多个账户的消费记录
* case accountsOfAllTenants: 返回所有租户下所有账户的消费记录
* case accounts: 返回多个特定账户的消费记录
*
Expand Down Expand Up @@ -55,7 +55,7 @@ export const getChargesTargetSearchParam = (
case "accountOfTenant":
searchParam = { tenantName: target[target.$case].tenantName, accountName: target[target.$case].accountName };
break;
// 当前租户下所有账户的消费记录
// 当前租户下多个账户的消费记录
case "accountsOfTenant":
searchParam = { tenantName: target[target.$case].tenantName, accountName: { $ne:null } };
break;
Expand Down Expand Up @@ -110,33 +110,30 @@ export const getChargesSearchTypes = (types: string[] | undefined) => {
* @param target
* case tenant:返回这个租户(tenantName)的充值记录
* case allTenants: 返回所有租户充值记录
* case specificAccountsOfTenant: 返回这个租户(tenantName)下特定账户([accountName])的充值记录
* case accountsOfTenant: 返回这个租户(tenantName)下所有账户的充值记录
* case accountsOfTenant: 返回这个租户(tenantName)下多个账户的充值记录
*/

export const getPaymentsTargetSearchParam = (target:
| { $case: "accountOfTenant";accountOfTenant: AccountOfTenantTarget; }
| { $case: "specificAccountsOfTenant"; specificAccountsOfTenant: SpecificAccountsOfTenantTarget }
| { $case: "accountsOfTenant"; accountsOfTenant: AccountsOfTenantTarget }
| { $case: "tenant"; tenant: TenantTarget }
| { $case: "allTenants"; allTenants: AllTenantsTarget }):
{ tenantName?: string | { $ne: null }, accountName?: string | { $ne: null } | { $in: string[] } } => {
{ tenantName?: string | { $ne: null }, accountName?: { $in: string[] } | string | { $ne: null }} => {

let searchParam: { tenantName?: string | { $ne: null },
accountName?: string | { $ne: null } | { $in: string[] }} = {};
accountName?: { $in: string[] } | string | { $ne: null }} = {};
const { accountNames, tenantName } = target[target.$case];
switch (target?.$case)
{
case "tenant":
searchParam = { tenantName: target[target.$case].tenantName, accountName:undefined };
searchParam = { tenantName, accountName:undefined };
break;
case "allTenants":
searchParam = { accountName:undefined };
break;
case "specificAccountsOfTenant":
searchParam = { tenantName: target[target.$case].tenantName, accountName:{ $in:target[target.$case].accountName } };
break;
case "accountsOfTenant":
searchParam = { tenantName: target[target.$case].tenantName, accountName:{ $ne:null } };
const accountName = accountNames.length === 0 ? { $ne:null } : { $in:accountNames };
searchParam = { tenantName, accountName };
break;
default:
break;
Expand Down
10 changes: 4 additions & 6 deletions apps/mis-server/tests/charging/charging.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -325,11 +325,10 @@ it("returns payment records", async () => {
// Set a future time to ensure all latest records are fetched
const endTime = dayjs().add(1, "day").toISOString();

// specificAccountsOfTenant
const reply1 = await asyncClientCall(client, "getPaymentRecords", {
startTime: startTime.toISOString(),
endTime,
target:{ $case:"specificAccountsOfTenant", specificAccountsOfTenant:{ accountName:
target:{ $case:"accountsOfTenant", accountsOfTenant:{ accountNames:
[account.accountName, account2.accountName],
tenantName: account.tenant.getProperty("name") },
}, types:[request1.type],
Expand All @@ -349,7 +348,7 @@ it("returns payment records", async () => {
const reply2 = await asyncClientCall(client, "getPaymentRecords", {
startTime: startTime.toISOString(),
endTime,
target:{ $case:"specificAccountsOfTenant", specificAccountsOfTenant:{ accountName:
target:{ $case:"accountsOfTenant", accountsOfTenant:{ accountNames:
[account.accountName, account2.accountName],
tenantName: account.tenant.getProperty("name") },
}, types:extractTypesFromObjects([request1, request3]),
Expand Down Expand Up @@ -428,7 +427,7 @@ it("returns payment records", async () => {
startTime: startTime.toISOString(),
endTime, types:extractTypesFromObjects([request1, request3]),
target:{ $case:"accountsOfTenant", accountsOfTenant:{
tenantName: account.tenant.getProperty("name") } },
tenantName: account.tenant.getProperty("name"), accountNames:[]} },
});

expect(reply6.results).toHaveLength(2);
Expand Down Expand Up @@ -714,7 +713,7 @@ it("returns charge records with query of accountsOfTenant", async () => {
startTime: queryStartTime.toISOString(),
endTime: queryEndTime.toISOString(),
target:{ $case:"accountsOfTenant", accountsOfTenant:{
tenantName: account.tenant.getProperty("name") } },
tenantName: account.tenant.getProperty("name"), accountNames:[]} },
types: extractTypesFromObjects([request1, request2]),
page: 1,
pageSize: 50,
Expand Down Expand Up @@ -1113,7 +1112,6 @@ it("returns charge records with query of accounts", async () => {
const queryEndTime = new Date(startTime);
queryEndTime.setDate(startTime.getDate() + 1);

// specificAccountsOfTenant
const reply1 = await asyncClientCall(client, "getPaginatedChargeRecords", {
startTime: queryStartTime.toISOString(),
endTime: queryEndTime.toISOString(),
Expand Down
4 changes: 2 additions & 2 deletions apps/mis-server/tests/export/export.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -353,8 +353,8 @@ it("export pay Records", async () => {
count: 2,
startTime: queryStartTime.toISOString(),
endTime: queryEndTime.toISOString(),
target:{ $case:"specificAccountsOfTenant", specificAccountsOfTenant:{
accountName: [data.accountA.accountName, data.accountB.accountName],
target:{ $case:"accountsOfTenant", accountsOfTenant:{
accountNames: [data.accountA.accountName, data.accountB.accountName],
tenantName: data.accountA.tenant.getProperty("name"),
} }, types:[payRecord1.type],
});
Expand Down
2 changes: 1 addition & 1 deletion apps/mis-web/src/i18n/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1212,7 +1212,7 @@ export default {
exportTenantChargeRecord: "Export Charge Record of Tenant {}",
exportTenantsChargeRecordOfAdmin: "Export Charge Record of All Tenants in Platform",
exportAccountPayRecordOfTenant: "Export Payment Record of Account {} in Tenant {}",
exportAccountsPayRecordOfTenant: "Export Payment Record of All Accounts in Tenant {}",
exportAccountsPayRecordOfTenant: "Export Payment Record of Multiple Accounts in Tenant {}",
exportTenantPayRecord: "Export Payment Record of Tenant {}",
exportTenantsPayRecordOfAdmin:"Export Payment Record of All Tenants in Platform",
exportOperationLogFromUser: "Export Operation Log of User {}",
Expand Down
2 changes: 1 addition & 1 deletion apps/mis-web/src/i18n/zh_cn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1213,7 +1213,7 @@ export default {
exportTenantChargeRecord: "导出租户{}的消费记录",
exportTenantsChargeRecordOfAdmin: "导出平台所有租户的消费记录",
exportAccountPayRecordOfTenant: "导出租户{}内账户{}的充值记录",
exportAccountsPayRecordOfTenant: "导出租户{}内所有账户的充值记录",
exportAccountsPayRecordOfTenant: "导出租户{}内多个账户的充值记录",
exportTenantPayRecord: "导出租户{}的消费记录",
exportTenantsPayRecordOfAdmin: "导出平台所有租户的充值记录",
exportOperationLogFromUser: "导出用户{}的操作日志",
Expand Down
4 changes: 0 additions & 4 deletions apps/mis-web/src/models/operationLog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -490,10 +490,6 @@ const getExportPayRecordDetail = (exportPayRecord: ExportPayRecord, t: Operation
}
const exportPayCase = exportPayTarget.$case;
switch (exportPayCase) {
case "specificAccountsOfTenant":
const specificAccountsOfTenant = exportPayTarget[exportPayCase];
return t(pDetails("exportAccountPayRecordOfTenant"),
[specificAccountsOfTenant.tenantName, specificAccountsOfTenant.accountName]);
case "accountsOfTenant":
const accountsOfTenant = exportPayTarget[exportPayCase];
return t(pDetails("exportAccountsPayRecordOfTenant"),
Expand Down
6 changes: 3 additions & 3 deletions apps/mis-web/src/pages/api/file/exportChargeRecord.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import { getCsvObjTransform, getCsvStringify } from "src/utils/file";
import { nullableMoneyToString } from "src/utils/money";
import { route } from "src/utils/route";
import { getContentType, parseIp } from "src/utils/server";
import { emptyArrayToUndefined } from "src/utils/transformParams";
import { emptyStringArrayToUndefined } from "src/utils/transformParams";
import { pipeline } from "stream";

export const ExportChargeRecordSchema = typeboxRouteSchema({
Expand Down Expand Up @@ -60,8 +60,8 @@ export default route(ExportChargeRecordSchema, async (req, res) => {

const { columns, startTime, endTime, searchType, isPlatformRecords, count, userIds } = query;
let { accountNames, types } = query;
accountNames = emptyArrayToUndefined(accountNames);
types = emptyArrayToUndefined(types);
accountNames = emptyStringArrayToUndefined(accountNames);
types = emptyStringArrayToUndefined(types);

const info = await getUserInfoForCharges(accountNames, req, res);

Expand Down
6 changes: 3 additions & 3 deletions apps/mis-web/src/pages/api/file/exportPayRecord.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import { getCsvObjTransform, getCsvStringify } from "src/utils/file";
import { nullableMoneyToString } from "src/utils/money";
import { route } from "src/utils/route";
import { getContentType, parseIp } from "src/utils/server";
import { emptyArrayToUndefined } from "src/utils/transformParams";
import { emptyStringArrayToUndefined } from "src/utils/transformParams";
import { pipeline } from "stream";

import { getTenantOfAccount } from "../finance/charges";
Expand Down Expand Up @@ -62,8 +62,8 @@ export default route(ExportPayRecordSchema, async (req, res) => {
const { columns, startTime, endTime, searchType, count } = query;
let { targetNames, types } = query;
// targetName为空字符串数组时视为初始态,即undefined
targetNames = emptyArrayToUndefined(targetNames);
types = emptyArrayToUndefined(types);
targetNames = emptyStringArrayToUndefined(targetNames);
types = emptyStringArrayToUndefined(types);
let user;
if (searchType === SearchType.tenant) {
user = await authenticate((i) => i.platformRoles.includes(PlatformRole.PLATFORM_FINANCE) ||
Expand Down
2 changes: 1 addition & 1 deletion apps/mis-web/src/pages/api/finance/charges.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ export const buildChargesRequestTarget = (accountNames: string[] | undefined, te
} else {
return {
$case: "accountsOfTenant" as const,
accountsOfTenant: { tenantName },
accountsOfTenant: { tenantName, accountNames: []},
};
}
} else {
Expand Down
10 changes: 5 additions & 5 deletions apps/mis-web/src/pages/api/finance/payments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,13 @@ export const getPaymentRecordTarget = (
case SearchType.selfTenant:
return { $case:"tenant" as const, tenant:{ tenantName:user.tenant } };
case SearchType.selfAccount:
return { $case:"specificAccountsOfTenant" as const,
specificAccountsOfTenant:{ tenantName:user.tenant, accountName:targetNames! } };
return { $case:"accountsOfTenant" as const,
accountsOfTenant:{ tenantName:user.tenant, accountNames:targetNames ?? []} };
case SearchType.account:
return targetNames
? { $case:"specificAccountsOfTenant" as const,
specificAccountsOfTenant:{ tenantName:tenantOfAccount, accountName:targetNames! } }
: { $case:"accountsOfTenant" as const, accountsOfTenant:{ tenantName:user.tenant } };
? { $case:"accountsOfTenant" as const,
accountsOfTenant:{ tenantName:tenantOfAccount, accountNames:targetNames } }
: { $case:"accountsOfTenant" as const, accountsOfTenant:{ tenantName:user.tenant, accountNames:[]} };
default:
break;
}
Expand Down
5 changes: 2 additions & 3 deletions apps/mis-web/src/utils/transformParams.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@
* See the Mulan PSL v2 for more details.
*/

export function emptyArrayToUndefined(arr: string[] | undefined) {
if (Array.isArray(arr) && (arr as string[]).length === 1
&& arr[0] === "") {
export function emptyStringArrayToUndefined(arr: string[] | undefined) {
if (Array.isArray(arr) && arr.length === 1 && arr[0] === "") {
return undefined;
}
return arr;
Expand Down
10 changes: 2 additions & 8 deletions protos/audit/operation_log.proto
Original file line number Diff line number Diff line change
Expand Up @@ -352,23 +352,17 @@ message AccountsTarget {
}
message AccountsOfAllTenantsTarget {
}
message SpecificAccountsOfTenantTarget {
repeated string account_name = 1;
string tenant_name = 2;
}

message ExportPayRecord {
oneof target {
// 返回这个租户(tenantName)下这个账户(accountName)的充值记录
AccountOfTenantTarget account_of_tenant = 1 [deprecated=true];
// 返回这个租户(tenantName)下所有账户的充值记录
AccountOfTenantTarget account_of_tenant = 1;
// 返回这个租户(tenantName)下多个账户的充值记录
AccountsOfTenantTarget accounts_of_tenant = 2;
// 返回这个租户(tenantName)的充值记录
TenantTarget tenant = 3;
// 返回所有租户充值记录
AllTenantsTarget all_tenants = 4;
// 返回这个租户(tenantName)下特定的一个或多个账户([accountName])的充值记录
SpecificAccountsOfTenantTarget specific_accounts_of_tenant = 5;
}
}

Expand Down
12 changes: 3 additions & 9 deletions protos/server/charging.proto
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,9 @@ message AccountOfTenantTarget {
string account_name = 1;
string tenant_name = 2;
}
message SpecificAccountsOfTenantTarget {
repeated string account_name = 1;
string tenant_name = 2;
}

message AccountsOfTenantTarget {
string tenant_name = 1;
repeated string account_names = 2;
}
message TenantTarget {
string tenant_name = 1;
Expand Down Expand Up @@ -201,16 +197,14 @@ message GetPaymentRecordsRequest {
repeated string types = 8;
oneof target {
// 返回这个租户(tenantName)下这个账户(accountName)的充值记录
AccountOfTenantTarget account_of_tenant = 3 [deprecated=true];
AccountOfTenantTarget account_of_tenant = 3;

// 返回这个租户(tenantName)下所有账户的充值记录
// 返回这个租户(tenantName)下多个账户的充值记录
AccountsOfTenantTarget accounts_of_tenant = 4;
// 返回这个租户(tenantName)的充值记录
TenantTarget tenant = 5;
// 返回所有租户充值记录
AllTenantsTarget all_tenants = 6;
// 返回这个租户(tenantName)下特定的一个或多个账户([accountName])的充值记录
SpecificAccountsOfTenantTarget specific_accounts_of_tenant = 7;
}
}

Expand Down
6 changes: 2 additions & 4 deletions protos/server/export.proto
Original file line number Diff line number Diff line change
Expand Up @@ -97,15 +97,13 @@ message ExportPayRecordRequest {
repeated string types = 9;
oneof target {
// 返回这个租户(tenantName)下这个账户(accountName)的充值记录
AccountOfTenantTarget account_of_tenant = 4 [deprecated=true];
// 返回这个租户(tenantName)下所有账户的充值记录
AccountOfTenantTarget account_of_tenant = 4;
// 返回这个租户(tenantName)下多个账户的充值记录
AccountsOfTenantTarget accounts_of_tenant = 5;
// 返回这个租户(tenantName)的充值记录
TenantTarget tenant = 6;
// 返回所有租户充值记录
AllTenantsTarget all_tenants = 7;
// 返回这个租户(tenantName)下特定的一个或多个账户([accountName])的充值记录
SpecificAccountsOfTenantTarget specific_accounts_of_tenant = 8;
}
}

Expand Down

0 comments on commit b424407

Please sign in to comment.