'城市详情'

This commit is contained in:
eric
2026-03-08 23:20:16 -05:00
parent e36d533a31
commit 41487dc22e
53 changed files with 3417 additions and 1206 deletions

12
config/index.ts Normal file
View File

@@ -0,0 +1,12 @@
export { SITE_CONFIG, getSiteConfig } from "./site.config";
export {
getPocketBaseConfig,
getPaymentConfig,
getJoinPaymentConfig,
getMinioConfig,
} from "./services.config";
export type {
PocketBaseConfig,
PaymentConfig,
MinioConfig,
} from "./services.config";

94
config/services.config.ts Normal file
View File

@@ -0,0 +1,94 @@
/**
* 服务配置 - PocketBase、支付、MinIO
*/
export interface PocketBaseConfig {
enabled: boolean;
url: string;
usersCollection: string;
joinCollection: string;
}
export interface PaymentConfig {
enabled: boolean;
apiUrl: string;
provider: "zpay" | "xorpay";
defaultAmount: number;
defaultType: string;
zpaySubmitUrl: string;
}
export interface MinioConfig {
enabled: boolean;
endPoint: string;
port: number;
useSSL: boolean;
bucket: string;
accessKey: string;
secretKey: string;
region: string;
publicUrl: string;
uploadPrefix: string;
}
const isDev = process.env.NODE_ENV === "development";
export function getPocketBaseConfig(): PocketBaseConfig {
return {
enabled: true,
url:
process.env.NEXT_PUBLIC_POCKETBASE_URL ||
process.env.POCKETBASE_URL ||
"https://pocketbase.hackrobot.cn",
usersCollection: "users",
joinCollection: process.env.POCKETBASE_JOIN_COLLECTION || "solan",
};
}
export function getPaymentConfig(): PaymentConfig {
return {
enabled: true,
apiUrl:
process.env.PAYMENT_API_URL ||
(isDev ? "http://127.0.0.1:8700" : "https://api.hackrobot.cn"),
provider: (process.env.PAYMENT_PROVIDER as "zpay" | "xorpay") || "zpay",
defaultAmount: Number(process.env.PAYMENT_DEFAULT_AMOUNT) || 80,
defaultType: process.env.PAYMENT_DEFAULT_TYPE || "meetup",
zpaySubmitUrl: process.env.ZPAY_SUBMIT_URL || "https://zpayz.cn/submit.php",
};
}
/** 获取「加入」场景的支付配置 */
export function getJoinPaymentConfig(): { amount: number; type: string } {
const payment = getPaymentConfig();
return {
amount: Number(process.env.PAYMENT_JOIN_AMOUNT) || payment.defaultAmount,
type: process.env.PAYMENT_JOIN_TYPE || payment.defaultType,
};
}
export function getMinioConfig(themeOverride?: {
bucket?: string;
uploadPrefix?: string;
}): MinioConfig {
const endPoint = process.env.MINIO_ENDPOINT || "minioweb.hackrobot.cn";
const port = parseInt(process.env.MINIO_PORT || "9035", 10);
const bucket = themeOverride?.bucket || process.env.MINIO_BUCKET || "hackrobot";
const publicUrl =
process.env.MINIO_PUBLIC_URL || `https://${endPoint}/${bucket}`;
const uploadPrefix =
themeOverride?.uploadPrefix || process.env.MINIO_UPLOAD_PREFIX || "joins";
return {
enabled: true,
endPoint,
port,
useSSL: process.env.MINIO_USE_SSL === "true",
bucket,
accessKey: process.env.MINIO_ACCESS_KEY || "",
secretKey: process.env.MINIO_SECRET_KEY || "",
region: process.env.MINIO_REGION || "china",
publicUrl: publicUrl.replace(/\/$/, ""),
uploadPrefix,
};
}

15
config/site.config.ts Normal file
View File

@@ -0,0 +1,15 @@
/**
* 游牧中国站点配置
*/
export const SITE_CONFIG = {
meta: {
title: "游牧中国 - 数字游民的理想目的地",
description:
"发现全球最适合远程工作和生活的城市,加入中国数字游民社区,探索远程办公新方式",
},
};
export function getSiteConfig() {
return SITE_CONFIG;
}