优化后端目录命名与模块归位

This commit is contained in:
yml2213
2026-05-26 08:57:19 +08:00
parent 7aef1a6d50
commit 36dfc46884
34 changed files with 53 additions and 54 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ import auditLogsRouter from "./admin/audit-logs.js";
import dashboardRouter from "./admin/dashboard.js"; import dashboardRouter from "./admin/dashboard.js";
import ordersRouter from "./admin/orders.js"; import ordersRouter from "./admin/orders.js";
import platformConfigRouter from "./admin/platform-config.js"; import platformConfigRouter from "./admin/platform-config.js";
import { requireAdminSession } from "./admin/shared.js"; import { requireAdminSession } from "./admin/session.js";
import tasksRouter from "./admin/tasks.js"; import tasksRouter from "./admin/tasks.js";
import usersRouter from "./admin/users.js"; import usersRouter from "./admin/users.js";
import { buildNotFoundPayload } from "../utils/http.js"; import { buildNotFoundPayload } from "../utils/http.js";
+1 -1
View File
@@ -1,7 +1,7 @@
import { Router } from 'express' import { Router } from 'express'
import { getAdminAuditLogs } from '../../services/admin/admin-audit-service.js' import { getAdminAuditLogs } from '../../services/admin/admin-audit-service.js'
import { createJsonHandler, requireAdminRoles } from './shared.js' import { createJsonHandler, requireAdminRoles } from './session.js'
type AdminAuditLogRouteQuery = Record<string, any> type AdminAuditLogRouteQuery = Record<string, any>
+1 -1
View File
@@ -2,7 +2,7 @@ import { Router } from 'express'
import { createRateLimitMiddleware, getBodyFieldRateLimitKey } from '../../middleware/rate-limit.js' import { createRateLimitMiddleware, getBodyFieldRateLimitKey } from '../../middleware/rate-limit.js'
import { getAdminSessionSummary, loginAdmin } from '../../services/admin/admin-auth-service.js' import { getAdminSessionSummary, loginAdmin } from '../../services/admin/admin-auth-service.js'
import { createJsonHandler, extractBearerToken } from './shared.js' import { createJsonHandler, extractBearerToken } from './session.js'
const router = Router() const router = Router()
+1 -1
View File
@@ -1,7 +1,7 @@
import { Router } from 'express' import { Router } from 'express'
import { getAdminDashboardSummary } from '../../services/admin/admin-dashboard-service.js' import { getAdminDashboardSummary } from '../../services/admin/admin-dashboard-service.js'
import { createJsonHandler } from './shared.js' import { createJsonHandler } from './session.js'
const router = Router() const router = Router()
+1 -1
View File
@@ -1,7 +1,7 @@
import { Router } from 'express' import { Router } from 'express'
import { getAdminOrderDetail, getAdminOrders } from '../../services/admin/admin-read-service.js' import { getAdminOrderDetail, getAdminOrders } from '../../services/admin/admin-read-service.js'
import { createJsonHandler } from './shared.js' import { createJsonHandler } from './session.js'
import type { import type {
AdminOrderRouteParams, AdminOrderRouteParams,
AdminOrderRouteQuery, AdminOrderRouteQuery,
@@ -1,6 +1,6 @@
import { Router } from "express"; import { Router } from "express";
import { requireAdminRoles } from "./shared.js"; import { requireAdminRoles } from "./session.js";
import cloudtentaclesRouter from "./platform-config/cloudtentacles.js"; import cloudtentaclesRouter from "./platform-config/cloudtentacles.js";
import kuaishouCloudFulfillmentRouter from "./platform-config/kuaishou-cloud-fulfillment.js"; import kuaishouCloudFulfillmentRouter from "./platform-config/kuaishou-cloud-fulfillment.js";
import kuaishouEticketRouter from "./platform-config/kuaishou-eticket.js"; import kuaishouEticketRouter from "./platform-config/kuaishou-eticket.js";
@@ -33,8 +33,8 @@ import type {
AdminCloudtentaclesValidateSessionRouteBody, AdminCloudtentaclesValidateSessionRouteBody,
AdminCloudtentaclesVirtualNumberRouteBody, AdminCloudtentaclesVirtualNumberRouteBody,
} from "../../../types/admin-route-inputs.js"; } from "../../../types/admin-route-inputs.js";
import { createJsonHandler } from "../shared.js"; import { createJsonHandler } from "../session.js";
import type { JsonRecord } from "./shared.js"; import type { JsonRecord } from "../../../types/json.js";
const router = Router(); const router = Router();
@@ -5,8 +5,8 @@ import {
updateAdminKuaishouCloudFulfillmentConfig, updateAdminKuaishouCloudFulfillmentConfig,
} from "../../../services/admin/platform-config/kuaishou-cloud-fulfillment-service.js"; } from "../../../services/admin/platform-config/kuaishou-cloud-fulfillment-service.js";
import type { AdminKuaishouCloudFulfillmentConfigRouteBody } from "../../../types/admin-route-inputs.js"; import type { AdminKuaishouCloudFulfillmentConfigRouteBody } from "../../../types/admin-route-inputs.js";
import { createJsonHandler } from "../shared.js"; import { createJsonHandler } from "../session.js";
import type { JsonRecord } from "./shared.js"; import type { JsonRecord } from "../../../types/json.js";
const router = Router(); const router = Router();
@@ -13,8 +13,8 @@ import type {
AdminKuaishouEticketShopInfoRouteBody, AdminKuaishouEticketShopInfoRouteBody,
AdminKuaishouEticketSourceConfigRouteBody, AdminKuaishouEticketSourceConfigRouteBody,
} from "../../../types/admin-route-inputs.js"; } from "../../../types/admin-route-inputs.js";
import { createJsonHandler } from "../shared.js"; import { createJsonHandler } from "../session.js";
import type { JsonRecord } from "./shared.js"; import type { JsonRecord } from "../../../types/json.js";
const router = Router(); const router = Router();
@@ -6,8 +6,8 @@ import {
retryAdminNinetyoneOrder, retryAdminNinetyoneOrder,
} from "../../../services/admin/platform-config/ninetyone-service.js"; } from "../../../services/admin/platform-config/ninetyone-service.js";
import type { AdminEntityRouteParams } from "../../../types/admin-route-inputs.js"; import type { AdminEntityRouteParams } from "../../../types/admin-route-inputs.js";
import { createJsonHandler } from "../shared.js"; import { createJsonHandler } from "../session.js";
import type { JsonRecord } from "./shared.js"; import type { JsonRecord } from "../../../types/json.js";
const router = Router(); const router = Router();
@@ -14,8 +14,8 @@ import type {
AdminNotificationTestRouteBody, AdminNotificationTestRouteBody,
AdminScheduledJobsConfigRouteBody, AdminScheduledJobsConfigRouteBody,
} from "../../../types/admin-route-inputs.js"; } from "../../../types/admin-route-inputs.js";
import { createJsonHandler } from "../shared.js"; import { createJsonHandler } from "../session.js";
import type { JsonRecord } from "./shared.js"; import type { JsonRecord } from "../../../types/json.js";
const router = Router(); const router = Router();
+1 -1
View File
@@ -14,7 +14,7 @@ import {
import { import {
createJsonHandler, createJsonHandler,
requireAdminRoles, requireAdminRoles,
} from "./shared.js"; } from "./session.js";
import type { import type {
AdminTaskKuaishouCloudDispatchRouteBody, AdminTaskKuaishouCloudDispatchRouteBody,
AdminTaskRouteParams, AdminTaskRouteParams,
+1 -1
View File
@@ -7,7 +7,7 @@ import {
updateManagedAdminUserRole, updateManagedAdminUserRole,
updateManagedAdminUserStatus, updateManagedAdminUserStatus,
} from '../../services/admin/admin-auth-service.js' } from '../../services/admin/admin-auth-service.js'
import { createJsonHandler, getRequiredAdminSession, requireAdminRoles } from './shared.js' import { createJsonHandler, getRequiredAdminSession, requireAdminRoles } from './session.js'
type AdminUserMutationResult = { type AdminUserMutationResult = {
user: { user: {
@@ -1,10 +1,10 @@
import { buildClaimUrl, createTaskClaimToken } from '../../claim/claim-service.js' import { buildClaimUrl, createTaskClaimToken } from '../claim/claim-service.js'
import { import {
maskCode as maskCodeValue, maskCode as maskCodeValue,
maskPhone as maskPhoneValue, maskPhone as maskPhoneValue,
} from '../../../utils/masking.js' } from '../../utils/masking.js'
import type { TaskRow } from '../../../types/repository-rows.js' import type { TaskRow } from '../../types/repository-rows.js'
type TaskClaimLink = { type TaskClaimLink = {
token: string token: string
@@ -32,7 +32,7 @@ import {
getTaskClaimExpiresAt, getTaskClaimExpiresAt,
maskCode, maskCode,
maskPhone, maskPhone,
} from './shared.js' } from '../write-helpers.js'
import { import {
isKuaishouCloudTask, isKuaishouCloudTask,
normalizeKuaishouCloudFlow, normalizeKuaishouCloudFlow,
@@ -17,7 +17,7 @@ import {
normalizeKuaishouCloudFlow, normalizeKuaishouCloudFlow,
prepareKuaishouCloudFulfillmentTask, prepareKuaishouCloudFulfillmentTask,
refreshKuaishouCloudTaskRoleInfo, refreshKuaishouCloudTaskRoleInfo,
} from '../fulfillment/kuaishou-cloud-task-service.js' } from '../fulfillment/kuaishou-cloud/index.js'
import { buildClaimDetailPayload, getClaimContext } from './kuaishou-cloud-claim-context.js' import { buildClaimDetailPayload, getClaimContext } from './kuaishou-cloud-claim-context.js'
import { syncKuaishouCloudRoleInfo } from './kuaishou-cloud-sync-service.js' import { syncKuaishouCloudRoleInfo } from './kuaishou-cloud-sync-service.js'
import type { TaskRow } from '../../types/repository-rows.js' import type { TaskRow } from '../../types/repository-rows.js'
@@ -3,7 +3,7 @@ import {
prepareKuaishouCloudFulfillmentTask, prepareKuaishouCloudFulfillmentTask,
probeKuaishouCloudTaskBindUrl, probeKuaishouCloudTaskBindUrl,
refreshKuaishouCloudTaskRoleInfo, refreshKuaishouCloudTaskRoleInfo,
} from '../fulfillment/kuaishou-cloud-task-service.js' } from '../fulfillment/kuaishou-cloud/index.js'
import type { TaskRow } from '../../types/repository-rows.js' import type { TaskRow } from '../../types/repository-rows.js'
export async function syncKuaishouCloudRoleInfo(task: TaskRow) { export async function syncKuaishouCloudRoleInfo(task: TaskRow) {
@@ -1,4 +1,4 @@
import { resolveCloudtentaclesConfig } from "../../platforms/cloudtentacles/shared.js"; import { resolveCloudtentaclesConfig } from "../../platforms/cloudtentacles/helpers.js";
import { import {
maskCode as maskCodeValue, maskCode as maskCodeValue,
maskPhone as maskPhoneValue, maskPhone as maskPhoneValue,
@@ -1,24 +1,24 @@
import { createTaskEvent } from "../../repositories/task-event-repo.js"; import { createTaskEvent } from "../../../repositories/task-event-repo.js";
import { updateTask } from "../../repositories/task-repo.js"; import { updateTask } from "../../../repositories/task-repo.js";
import { buildClaimUrl, createTaskClaimToken } from "../claim/claim-service.js"; import { buildClaimUrl, createTaskClaimToken } from "../../claim/claim-service.js";
import { import {
buyCloudtentaclesSku, buyCloudtentaclesSku,
getCloudtentaclesAsset, getCloudtentaclesAsset,
listCloudtentaclesSku, listCloudtentaclesSku,
} from "../platforms/cloudtentacles/catalog-service.js"; } from "../../platforms/cloudtentacles/catalog-service.js";
import { getCloudtentaclesKnapsack } from "../platforms/cloudtentacles/knapsack-service.js"; import { getCloudtentaclesKnapsack } from "../../platforms/cloudtentacles/knapsack-service.js";
import { import {
backCloudtentaclesVirtualNumber, backCloudtentaclesVirtualNumber,
getCloudtentaclesBindInfo, getCloudtentaclesBindInfo,
probeCloudtentaclesBindUrl, probeCloudtentaclesBindUrl,
} from "../platforms/cloudtentacles/virtual-number-service.js"; } from "../../platforms/cloudtentacles/virtual-number-service.js";
import { resolveCloudtentaclesConfig } from "../platforms/cloudtentacles/shared.js"; import { resolveCloudtentaclesConfig } from "../../platforms/cloudtentacles/helpers.js";
import { import {
notifyKuaishouCloudAssetNotEnough, notifyKuaishouCloudAssetNotEnough,
notifyKuaishouCloudBindUrlRefreshFailed, notifyKuaishouCloudBindUrlRefreshFailed,
} from "../notification/domain-notifications.js"; } from "../../notification/domain-notifications.js";
import { createHttpError } from "../../utils/http.js"; import { createHttpError } from "../../../utils/http.js";
import { nowIso } from "../../utils/time.js"; import { nowIso } from "../../../utils/time.js";
import { import {
KUAISHOU_CLOUD_FIXED_VN_KEY, KUAISHOU_CLOUD_FIXED_VN_KEY,
isKuaishouCloudBindUrlFresh, isKuaishouCloudBindUrlFresh,
@@ -28,22 +28,22 @@ import {
normalizeKuaishouCloudRoleInfo, normalizeKuaishouCloudRoleInfo,
resolveKuaishouCloudBindUrlExpiresAt, resolveKuaishouCloudBindUrlExpiresAt,
type JsonObject, type JsonObject,
} from "./kuaishou-cloud/domain.js"; } from "./domain.js";
import { import {
prepareKuaishouCloudBindResourceWithFallback, prepareKuaishouCloudBindResourceWithFallback,
resolveKuaishouCloudBindingResources, resolveKuaishouCloudBindingResources,
resolveKuaishouCloudVnKeyCandidates, resolveKuaishouCloudVnKeyCandidates,
} from "./kuaishou-cloud/binding-resources.js"; } from "./binding-resources.js";
import { import {
resolvePersistedCloudtentaclesContextWithFallback, resolvePersistedCloudtentaclesContextWithFallback,
} from "./kuaishou-cloud/cloudtentacles-context.js"; } from "./cloudtentacles-context.js";
import { import {
getTaskClaimExpiresAt, getTaskClaimExpiresAt,
isClaimExpired, isClaimExpired,
normalizeActor, normalizeActor,
parseTaskContext, parseTaskContext,
} from "./kuaishou-cloud/task-context.js"; } from "./task-context.js";
import type { TaskRow } from "../../types/repository-rows.js"; import type { TaskRow } from "../../../types/repository-rows.js";
export { export {
isKuaishouCloudBindUrlFresh, isKuaishouCloudBindUrlFresh,
@@ -53,11 +53,11 @@ export {
normalizeKuaishouCloudFlow, normalizeKuaishouCloudFlow,
normalizeKuaishouCloudRoleInfo, normalizeKuaishouCloudRoleInfo,
resolveKuaishouCloudBindUrlExpiresAt, resolveKuaishouCloudBindUrlExpiresAt,
} from "./kuaishou-cloud/domain.js"; } from "./domain.js";
export { export {
resolvePersistedCloudtentaclesContext, resolvePersistedCloudtentaclesContext,
resolvePersistedCloudtentaclesContextWithFallback, resolvePersistedCloudtentaclesContextWithFallback,
} from "./kuaishou-cloud/cloudtentacles-context.js"; } from "./cloudtentacles-context.js";
export async function ensureTaskClaimLink(task: TaskRow) { export async function ensureTaskClaimLink(task: TaskRow) {
const tokenStatus = String(task?.primary_claim_token_status || "").trim(); const tokenStatus = String(task?.primary_claim_token_status || "").trim();
@@ -775,4 +775,4 @@ export async function refreshKuaishouCloudTaskRoleInfo(
export { export {
dispatchKuaishouCloudFulfillmentTask, dispatchKuaishouCloudFulfillmentTask,
returnKuaishouCloudFulfillmentTask, returnKuaishouCloudFulfillmentTask,
} from "./kuaishou-cloud/task-finalization.js"; } from "./task-finalization.js";
@@ -1,7 +1,7 @@
import { findOrderByPlatformOrderId } from '../../repositories/order-repo.js' import { findOrderByPlatformOrderId } from '../../repositories/order-repo.js'
import { listTasksByOrderId } from '../../repositories/task-repo.js' import { listTasksByOrderId } from '../../repositories/task-repo.js'
import { buildClaimUrl } from '../claim/claim-service.js' import { buildClaimUrl } from '../claim/claim-service.js'
import { ensureTaskClaimLink } from '../fulfillment/kuaishou-cloud-task-service.js' import { ensureTaskClaimLink } from '../fulfillment/kuaishou-cloud/index.js'
import { logIntegration } from '../../utils/logger.js' import { logIntegration } from '../../utils/logger.js'
import { import {
OPEN_91_MANUAL_FAILED_STATUS, OPEN_91_MANUAL_FAILED_STATUS,
@@ -1,6 +1,6 @@
import { createHttpError } from '../../../utils/http.js' import { createHttpError } from '../../../utils/http.js'
import { cloudtentaclesRequest } from './http-client.js' import { cloudtentaclesRequest } from './http-client.js'
import { resolveCloudtentaclesConfig } from './shared.js' import { resolveCloudtentaclesConfig } from './helpers.js'
type JsonObject = Record<string, any> type JsonObject = Record<string, any>
@@ -1,7 +1,7 @@
import { createHash, constants, publicEncrypt } from 'node:crypto' import { createHash, constants, publicEncrypt } from 'node:crypto'
import { createHttpError } from '../../../utils/http.js' import { createHttpError } from '../../../utils/http.js'
import { resolveCloudtentaclesConfig } from './shared.js' import { resolveCloudtentaclesConfig } from './helpers.js'
type JsonObject = Record<string, any> type JsonObject = Record<string, any>
@@ -4,7 +4,7 @@ import https from 'node:https'
import { createHttpError } from '../../../utils/http.js' import { createHttpError } from '../../../utils/http.js'
import { logInfo } from '../../../utils/logger.js' import { logInfo } from '../../../utils/logger.js'
import { notifyCloudtentaclesAuthExpired } from '../../notification/domain-notifications.js' import { notifyCloudtentaclesAuthExpired } from '../../notification/domain-notifications.js'
import { buildCloudtentaclesHeaders, buildCloudtentaclesUrl, resolveCloudtentaclesConfig } from './shared.js' import { buildCloudtentaclesHeaders, buildCloudtentaclesUrl, resolveCloudtentaclesConfig } from './helpers.js'
type JsonObject = Record<string, any> type JsonObject = Record<string, any>
type HeaderAdapter = { type HeaderAdapter = {
@@ -1,6 +1,6 @@
import { createHttpError } from '../../../utils/http.js' import { createHttpError } from '../../../utils/http.js'
import { cloudtentaclesRequest } from './http-client.js' import { cloudtentaclesRequest } from './http-client.js'
import { resolveCloudtentaclesConfig } from './shared.js' import { resolveCloudtentaclesConfig } from './helpers.js'
type JsonObject = Record<string, any> type JsonObject = Record<string, any>
@@ -2,7 +2,7 @@ import { createHttpError } from '../../../utils/http.js'
import { logInfo } from '../../../utils/logger.js' import { logInfo } from '../../../utils/logger.js'
import { encryptCloudtentaclesPayload, md5CloudtentaclesPassword } from './crypto-service.js' import { encryptCloudtentaclesPayload, md5CloudtentaclesPassword } from './crypto-service.js'
import { cloudtentaclesRequest } from './http-client.js' import { cloudtentaclesRequest } from './http-client.js'
import { resolveCloudtentaclesConfig } from './shared.js' import { resolveCloudtentaclesConfig } from './helpers.js'
type JsonObject = Record<string, any> type JsonObject = Record<string, any>
@@ -3,7 +3,7 @@ import https from 'node:https'
import { createHttpError } from '../../../utils/http.js' import { createHttpError } from '../../../utils/http.js'
import { cloudtentaclesRequest } from './http-client.js' import { cloudtentaclesRequest } from './http-client.js'
import { resolveCloudtentaclesConfig } from './shared.js' import { resolveCloudtentaclesConfig } from './helpers.js'
const BIND_URL_PROBE_MAX_BODY_BYTES = 64 * 1024 const BIND_URL_PROBE_MAX_BODY_BYTES = 64 * 1024
const AMS_SIGNATURE_EXPIRED_CODE = '99998' const AMS_SIGNATURE_EXPIRED_CODE = '99998'
@@ -1,6 +1,6 @@
import { createHttpError } from '../../../utils/http.js' import { createHttpError } from '../../../utils/http.js'
import { kuaishouEticketRequest } from './http-client.js' import { kuaishouEticketRequest } from './http-client.js'
import { resolveKuaishouEticketConfig } from './shared.js' import { resolveKuaishouEticketConfig } from './helpers.js'
type JsonObject = Record<string, any> type JsonObject = Record<string, any>
@@ -5,7 +5,7 @@ import type { IncomingHttpHeaders } from 'node:http'
import { parseJsonObject } from '../../../utils/json.js' import { parseJsonObject } from '../../../utils/json.js'
import { createHttpError } from '../../../utils/http.js' import { createHttpError } from '../../../utils/http.js'
import { logInfo } from '../../../utils/logger.js' import { logInfo } from '../../../utils/logger.js'
import { buildKuaishouEticketHeaders, buildKuaishouEticketUrl, resolveKuaishouEticketConfig } from './shared.js' import { buildKuaishouEticketHeaders, buildKuaishouEticketUrl, resolveKuaishouEticketConfig } from './helpers.js'
type JsonObject = Record<string, any> type JsonObject = Record<string, any>
@@ -1,6 +1,6 @@
import { createHttpError } from '../../../utils/http.js' import { createHttpError } from '../../../utils/http.js'
import { kuaishouEticketRequest } from './http-client.js' import { kuaishouEticketRequest } from './http-client.js'
import { resolveKuaishouEticketConfig } from './shared.js' import { resolveKuaishouEticketConfig } from './helpers.js'
type JsonObject = Record<string, any> type JsonObject = Record<string, any>
-1
View File
@@ -1 +0,0 @@
export * from './admin/index'