重构为支持多站点版本所有api增加site_name参数

This commit is contained in:
jingrow 2025-07-15 01:46:47 +08:00
parent 77901dbe20
commit 94e584dc0a
10 changed files with 39 additions and 256 deletions

View File

@ -1,6 +1,7 @@
import axios from 'axios';
const JINGROW_SERVER_URL = process.env.JINGROW_SERVER_URL;
const JINGROW_SITE_NAME = process.env.JINGROW_SITE_NAME;
export async function GET(request) {
try {
@ -13,7 +14,7 @@ export async function GET(request) {
const response = await axios.get(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_category`,
{ params: { pagetype, name } }
{ params: { pagetype, name, site_name: JINGROW_SITE_NAME } }
);
return Response.json(response.data, { status: response.status });
} catch (error) {

View File

@ -3,6 +3,7 @@ import fs from 'fs';
import path from 'path';
const JINGROW_SERVER_URL = process.env.JINGROW_SERVER_URL;
const JINGROW_SITE_NAME = process.env.JINGROW_SITE_NAME;
const PUBLIC_FILES_DIR = path.join(process.cwd(), 'public/files');
// 确保目录存在
@ -48,7 +49,7 @@ export async function GET(request) {
}
const response = await axios.get(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_component_data`,
{ params: { component_name } }
{ params: { component_name, site_name: JINGROW_SITE_NAME } }
);
let data = response.data.message?.data || {};

View File

@ -1,6 +1,7 @@
import axios from 'axios';
const JINGROW_SERVER_URL = process.env.JINGROW_SERVER_URL;
const JINGROW_SITE_NAME = process.env.JINGROW_SITE_NAME;
export async function GET(request) {
try {
@ -12,7 +13,7 @@ export async function GET(request) {
}
const response = await axios.get(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_detailview_data`,
{ params: { pagetype, slug } }
{ params: { pagetype, slug, site_name: JINGROW_SITE_NAME } }
);
const data = response.data.message?.data || {};
return Response.json({ data });

View File

@ -1,6 +1,7 @@
import axios from 'axios';
const JINGROW_SERVER_URL = process.env.JINGROW_SERVER_URL;
const JINGROW_SITE_NAME = process.env.JINGROW_SITE_NAME;
export async function GET(request) {
try {
@ -13,7 +14,7 @@ export async function GET(request) {
}
const response = await axios.get(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_listview_data`,
{ params: { pagetype, category, count } }
{ params: { pagetype, category, count, site_name: JINGROW_SITE_NAME } }
);
const data = response.data.message?.data || [];
return Response.json({ data });

View File

@ -1,6 +1,7 @@
import axios from 'axios';
const JINGROW_SERVER_URL = process.env.JINGROW_SERVER_URL;
const JINGROW_SITE_NAME = process.env.JINGROW_SITE_NAME;
// 递归处理菜单层级,拼接完整 slug 路径
function buildMenuTree(items, parent = null, parentPath = "") {
@ -25,7 +26,8 @@ function buildMenuTree(items, parent = null, parentPath = "") {
export async function GET(request) {
try {
const response = await axios.get(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_menu`
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_menu`,
{ params: { site_name: JINGROW_SITE_NAME } }
);
const items = response.data.message?.data || [];
const menuTree = buildMenuTree(items);

View File

@ -3,6 +3,7 @@ import fs from 'fs';
import path from 'path';
const JINGROW_SERVER_URL = process.env.JINGROW_SERVER_URL;
const JINGROW_SITE_NAME = process.env.JINGROW_SITE_NAME;
const PUBLIC_FILES_DIR = path.join(process.cwd(), 'public/files');
if (!fs.existsSync(PUBLIC_FILES_DIR)) {
@ -64,7 +65,7 @@ export async function POST(request) {
if (!Array.isArray(slug_list)) {
return Response.json({ error: 'slug_list参数必须为数组' }, { status: 400 });
}
const params = { slug_list: JSON.stringify(slug_list), page };
const params = { slug_list: JSON.stringify(slug_list), page, site_name: JINGROW_SITE_NAME };
if (page_size) params.page_size = page_size;
const response = await axios.get(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_page_data`,

View File

@ -1,6 +1,7 @@
import axios from 'axios';
const JINGROW_SERVER_URL = process.env.JINGROW_SERVER_URL;
const JINGROW_SITE_NAME = process.env.JINGROW_SITE_NAME;
export async function POST(request) {
try {
@ -11,7 +12,7 @@ export async function POST(request) {
}
const response = await axios.post(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.send_email`,
{ subject, content }
{ subject, content, site_name: JINGROW_SITE_NAME }
);
const message = response.data.message;
if (message?.success) {

View File

@ -7,277 +7,72 @@
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/algae-extract/organic-water-soluble-and-non-toxic-food-pigment-extracted-and-processed-from-spirulina-platensis-spirulina-blue-spirulina-extract</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-4</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/ratio-extract/organic-bladderwrack-extract</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-1</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-13</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/ratio-extract/organic-white-kidney-bean-extract</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-6</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/test008</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-7</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/mushroom-extracts/organic-organic-cordyceps-militaris-extract</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-2</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/organic-best-price-organic-freeze-dried-organic-pure-goji-berry-powder</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-8</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/organic-extract-natural-pigment-fruit-powder-organic-raspberry-powder-green-pure-powder-extract-powder-food-grade-organic</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-5</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/test007</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-10</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/vegetable-powders/organic-organic-super-green-powder-supply-food-gradevegetable-powder-wheatgrass-powder</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-3</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/news</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-12</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/vegetable-powders/organic-vegetable-powder-spinach-extract-powder-organic-pure-quality</loc>
<loc>http://192.168.2.200:3001/use-cases</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/ratio-extract/organic-burdock-extract</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-11</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/algae-extract/test005</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/organic-supply-food-grade-powder-best-price-organic-raspberry-powder-quality-food-grade-powder-100-pure-fruit-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/algae-extract</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/mushroom-extracts/organic-organic-turkey-tail-extract</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/mushroom-extracts/organic-organic-tremella-extract</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/vegetable-powders/organic-good-quality-plant-extract-natural-pigment-vegetablepowder-freeze-dried-organic-pure-water-kale-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/ratio-extract/organic-schisandra-extract</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/vegetable-powders/organic-vegetable-seasoning-powder-freeze-dried-organic-pure-quality-barley-grass-powde</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/mushroom-extracts/organic-organic-maitake-mushroom-extract</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/organic-100-pure-fruit-powder-instant-filled-powder-mango-powder-freeze-dried-extract-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/algae-extract/sub-category</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/ratio-extract</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/vegetable-powders/organic-plant-extract-good-quality-beetroot-red-colour-powder-beetroot-juice-powder-beetroot-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/mushroom-extracts/organic-enoki-mushroom-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/organic-freeze-dried-organic-pure-good-quality-organic-strawberry-powder-extract-natural-pigment-fruit-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/algae-extract/Test003</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/project001</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/organic-healthy-without-pesticide-residues-fruit-fiber-organic-super-freeze-dried-organic-pure-water-fruit-powder-organic-orange-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/mushroom-extracts/organic-organic-chaga-mushroom-extract</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/algae-extract/test001</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/mushroom-extracts/organic-oyster-mushroom-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/vegetable-powders</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/algae-extract/organic-cbd-full-spectrum-pure-thc-free-high-quality-no-pesticide-residue-no-heavy-metal-residue-cbd-distillated-oil-refined-oil</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/mushroom-extracts/organic-chaga-mushroom-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/test006</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/mushroom-extracts/organic-organic-lions-mane-mushroom-extract</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/news/test-news</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/ratio-extract/organic-ashwagandha-extract</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/organic-organic-pure-quality-best-price-organic-supply-fruit-grade-powder-cranberry-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/mushroom-extracts</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/ratio-extract/organic-tribulus-terrestris-extract</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/algae-extract/test004</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/algae-extract/test002</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/about</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/contact</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/vegetable-powders/organic-best-price-organic-supply-vegetable-grade-powder-100pure-green-vegetable-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/page001</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/test1</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/mushroom-extracts/organic-snow-mushroom-extract</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/organic-fruit-fiber-organic-super-powder-organic-pure-quality-freeze-dried-extract-blueberry-powder</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://192.168.2.200:3001/products/fruit-powders/organic-organic-powder-extract-supply-food-grade-freeze-dried-pomegranate-extract-powder</loc>
<loc>http://192.168.2.200:3001/use-cases/ce-shi-biao-ti-9</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>

View File

@ -3,6 +3,7 @@ import fs from 'fs';
import path from 'path';
const JINGROW_SERVER_URL = process.env.JINGROW_SERVER_URL;
const JINGROW_SITE_NAME = process.env.JINGROW_SITE_NAME;
const PUBLIC_FILES_DIR = path.join(process.cwd(), 'public/files');
if (!fs.existsSync(PUBLIC_FILES_DIR)) {
@ -120,7 +121,7 @@ export async function getPageData({
throw new Error('slug_list must be an array');
}
const params = { slug_list: JSON.stringify(slug_list), page };
const params = { slug_list: JSON.stringify(slug_list), page, site_name: JINGROW_SITE_NAME };
if (page_size) params.page_size = page_size;
const response = await axios.get(
@ -158,7 +159,8 @@ export async function getPageData({
export async function getAllSlugs() {
try {
const response = await axios.get(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_all_slugs`
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_all_slugs`,
{ params: { site_name: JINGROW_SITE_NAME } }
);
const slugs = response.data.message?.data;
if (!Array.isArray(slugs)) {
@ -188,7 +190,7 @@ export async function fetchComponentData(componentName) {
const res = await axios.get(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_component_data`,
{
params: { component_name: componentName },
params: { component_name: componentName, site_name: JINGROW_SITE_NAME },
}
);
return { data: res.data.message?.data || null };
@ -209,7 +211,7 @@ export async function fetchComponentData(componentName) {
export async function fetchListViewData({ pagetype, category, count }) {
try {
const params = { pagetype };
const params = { pagetype, site_name: JINGROW_SITE_NAME };
if (category) params.category = category;
if (count !== undefined && count !== null) params.count = String(count);
@ -235,7 +237,7 @@ export async function fetchCategoryData({ pagetype, name }) {
try {
const res = await axios.get(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_category`,
{ params: { pagetype, name } }
{ params: { pagetype, name, site_name: JINGROW_SITE_NAME } }
);
return { data: res.data.message?.data || null };
} catch (error) {
@ -254,7 +256,8 @@ export async function fetchCategoryData({ pagetype, name }) {
export async function getMenuData() {
try {
const response = await axios.get(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_menu`
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_menu`,
{ params: { site_name: JINGROW_SITE_NAME } }
);
const items = response.data.message?.data || [];
// 递归组装菜单树
@ -286,7 +289,7 @@ export async function getSiteSettings() {
try {
const res = await axios.get(
`${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_site_settings`,
{ headers: get_jingrow_api_headers() }
{ headers: get_jingrow_api_headers(), params: { site_name: JINGROW_SITE_NAME } }
);
return res.data?.message?.data || {
site_name: "Jsite"

View File

@ -1,23 +0,0 @@
export async function getSiteSettings() {
const JINGROW_SERVER_URL = process.env.JINGROW_SERVER_URL;
const apiKey = process.env.JINGROW_API_KEY;
const apiSecret = process.env.JINGROW_API_SECRET;
const url = `${JINGROW_SERVER_URL}/api/action/jsite.api.v1.get_site_settings`;
try {
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 3000);
const res = await fetch(url, {
signal: controller.signal,
headers: {
'Authorization': `token ${apiKey}:${apiSecret}`,
'Content-Type': 'application/json'
}
});
clearTimeout(timeout);
const json = await res.json();
return json.message?.data || {};
} catch (e) {
return { site_name: "Jsite", mobile: "", tel: "", email: "" };
}
}