移除行业凭证回调开关
This commit is contained in:
@@ -33,7 +33,6 @@ KUASHOU_INDUSTRY_APP_KEY=
|
|||||||
KUASHOU_INDUSTRY_APP_SECRET=
|
KUASHOU_INDUSTRY_APP_SECRET=
|
||||||
KUASHOU_INDUSTRY_SIGN_SECRET=
|
KUASHOU_INDUSTRY_SIGN_SECRET=
|
||||||
KUASHOU_INDUSTRY_MESSAGE_SECRET=
|
KUASHOU_INDUSTRY_MESSAGE_SECRET=
|
||||||
KUASHOU_INDUSTRY_SEND_CALLBACK_ENABLED=false
|
|
||||||
|
|
||||||
# Cloudtentacles
|
# Cloudtentacles
|
||||||
CLOUDTENTACLES_DEVICE_ID=08bc9d8c-fd15-48ea-bc00-8d754076cafc
|
CLOUDTENTACLES_DEVICE_ID=08bc9d8c-fd15-48ea-bc00-8d754076cafc
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ export function createDefaultRuntimeConfig(projectRoot: string): RuntimeConfig {
|
|||||||
appSecret: "",
|
appSecret: "",
|
||||||
signSecret: "",
|
signSecret: "",
|
||||||
messageSecret: "",
|
messageSecret: "",
|
||||||
sendCallbackEnabled: false,
|
|
||||||
provider: "kuaishou-industry",
|
provider: "kuaishou-industry",
|
||||||
platform: "kuaishou",
|
platform: "kuaishou",
|
||||||
shopId: "kuaishou-industry",
|
shopId: "kuaishou-industry",
|
||||||
|
|||||||
@@ -246,11 +246,6 @@ export const ENV_OVERRIDES: readonly EnvOverride[] = [
|
|||||||
"kuaishouIndustry",
|
"kuaishouIndustry",
|
||||||
"messageSecret",
|
"messageSecret",
|
||||||
]),
|
]),
|
||||||
booleanEnv("KUASHOU_INDUSTRY_SEND_CALLBACK_ENABLED", [
|
|
||||||
"platforms",
|
|
||||||
"kuaishouIndustry",
|
|
||||||
"sendCallbackEnabled",
|
|
||||||
]),
|
|
||||||
stringEnv("KUASHOU_INDUSTRY_PROVIDER", [
|
stringEnv("KUASHOU_INDUSTRY_PROVIDER", [
|
||||||
"platforms",
|
"platforms",
|
||||||
"kuaishouIndustry",
|
"kuaishouIndustry",
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ router.post(
|
|||||||
data: {
|
data: {
|
||||||
filePath: String(result.filePath || '').trim(),
|
filePath: String(result.filePath || '').trim(),
|
||||||
enabled: Boolean(result.source?.enabled),
|
enabled: Boolean(result.source?.enabled),
|
||||||
sendCallbackEnabled: Boolean(result.source?.sendCallbackEnabled),
|
|
||||||
hasAccessToken: Boolean(result.source?.hasAccessToken),
|
hasAccessToken: Boolean(result.source?.hasAccessToken),
|
||||||
hasRefreshToken: Boolean(result.source?.hasRefreshToken),
|
hasRefreshToken: Boolean(result.source?.hasRefreshToken),
|
||||||
accessTokenStatus: String(result.source?.accessTokenStatus || '').trim(),
|
accessTokenStatus: String(result.source?.accessTokenStatus || '').trim(),
|
||||||
|
|||||||
@@ -35,9 +35,6 @@ export function updateAdminKuaishouIndustrySourceConfig(payload: JsonObject = {}
|
|||||||
const saved = saveKuaishouIndustrySourceConfig({
|
const saved = saveKuaishouIndustrySourceConfig({
|
||||||
...current,
|
...current,
|
||||||
enabled: hasPayloadField(payload, 'enabled') ? payload.enabled !== false : current.enabled !== false,
|
enabled: hasPayloadField(payload, 'enabled') ? payload.enabled !== false : current.enabled !== false,
|
||||||
sendCallbackEnabled: hasPayloadField(payload, 'sendCallbackEnabled')
|
|
||||||
? payload.sendCallbackEnabled === true
|
|
||||||
: current.sendCallbackEnabled === true,
|
|
||||||
baseUrl: readConfigString(payload, 'baseUrl', current.baseUrl),
|
baseUrl: readConfigString(payload, 'baseUrl', current.baseUrl),
|
||||||
authBaseUrl: readConfigString(payload, 'authBaseUrl', current.authBaseUrl),
|
authBaseUrl: readConfigString(payload, 'authBaseUrl', current.authBaseUrl),
|
||||||
redirectUri: readConfigString(payload, 'redirectUri', current.redirectUri, { allowBlank: true }),
|
redirectUri: readConfigString(payload, 'redirectUri', current.redirectUri, { allowBlank: true }),
|
||||||
@@ -96,7 +93,6 @@ function mapAdminKuaishouIndustrySourceConfig(config: KuaishouIndustrySourceConf
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
enabled: config.enabled !== false,
|
enabled: config.enabled !== false,
|
||||||
sendCallbackEnabled: config.sendCallbackEnabled === true,
|
|
||||||
baseUrl: config.baseUrl,
|
baseUrl: config.baseUrl,
|
||||||
authBaseUrl: config.authBaseUrl,
|
authBaseUrl: config.authBaseUrl,
|
||||||
redirectUri: config.redirectUri,
|
redirectUri: config.redirectUri,
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ export function getKuaishouIndustryConfig(overrides: Partial<KuaishouIndustrySou
|
|||||||
sellerId: String(config.sellerId || '').trim(),
|
sellerId: String(config.sellerId || '').trim(),
|
||||||
lastRefreshedAt: String(config.lastRefreshedAt || '').trim(),
|
lastRefreshedAt: String(config.lastRefreshedAt || '').trim(),
|
||||||
lastRefreshError: String(config.lastRefreshError || '').trim(),
|
lastRefreshError: String(config.lastRefreshError || '').trim(),
|
||||||
sendCallbackEnabled: Boolean(config.sendCallbackEnabled),
|
|
||||||
provider: String(config.provider || KUISHOU_INDUSTRY_PROVIDER).trim() || KUISHOU_INDUSTRY_PROVIDER,
|
provider: String(config.provider || KUISHOU_INDUSTRY_PROVIDER).trim() || KUISHOU_INDUSTRY_PROVIDER,
|
||||||
platform: String(config.platform || KUISHOU_INDUSTRY_PLATFORM).trim() || KUISHOU_INDUSTRY_PLATFORM,
|
platform: String(config.platform || KUISHOU_INDUSTRY_PLATFORM).trim() || KUISHOU_INDUSTRY_PLATFORM,
|
||||||
shopId: String(config.shopId || KUISHOU_INDUSTRY_PROVIDER).trim() || KUISHOU_INDUSTRY_PROVIDER,
|
shopId: String(config.shopId || KUISHOU_INDUSTRY_PROVIDER).trim() || KUISHOU_INDUSTRY_PROVIDER,
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ type ConsumeCallbackInput = {
|
|||||||
export async function consumeCallback(input: ConsumeCallbackInput): Promise<{ success: boolean; response?: JsonObject; error?: string }> {
|
export async function consumeCallback(input: ConsumeCallbackInput): Promise<{ success: boolean; response?: JsonObject; error?: string }> {
|
||||||
let config = getKuaishouIndustryConfig()
|
let config = getKuaishouIndustryConfig()
|
||||||
|
|
||||||
if (!config.enabled || !config.sendCallbackEnabled) {
|
if (!config.enabled) {
|
||||||
logInfo('[kuaishou-industry/consume-callback]', '回调未启用,跳过')
|
logInfo('[kuaishou-industry/consume-callback]', '行业电子凭证配置未启用,跳过核销回调')
|
||||||
return { success: true }
|
return { success: true }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,8 +56,9 @@ export async function consumeCallback(input: ConsumeCallbackInput): Promise<{ su
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!config.accessToken) {
|
if (!config.accessToken) {
|
||||||
logWarn('[kuaishou-industry/consume-callback]', 'accessToken 未配置,跳过')
|
const message = 'accessToken 未配置,无法发起核销回调'
|
||||||
return { success: true }
|
logWarn('[kuaishou-industry/consume-callback]', message)
|
||||||
|
return { success: false, error: message }
|
||||||
}
|
}
|
||||||
|
|
||||||
const bizParams: JsonObject = {
|
const bizParams: JsonObject = {
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ type DestroyCallbackInput = {
|
|||||||
export async function destroyCallback(input: DestroyCallbackInput): Promise<{ success: boolean; response?: JsonObject; error?: string }> {
|
export async function destroyCallback(input: DestroyCallbackInput): Promise<{ success: boolean; response?: JsonObject; error?: string }> {
|
||||||
let config = getKuaishouIndustryConfig()
|
let config = getKuaishouIndustryConfig()
|
||||||
|
|
||||||
if (!config.enabled || !config.sendCallbackEnabled) {
|
if (!config.enabled) {
|
||||||
logInfo('[kuaishou-industry/destroy-callback]', '回调未启用,跳过')
|
logInfo('[kuaishou-industry/destroy-callback]', '行业电子凭证配置未启用,跳过销毁回调')
|
||||||
return { success: true }
|
return { success: true }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,8 +46,9 @@ export async function destroyCallback(input: DestroyCallbackInput): Promise<{ su
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!config.accessToken) {
|
if (!config.accessToken) {
|
||||||
logWarn('[kuaishou-industry/destroy-callback]', 'accessToken 未配置,跳过')
|
const message = 'accessToken 未配置,无法发起销毁回调'
|
||||||
return { success: true }
|
logWarn('[kuaishou-industry/destroy-callback]', message)
|
||||||
|
return { success: false, error: message }
|
||||||
}
|
}
|
||||||
|
|
||||||
const bizParams: JsonObject = {
|
const bizParams: JsonObject = {
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ type SendCallbackInput = {
|
|||||||
export async function sendCallback(input: SendCallbackInput): Promise<{ success: boolean; response?: JsonObject; error?: string }> {
|
export async function sendCallback(input: SendCallbackInput): Promise<{ success: boolean; response?: JsonObject; error?: string }> {
|
||||||
let config = getKuaishouIndustryConfig()
|
let config = getKuaishouIndustryConfig()
|
||||||
|
|
||||||
if (!config.enabled || !config.sendCallbackEnabled) {
|
if (!config.enabled) {
|
||||||
logInfo('[kuaishou-industry/send-callback]', '发码回调未启用,跳过')
|
logInfo('[kuaishou-industry/send-callback]', '行业电子凭证配置未启用,跳过发码回调')
|
||||||
return { success: true }
|
return { success: true }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,8 +52,9 @@ export async function sendCallback(input: SendCallbackInput): Promise<{ success:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!config.accessToken) {
|
if (!config.accessToken) {
|
||||||
logWarn('[kuaishou-industry/send-callback]', 'accessToken 未配置,跳过发码回调')
|
const message = 'accessToken 未配置,无法发起发码回调'
|
||||||
return { success: true }
|
logWarn('[kuaishou-industry/send-callback]', message)
|
||||||
|
return { success: false, error: message }
|
||||||
}
|
}
|
||||||
|
|
||||||
const bizParams: JsonObject = {
|
const bizParams: JsonObject = {
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ type JsonObject = Record<string, any>
|
|||||||
|
|
||||||
export type KuaishouIndustrySourceConfig = {
|
export type KuaishouIndustrySourceConfig = {
|
||||||
enabled: boolean
|
enabled: boolean
|
||||||
sendCallbackEnabled: boolean
|
|
||||||
baseUrl: string
|
baseUrl: string
|
||||||
authBaseUrl: string
|
authBaseUrl: string
|
||||||
redirectUri: string
|
redirectUri: string
|
||||||
@@ -72,9 +71,6 @@ function normalizeKuaishouIndustrySourceConfig(rawValue: unknown): KuaishouIndus
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
enabled: typeof source.enabled === 'boolean' ? source.enabled : fallback.enabled,
|
enabled: typeof source.enabled === 'boolean' ? source.enabled : fallback.enabled,
|
||||||
sendCallbackEnabled: typeof source.sendCallbackEnabled === 'boolean'
|
|
||||||
? source.sendCallbackEnabled
|
|
||||||
: fallback.sendCallbackEnabled,
|
|
||||||
baseUrl: normalizeUrlLike(source.baseUrl, fallback.baseUrl),
|
baseUrl: normalizeUrlLike(source.baseUrl, fallback.baseUrl),
|
||||||
authBaseUrl: normalizeUrlLike(source.authBaseUrl, fallback.authBaseUrl),
|
authBaseUrl: normalizeUrlLike(source.authBaseUrl, fallback.authBaseUrl),
|
||||||
redirectUri: normalizeString(source.redirectUri, fallback.redirectUri),
|
redirectUri: normalizeString(source.redirectUri, fallback.redirectUri),
|
||||||
@@ -106,7 +102,6 @@ function createDefaultKuaishouIndustrySourceConfig(): KuaishouIndustrySourceConf
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
sendCallbackEnabled: Boolean(runtime.sendCallbackEnabled),
|
|
||||||
baseUrl: DEFAULT_CALLBACK_BASE_URL,
|
baseUrl: DEFAULT_CALLBACK_BASE_URL,
|
||||||
authBaseUrl: DEFAULT_AUTH_BASE_URL,
|
authBaseUrl: DEFAULT_AUTH_BASE_URL,
|
||||||
redirectUri: '',
|
redirectUri: '',
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ function createConfig(
|
|||||||
): KuaishouIndustrySourceConfig {
|
): KuaishouIndustrySourceConfig {
|
||||||
return {
|
return {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
sendCallbackEnabled: true,
|
|
||||||
baseUrl: 'https://openapi.kwaixiaodian.com',
|
baseUrl: 'https://openapi.kwaixiaodian.com',
|
||||||
authBaseUrl: 'https://open.kwaixiaodian.com',
|
authBaseUrl: 'https://open.kwaixiaodian.com',
|
||||||
redirectUri: '',
|
redirectUri: '',
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ export type AdminKuaishouEticketSourceConfigInput = {
|
|||||||
|
|
||||||
export type AdminKuaishouIndustrySourceConfigInput = {
|
export type AdminKuaishouIndustrySourceConfigInput = {
|
||||||
enabled?: boolean
|
enabled?: boolean
|
||||||
sendCallbackEnabled?: boolean
|
|
||||||
baseUrl?: string
|
baseUrl?: string
|
||||||
authBaseUrl?: string
|
authBaseUrl?: string
|
||||||
redirectUri?: string
|
redirectUri?: string
|
||||||
|
|||||||
@@ -92,7 +92,6 @@ export type RuntimeConfig = {
|
|||||||
appSecret: string;
|
appSecret: string;
|
||||||
signSecret: string;
|
signSecret: string;
|
||||||
messageSecret: string;
|
messageSecret: string;
|
||||||
sendCallbackEnabled: boolean;
|
|
||||||
provider: string;
|
provider: string;
|
||||||
platform: string;
|
platform: string;
|
||||||
shopId: string;
|
shopId: string;
|
||||||
|
|||||||
@@ -1193,7 +1193,7 @@ function KuaishouIndustryPanel({
|
|||||||
<div className="metric-grid four">
|
<div className="metric-grid four">
|
||||||
<MetricCard
|
<MetricCard
|
||||||
label="回调状态"
|
label="回调状态"
|
||||||
value={source.enabled && source.sendCallbackEnabled ? '已启用' : '停用'}
|
value={source.enabled ? '已启用' : '停用'}
|
||||||
detail={source.enabled ? '配置启用' : '配置停用'}
|
detail={source.enabled ? '配置启用' : '配置停用'}
|
||||||
/>
|
/>
|
||||||
<MetricCard
|
<MetricCard
|
||||||
@@ -1250,11 +1250,6 @@ function KuaishouIndustryPanel({
|
|||||||
checked={source.enabled}
|
checked={source.enabled}
|
||||||
onChange={(enabled) => updateSource({ enabled })}
|
onChange={(enabled) => updateSource({ enabled })}
|
||||||
/>
|
/>
|
||||||
<FieldSwitch
|
|
||||||
label="通知快手回调"
|
|
||||||
checked={source.sendCallbackEnabled}
|
|
||||||
onChange={(sendCallbackEnabled) => updateSource({ sendCallbackEnabled })}
|
|
||||||
/>
|
|
||||||
<LabeledInput
|
<LabeledInput
|
||||||
label="开放平台 API"
|
label="开放平台 API"
|
||||||
value={source.baseUrl}
|
value={source.baseUrl}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ export type AdminKuaishouIndustryAccessTokenStatus =
|
|||||||
|
|
||||||
export interface AdminKuaishouIndustrySourceConfig {
|
export interface AdminKuaishouIndustrySourceConfig {
|
||||||
enabled: boolean
|
enabled: boolean
|
||||||
sendCallbackEnabled: boolean
|
|
||||||
baseUrl: string
|
baseUrl: string
|
||||||
authBaseUrl: string
|
authBaseUrl: string
|
||||||
redirectUri: string
|
redirectUri: string
|
||||||
|
|||||||
+2
-60
@@ -33,6 +33,8 @@ services:
|
|||||||
context: .
|
context: .
|
||||||
dockerfile: deploy/docker/backend-dev.Dockerfile
|
dockerfile: deploy/docker/backend-dev.Dockerfile
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
command: >-
|
command: >-
|
||||||
sh /app/scripts/start-dev-container.sh
|
sh /app/scripts/start-dev-container.sh
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -52,71 +54,11 @@ services:
|
|||||||
DATABASE_SSL: ${DATABASE_SSL:-false}
|
DATABASE_SSL: ${DATABASE_SSL:-false}
|
||||||
DATABASE_MAX_CONNECTIONS: ${DATABASE_MAX_CONNECTIONS:-10}
|
DATABASE_MAX_CONNECTIONS: ${DATABASE_MAX_CONNECTIONS:-10}
|
||||||
DATA_ROOT: /app/data
|
DATA_ROOT: /app/data
|
||||||
LOG_LEVEL: ${LOG_LEVEL:-info}
|
|
||||||
LOG_RETENTION_DAYS: ${LOG_RETENTION_DAYS:-30}
|
LOG_RETENTION_DAYS: ${LOG_RETENTION_DAYS:-30}
|
||||||
CLAIM_BASE_URL: ${CLAIM_BASE_URL:-http://localhost/#/claim}
|
CLAIM_BASE_URL: ${CLAIM_BASE_URL:-http://localhost/#/claim}
|
||||||
CLAIM_TOKEN_TTL_HOURS: ${CLAIM_TOKEN_TTL_HOURS:-}
|
|
||||||
ADMIN_SESSION_SECRET: ${ADMIN_SESSION_SECRET}
|
ADMIN_SESSION_SECRET: ${ADMIN_SESSION_SECRET}
|
||||||
ADMIN_SESSION_TTL_HOURS: ${ADMIN_SESSION_TTL_HOURS:-}
|
|
||||||
ADMIN_DEFAULT_USERS_JSON: ${ADMIN_DEFAULT_USERS_JSON}
|
ADMIN_DEFAULT_USERS_JSON: ${ADMIN_DEFAULT_USERS_JSON}
|
||||||
KAQUAN91_USER_ID: ${KAQUAN91_USER_ID:-}
|
|
||||||
KAQUAN91_SECRET: ${KAQUAN91_SECRET:-}
|
|
||||||
KAQUAN91_VERSION: ${KAQUAN91_VERSION:-}
|
|
||||||
KAQUAN91_SHOP_ID: ${KAQUAN91_SHOP_ID:-}
|
|
||||||
KAQUAN91_SHOP_NAME: ${KAQUAN91_SHOP_NAME:-}
|
|
||||||
KAQUAN91_TIMESTAMP_TOLERANCE_SECONDS: ${KAQUAN91_TIMESTAMP_TOLERANCE_SECONDS:-}
|
|
||||||
KAQUAN91_CARDS_ENCODING: ${KAQUAN91_CARDS_ENCODING:-}
|
|
||||||
CLOUDTENTACLES_BASE_URL: ${CLOUDTENTACLES_BASE_URL:-}
|
|
||||||
CLOUDTENTACLES_TIMEOUT_MS: ${CLOUDTENTACLES_TIMEOUT_MS:-}
|
|
||||||
CLOUDTENTACLES_SEND_SMS_PATH: ${CLOUDTENTACLES_SEND_SMS_PATH:-}
|
|
||||||
CLOUDTENTACLES_LOGIN_PATH: ${CLOUDTENTACLES_LOGIN_PATH:-}
|
|
||||||
CLOUDTENTACLES_USER_INFO_PATH: ${CLOUDTENTACLES_USER_INFO_PATH:-}
|
|
||||||
CLOUDTENTACLES_ASSET_PATH: ${CLOUDTENTACLES_ASSET_PATH:-}
|
|
||||||
CLOUDTENTACLES_PERMISSION_PATH: ${CLOUDTENTACLES_PERMISSION_PATH:-}
|
|
||||||
CLOUDTENTACLES_CATEGORIES_PATH: ${CLOUDTENTACLES_CATEGORIES_PATH:-}
|
|
||||||
CLOUDTENTACLES_SKU_LIST_PATH: ${CLOUDTENTACLES_SKU_LIST_PATH:-}
|
|
||||||
CLOUDTENTACLES_SKU_BUY_PATH: ${CLOUDTENTACLES_SKU_BUY_PATH:-}
|
|
||||||
CLOUDTENTACLES_KNAPSACK_PATH: ${CLOUDTENTACLES_KNAPSACK_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_LIST_PATH: ${CLOUDTENTACLES_VN_LIST_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_APPOINT_PATH: ${CLOUDTENTACLES_VN_APPOINT_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_GENERATE_LOGIN_CODE_PATH: ${CLOUDTENTACLES_VN_GENERATE_LOGIN_CODE_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_VERIF_CODE_PATH: ${CLOUDTENTACLES_VN_VERIF_CODE_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_VERIFY_LOGIN_CODE_PATH: ${CLOUDTENTACLES_VN_VERIFY_LOGIN_CODE_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_BIND_URL_PATH: ${CLOUDTENTACLES_VN_BIND_URL_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_BIND_INFO_PATH: ${CLOUDTENTACLES_VN_BIND_INFO_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_BACK_PATH: ${CLOUDTENTACLES_VN_BACK_PATH:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_TTL_SECONDS: ${CLOUDTENTACLES_BIND_URL_TTL_SECONDS:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_INTERVAL_SECONDS: ${CLOUDTENTACLES_BIND_URL_PROBE_INTERVAL_SECONDS:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_TIMEOUT_MS: ${CLOUDTENTACLES_BIND_URL_PROBE_TIMEOUT_MS:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_USER_AGENT: ${CLOUDTENTACLES_BIND_URL_PROBE_USER_AGENT:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_ENDPOINT: ${CLOUDTENTACLES_BIND_URL_PROBE_ENDPOINT:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_CHART_ID: ${CLOUDTENTACLES_BIND_URL_PROBE_CHART_ID:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_SUB_CHART_ID: ${CLOUDTENTACLES_BIND_URL_PROBE_SUB_CHART_ID:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_IDE_TOKEN: ${CLOUDTENTACLES_BIND_URL_PROBE_IDE_TOKEN:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_ACTIVITY_URL: ${CLOUDTENTACLES_BIND_URL_PROBE_ACTIVITY_URL:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_REFERER: ${CLOUDTENTACLES_BIND_URL_PROBE_REFERER:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_EXTRA_COOKIE: ${CLOUDTENTACLES_BIND_URL_PROBE_EXTRA_COOKIE:-}
|
|
||||||
CLOUDTENTACLES_PUBLIC_KEY_PEM: ${CLOUDTENTACLES_PUBLIC_KEY_PEM:-}
|
|
||||||
CLOUDTENTACLES_CLIENT_SOURCE: ${CLOUDTENTACLES_CLIENT_SOURCE:-}
|
|
||||||
CLOUDTENTACLES_DEVICE_ID: ${CLOUDTENTACLES_DEVICE_ID:-}
|
|
||||||
CLOUDTENTACLES_DEVICE_TYPE: ${CLOUDTENTACLES_DEVICE_TYPE:-}
|
|
||||||
KUASHOU_INDUSTRY_APP_KEY: ${KUASHOU_INDUSTRY_APP_KEY:-}
|
|
||||||
KUASHOU_INDUSTRY_APP_SECRET: ${KUASHOU_INDUSTRY_APP_SECRET:-}
|
|
||||||
KUASHOU_INDUSTRY_SIGN_SECRET: ${KUASHOU_INDUSTRY_SIGN_SECRET:-}
|
|
||||||
KUASHOU_INDUSTRY_MESSAGE_SECRET: ${KUASHOU_INDUSTRY_MESSAGE_SECRET:-}
|
|
||||||
KUASHOU_INDUSTRY_RATE_LIMIT_MAX: ${KUASHOU_INDUSTRY_RATE_LIMIT_MAX:-120}
|
KUASHOU_INDUSTRY_RATE_LIMIT_MAX: ${KUASHOU_INDUSTRY_RATE_LIMIT_MAX:-120}
|
||||||
KUASHOU_INDUSTRY_SEND_CALLBACK_ENABLED: ${KUASHOU_INDUSTRY_SEND_CALLBACK_ENABLED:-false}
|
|
||||||
KUASHOU_INDUSTRY_PROVIDER: ${KUASHOU_INDUSTRY_PROVIDER:-}
|
|
||||||
KUASHOU_INDUSTRY_SHOP_ID: ${KUASHOU_INDUSTRY_SHOP_ID:-}
|
|
||||||
KUASHOU_INDUSTRY_SHOP_NAME: ${KUASHOU_INDUSTRY_SHOP_NAME:-}
|
|
||||||
KUASHOU_INDUSTRY_VERSION: ${KUASHOU_INDUSTRY_VERSION:-}
|
|
||||||
KUAISHOU_FEIFEI_BASE_URL: ${KUAISHOU_FEIFEI_BASE_URL:-}
|
|
||||||
KUAISHOU_FEIFEI_APP_KEY: ${KUAISHOU_FEIFEI_APP_KEY:-}
|
|
||||||
KUAISHOU_FEIFEI_APP_SECRET: ${KUAISHOU_FEIFEI_APP_SECRET:-}
|
|
||||||
KUAISHOU_FEIFEI_TIMEOUT_MS: ${KUAISHOU_FEIFEI_TIMEOUT_MS:-}
|
|
||||||
KUAISHOU_FEIFEI_NOTIFY_URL: ${KUAISHOU_FEIFEI_NOTIFY_URL:-}
|
|
||||||
KUAISHOU_FEIFEI_PRODUCT_RULES_JSON: ${KUAISHOU_FEIFEI_PRODUCT_RULES_JSON:-}
|
|
||||||
CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS:-}
|
|
||||||
logging: *json-log-rotation
|
logging: *json-log-rotation
|
||||||
volumes:
|
volumes:
|
||||||
- ./apps/backend:/app
|
- ./apps/backend:/app
|
||||||
|
|||||||
+2
-60
@@ -31,6 +31,8 @@ services:
|
|||||||
context: .
|
context: .
|
||||||
dockerfile: deploy/docker/backend.Dockerfile
|
dockerfile: deploy/docker/backend.Dockerfile
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -48,71 +50,11 @@ services:
|
|||||||
DATABASE_SSL: ${DATABASE_SSL:-false}
|
DATABASE_SSL: ${DATABASE_SSL:-false}
|
||||||
DATABASE_MAX_CONNECTIONS: ${DATABASE_MAX_CONNECTIONS:-20}
|
DATABASE_MAX_CONNECTIONS: ${DATABASE_MAX_CONNECTIONS:-20}
|
||||||
DATA_ROOT: /app/data
|
DATA_ROOT: /app/data
|
||||||
LOG_LEVEL: ${LOG_LEVEL:-info}
|
|
||||||
LOG_RETENTION_DAYS: ${LOG_RETENTION_DAYS:-30}
|
LOG_RETENTION_DAYS: ${LOG_RETENTION_DAYS:-30}
|
||||||
CLAIM_BASE_URL: ${CLAIM_BASE_URL:-http://localhost/#/claim}
|
CLAIM_BASE_URL: ${CLAIM_BASE_URL:-http://localhost/#/claim}
|
||||||
CLAIM_TOKEN_TTL_HOURS: ${CLAIM_TOKEN_TTL_HOURS:-}
|
|
||||||
ADMIN_SESSION_SECRET: ${ADMIN_SESSION_SECRET}
|
ADMIN_SESSION_SECRET: ${ADMIN_SESSION_SECRET}
|
||||||
ADMIN_SESSION_TTL_HOURS: ${ADMIN_SESSION_TTL_HOURS:-}
|
|
||||||
ADMIN_DEFAULT_USERS_JSON: ${ADMIN_DEFAULT_USERS_JSON}
|
ADMIN_DEFAULT_USERS_JSON: ${ADMIN_DEFAULT_USERS_JSON}
|
||||||
KAQUAN91_USER_ID: ${KAQUAN91_USER_ID:-}
|
|
||||||
KAQUAN91_SECRET: ${KAQUAN91_SECRET:-}
|
|
||||||
KAQUAN91_VERSION: ${KAQUAN91_VERSION:-}
|
|
||||||
KAQUAN91_SHOP_ID: ${KAQUAN91_SHOP_ID:-}
|
|
||||||
KAQUAN91_SHOP_NAME: ${KAQUAN91_SHOP_NAME:-}
|
|
||||||
KAQUAN91_TIMESTAMP_TOLERANCE_SECONDS: ${KAQUAN91_TIMESTAMP_TOLERANCE_SECONDS:-}
|
|
||||||
KAQUAN91_CARDS_ENCODING: ${KAQUAN91_CARDS_ENCODING:-}
|
|
||||||
CLOUDTENTACLES_BASE_URL: ${CLOUDTENTACLES_BASE_URL:-}
|
|
||||||
CLOUDTENTACLES_TIMEOUT_MS: ${CLOUDTENTACLES_TIMEOUT_MS:-}
|
|
||||||
CLOUDTENTACLES_SEND_SMS_PATH: ${CLOUDTENTACLES_SEND_SMS_PATH:-}
|
|
||||||
CLOUDTENTACLES_LOGIN_PATH: ${CLOUDTENTACLES_LOGIN_PATH:-}
|
|
||||||
CLOUDTENTACLES_USER_INFO_PATH: ${CLOUDTENTACLES_USER_INFO_PATH:-}
|
|
||||||
CLOUDTENTACLES_ASSET_PATH: ${CLOUDTENTACLES_ASSET_PATH:-}
|
|
||||||
CLOUDTENTACLES_PERMISSION_PATH: ${CLOUDTENTACLES_PERMISSION_PATH:-}
|
|
||||||
CLOUDTENTACLES_CATEGORIES_PATH: ${CLOUDTENTACLES_CATEGORIES_PATH:-}
|
|
||||||
CLOUDTENTACLES_SKU_LIST_PATH: ${CLOUDTENTACLES_SKU_LIST_PATH:-}
|
|
||||||
CLOUDTENTACLES_SKU_BUY_PATH: ${CLOUDTENTACLES_SKU_BUY_PATH:-}
|
|
||||||
CLOUDTENTACLES_KNAPSACK_PATH: ${CLOUDTENTACLES_KNAPSACK_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_LIST_PATH: ${CLOUDTENTACLES_VN_LIST_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_APPOINT_PATH: ${CLOUDTENTACLES_VN_APPOINT_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_GENERATE_LOGIN_CODE_PATH: ${CLOUDTENTACLES_VN_GENERATE_LOGIN_CODE_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_VERIF_CODE_PATH: ${CLOUDTENTACLES_VN_VERIF_CODE_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_VERIFY_LOGIN_CODE_PATH: ${CLOUDTENTACLES_VN_VERIFY_LOGIN_CODE_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_BIND_URL_PATH: ${CLOUDTENTACLES_VN_BIND_URL_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_BIND_INFO_PATH: ${CLOUDTENTACLES_VN_BIND_INFO_PATH:-}
|
|
||||||
CLOUDTENTACLES_VN_BACK_PATH: ${CLOUDTENTACLES_VN_BACK_PATH:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_TTL_SECONDS: ${CLOUDTENTACLES_BIND_URL_TTL_SECONDS:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_INTERVAL_SECONDS: ${CLOUDTENTACLES_BIND_URL_PROBE_INTERVAL_SECONDS:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_TIMEOUT_MS: ${CLOUDTENTACLES_BIND_URL_PROBE_TIMEOUT_MS:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_USER_AGENT: ${CLOUDTENTACLES_BIND_URL_PROBE_USER_AGENT:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_ENDPOINT: ${CLOUDTENTACLES_BIND_URL_PROBE_ENDPOINT:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_CHART_ID: ${CLOUDTENTACLES_BIND_URL_PROBE_CHART_ID:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_SUB_CHART_ID: ${CLOUDTENTACLES_BIND_URL_PROBE_SUB_CHART_ID:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_IDE_TOKEN: ${CLOUDTENTACLES_BIND_URL_PROBE_IDE_TOKEN:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_ACTIVITY_URL: ${CLOUDTENTACLES_BIND_URL_PROBE_ACTIVITY_URL:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_REFERER: ${CLOUDTENTACLES_BIND_URL_PROBE_REFERER:-}
|
|
||||||
CLOUDTENTACLES_BIND_URL_PROBE_EXTRA_COOKIE: ${CLOUDTENTACLES_BIND_URL_PROBE_EXTRA_COOKIE:-}
|
|
||||||
CLOUDTENTACLES_PUBLIC_KEY_PEM: ${CLOUDTENTACLES_PUBLIC_KEY_PEM:-}
|
|
||||||
CLOUDTENTACLES_CLIENT_SOURCE: ${CLOUDTENTACLES_CLIENT_SOURCE:-}
|
|
||||||
CLOUDTENTACLES_DEVICE_ID: ${CLOUDTENTACLES_DEVICE_ID:-}
|
|
||||||
CLOUDTENTACLES_DEVICE_TYPE: ${CLOUDTENTACLES_DEVICE_TYPE:-}
|
|
||||||
KUASHOU_INDUSTRY_APP_KEY: ${KUASHOU_INDUSTRY_APP_KEY:-}
|
|
||||||
KUASHOU_INDUSTRY_APP_SECRET: ${KUASHOU_INDUSTRY_APP_SECRET:-}
|
|
||||||
KUASHOU_INDUSTRY_SIGN_SECRET: ${KUASHOU_INDUSTRY_SIGN_SECRET:-}
|
|
||||||
KUASHOU_INDUSTRY_MESSAGE_SECRET: ${KUASHOU_INDUSTRY_MESSAGE_SECRET:-}
|
|
||||||
KUASHOU_INDUSTRY_RATE_LIMIT_MAX: ${KUASHOU_INDUSTRY_RATE_LIMIT_MAX:-120}
|
KUASHOU_INDUSTRY_RATE_LIMIT_MAX: ${KUASHOU_INDUSTRY_RATE_LIMIT_MAX:-120}
|
||||||
KUASHOU_INDUSTRY_SEND_CALLBACK_ENABLED: ${KUASHOU_INDUSTRY_SEND_CALLBACK_ENABLED:-false}
|
|
||||||
KUASHOU_INDUSTRY_PROVIDER: ${KUASHOU_INDUSTRY_PROVIDER:-}
|
|
||||||
KUASHOU_INDUSTRY_SHOP_ID: ${KUASHOU_INDUSTRY_SHOP_ID:-}
|
|
||||||
KUASHOU_INDUSTRY_SHOP_NAME: ${KUASHOU_INDUSTRY_SHOP_NAME:-}
|
|
||||||
KUASHOU_INDUSTRY_VERSION: ${KUASHOU_INDUSTRY_VERSION:-}
|
|
||||||
KUAISHOU_FEIFEI_BASE_URL: ${KUAISHOU_FEIFEI_BASE_URL:-}
|
|
||||||
KUAISHOU_FEIFEI_APP_KEY: ${KUAISHOU_FEIFEI_APP_KEY:-}
|
|
||||||
KUAISHOU_FEIFEI_APP_SECRET: ${KUAISHOU_FEIFEI_APP_SECRET:-}
|
|
||||||
KUAISHOU_FEIFEI_TIMEOUT_MS: ${KUAISHOU_FEIFEI_TIMEOUT_MS:-}
|
|
||||||
KUAISHOU_FEIFEI_NOTIFY_URL: ${KUAISHOU_FEIFEI_NOTIFY_URL:-}
|
|
||||||
KUAISHOU_FEIFEI_PRODUCT_RULES_JSON: ${KUAISHOU_FEIFEI_PRODUCT_RULES_JSON:-}
|
|
||||||
CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS:-}
|
|
||||||
logging: *json-log-rotation
|
logging: *json-log-rotation
|
||||||
volumes:
|
volumes:
|
||||||
- ./apps/backend/data:/app/data
|
- ./apps/backend/data:/app/data
|
||||||
|
|||||||
Reference in New Issue
Block a user