@gt6/sdk 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +124 -1
- package/dist/core/types.d.ts +25 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/gt6-sdk.cjs.js +46 -1
- package/dist/gt6-sdk.cjs.js.map +1 -1
- package/dist/gt6-sdk.esm.js +46 -2
- package/dist/gt6-sdk.esm.js.map +1 -1
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/modules/settings.d.ts +17 -0
- package/dist/modules/settings.d.ts.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
@@ -125,6 +125,110 @@ console.log(`草稿: ${stats.draft}`);
|
|
125
125
|
const recommended = await sdk.articles.getRecommendedArticles(921546067, 5);
|
126
126
|
```
|
127
127
|
|
128
|
+
### 全局参数设置获取
|
129
|
+
|
130
|
+
SDK提供了全局参数设置获取功能,可以从指定的URL获取平台配置参数。
|
131
|
+
|
132
|
+
#### 获取所有设置
|
133
|
+
|
134
|
+
```typescript
|
135
|
+
// 获取所有全局设置
|
136
|
+
const allSettings = await sdk.getSettings();
|
137
|
+
console.log('所有设置:', allSettings);
|
138
|
+
|
139
|
+
// 设置包含各种配置参数,如:
|
140
|
+
// - product_tag01: 产品标签配置
|
141
|
+
// - article_tag01: 文章标签配置
|
142
|
+
// - platform_config: 平台配置
|
143
|
+
// - payment_settings: 支付设置
|
144
|
+
// - shipping_settings: 运费设置
|
145
|
+
```
|
146
|
+
|
147
|
+
#### 获取单个设置
|
148
|
+
|
149
|
+
```typescript
|
150
|
+
// 获取特定的设置项
|
151
|
+
const productTagSetting = await sdk.getSetting('product_tag01');
|
152
|
+
console.log('产品标签设置:', productTagSetting);
|
153
|
+
|
154
|
+
const articleTagSetting = await sdk.getSetting('article_tag01');
|
155
|
+
console.log('文章标签设置:', articleTagSetting);
|
156
|
+
|
157
|
+
const platformConfig = await sdk.getSetting('platform_config');
|
158
|
+
console.log('平台配置:', platformConfig);
|
159
|
+
```
|
160
|
+
|
161
|
+
#### 在Astro项目中使用
|
162
|
+
|
163
|
+
```typescript
|
164
|
+
// Layout.astro
|
165
|
+
---
|
166
|
+
import { GT6SDK } from '@gt6/sdk';
|
167
|
+
|
168
|
+
const sdk = new GT6SDK({
|
169
|
+
baseUrl: 'https://data.shopasb.io',
|
170
|
+
platformId: '1747558688',
|
171
|
+
rootCategoryId: '969287034',
|
172
|
+
tagAlias: '002',
|
173
|
+
productRootCategoryId: '277233',
|
174
|
+
productTagAlias: '01'
|
175
|
+
});
|
176
|
+
|
177
|
+
// 获取全局设置
|
178
|
+
const settings = await sdk.getSettings();
|
179
|
+
const productTagSetting = await sdk.getSetting('product_tag01');
|
180
|
+
---
|
181
|
+
|
182
|
+
<html>
|
183
|
+
<head>
|
184
|
+
<title>GT6TRADE</title>
|
185
|
+
<!-- 使用设置中的配置 -->
|
186
|
+
<meta name="product-tag" content={productTagSetting?.value || '01'}>
|
187
|
+
</head>
|
188
|
+
<body>
|
189
|
+
<slot />
|
190
|
+
</body>
|
191
|
+
</html>
|
192
|
+
```
|
193
|
+
|
194
|
+
#### 错误处理
|
195
|
+
|
196
|
+
```typescript
|
197
|
+
try {
|
198
|
+
const settings = await sdk.getSettings();
|
199
|
+
console.log('设置获取成功:', settings);
|
200
|
+
} catch (error) {
|
201
|
+
console.error('获取设置失败:', error);
|
202
|
+
// 使用默认配置
|
203
|
+
const defaultSettings = {
|
204
|
+
product_tag01: { value: '01' },
|
205
|
+
article_tag01: { value: '002' }
|
206
|
+
};
|
207
|
+
}
|
208
|
+
```
|
209
|
+
|
210
|
+
#### 缓存机制
|
211
|
+
|
212
|
+
全局设置也支持缓存机制,默认缓存5分钟:
|
213
|
+
|
214
|
+
```typescript
|
215
|
+
const sdk = new GT6SDK({
|
216
|
+
baseUrl: 'https://data.shopasb.io',
|
217
|
+
platformId: '1747558688',
|
218
|
+
cache: {
|
219
|
+
enabled: true,
|
220
|
+
ttl: 300000 // 5分钟
|
221
|
+
}
|
222
|
+
});
|
223
|
+
|
224
|
+
// 设置会被缓存,提高性能
|
225
|
+
const settings = await sdk.getSettings(); // 第一次请求
|
226
|
+
const settings2 = await sdk.getSettings(); // 从缓存获取
|
227
|
+
|
228
|
+
// 清除缓存
|
229
|
+
sdk.clearCache();
|
230
|
+
```
|
231
|
+
|
128
232
|
### 在Astro项目中使用
|
129
233
|
|
130
234
|
```typescript
|
@@ -198,6 +302,8 @@ new GT6SDK(config: GT6Config)
|
|
198
302
|
- `getArticlesByTag(tagId: number | number[], options?: ArticlesByTagOptions): Promise<{ articles: Article[]; total: number; page: number; limit: number }>`
|
199
303
|
- `getCategoryPath(categoryId: number): Promise<{ path: Category[]; currentCategory: Category | null; breadcrumbs: Array<{ categoryId: number; categoryName: string; level: number }> }>`
|
200
304
|
- `getSubCategories(categoryId: number, options?: { recursive?: boolean; includeCurrent?: boolean; maxDepth?: number }): Promise<{ subCategories: Category[]; currentCategory: Category | null; total: number; depth: number }>`
|
305
|
+
- `getSettings(): Promise<SettingsResponse>` - 获取所有全局设置
|
306
|
+
- `getSetting(key: string): Promise<SingleSetting | null>` - 获取单个设置项
|
201
307
|
|
202
308
|
#### 缓存管理
|
203
309
|
|
@@ -716,6 +822,23 @@ interface ProductsByTagOptions {
|
|
716
822
|
}
|
717
823
|
```
|
718
824
|
|
825
|
+
### 全局设置类型
|
826
|
+
|
827
|
+
```typescript
|
828
|
+
// 单个设置项的结构
|
829
|
+
interface SingleSetting {
|
830
|
+
key: string;
|
831
|
+
value: string;
|
832
|
+
description?: string;
|
833
|
+
updatedAt: string;
|
834
|
+
}
|
835
|
+
|
836
|
+
// 所有设置的响应结构
|
837
|
+
interface SettingsResponse {
|
838
|
+
[key: string]: SingleSetting;
|
839
|
+
}
|
840
|
+
```
|
841
|
+
|
719
842
|
## 错误处理
|
720
843
|
|
721
844
|
SDK使用自定义的 `GT6Error` 类来处理错误:
|
@@ -1139,4 +1262,4 @@ if (financeProduct.simpleFinance) {
|
|
1139
1262
|
console.log(` 总收益: ${totalReturn.toFixed(2)} ${financeProduct.simpleFinance.minInvestmentUnit}`);
|
1140
1263
|
console.log(` 到期金额: ${(investmentAmount + totalReturn).toFixed(2)} ${financeProduct.simpleFinance.minInvestmentUnit}`);
|
1141
1264
|
}
|
1142
|
-
```
|
1265
|
+
```
|
package/dist/core/types.d.ts
CHANGED
@@ -6,6 +6,7 @@ export interface GT6Config {
|
|
6
6
|
tagAlias?: string;
|
7
7
|
productRootCategoryId?: string | number;
|
8
8
|
productTagAlias?: string;
|
9
|
+
settingAlias?: string;
|
9
10
|
version?: string;
|
10
11
|
timeout?: number;
|
11
12
|
cache?: {
|
@@ -473,4 +474,28 @@ export interface RegionResponse {
|
|
473
474
|
regions: Region[];
|
474
475
|
generatedAt: string;
|
475
476
|
}
|
477
|
+
export interface Setting {
|
478
|
+
key: string;
|
479
|
+
value: string | number | object;
|
480
|
+
type: 'text' | 'number' | 'json' | 'html' | 'image';
|
481
|
+
label: string;
|
482
|
+
description: string;
|
483
|
+
isSystem: boolean;
|
484
|
+
sortOrder: number;
|
485
|
+
aliases: string;
|
486
|
+
}
|
487
|
+
export interface SettingsResponse {
|
488
|
+
platformId: number;
|
489
|
+
aliases: string;
|
490
|
+
settings: Setting[];
|
491
|
+
generatedAt: string;
|
492
|
+
}
|
493
|
+
export interface SettingResponse {
|
494
|
+
platformId: number;
|
495
|
+
setting: Setting;
|
496
|
+
generatedAt: string;
|
497
|
+
}
|
498
|
+
export interface SettingsOptions {
|
499
|
+
settingAlias?: string;
|
500
|
+
}
|
476
501
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/core/types.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/dist/gt6-sdk.cjs.js
CHANGED
@@ -658,15 +658,47 @@ class ProductsAPI {
|
|
658
658
|
}
|
659
659
|
}
|
660
660
|
|
661
|
+
class SettingsAPI {
|
662
|
+
constructor(client) {
|
663
|
+
this.client = client;
|
664
|
+
}
|
665
|
+
/**
|
666
|
+
* 获取全局设置列表
|
667
|
+
* 根据平台ID和别名获取所有全局设置
|
668
|
+
*/
|
669
|
+
async getSettings(settingAlias) {
|
670
|
+
const config = this.client.getConfig();
|
671
|
+
const alias = settingAlias || config.settingAlias || '01';
|
672
|
+
const response = await this.client.request(`/settings/platform-${config.platformId}-${alias}.json`);
|
673
|
+
return response.settings;
|
674
|
+
}
|
675
|
+
/**
|
676
|
+
* 获取指定设置
|
677
|
+
* 根据设置key直接获取单个设置
|
678
|
+
*/
|
679
|
+
async getSetting(key) {
|
680
|
+
const config = this.client.getConfig();
|
681
|
+
try {
|
682
|
+
const response = await this.client.request(`/settings/platform-${config.platformId}-${key}.json`);
|
683
|
+
return response.setting;
|
684
|
+
}
|
685
|
+
catch (error) {
|
686
|
+
console.warn(`Failed to fetch setting ${key}:`, error);
|
687
|
+
return null;
|
688
|
+
}
|
689
|
+
}
|
690
|
+
}
|
691
|
+
|
661
692
|
/**
|
662
693
|
* GT6 SDK 主类
|
663
|
-
*
|
694
|
+
* 提供文章、产品和设置管理相关的所有功能
|
664
695
|
*/
|
665
696
|
class GT6SDK {
|
666
697
|
constructor(config) {
|
667
698
|
const client = new GT6Client(config);
|
668
699
|
this.articles = new ArticlesAPI(client);
|
669
700
|
this.products = new ProductsAPI(client);
|
701
|
+
this.settings = new SettingsAPI(client);
|
670
702
|
}
|
671
703
|
/**
|
672
704
|
* 获取客户端实例(用于高级用法)
|
@@ -788,6 +820,18 @@ class GT6SDK {
|
|
788
820
|
async getRegions() {
|
789
821
|
return this.products.getRegions();
|
790
822
|
}
|
823
|
+
/**
|
824
|
+
* 18. 便捷方法:获取全局设置列表
|
825
|
+
*/
|
826
|
+
async getSettings(settingAlias) {
|
827
|
+
return this.settings.getSettings(settingAlias);
|
828
|
+
}
|
829
|
+
/**
|
830
|
+
* 19. 便捷方法:获取指定设置
|
831
|
+
*/
|
832
|
+
async getSetting(key) {
|
833
|
+
return this.settings.getSetting(key);
|
834
|
+
}
|
791
835
|
}
|
792
836
|
|
793
837
|
exports.ArticlesAPI = ArticlesAPI;
|
@@ -795,5 +839,6 @@ exports.GT6Client = GT6Client;
|
|
795
839
|
exports.GT6Error = GT6Error;
|
796
840
|
exports.GT6SDK = GT6SDK;
|
797
841
|
exports.ProductsAPI = ProductsAPI;
|
842
|
+
exports.SettingsAPI = SettingsAPI;
|
798
843
|
exports.default = GT6SDK;
|
799
844
|
//# sourceMappingURL=gt6-sdk.cjs.js.map
|
package/dist/gt6-sdk.cjs.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"gt6-sdk.cjs.js","sources":["../src/core/types.ts","../src/core/client.ts","../src/modules/articles.ts","../src/modules/products.ts","../src/index.ts"],"sourcesContent":["// 基础配置类型\nexport interface GT6Config {\n baseUrl: string;\n apiKey?: string;\n platformId: string | number;\n rootCategoryId?: string | number;\n tagAlias?: string;\n // 产品专用配置字段\n productRootCategoryId?: string | number;\n productTagAlias?: string;\n version?: string;\n timeout?: number;\n cache?: {\n enabled: boolean;\n ttl: number; // 缓存时间(毫秒)\n };\n}\n\n// 分类相关类型\nexport interface Category {\n categoryId: number;\n categoryName: string;\n categoryDescription: string;\n metaKeywords: string;\n status: number;\n parentId: number;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n articleIds: number[];\n children: Category[];\n}\n\nexport interface CategoryResponse {\n platformId: number;\n categories: Category[];\n generatedAt: string;\n}\n\n// 产品分类相关类型\nexport interface ProductCategory {\n categoryId: number;\n categoryName: string;\n categoryDescription: string;\n metaKeywords: string;\n status: number;\n parentId: number;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n productIds: number[];\n children: ProductCategory[];\n}\n\nexport interface ProductCategoryResponse {\n platformId: number;\n categories: ProductCategory[];\n generatedAt: string;\n}\n\n// 标签相关类型\nexport interface Tag {\n tagId: number;\n tagName: string;\n type: number;\n platformId: number;\n aliases: string;\n createdAt: any;\n articleIds: number[];\n}\n\nexport interface TagResponse {\n platformId: number;\n tags: Tag[];\n generatedAt: string;\n}\n\n// 产品标签相关类型\nexport interface ProductTag {\n tagId: number;\n tagName: string;\n type: number;\n platformId: number;\n aliases: string;\n createdAt: any;\n productIds: number[];\n}\n\nexport interface ProductTagResponse {\n platformId: number;\n tags: ProductTag[];\n generatedAt: string;\n}\n\n// 文章元数据类型\nexport interface ArticleMetaData {\n metaId: number;\n articleId: number;\n metaKey: string;\n metaValue: string;\n type: number;\n templateId: number;\n groupId: number;\n sortOrder: number;\n aiId: number;\n fieldId: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 文章图片类型\nexport interface ArticleImage {\n imageId: number;\n articleId: number;\n metaId: number | null;\n imageUrl: string;\n imageType: 'cover' | 'content';\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 文章类型\nexport interface Article {\n articleId: number;\n title: string;\n content: string;\n status: 'published' | 'draft' | 'archived';\n publishedAt: string;\n templateId: number;\n aiId: number;\n platformId: number;\n isVisible: boolean;\n displayTemplate: string;\n createdAt: any;\n updatedAt: any;\n categories: Category[];\n tags: Tag[];\n metaData: ArticleMetaData[];\n images: ArticleImage[];\n generatedAt: string;\n}\n\n// 产品详情类型\nexport interface ProductDetail {\n detailId: number;\n productId: number;\n detailKey: string;\n detailValue: string;\n extraInfo: string;\n}\n\n// 产品选项值类型\nexport interface ProductOptionValue {\n valueId: number;\n optionId: number;\n value: string;\n description: string;\n priceAdjustment: string;\n createdAt: any;\n updatedAt: any;\n}\n\n// 产品选项类型\nexport interface ProductOption {\n optionId: number;\n productId: number;\n optionName: string;\n createdAt: any;\n updatedAt: any;\n values: ProductOptionValue[];\n}\n\n// 产品变体类型\nexport interface ProductVariant {\n variantId: number;\n productId: number;\n sku: string;\n price: string;\n stock: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 产品图片类型\nexport interface ProductImage {\n imageId: number;\n productId: number;\n productDetailId: number | null;\n optionValueId: number | null;\n imageUrl: string;\n imageType: 'gallery' | 'thumbnail' | 'detail';\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 地区类型\nexport interface Region {\n regionId: number;\n platformId: number;\n regionCode: string;\n regionName: string;\n regionLevel: string;\n parentId: number;\n children?: Region[];\n}\n\n// 运费规则类型\nexport interface ShippingRule {\n ruleId: number;\n templateId: number;\n regionId: number;\n firstUnit: string;\n firstFee: string;\n additionalUnit: string;\n additionalFee: string;\n conditionType: string;\n conditionValue: string | null;\n createTime: any;\n updateTime: any;\n}\n\n// 运费模板类型\nexport interface ShippingTemplate {\n templateId: number;\n platformId: number;\n templateName: string;\n defaultFee: string;\n freeShippingLimit: string;\n createTime: any;\n updateTime: any;\n rules: ShippingRule[];\n}\n\n// 运费响应类型\nexport interface ShippingResponse {\n platformId: number;\n templates: ShippingTemplate[];\n generatedAt: string;\n}\n\n// 税费规则类型\nexport interface TaxRule {\n ruleId: number;\n templateId: number;\n regionId: number;\n taxRate: string;\n createTime: any;\n updateTime: any;\n}\n\n// 税费模板类型\nexport interface TaxTemplate {\n templateId: number;\n platformId: number;\n templateName: string;\n defaultTaxRate: string;\n createTime: any;\n updateTime: any;\n rules: TaxRule[];\n}\n\n// 税费响应类型\nexport interface TaxResponse {\n platformId: number;\n templates: TaxTemplate[];\n generatedAt: string;\n}\n\n// 订阅类型\nexport interface Subscription {\n subscriptionId: number;\n productId: number;\n billingCycle: number;\n billingCycleUnit: string;\n billingCycleCount: number;\n setupFee: string;\n trialDays: number;\n trialPrice: string;\n renewalDiscount: string;\n autoRenew: boolean;\n allowCancel: boolean;\n cancelPolicy: string;\n refundPolicy: string;\n maxCycles: number;\n gracePeriod: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 批发类型\nexport interface Wholesale {\n wholesaleId: number;\n productId: number;\n minOrderQuantity: number;\n maxOrderQuantity: number;\n allowMixedVariants: boolean;\n showRetailPrice: boolean;\n wholesaleDescription: string;\n paymentTerms: string;\n shippingTerms: string;\n}\n\n// 价格层级类型\nexport interface PriceTier {\n tierId: number;\n wholesaleId: number;\n userLevel: number | null;\n minQuantity: number;\n maxQuantity: number;\n priceType: number;\n priceValue: string;\n sortOrder: number;\n}\n\n// 变体价格类型\nexport interface VariantPrice {\n id: number;\n wholesaleId: number;\n tierId: number;\n variantId: number;\n priceType: number;\n priceValue: string;\n}\n\n// 众筹类型\nexport interface Crowdfunding {\n crowdfundingId: number;\n productId: number;\n targetAmount: string;\n currentAmount: string;\n supporterCount: number;\n startTime: any;\n endTime: any;\n status: number;\n minSupportAmount: string;\n allowOverFunding: boolean;\n overFundingLimit: string;\n createdAt: any;\n updatedAt: any;\n}\n\n// 众筹奖励类型\nexport interface Reward {\n rewardId: number;\n crowdfundingId: number;\n variantId: number;\n rewardName: string;\n rewardDescription: string;\n rewardAmount: string;\n rewardLimit: number;\n rewardClaimed: number;\n shippingRequired: boolean;\n estimatedDeliveryTime: any;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 众筹更新类型\nexport interface CrowdfundingUpdate {\n updateId: number;\n crowdfundingId: number;\n updateTitle: string;\n updateContent: string;\n isPublic: boolean;\n updateTime: any;\n}\n\n// 众筹FAQ类型\nexport interface CrowdfundingFAQ {\n faqId: number;\n crowdfundingId: number;\n question: string;\n answer: string;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 简单理财类型\nexport interface SimpleFinance {\n simpleFinanceId: number;\n productId: number;\n calculationPeriod: number;\n calculationPeriodUnit: string;\n interestRate: string;\n minInvestment: string;\n maxInvestment: string;\n minInvestmentUnit: string;\n maxInvestmentUnit: string;\n investmentPeriod: number;\n investmentPeriodUnit: string;\n}\n\n// 产品类型\nexport interface Product {\n productId: number;\n productName: string;\n description: string;\n metaKeywords: string;\n price: string;\n priceChangePercent: string;\n status: number;\n productType: number;\n native: number;\n shared: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n oldProductId: number | null;\n details: ProductDetail[];\n options: ProductOption[];\n variants: ProductVariant[];\n images: ProductImage[];\n categories: ProductCategory[];\n tags: ProductTag[];\n regions: Region[];\n shippingTemplates: ShippingTemplate[];\n taxTemplates: TaxTemplate[];\n subscription?: Subscription; // 当productType为2时存在\n wholesale?: Wholesale; // 当productType为3时存在\n priceTiers?: PriceTier[]; // 当productType为3时存在\n variantPrices?: VariantPrice[]; // 当productType为3时存在\n crowdfunding?: Crowdfunding; // 当productType为4时存在\n rewards?: Reward[]; // 当productType为4时存在\n updates?: CrowdfundingUpdate[]; // 当productType为4时存在\n faqs?: CrowdfundingFAQ[]; // 当productType为4时存在\n simpleFinance?: SimpleFinance; // 当productType为5时存在\n generatedAt: string;\n}\n\n// 文章列表项类型(简化版)\nexport interface ArticleListItem {\n articleId: number;\n title: string;\n status: string;\n publishedAt: string;\n categories: Category[];\n tags: Tag[];\n coverImage?: string;\n}\n\n// 产品列表项类型(简化版)\nexport interface ProductListItem {\n productId: number;\n productName: string;\n price: string;\n status: number;\n categories: ProductCategory[];\n tags: ProductTag[];\n coverImage?: string;\n}\n\n// 错误类型\nexport class GT6Error extends Error {\n constructor(\n message: string,\n public statusCode?: number\n ) {\n super(message);\n this.name = 'GT6Error';\n }\n}\n\n// 查询参数类型\nexport interface ArticleQueryParams {\n categoryId?: number;\n tagId?: number;\n status?: string;\n limit?: number;\n offset?: number;\n sortBy?: 'publishedAt' | 'title' | 'sortOrder';\n sortOrder?: 'asc' | 'desc';\n}\n\n// 产品查询参数类型\nexport interface ProductQueryParams {\n categoryId?: number;\n tagId?: number;\n status?: number;\n limit?: number;\n offset?: number;\n sortBy?: 'price' | 'productName' | 'sortOrder';\n sortOrder?: 'asc' | 'desc';\n}\n\n// 根据标签获取文章的选项类型\nexport interface ArticlesByTagOptions {\n page?: number;\n limit?: number;\n status?: 'published' | 'draft' | 'archived';\n tagAlias?: string;\n}\n\n// 根据分类获取文章的选项类型\nexport interface ArticlesByCategoryOptions {\n page?: number;\n limit?: number;\n status?: 'published' | 'draft' | 'archived';\n}\n\n// 根据标签获取产品的选项类型\nexport interface ProductsByTagOptions {\n page?: number;\n limit?: number;\n status?: number;\n productTagAlias?: string;\n}\n\n// 根据分类获取产品的选项类型\nexport interface ProductsByCategoryOptions {\n page?: number;\n limit?: number;\n status?: number;\n}\n\n// 文章统计类型\nexport interface ArticleStats {\n total: number;\n published: number;\n draft: number;\n archived: number;\n byCategory: Record<number, number>;\n byTag: Record<number, number>;\n}\n\n// 产品统计类型\nexport interface ProductStats {\n total: number;\n active: number;\n inactive: number;\n byCategory: Record<number, number>;\n byTag: Record<number, number>;\n}\n\nexport interface GT6Response<T> {\n success: boolean;\n data: T;\n error?: string;\n}\n\nexport interface ArticleResponse {\n article: Article;\n}\n\nexport interface ProductResponse {\n product: Product;\n}\n\nexport interface CategoryResponse {\n categories: Category[];\n}\n\nexport interface ProductCategoryResponse {\n categories: ProductCategory[];\n}\n\nexport interface TagResponse {\n tags: Tag[];\n}\n\nexport interface ProductTagResponse {\n tags: ProductTag[];\n}\n\n// 区域响应类型\nexport interface RegionResponse {\n platformId: number;\n regions: Region[];\n generatedAt: string;\n} ","import { GT6Config, GT6Error } from './types';\r\n\r\nexport class GT6Client {\r\n private config: GT6Config;\r\n private cache: Map<string, { data: any; timestamp: number }>;\r\n\r\n constructor(config: GT6Config) {\r\n this.config = {\r\n timeout: 10000,\r\n cache: {\r\n enabled: true,\r\n ttl: 300000 // 5分钟默认缓存\r\n },\r\n ...config\r\n };\r\n this.cache = new Map();\r\n }\r\n\r\n /**\r\n * 发起HTTP请求\r\n */\r\n async request<T>(endpoint: string, options: RequestInit = {}): Promise<T> {\r\n const url = `${this.config.baseUrl}${endpoint}`;\r\n const cacheKey = `${options.method || 'GET'}:${url}`;\r\n\r\n // 检查缓存(只对GET请求缓存)\r\n if (this.config.cache?.enabled && options.method !== 'POST' && options.method !== 'PUT' && options.method !== 'DELETE') {\r\n const cached = this.cache.get(cacheKey);\r\n if (cached && Date.now() - cached.timestamp < this.config.cache.ttl) {\r\n return cached.data;\r\n }\r\n }\r\n\r\n try {\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\r\n\r\n const response = await fetch(url, {\r\n ...options,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...options.headers,\r\n },\r\n signal: controller.signal\r\n });\r\n\r\n clearTimeout(timeoutId);\r\n\r\n if (!response.ok) {\r\n throw new GT6Error(\r\n `HTTP ${response.status}: ${response.statusText}`,\r\n response.status\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n // 更新缓存(只对GET请求缓存)\r\n if (this.config.cache?.enabled && options.method !== 'POST' && options.method !== 'PUT' && options.method !== 'DELETE') {\r\n this.cache.set(cacheKey, { data, timestamp: Date.now() });\r\n }\r\n\r\n return data;\r\n } catch (error: any) {\r\n if (error instanceof GT6Error) {\r\n throw error;\r\n }\r\n \r\n if (error.name === 'AbortError') {\r\n throw new GT6Error('Request timeout', 408);\r\n }\r\n \r\n throw new GT6Error(`Network error: ${error.message}`);\r\n }\r\n }\r\n\r\n /**\r\n * 获取配置\r\n */\r\n getConfig(): GT6Config {\r\n return { ...this.config };\r\n }\r\n\r\n /**\r\n * 清除缓存\r\n */\r\n clearCache(): void {\r\n this.cache.clear();\r\n }\r\n\r\n /**\r\n * 获取缓存统计\r\n */\r\n getCacheStats(): { size: number; entries: Array<{ key: string; age: number }> } {\r\n const entries = Array.from(this.cache.entries()).map(([key, value]) => ({\r\n key,\r\n age: Date.now() - value.timestamp\r\n }));\r\n\r\n return {\r\n size: this.cache.size,\r\n entries\r\n };\r\n }\r\n} ","import { GT6Client } from '../core/client';\r\nimport {\r\n Article,\r\n Category,\r\n Tag,\r\n CategoryResponse,\r\n TagResponse,\r\n ArticlesByTagOptions,\r\n ArticlesByCategoryOptions\r\n} from '../core/types';\r\n\r\nexport class ArticlesAPI {\r\n constructor(private client: GT6Client) {}\r\n\r\n /**\r\n * 1. 根据文章ID获取文章详情\r\n */\r\n async getArticle(articleId: number | string): Promise<Article> {\r\n return this.client.request<Article>(`/articles/${articleId}.json`);\r\n }\r\n\r\n /**\r\n * 2. 获取文章分类列表\r\n */\r\n async getCategories(rootCategoryId?: number | string): Promise<Category[]> {\r\n const config = this.client.getConfig();\r\n const categoryId = rootCategoryId || config.rootCategoryId || '671920';\r\n \r\n const response = await this.client.request<CategoryResponse>(\r\n `/article-categories/platform-${config.platformId}-root-${categoryId}.json`\r\n );\r\n \r\n return response.categories;\r\n }\r\n\r\n /**\r\n * 3. 获取文章标签列表\r\n */\r\n async getTags(tagAlias?: string): Promise<Tag[]> {\r\n const config = this.client.getConfig();\r\n const alias = tagAlias || config.tagAlias || '001';\r\n \r\n const response = await this.client.request<TagResponse>(\r\n `/article-tags/platform-${config.platformId}-${alias}.json`\r\n );\r\n \r\n return response.tags;\r\n }\r\n\r\n /**\r\n * 4. 根据分类ID获取文章列表\r\n * 支持单个分类ID或分类ID数组\r\n */\r\n async getArticlesByCategory(categoryId: number | number[], options?: ArticlesByCategoryOptions): Promise<{\r\n articles: Article[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 将单个分类ID转换为数组\r\n const categoryIds = Array.isArray(categoryId) ? categoryId : [categoryId];\r\n \r\n // 收集所有指定分类下的文章ID\r\n const allArticleIds: number[] = [];\r\n \r\n categoryIds.forEach(id => {\r\n const targetCategory = categories.find(cat => cat.categoryId === id);\r\n if (targetCategory) {\r\n allArticleIds.push(...targetCategory.articleIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueArticleIds = [...new Set(allArticleIds)];\r\n \r\n if (uniqueArticleIds.length === 0) {\r\n return {\r\n articles: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedArticleIds = uniqueArticleIds.slice(offset, offset + limit);\r\n \r\n // 获取文章详情\r\n const articles = await Promise.all(\r\n paginatedArticleIds.map(articleId => this.getArticle(articleId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredArticles = articles;\r\n if (options?.status) {\r\n filteredArticles = articles.filter(article => article.status === options.status);\r\n }\r\n \r\n return {\r\n articles: filteredArticles,\r\n total: uniqueArticleIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 5. 根据标签ID获取文章列表\r\n * 支持单个标签ID或标签ID数组\r\n */\r\n async getArticlesByTag(tagId: number | number[], options?: ArticlesByTagOptions): Promise<{\r\n articles: Article[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取标签数据,传递tagAlias参数\r\n const tags = await this.getTags(options?.tagAlias);\r\n \r\n // 将单个标签ID转换为数组\r\n const tagIds = Array.isArray(tagId) ? tagId : [tagId];\r\n \r\n // 收集所有指定标签下的文章ID\r\n const allArticleIds: number[] = [];\r\n \r\n tagIds.forEach(id => {\r\n const targetTag = tags.find(tag => tag.tagId === id);\r\n if (targetTag) {\r\n allArticleIds.push(...targetTag.articleIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueArticleIds = [...new Set(allArticleIds)];\r\n \r\n if (uniqueArticleIds.length === 0) {\r\n return {\r\n articles: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedArticleIds = uniqueArticleIds.slice(offset, offset + limit);\r\n \r\n // 获取文章详情\r\n const articles = await Promise.all(\r\n paginatedArticleIds.map(articleId => this.getArticle(articleId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredArticles = articles;\r\n if (options?.status) {\r\n filteredArticles = articles.filter(article => article.status === options.status);\r\n }\r\n \r\n return {\r\n articles: filteredArticles,\r\n total: uniqueArticleIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 6. 根据分类ID获取该分类的层级路径\r\n * 用于前端面包屑导航\r\n */\r\n async getCategoryPath(categoryId: number): Promise<{\r\n path: Category[];\r\n currentCategory: Category | null;\r\n breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }>;\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 查找目标分类\r\n const targetCategory = categories.find(cat => cat.categoryId === categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n path: [],\r\n currentCategory: null,\r\n breadcrumbs: []\r\n };\r\n }\r\n \r\n // 构建分类路径\r\n const path: Category[] = [];\r\n const breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }> = [];\r\n \r\n // 递归查找父分类\r\n const buildPath = (currentCategory: Category, level: number = 0): void => {\r\n // 将当前分类添加到路径开头(因为我们要从根到叶子构建)\r\n path.unshift(currentCategory);\r\n breadcrumbs.unshift({\r\n categoryId: currentCategory.categoryId,\r\n categoryName: currentCategory.categoryName,\r\n level\r\n });\r\n \r\n // 如果有父分类,继续递归\r\n if (currentCategory.parentId && currentCategory.parentId !== 0) {\r\n const parentCategory = categories.find(cat => cat.categoryId === currentCategory.parentId);\r\n if (parentCategory) {\r\n buildPath(parentCategory, level + 1);\r\n }\r\n }\r\n };\r\n \r\n // 从目标分类开始构建路径\r\n buildPath(targetCategory);\r\n \r\n return {\r\n path,\r\n currentCategory: targetCategory,\r\n breadcrumbs\r\n };\r\n }\r\n\r\n /**\r\n * 7. 获取指定分类ID下的子分类\r\n * 支持递归获取所有层级的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean; // 是否递归获取所有层级的子分类\r\n includeCurrent?: boolean; // 是否包含当前分类\r\n maxDepth?: number; // 最大递归深度,默认不限制\r\n }): Promise<{\r\n subCategories: Category[];\r\n currentCategory: Category | null;\r\n total: number;\r\n depth: number; // 实际递归深度\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 查找目标分类\r\n const targetCategory = categories.find(cat => cat.categoryId === categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n subCategories: [],\r\n currentCategory: null,\r\n total: 0,\r\n depth: 0\r\n };\r\n }\r\n \r\n const subCategories: Category[] = [];\r\n let maxDepth = options?.maxDepth || Infinity;\r\n let actualDepth = 0;\r\n \r\n // 递归获取子分类的函数\r\n const collectSubCategories = (parentId: number, currentDepth: number = 0): void => {\r\n if (currentDepth >= maxDepth) {\r\n return;\r\n }\r\n \r\n // 查找直接子分类\r\n const children = categories.filter(cat => cat.parentId === parentId);\r\n \r\n children.forEach(child => {\r\n subCategories.push(child);\r\n \r\n // 如果需要递归且未达到最大深度,继续查找子分类\r\n if (options?.recursive && currentDepth < maxDepth - 1) {\r\n collectSubCategories(child.categoryId, currentDepth + 1);\r\n }\r\n });\r\n \r\n // 更新实际深度\r\n actualDepth = Math.max(actualDepth, currentDepth);\r\n };\r\n \r\n // 开始收集子分类\r\n collectSubCategories(categoryId);\r\n \r\n // 如果需要包含当前分类,添加到结果中\r\n if (options?.includeCurrent) {\r\n subCategories.unshift(targetCategory);\r\n }\r\n \r\n return {\r\n subCategories,\r\n currentCategory: targetCategory,\r\n total: subCategories.length,\r\n depth: actualDepth\r\n };\r\n }\r\n} ","import { GT6Client } from '../core/client';\r\nimport {\r\n Product,\r\n ProductCategory,\r\n ProductTag,\r\n ProductCategoryResponse,\r\n ProductTagResponse,\r\n ProductsByTagOptions,\r\n ProductsByCategoryOptions,\r\n TaxResponse,\r\n ShippingResponse,\r\n RegionResponse\r\n} from '../core/types';\r\n\r\nexport class ProductsAPI {\r\n constructor(private client: GT6Client) {}\r\n\r\n /**\r\n * 1. 根据产品ID获取产品详情\r\n */\r\n async getProduct(productId: number | string): Promise<Product> {\r\n const product = await this.client.request<Product>(`/products/${productId}.json`);\r\n \r\n // 检查产品是否有销售区域和税费模板\r\n if (product.regions && product.regions.length > 0 && \r\n product.taxTemplates && product.taxTemplates.length > 0) {\r\n try {\r\n // 获取税费信息\r\n const taxInfo = await this.getTaxInfo();\r\n \r\n // 为每个税费模板添加规则\r\n product.taxTemplates = product.taxTemplates.map(template => {\r\n const matchingTemplate = taxInfo.templates.find(t => t.templateId === template.templateId);\r\n if (matchingTemplate) {\r\n // 过滤出产品可销售区域的规则\r\n const productRegionIds = product.regions.map(r => r.regionId);\r\n const applicableRules = matchingTemplate.rules.filter(rule => \r\n productRegionIds.includes(rule.regionId)\r\n );\r\n \r\n return {\r\n ...template,\r\n rules: applicableRules\r\n };\r\n }\r\n return template;\r\n });\r\n } catch (error) {\r\n // 如果获取税费信息失败,不影响产品详情返回\r\n console.warn('Failed to fetch tax info:', error);\r\n }\r\n }\r\n \r\n // 检查产品是否有销售区域和运费模板\r\n if (product.regions && product.regions.length > 0 && \r\n product.shippingTemplates && product.shippingTemplates.length > 0) {\r\n try {\r\n // 获取运费信息\r\n const shippingInfo = await this.getShippingInfo();\r\n \r\n // 为每个运费模板添加规则\r\n product.shippingTemplates = product.shippingTemplates.map(template => {\r\n const matchingTemplate = shippingInfo.templates.find(t => t.templateId === template.templateId);\r\n if (matchingTemplate) {\r\n // 过滤出产品可销售区域的规则\r\n const productRegionIds = product.regions.map(r => r.regionId);\r\n const applicableRules = matchingTemplate.rules.filter(rule => \r\n productRegionIds.includes(rule.regionId)\r\n );\r\n \r\n return {\r\n ...template,\r\n rules: applicableRules\r\n };\r\n }\r\n return template;\r\n });\r\n } catch (error) {\r\n // 如果获取运费信息失败,不影响产品详情返回\r\n console.warn('Failed to fetch shipping info:', error);\r\n }\r\n }\r\n \r\n return product;\r\n }\r\n\r\n /**\r\n * 2. 获取产品分类列表\r\n */\r\n async getCategories(productRootCategoryId?: number | string): Promise<ProductCategory[]> {\r\n const config = this.client.getConfig();\r\n const categoryId = productRootCategoryId || config.productRootCategoryId || '277233';\r\n \r\n const response = await this.client.request<ProductCategoryResponse>(\r\n `/product-categories/platform-${config.platformId}-root-${categoryId}.json`\r\n );\r\n \r\n return response.categories;\r\n }\r\n\r\n /**\r\n * 3. 获取产品标签列表\r\n */\r\n async getTags(productTagAlias?: string): Promise<ProductTag[]> {\r\n const config = this.client.getConfig();\r\n const alias = productTagAlias || config.productTagAlias || '01';\r\n \r\n const response = await this.client.request<ProductTagResponse>(\r\n `/product-tags/platform-${config.platformId}-${alias}.json`\r\n );\r\n \r\n return response.tags;\r\n }\r\n\r\n /**\r\n * 4. 根据分类ID获取产品列表\r\n * 支持单个分类ID或分类ID数组\r\n */\r\n async getProductsByCategory(categoryId: number | number[], options?: ProductsByCategoryOptions): Promise<{\r\n products: Product[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 将单个分类ID转换为数组\r\n const categoryIds = Array.isArray(categoryId) ? categoryId : [categoryId];\r\n \r\n // 收集所有指定分类下的产品ID\r\n const allProductIds: number[] = [];\r\n \r\n categoryIds.forEach(id => {\r\n const targetCategory = findCategoryById(categories, id);\r\n if (targetCategory) {\r\n allProductIds.push(...targetCategory.productIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueProductIds = [...new Set(allProductIds)];\r\n \r\n if (uniqueProductIds.length === 0) {\r\n return {\r\n products: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedProductIds = uniqueProductIds.slice(offset, offset + limit);\r\n \r\n // 获取产品详情\r\n const products = await Promise.all(\r\n paginatedProductIds.map(productId => this.getProduct(productId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredProducts = products;\r\n if (options?.status !== undefined) {\r\n filteredProducts = products.filter(product => product.status === options.status);\r\n }\r\n \r\n return {\r\n products: filteredProducts,\r\n total: uniqueProductIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 5. 根据标签ID获取产品列表\r\n * 支持单个标签ID或标签ID数组\r\n */\r\n async getProductsByTag(tagId: number | number[], options?: ProductsByTagOptions): Promise<{\r\n products: Product[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取标签数据,传递productTagAlias参数\r\n const tags = await this.getTags(options?.productTagAlias);\r\n \r\n // 将单个标签ID转换为数组\r\n const tagIds = Array.isArray(tagId) ? tagId : [tagId];\r\n \r\n // 收集所有指定标签下的产品ID\r\n const allProductIds: number[] = [];\r\n \r\n tagIds.forEach(id => {\r\n const targetTag = tags.find(tag => tag.tagId === id);\r\n if (targetTag) {\r\n allProductIds.push(...targetTag.productIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueProductIds = [...new Set(allProductIds)];\r\n \r\n if (uniqueProductIds.length === 0) {\r\n return {\r\n products: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedProductIds = uniqueProductIds.slice(offset, offset + limit);\r\n \r\n // 获取产品详情\r\n const products = await Promise.all(\r\n paginatedProductIds.map(productId => this.getProduct(productId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredProducts = products;\r\n if (options?.status !== undefined) {\r\n filteredProducts = products.filter(product => product.status === options.status);\r\n }\r\n \r\n return {\r\n products: filteredProducts,\r\n total: uniqueProductIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 6. 根据分类ID获取该分类的层级路径\r\n * 用于前端面包屑导航\r\n */\r\n async getCategoryPath(categoryId: number): Promise<{\r\n path: ProductCategory[];\r\n currentCategory: ProductCategory | null;\r\n breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }>;\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找目标分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 查找目标分类(包括子分类)\r\n const targetCategory = findCategoryById(categories, categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n path: [],\r\n currentCategory: null,\r\n breadcrumbs: []\r\n };\r\n }\r\n \r\n // 构建分类路径\r\n const path: ProductCategory[] = [];\r\n const breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }> = [];\r\n \r\n // 递归查找父分类的函数\r\n const buildPath = (currentCategory: ProductCategory, level: number = 0): void => {\r\n // 将当前分类添加到路径开头(因为我们要从根到叶子构建)\r\n path.unshift(currentCategory);\r\n breadcrumbs.unshift({\r\n categoryId: currentCategory.categoryId,\r\n categoryName: currentCategory.categoryName,\r\n level\r\n });\r\n \r\n // 如果有父分类,继续递归\r\n if (currentCategory.parentId && currentCategory.parentId !== 0) {\r\n const parentCategory = findCategoryById(categories, currentCategory.parentId);\r\n if (parentCategory) {\r\n buildPath(parentCategory, level + 1);\r\n }\r\n }\r\n };\r\n \r\n // 从目标分类开始构建路径\r\n buildPath(targetCategory);\r\n \r\n return {\r\n path,\r\n currentCategory: targetCategory,\r\n breadcrumbs\r\n };\r\n }\r\n\r\n /**\r\n * 7. 获取指定分类ID下的子分类\r\n * 支持递归获取所有层级的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean; // 是否递归获取所有层级的子分类\r\n includeCurrent?: boolean; // 是否包含当前分类\r\n maxDepth?: number; // 最大递归深度,默认不限制\r\n }): Promise<{\r\n subCategories: ProductCategory[];\r\n currentCategory: ProductCategory | null;\r\n total: number;\r\n depth: number; // 实际递归深度\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 查找目标分类(包括子分类)\r\n const targetCategory = findCategoryById(categories, categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n subCategories: [],\r\n currentCategory: null,\r\n total: 0,\r\n depth: 0\r\n };\r\n }\r\n \r\n const subCategories: ProductCategory[] = [];\r\n let maxDepth = options?.maxDepth || Infinity;\r\n let actualDepth = 0;\r\n \r\n // 递归获取子分类的函数\r\n const collectSubCategories = (parentId: number, currentDepth: number = 0): void => {\r\n if (currentDepth >= maxDepth) {\r\n return;\r\n }\r\n \r\n // 递归查找直接子分类\r\n const findChildren = (cats: ProductCategory[], parentId: number): ProductCategory[] => {\r\n const children: ProductCategory[] = [];\r\n for (const cat of cats) {\r\n if (cat.parentId === parentId) {\r\n children.push(cat);\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n children.push(...findChildren(cat.children, parentId));\r\n }\r\n }\r\n return children;\r\n };\r\n \r\n const children = findChildren(categories, parentId);\r\n \r\n children.forEach(child => {\r\n subCategories.push(child);\r\n \r\n // 如果需要递归且未达到最大深度,继续查找子分类\r\n if (options?.recursive && currentDepth < maxDepth - 1) {\r\n collectSubCategories(child.categoryId, currentDepth + 1);\r\n }\r\n });\r\n \r\n // 更新实际深度\r\n actualDepth = Math.max(actualDepth, currentDepth);\r\n };\r\n \r\n // 开始收集子分类\r\n collectSubCategories(categoryId);\r\n \r\n // 如果需要包含当前分类,添加到结果中\r\n if (options?.includeCurrent) {\r\n subCategories.unshift(targetCategory);\r\n }\r\n \r\n return {\r\n subCategories,\r\n currentCategory: targetCategory,\r\n total: subCategories.length,\r\n depth: actualDepth\r\n };\r\n }\r\n\r\n /**\r\n * 8. 获取税费信息\r\n * 获取平台的所有税费模板和规则\r\n */\r\n async getTaxInfo(): Promise<TaxResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<TaxResponse>(`/tax/platform-${config.platformId}.json`);\r\n }\r\n\r\n /**\r\n * 9. 获取运费信息\r\n * 获取平台的所有运费模板和规则\r\n */\r\n async getShippingInfo(): Promise<ShippingResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<ShippingResponse>(`/shipping/platform-${config.platformId}.json`);\r\n }\r\n\r\n /**\r\n * 10. 获取区域信息\r\n * 获取平台的所有区域信息,包括层级结构\r\n */\r\n async getRegions(): Promise<RegionResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<RegionResponse>(`/regions/platform-${config.platformId}.json`);\r\n }\r\n} ","import { GT6Client } from './core/client';\r\nimport { ArticlesAPI } from './modules/articles';\r\nimport { ProductsAPI } from './modules/products';\r\nimport { \r\n GT6Config, \r\n ArticlesByCategoryOptions, \r\n ArticlesByTagOptions,\r\n ProductsByCategoryOptions,\r\n ProductsByTagOptions\r\n} from './core/types';\r\n\r\n/**\r\n * GT6 SDK 主类\r\n * 提供文章和产品管理相关的所有功能\r\n */\r\nexport class GT6SDK {\r\n public articles: ArticlesAPI;\r\n public products: ProductsAPI;\r\n\r\n constructor(config: GT6Config) {\r\n const client = new GT6Client(config);\r\n this.articles = new ArticlesAPI(client);\r\n this.products = new ProductsAPI(client);\r\n }\r\n\r\n /**\r\n * 获取客户端实例(用于高级用法)\r\n */\r\n getClient(): GT6Client {\r\n return (this.articles as any).client;\r\n }\r\n\r\n /**\r\n * 清除所有缓存\r\n */\r\n clearCache(): void {\r\n this.getClient().clearCache();\r\n }\r\n\r\n /**\r\n * 获取缓存统计信息\r\n */\r\n getCacheStats() {\r\n return this.getClient().getCacheStats();\r\n }\r\n\r\n /**\r\n * 1. 便捷方法:根据文章ID获取文章详情\r\n */\r\n async getArticle(articleId: number | string) {\r\n return this.articles.getArticle(articleId);\r\n }\r\n\r\n /**\r\n * 2. 便捷方法:获取文章分类列表\r\n */\r\n async getCategories(rootCategoryId?: number | string) {\r\n return this.articles.getCategories(rootCategoryId);\r\n }\r\n\r\n /**\r\n * 3. 便捷方法:获取文章标签列表\r\n */\r\n async getTags(tagAlias?: string) {\r\n return this.articles.getTags(tagAlias);\r\n }\r\n\r\n /**\r\n * 4. 便捷方法:根据分类ID获取文章列表\r\n */\r\n async getArticlesByCategory(categoryId: number | number[], options?: ArticlesByCategoryOptions) {\r\n return this.articles.getArticlesByCategory(categoryId, options);\r\n }\r\n\r\n /**\r\n * 5. 便捷方法:根据标签ID获取文章列表\r\n */\r\n async getArticlesByTag(tagId: number | number[], options?: ArticlesByTagOptions) {\r\n return this.articles.getArticlesByTag(tagId, options);\r\n }\r\n\r\n /**\r\n * 6. 便捷方法:根据分类ID获取该分类的层级路径\r\n */\r\n async getCategoryPath(categoryId: number) {\r\n return this.articles.getCategoryPath(categoryId);\r\n }\r\n\r\n /**\r\n * 7. 便捷方法:获取指定分类ID下的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean;\r\n includeCurrent?: boolean;\r\n maxDepth?: number;\r\n }) {\r\n return this.articles.getSubCategories(categoryId, options);\r\n }\r\n\r\n /**\r\n * 8. 便捷方法:根据产品ID获取产品详情\r\n */\r\n async getProduct(productId: number | string) {\r\n return this.products.getProduct(productId);\r\n }\r\n\r\n /**\r\n * 9. 便捷方法:获取产品分类列表\r\n */\r\n async getProductCategories(productRootCategoryId?: number | string) {\r\n return this.products.getCategories(productRootCategoryId);\r\n }\r\n\r\n /**\r\n * 10. 便捷方法:获取产品标签列表\r\n */\r\n async getProductTags(productTagAlias?: string) {\r\n return this.products.getTags(productTagAlias);\r\n }\r\n\r\n /**\r\n * 11. 便捷方法:根据分类ID获取产品列表\r\n */\r\n async getProductsByCategory(categoryId: number | number[], options?: ProductsByCategoryOptions) {\r\n return this.products.getProductsByCategory(categoryId, options);\r\n }\r\n\r\n /**\r\n * 12. 便捷方法:根据标签ID获取产品列表\r\n */\r\n async getProductsByTag(tagId: number | number[], options?: ProductsByTagOptions) {\r\n return this.products.getProductsByTag(tagId, options);\r\n }\r\n\r\n /**\r\n * 13. 便捷方法:根据分类ID获取该分类的层级路径\r\n */\r\n async getProductCategoryPath(categoryId: number) {\r\n return this.products.getCategoryPath(categoryId);\r\n }\r\n\r\n /**\r\n * 14. 便捷方法:获取指定分类ID下的子分类\r\n */\r\n async getProductSubCategories(categoryId: number, options?: {\r\n recursive?: boolean;\r\n includeCurrent?: boolean;\r\n maxDepth?: number;\r\n }) {\r\n return this.products.getSubCategories(categoryId, options);\r\n }\r\n\r\n /**\r\n * 15. 便捷方法:获取税费信息\r\n */\r\n async getTaxInfo() {\r\n return this.products.getTaxInfo();\r\n }\r\n\r\n /**\r\n * 16. 便捷方法:获取运费信息\r\n */\r\n async getShippingInfo() {\r\n return this.products.getShippingInfo();\r\n }\r\n\r\n /**\r\n * 17. 便捷方法:获取区域信息\r\n */\r\n async getRegions() {\r\n return this.products.getRegions();\r\n }\r\n}\r\n\r\n// 导出所有类型和模块\r\nexport * from './core/types';\r\nexport * from './core/client';\r\nexport * from './modules/articles';\r\nexport * from './modules/products';\r\n\r\n// 默认导出\r\nexport default GT6SDK; "],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"gt6-sdk.cjs.js","sources":["../src/core/types.ts","../src/core/client.ts","../src/modules/articles.ts","../src/modules/products.ts","../src/modules/settings.ts","../src/index.ts"],"sourcesContent":["// 基础配置类型\nexport interface GT6Config {\n baseUrl: string;\n apiKey?: string;\n platformId: string | number;\n rootCategoryId?: string | number;\n tagAlias?: string;\n // 产品专用配置字段\n productRootCategoryId?: string | number;\n productTagAlias?: string;\n // 设置专用配置字段\n settingAlias?: string;\n version?: string;\n timeout?: number;\n cache?: {\n enabled: boolean;\n ttl: number; // 缓存时间(毫秒)\n };\n}\n\n// 分类相关类型\nexport interface Category {\n categoryId: number;\n categoryName: string;\n categoryDescription: string;\n metaKeywords: string;\n status: number;\n parentId: number;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n articleIds: number[];\n children: Category[];\n}\n\nexport interface CategoryResponse {\n platformId: number;\n categories: Category[];\n generatedAt: string;\n}\n\n// 产品分类相关类型\nexport interface ProductCategory {\n categoryId: number;\n categoryName: string;\n categoryDescription: string;\n metaKeywords: string;\n status: number;\n parentId: number;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n productIds: number[];\n children: ProductCategory[];\n}\n\nexport interface ProductCategoryResponse {\n platformId: number;\n categories: ProductCategory[];\n generatedAt: string;\n}\n\n// 标签相关类型\nexport interface Tag {\n tagId: number;\n tagName: string;\n type: number;\n platformId: number;\n aliases: string;\n createdAt: any;\n articleIds: number[];\n}\n\nexport interface TagResponse {\n platformId: number;\n tags: Tag[];\n generatedAt: string;\n}\n\n// 产品标签相关类型\nexport interface ProductTag {\n tagId: number;\n tagName: string;\n type: number;\n platformId: number;\n aliases: string;\n createdAt: any;\n productIds: number[];\n}\n\nexport interface ProductTagResponse {\n platformId: number;\n tags: ProductTag[];\n generatedAt: string;\n}\n\n// 文章元数据类型\nexport interface ArticleMetaData {\n metaId: number;\n articleId: number;\n metaKey: string;\n metaValue: string;\n type: number;\n templateId: number;\n groupId: number;\n sortOrder: number;\n aiId: number;\n fieldId: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 文章图片类型\nexport interface ArticleImage {\n imageId: number;\n articleId: number;\n metaId: number | null;\n imageUrl: string;\n imageType: 'cover' | 'content';\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 文章类型\nexport interface Article {\n articleId: number;\n title: string;\n content: string;\n status: 'published' | 'draft' | 'archived';\n publishedAt: string;\n templateId: number;\n aiId: number;\n platformId: number;\n isVisible: boolean;\n displayTemplate: string;\n createdAt: any;\n updatedAt: any;\n categories: Category[];\n tags: Tag[];\n metaData: ArticleMetaData[];\n images: ArticleImage[];\n generatedAt: string;\n}\n\n// 产品详情类型\nexport interface ProductDetail {\n detailId: number;\n productId: number;\n detailKey: string;\n detailValue: string;\n extraInfo: string;\n}\n\n// 产品选项值类型\nexport interface ProductOptionValue {\n valueId: number;\n optionId: number;\n value: string;\n description: string;\n priceAdjustment: string;\n createdAt: any;\n updatedAt: any;\n}\n\n// 产品选项类型\nexport interface ProductOption {\n optionId: number;\n productId: number;\n optionName: string;\n createdAt: any;\n updatedAt: any;\n values: ProductOptionValue[];\n}\n\n// 产品变体类型\nexport interface ProductVariant {\n variantId: number;\n productId: number;\n sku: string;\n price: string;\n stock: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 产品图片类型\nexport interface ProductImage {\n imageId: number;\n productId: number;\n productDetailId: number | null;\n optionValueId: number | null;\n imageUrl: string;\n imageType: 'gallery' | 'thumbnail' | 'detail';\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 地区类型\nexport interface Region {\n regionId: number;\n platformId: number;\n regionCode: string;\n regionName: string;\n regionLevel: string;\n parentId: number;\n children?: Region[];\n}\n\n// 运费规则类型\nexport interface ShippingRule {\n ruleId: number;\n templateId: number;\n regionId: number;\n firstUnit: string;\n firstFee: string;\n additionalUnit: string;\n additionalFee: string;\n conditionType: string;\n conditionValue: string | null;\n createTime: any;\n updateTime: any;\n}\n\n// 运费模板类型\nexport interface ShippingTemplate {\n templateId: number;\n platformId: number;\n templateName: string;\n defaultFee: string;\n freeShippingLimit: string;\n createTime: any;\n updateTime: any;\n rules: ShippingRule[];\n}\n\n// 运费响应类型\nexport interface ShippingResponse {\n platformId: number;\n templates: ShippingTemplate[];\n generatedAt: string;\n}\n\n// 税费规则类型\nexport interface TaxRule {\n ruleId: number;\n templateId: number;\n regionId: number;\n taxRate: string;\n createTime: any;\n updateTime: any;\n}\n\n// 税费模板类型\nexport interface TaxTemplate {\n templateId: number;\n platformId: number;\n templateName: string;\n defaultTaxRate: string;\n createTime: any;\n updateTime: any;\n rules: TaxRule[];\n}\n\n// 税费响应类型\nexport interface TaxResponse {\n platformId: number;\n templates: TaxTemplate[];\n generatedAt: string;\n}\n\n// 订阅类型\nexport interface Subscription {\n subscriptionId: number;\n productId: number;\n billingCycle: number;\n billingCycleUnit: string;\n billingCycleCount: number;\n setupFee: string;\n trialDays: number;\n trialPrice: string;\n renewalDiscount: string;\n autoRenew: boolean;\n allowCancel: boolean;\n cancelPolicy: string;\n refundPolicy: string;\n maxCycles: number;\n gracePeriod: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 批发类型\nexport interface Wholesale {\n wholesaleId: number;\n productId: number;\n minOrderQuantity: number;\n maxOrderQuantity: number;\n allowMixedVariants: boolean;\n showRetailPrice: boolean;\n wholesaleDescription: string;\n paymentTerms: string;\n shippingTerms: string;\n}\n\n// 价格层级类型\nexport interface PriceTier {\n tierId: number;\n wholesaleId: number;\n userLevel: number | null;\n minQuantity: number;\n maxQuantity: number;\n priceType: number;\n priceValue: string;\n sortOrder: number;\n}\n\n// 变体价格类型\nexport interface VariantPrice {\n id: number;\n wholesaleId: number;\n tierId: number;\n variantId: number;\n priceType: number;\n priceValue: string;\n}\n\n// 众筹类型\nexport interface Crowdfunding {\n crowdfundingId: number;\n productId: number;\n targetAmount: string;\n currentAmount: string;\n supporterCount: number;\n startTime: any;\n endTime: any;\n status: number;\n minSupportAmount: string;\n allowOverFunding: boolean;\n overFundingLimit: string;\n createdAt: any;\n updatedAt: any;\n}\n\n// 众筹奖励类型\nexport interface Reward {\n rewardId: number;\n crowdfundingId: number;\n variantId: number;\n rewardName: string;\n rewardDescription: string;\n rewardAmount: string;\n rewardLimit: number;\n rewardClaimed: number;\n shippingRequired: boolean;\n estimatedDeliveryTime: any;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 众筹更新类型\nexport interface CrowdfundingUpdate {\n updateId: number;\n crowdfundingId: number;\n updateTitle: string;\n updateContent: string;\n isPublic: boolean;\n updateTime: any;\n}\n\n// 众筹FAQ类型\nexport interface CrowdfundingFAQ {\n faqId: number;\n crowdfundingId: number;\n question: string;\n answer: string;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 简单理财类型\nexport interface SimpleFinance {\n simpleFinanceId: number;\n productId: number;\n calculationPeriod: number;\n calculationPeriodUnit: string;\n interestRate: string;\n minInvestment: string;\n maxInvestment: string;\n minInvestmentUnit: string;\n maxInvestmentUnit: string;\n investmentPeriod: number;\n investmentPeriodUnit: string;\n}\n\n// 产品类型\nexport interface Product {\n productId: number;\n productName: string;\n description: string;\n metaKeywords: string;\n price: string;\n priceChangePercent: string;\n status: number;\n productType: number;\n native: number;\n shared: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n oldProductId: number | null;\n details: ProductDetail[];\n options: ProductOption[];\n variants: ProductVariant[];\n images: ProductImage[];\n categories: ProductCategory[];\n tags: ProductTag[];\n regions: Region[];\n shippingTemplates: ShippingTemplate[];\n taxTemplates: TaxTemplate[];\n subscription?: Subscription; // 当productType为2时存在\n wholesale?: Wholesale; // 当productType为3时存在\n priceTiers?: PriceTier[]; // 当productType为3时存在\n variantPrices?: VariantPrice[]; // 当productType为3时存在\n crowdfunding?: Crowdfunding; // 当productType为4时存在\n rewards?: Reward[]; // 当productType为4时存在\n updates?: CrowdfundingUpdate[]; // 当productType为4时存在\n faqs?: CrowdfundingFAQ[]; // 当productType为4时存在\n simpleFinance?: SimpleFinance; // 当productType为5时存在\n generatedAt: string;\n}\n\n// 文章列表项类型(简化版)\nexport interface ArticleListItem {\n articleId: number;\n title: string;\n status: string;\n publishedAt: string;\n categories: Category[];\n tags: Tag[];\n coverImage?: string;\n}\n\n// 产品列表项类型(简化版)\nexport interface ProductListItem {\n productId: number;\n productName: string;\n price: string;\n status: number;\n categories: ProductCategory[];\n tags: ProductTag[];\n coverImage?: string;\n}\n\n// 错误类型\nexport class GT6Error extends Error {\n constructor(\n message: string,\n public statusCode?: number\n ) {\n super(message);\n this.name = 'GT6Error';\n }\n}\n\n// 查询参数类型\nexport interface ArticleQueryParams {\n categoryId?: number;\n tagId?: number;\n status?: string;\n limit?: number;\n offset?: number;\n sortBy?: 'publishedAt' | 'title' | 'sortOrder';\n sortOrder?: 'asc' | 'desc';\n}\n\n// 产品查询参数类型\nexport interface ProductQueryParams {\n categoryId?: number;\n tagId?: number;\n status?: number;\n limit?: number;\n offset?: number;\n sortBy?: 'price' | 'productName' | 'sortOrder';\n sortOrder?: 'asc' | 'desc';\n}\n\n// 根据标签获取文章的选项类型\nexport interface ArticlesByTagOptions {\n page?: number;\n limit?: number;\n status?: 'published' | 'draft' | 'archived';\n tagAlias?: string;\n}\n\n// 根据分类获取文章的选项类型\nexport interface ArticlesByCategoryOptions {\n page?: number;\n limit?: number;\n status?: 'published' | 'draft' | 'archived';\n}\n\n// 根据标签获取产品的选项类型\nexport interface ProductsByTagOptions {\n page?: number;\n limit?: number;\n status?: number;\n productTagAlias?: string;\n}\n\n// 根据分类获取产品的选项类型\nexport interface ProductsByCategoryOptions {\n page?: number;\n limit?: number;\n status?: number;\n}\n\n// 文章统计类型\nexport interface ArticleStats {\n total: number;\n published: number;\n draft: number;\n archived: number;\n byCategory: Record<number, number>;\n byTag: Record<number, number>;\n}\n\n// 产品统计类型\nexport interface ProductStats {\n total: number;\n active: number;\n inactive: number;\n byCategory: Record<number, number>;\n byTag: Record<number, number>;\n}\n\nexport interface GT6Response<T> {\n success: boolean;\n data: T;\n error?: string;\n}\n\nexport interface ArticleResponse {\n article: Article;\n}\n\nexport interface ProductResponse {\n product: Product;\n}\n\nexport interface CategoryResponse {\n categories: Category[];\n}\n\nexport interface ProductCategoryResponse {\n categories: ProductCategory[];\n}\n\nexport interface TagResponse {\n tags: Tag[];\n}\n\nexport interface ProductTagResponse {\n tags: ProductTag[];\n}\n\n// 区域响应类型\nexport interface RegionResponse {\n platformId: number;\n regions: Region[];\n generatedAt: string;\n}\n\n// 全局设置相关类型\nexport interface Setting {\n key: string;\n value: string | number | object;\n type: 'text' | 'number' | 'json' | 'html' | 'image';\n label: string;\n description: string;\n isSystem: boolean;\n sortOrder: number;\n aliases: string;\n}\n\nexport interface SettingsResponse {\n platformId: number;\n aliases: string;\n settings: Setting[];\n generatedAt: string;\n}\n\nexport interface SettingResponse {\n platformId: number;\n setting: Setting;\n generatedAt: string;\n}\n\nexport interface SettingsOptions {\n settingAlias?: string;\n} ","import { GT6Config, GT6Error } from './types';\r\n\r\nexport class GT6Client {\r\n private config: GT6Config;\r\n private cache: Map<string, { data: any; timestamp: number }>;\r\n\r\n constructor(config: GT6Config) {\r\n this.config = {\r\n timeout: 10000,\r\n cache: {\r\n enabled: true,\r\n ttl: 300000 // 5分钟默认缓存\r\n },\r\n ...config\r\n };\r\n this.cache = new Map();\r\n }\r\n\r\n /**\r\n * 发起HTTP请求\r\n */\r\n async request<T>(endpoint: string, options: RequestInit = {}): Promise<T> {\r\n const url = `${this.config.baseUrl}${endpoint}`;\r\n const cacheKey = `${options.method || 'GET'}:${url}`;\r\n\r\n // 检查缓存(只对GET请求缓存)\r\n if (this.config.cache?.enabled && options.method !== 'POST' && options.method !== 'PUT' && options.method !== 'DELETE') {\r\n const cached = this.cache.get(cacheKey);\r\n if (cached && Date.now() - cached.timestamp < this.config.cache.ttl) {\r\n return cached.data;\r\n }\r\n }\r\n\r\n try {\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\r\n\r\n const response = await fetch(url, {\r\n ...options,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...options.headers,\r\n },\r\n signal: controller.signal\r\n });\r\n\r\n clearTimeout(timeoutId);\r\n\r\n if (!response.ok) {\r\n throw new GT6Error(\r\n `HTTP ${response.status}: ${response.statusText}`,\r\n response.status\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n // 更新缓存(只对GET请求缓存)\r\n if (this.config.cache?.enabled && options.method !== 'POST' && options.method !== 'PUT' && options.method !== 'DELETE') {\r\n this.cache.set(cacheKey, { data, timestamp: Date.now() });\r\n }\r\n\r\n return data;\r\n } catch (error: any) {\r\n if (error instanceof GT6Error) {\r\n throw error;\r\n }\r\n \r\n if (error.name === 'AbortError') {\r\n throw new GT6Error('Request timeout', 408);\r\n }\r\n \r\n throw new GT6Error(`Network error: ${error.message}`);\r\n }\r\n }\r\n\r\n /**\r\n * 获取配置\r\n */\r\n getConfig(): GT6Config {\r\n return { ...this.config };\r\n }\r\n\r\n /**\r\n * 清除缓存\r\n */\r\n clearCache(): void {\r\n this.cache.clear();\r\n }\r\n\r\n /**\r\n * 获取缓存统计\r\n */\r\n getCacheStats(): { size: number; entries: Array<{ key: string; age: number }> } {\r\n const entries = Array.from(this.cache.entries()).map(([key, value]) => ({\r\n key,\r\n age: Date.now() - value.timestamp\r\n }));\r\n\r\n return {\r\n size: this.cache.size,\r\n entries\r\n };\r\n }\r\n} ","import { GT6Client } from '../core/client';\r\nimport {\r\n Article,\r\n Category,\r\n Tag,\r\n CategoryResponse,\r\n TagResponse,\r\n ArticlesByTagOptions,\r\n ArticlesByCategoryOptions\r\n} from '../core/types';\r\n\r\nexport class ArticlesAPI {\r\n constructor(private client: GT6Client) {}\r\n\r\n /**\r\n * 1. 根据文章ID获取文章详情\r\n */\r\n async getArticle(articleId: number | string): Promise<Article> {\r\n return this.client.request<Article>(`/articles/${articleId}.json`);\r\n }\r\n\r\n /**\r\n * 2. 获取文章分类列表\r\n */\r\n async getCategories(rootCategoryId?: number | string): Promise<Category[]> {\r\n const config = this.client.getConfig();\r\n const categoryId = rootCategoryId || config.rootCategoryId || '671920';\r\n \r\n const response = await this.client.request<CategoryResponse>(\r\n `/article-categories/platform-${config.platformId}-root-${categoryId}.json`\r\n );\r\n \r\n return response.categories;\r\n }\r\n\r\n /**\r\n * 3. 获取文章标签列表\r\n */\r\n async getTags(tagAlias?: string): Promise<Tag[]> {\r\n const config = this.client.getConfig();\r\n const alias = tagAlias || config.tagAlias || '001';\r\n \r\n const response = await this.client.request<TagResponse>(\r\n `/article-tags/platform-${config.platformId}-${alias}.json`\r\n );\r\n \r\n return response.tags;\r\n }\r\n\r\n /**\r\n * 4. 根据分类ID获取文章列表\r\n * 支持单个分类ID或分类ID数组\r\n */\r\n async getArticlesByCategory(categoryId: number | number[], options?: ArticlesByCategoryOptions): Promise<{\r\n articles: Article[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 将单个分类ID转换为数组\r\n const categoryIds = Array.isArray(categoryId) ? categoryId : [categoryId];\r\n \r\n // 收集所有指定分类下的文章ID\r\n const allArticleIds: number[] = [];\r\n \r\n categoryIds.forEach(id => {\r\n const targetCategory = categories.find(cat => cat.categoryId === id);\r\n if (targetCategory) {\r\n allArticleIds.push(...targetCategory.articleIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueArticleIds = [...new Set(allArticleIds)];\r\n \r\n if (uniqueArticleIds.length === 0) {\r\n return {\r\n articles: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedArticleIds = uniqueArticleIds.slice(offset, offset + limit);\r\n \r\n // 获取文章详情\r\n const articles = await Promise.all(\r\n paginatedArticleIds.map(articleId => this.getArticle(articleId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredArticles = articles;\r\n if (options?.status) {\r\n filteredArticles = articles.filter(article => article.status === options.status);\r\n }\r\n \r\n return {\r\n articles: filteredArticles,\r\n total: uniqueArticleIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 5. 根据标签ID获取文章列表\r\n * 支持单个标签ID或标签ID数组\r\n */\r\n async getArticlesByTag(tagId: number | number[], options?: ArticlesByTagOptions): Promise<{\r\n articles: Article[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取标签数据,传递tagAlias参数\r\n const tags = await this.getTags(options?.tagAlias);\r\n \r\n // 将单个标签ID转换为数组\r\n const tagIds = Array.isArray(tagId) ? tagId : [tagId];\r\n \r\n // 收集所有指定标签下的文章ID\r\n const allArticleIds: number[] = [];\r\n \r\n tagIds.forEach(id => {\r\n const targetTag = tags.find(tag => tag.tagId === id);\r\n if (targetTag) {\r\n allArticleIds.push(...targetTag.articleIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueArticleIds = [...new Set(allArticleIds)];\r\n \r\n if (uniqueArticleIds.length === 0) {\r\n return {\r\n articles: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedArticleIds = uniqueArticleIds.slice(offset, offset + limit);\r\n \r\n // 获取文章详情\r\n const articles = await Promise.all(\r\n paginatedArticleIds.map(articleId => this.getArticle(articleId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredArticles = articles;\r\n if (options?.status) {\r\n filteredArticles = articles.filter(article => article.status === options.status);\r\n }\r\n \r\n return {\r\n articles: filteredArticles,\r\n total: uniqueArticleIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 6. 根据分类ID获取该分类的层级路径\r\n * 用于前端面包屑导航\r\n */\r\n async getCategoryPath(categoryId: number): Promise<{\r\n path: Category[];\r\n currentCategory: Category | null;\r\n breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }>;\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 查找目标分类\r\n const targetCategory = categories.find(cat => cat.categoryId === categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n path: [],\r\n currentCategory: null,\r\n breadcrumbs: []\r\n };\r\n }\r\n \r\n // 构建分类路径\r\n const path: Category[] = [];\r\n const breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }> = [];\r\n \r\n // 递归查找父分类\r\n const buildPath = (currentCategory: Category, level: number = 0): void => {\r\n // 将当前分类添加到路径开头(因为我们要从根到叶子构建)\r\n path.unshift(currentCategory);\r\n breadcrumbs.unshift({\r\n categoryId: currentCategory.categoryId,\r\n categoryName: currentCategory.categoryName,\r\n level\r\n });\r\n \r\n // 如果有父分类,继续递归\r\n if (currentCategory.parentId && currentCategory.parentId !== 0) {\r\n const parentCategory = categories.find(cat => cat.categoryId === currentCategory.parentId);\r\n if (parentCategory) {\r\n buildPath(parentCategory, level + 1);\r\n }\r\n }\r\n };\r\n \r\n // 从目标分类开始构建路径\r\n buildPath(targetCategory);\r\n \r\n return {\r\n path,\r\n currentCategory: targetCategory,\r\n breadcrumbs\r\n };\r\n }\r\n\r\n /**\r\n * 7. 获取指定分类ID下的子分类\r\n * 支持递归获取所有层级的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean; // 是否递归获取所有层级的子分类\r\n includeCurrent?: boolean; // 是否包含当前分类\r\n maxDepth?: number; // 最大递归深度,默认不限制\r\n }): Promise<{\r\n subCategories: Category[];\r\n currentCategory: Category | null;\r\n total: number;\r\n depth: number; // 实际递归深度\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 查找目标分类\r\n const targetCategory = categories.find(cat => cat.categoryId === categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n subCategories: [],\r\n currentCategory: null,\r\n total: 0,\r\n depth: 0\r\n };\r\n }\r\n \r\n const subCategories: Category[] = [];\r\n let maxDepth = options?.maxDepth || Infinity;\r\n let actualDepth = 0;\r\n \r\n // 递归获取子分类的函数\r\n const collectSubCategories = (parentId: number, currentDepth: number = 0): void => {\r\n if (currentDepth >= maxDepth) {\r\n return;\r\n }\r\n \r\n // 查找直接子分类\r\n const children = categories.filter(cat => cat.parentId === parentId);\r\n \r\n children.forEach(child => {\r\n subCategories.push(child);\r\n \r\n // 如果需要递归且未达到最大深度,继续查找子分类\r\n if (options?.recursive && currentDepth < maxDepth - 1) {\r\n collectSubCategories(child.categoryId, currentDepth + 1);\r\n }\r\n });\r\n \r\n // 更新实际深度\r\n actualDepth = Math.max(actualDepth, currentDepth);\r\n };\r\n \r\n // 开始收集子分类\r\n collectSubCategories(categoryId);\r\n \r\n // 如果需要包含当前分类,添加到结果中\r\n if (options?.includeCurrent) {\r\n subCategories.unshift(targetCategory);\r\n }\r\n \r\n return {\r\n subCategories,\r\n currentCategory: targetCategory,\r\n total: subCategories.length,\r\n depth: actualDepth\r\n };\r\n }\r\n} ","import { GT6Client } from '../core/client';\r\nimport {\r\n Product,\r\n ProductCategory,\r\n ProductTag,\r\n ProductCategoryResponse,\r\n ProductTagResponse,\r\n ProductsByTagOptions,\r\n ProductsByCategoryOptions,\r\n TaxResponse,\r\n ShippingResponse,\r\n RegionResponse\r\n} from '../core/types';\r\n\r\nexport class ProductsAPI {\r\n constructor(private client: GT6Client) {}\r\n\r\n /**\r\n * 1. 根据产品ID获取产品详情\r\n */\r\n async getProduct(productId: number | string): Promise<Product> {\r\n const product = await this.client.request<Product>(`/products/${productId}.json`);\r\n \r\n // 检查产品是否有销售区域和税费模板\r\n if (product.regions && product.regions.length > 0 && \r\n product.taxTemplates && product.taxTemplates.length > 0) {\r\n try {\r\n // 获取税费信息\r\n const taxInfo = await this.getTaxInfo();\r\n \r\n // 为每个税费模板添加规则\r\n product.taxTemplates = product.taxTemplates.map(template => {\r\n const matchingTemplate = taxInfo.templates.find(t => t.templateId === template.templateId);\r\n if (matchingTemplate) {\r\n // 过滤出产品可销售区域的规则\r\n const productRegionIds = product.regions.map(r => r.regionId);\r\n const applicableRules = matchingTemplate.rules.filter(rule => \r\n productRegionIds.includes(rule.regionId)\r\n );\r\n \r\n return {\r\n ...template,\r\n rules: applicableRules\r\n };\r\n }\r\n return template;\r\n });\r\n } catch (error) {\r\n // 如果获取税费信息失败,不影响产品详情返回\r\n console.warn('Failed to fetch tax info:', error);\r\n }\r\n }\r\n \r\n // 检查产品是否有销售区域和运费模板\r\n if (product.regions && product.regions.length > 0 && \r\n product.shippingTemplates && product.shippingTemplates.length > 0) {\r\n try {\r\n // 获取运费信息\r\n const shippingInfo = await this.getShippingInfo();\r\n \r\n // 为每个运费模板添加规则\r\n product.shippingTemplates = product.shippingTemplates.map(template => {\r\n const matchingTemplate = shippingInfo.templates.find(t => t.templateId === template.templateId);\r\n if (matchingTemplate) {\r\n // 过滤出产品可销售区域的规则\r\n const productRegionIds = product.regions.map(r => r.regionId);\r\n const applicableRules = matchingTemplate.rules.filter(rule => \r\n productRegionIds.includes(rule.regionId)\r\n );\r\n \r\n return {\r\n ...template,\r\n rules: applicableRules\r\n };\r\n }\r\n return template;\r\n });\r\n } catch (error) {\r\n // 如果获取运费信息失败,不影响产品详情返回\r\n console.warn('Failed to fetch shipping info:', error);\r\n }\r\n }\r\n \r\n return product;\r\n }\r\n\r\n /**\r\n * 2. 获取产品分类列表\r\n */\r\n async getCategories(productRootCategoryId?: number | string): Promise<ProductCategory[]> {\r\n const config = this.client.getConfig();\r\n const categoryId = productRootCategoryId || config.productRootCategoryId || '277233';\r\n \r\n const response = await this.client.request<ProductCategoryResponse>(\r\n `/product-categories/platform-${config.platformId}-root-${categoryId}.json`\r\n );\r\n \r\n return response.categories;\r\n }\r\n\r\n /**\r\n * 3. 获取产品标签列表\r\n */\r\n async getTags(productTagAlias?: string): Promise<ProductTag[]> {\r\n const config = this.client.getConfig();\r\n const alias = productTagAlias || config.productTagAlias || '01';\r\n \r\n const response = await this.client.request<ProductTagResponse>(\r\n `/product-tags/platform-${config.platformId}-${alias}.json`\r\n );\r\n \r\n return response.tags;\r\n }\r\n\r\n /**\r\n * 4. 根据分类ID获取产品列表\r\n * 支持单个分类ID或分类ID数组\r\n */\r\n async getProductsByCategory(categoryId: number | number[], options?: ProductsByCategoryOptions): Promise<{\r\n products: Product[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 将单个分类ID转换为数组\r\n const categoryIds = Array.isArray(categoryId) ? categoryId : [categoryId];\r\n \r\n // 收集所有指定分类下的产品ID\r\n const allProductIds: number[] = [];\r\n \r\n categoryIds.forEach(id => {\r\n const targetCategory = findCategoryById(categories, id);\r\n if (targetCategory) {\r\n allProductIds.push(...targetCategory.productIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueProductIds = [...new Set(allProductIds)];\r\n \r\n if (uniqueProductIds.length === 0) {\r\n return {\r\n products: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedProductIds = uniqueProductIds.slice(offset, offset + limit);\r\n \r\n // 获取产品详情\r\n const products = await Promise.all(\r\n paginatedProductIds.map(productId => this.getProduct(productId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredProducts = products;\r\n if (options?.status !== undefined) {\r\n filteredProducts = products.filter(product => product.status === options.status);\r\n }\r\n \r\n return {\r\n products: filteredProducts,\r\n total: uniqueProductIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 5. 根据标签ID获取产品列表\r\n * 支持单个标签ID或标签ID数组\r\n */\r\n async getProductsByTag(tagId: number | number[], options?: ProductsByTagOptions): Promise<{\r\n products: Product[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取标签数据,传递productTagAlias参数\r\n const tags = await this.getTags(options?.productTagAlias);\r\n \r\n // 将单个标签ID转换为数组\r\n const tagIds = Array.isArray(tagId) ? tagId : [tagId];\r\n \r\n // 收集所有指定标签下的产品ID\r\n const allProductIds: number[] = [];\r\n \r\n tagIds.forEach(id => {\r\n const targetTag = tags.find(tag => tag.tagId === id);\r\n if (targetTag) {\r\n allProductIds.push(...targetTag.productIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueProductIds = [...new Set(allProductIds)];\r\n \r\n if (uniqueProductIds.length === 0) {\r\n return {\r\n products: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedProductIds = uniqueProductIds.slice(offset, offset + limit);\r\n \r\n // 获取产品详情\r\n const products = await Promise.all(\r\n paginatedProductIds.map(productId => this.getProduct(productId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredProducts = products;\r\n if (options?.status !== undefined) {\r\n filteredProducts = products.filter(product => product.status === options.status);\r\n }\r\n \r\n return {\r\n products: filteredProducts,\r\n total: uniqueProductIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 6. 根据分类ID获取该分类的层级路径\r\n * 用于前端面包屑导航\r\n */\r\n async getCategoryPath(categoryId: number): Promise<{\r\n path: ProductCategory[];\r\n currentCategory: ProductCategory | null;\r\n breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }>;\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找目标分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 查找目标分类(包括子分类)\r\n const targetCategory = findCategoryById(categories, categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n path: [],\r\n currentCategory: null,\r\n breadcrumbs: []\r\n };\r\n }\r\n \r\n // 构建分类路径\r\n const path: ProductCategory[] = [];\r\n const breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }> = [];\r\n \r\n // 递归查找父分类的函数\r\n const buildPath = (currentCategory: ProductCategory, level: number = 0): void => {\r\n // 将当前分类添加到路径开头(因为我们要从根到叶子构建)\r\n path.unshift(currentCategory);\r\n breadcrumbs.unshift({\r\n categoryId: currentCategory.categoryId,\r\n categoryName: currentCategory.categoryName,\r\n level\r\n });\r\n \r\n // 如果有父分类,继续递归\r\n if (currentCategory.parentId && currentCategory.parentId !== 0) {\r\n const parentCategory = findCategoryById(categories, currentCategory.parentId);\r\n if (parentCategory) {\r\n buildPath(parentCategory, level + 1);\r\n }\r\n }\r\n };\r\n \r\n // 从目标分类开始构建路径\r\n buildPath(targetCategory);\r\n \r\n return {\r\n path,\r\n currentCategory: targetCategory,\r\n breadcrumbs\r\n };\r\n }\r\n\r\n /**\r\n * 7. 获取指定分类ID下的子分类\r\n * 支持递归获取所有层级的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean; // 是否递归获取所有层级的子分类\r\n includeCurrent?: boolean; // 是否包含当前分类\r\n maxDepth?: number; // 最大递归深度,默认不限制\r\n }): Promise<{\r\n subCategories: ProductCategory[];\r\n currentCategory: ProductCategory | null;\r\n total: number;\r\n depth: number; // 实际递归深度\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 查找目标分类(包括子分类)\r\n const targetCategory = findCategoryById(categories, categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n subCategories: [],\r\n currentCategory: null,\r\n total: 0,\r\n depth: 0\r\n };\r\n }\r\n \r\n const subCategories: ProductCategory[] = [];\r\n let maxDepth = options?.maxDepth || Infinity;\r\n let actualDepth = 0;\r\n \r\n // 递归获取子分类的函数\r\n const collectSubCategories = (parentId: number, currentDepth: number = 0): void => {\r\n if (currentDepth >= maxDepth) {\r\n return;\r\n }\r\n \r\n // 递归查找直接子分类\r\n const findChildren = (cats: ProductCategory[], parentId: number): ProductCategory[] => {\r\n const children: ProductCategory[] = [];\r\n for (const cat of cats) {\r\n if (cat.parentId === parentId) {\r\n children.push(cat);\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n children.push(...findChildren(cat.children, parentId));\r\n }\r\n }\r\n return children;\r\n };\r\n \r\n const children = findChildren(categories, parentId);\r\n \r\n children.forEach(child => {\r\n subCategories.push(child);\r\n \r\n // 如果需要递归且未达到最大深度,继续查找子分类\r\n if (options?.recursive && currentDepth < maxDepth - 1) {\r\n collectSubCategories(child.categoryId, currentDepth + 1);\r\n }\r\n });\r\n \r\n // 更新实际深度\r\n actualDepth = Math.max(actualDepth, currentDepth);\r\n };\r\n \r\n // 开始收集子分类\r\n collectSubCategories(categoryId);\r\n \r\n // 如果需要包含当前分类,添加到结果中\r\n if (options?.includeCurrent) {\r\n subCategories.unshift(targetCategory);\r\n }\r\n \r\n return {\r\n subCategories,\r\n currentCategory: targetCategory,\r\n total: subCategories.length,\r\n depth: actualDepth\r\n };\r\n }\r\n\r\n /**\r\n * 8. 获取税费信息\r\n * 获取平台的所有税费模板和规则\r\n */\r\n async getTaxInfo(): Promise<TaxResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<TaxResponse>(`/tax/platform-${config.platformId}.json`);\r\n }\r\n\r\n /**\r\n * 9. 获取运费信息\r\n * 获取平台的所有运费模板和规则\r\n */\r\n async getShippingInfo(): Promise<ShippingResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<ShippingResponse>(`/shipping/platform-${config.platformId}.json`);\r\n }\r\n\r\n /**\r\n * 10. 获取区域信息\r\n * 获取平台的所有区域信息,包括层级结构\r\n */\r\n async getRegions(): Promise<RegionResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<RegionResponse>(`/regions/platform-${config.platformId}.json`);\r\n }\r\n} ","import { GT6Client } from '../core/client';\r\nimport {\r\n Setting,\r\n SettingsResponse,\r\n SettingResponse\r\n} from '../core/types';\r\n\r\nexport class SettingsAPI {\r\n constructor(private client: GT6Client) {}\r\n\r\n /**\r\n * 获取全局设置列表\r\n * 根据平台ID和别名获取所有全局设置\r\n */\r\n async getSettings(settingAlias?: string): Promise<Setting[]> {\r\n const config = this.client.getConfig();\r\n const alias = settingAlias || config.settingAlias || '01';\r\n \r\n const response = await this.client.request<SettingsResponse>(\r\n `/settings/platform-${config.platformId}-${alias}.json`\r\n );\r\n \r\n return response.settings;\r\n }\r\n\r\n /**\r\n * 获取指定设置\r\n * 根据设置key直接获取单个设置\r\n */\r\n async getSetting(key: string): Promise<Setting | null> {\r\n const config = this.client.getConfig();\r\n \r\n try {\r\n const response = await this.client.request<SettingResponse>(\r\n `/settings/platform-${config.platformId}-${key}.json`\r\n );\r\n \r\n return response.setting;\r\n } catch (error) {\r\n console.warn(`Failed to fetch setting ${key}:`, error);\r\n return null;\r\n }\r\n }\r\n} ","import { GT6Client } from './core/client';\r\nimport { ArticlesAPI } from './modules/articles';\r\nimport { ProductsAPI } from './modules/products';\r\nimport { SettingsAPI } from './modules/settings';\r\nimport { \r\n GT6Config, \r\n ArticlesByCategoryOptions, \r\n ArticlesByTagOptions,\r\n ProductsByCategoryOptions,\r\n ProductsByTagOptions\r\n} from './core/types';\r\n\r\n/**\r\n * GT6 SDK 主类\r\n * 提供文章、产品和设置管理相关的所有功能\r\n */\r\nexport class GT6SDK {\r\n public articles: ArticlesAPI;\r\n public products: ProductsAPI;\r\n public settings: SettingsAPI;\r\n\r\n constructor(config: GT6Config) {\r\n const client = new GT6Client(config);\r\n this.articles = new ArticlesAPI(client);\r\n this.products = new ProductsAPI(client);\r\n this.settings = new SettingsAPI(client);\r\n }\r\n\r\n /**\r\n * 获取客户端实例(用于高级用法)\r\n */\r\n getClient(): GT6Client {\r\n return (this.articles as any).client;\r\n }\r\n\r\n /**\r\n * 清除所有缓存\r\n */\r\n clearCache(): void {\r\n this.getClient().clearCache();\r\n }\r\n\r\n /**\r\n * 获取缓存统计信息\r\n */\r\n getCacheStats() {\r\n return this.getClient().getCacheStats();\r\n }\r\n\r\n /**\r\n * 1. 便捷方法:根据文章ID获取文章详情\r\n */\r\n async getArticle(articleId: number | string) {\r\n return this.articles.getArticle(articleId);\r\n }\r\n\r\n /**\r\n * 2. 便捷方法:获取文章分类列表\r\n */\r\n async getCategories(rootCategoryId?: number | string) {\r\n return this.articles.getCategories(rootCategoryId);\r\n }\r\n\r\n /**\r\n * 3. 便捷方法:获取文章标签列表\r\n */\r\n async getTags(tagAlias?: string) {\r\n return this.articles.getTags(tagAlias);\r\n }\r\n\r\n /**\r\n * 4. 便捷方法:根据分类ID获取文章列表\r\n */\r\n async getArticlesByCategory(categoryId: number | number[], options?: ArticlesByCategoryOptions) {\r\n return this.articles.getArticlesByCategory(categoryId, options);\r\n }\r\n\r\n /**\r\n * 5. 便捷方法:根据标签ID获取文章列表\r\n */\r\n async getArticlesByTag(tagId: number | number[], options?: ArticlesByTagOptions) {\r\n return this.articles.getArticlesByTag(tagId, options);\r\n }\r\n\r\n /**\r\n * 6. 便捷方法:根据分类ID获取该分类的层级路径\r\n */\r\n async getCategoryPath(categoryId: number) {\r\n return this.articles.getCategoryPath(categoryId);\r\n }\r\n\r\n /**\r\n * 7. 便捷方法:获取指定分类ID下的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean;\r\n includeCurrent?: boolean;\r\n maxDepth?: number;\r\n }) {\r\n return this.articles.getSubCategories(categoryId, options);\r\n }\r\n\r\n /**\r\n * 8. 便捷方法:根据产品ID获取产品详情\r\n */\r\n async getProduct(productId: number | string) {\r\n return this.products.getProduct(productId);\r\n }\r\n\r\n /**\r\n * 9. 便捷方法:获取产品分类列表\r\n */\r\n async getProductCategories(productRootCategoryId?: number | string) {\r\n return this.products.getCategories(productRootCategoryId);\r\n }\r\n\r\n /**\r\n * 10. 便捷方法:获取产品标签列表\r\n */\r\n async getProductTags(productTagAlias?: string) {\r\n return this.products.getTags(productTagAlias);\r\n }\r\n\r\n /**\r\n * 11. 便捷方法:根据分类ID获取产品列表\r\n */\r\n async getProductsByCategory(categoryId: number | number[], options?: ProductsByCategoryOptions) {\r\n return this.products.getProductsByCategory(categoryId, options);\r\n }\r\n\r\n /**\r\n * 12. 便捷方法:根据标签ID获取产品列表\r\n */\r\n async getProductsByTag(tagId: number | number[], options?: ProductsByTagOptions) {\r\n return this.products.getProductsByTag(tagId, options);\r\n }\r\n\r\n /**\r\n * 13. 便捷方法:根据分类ID获取该分类的层级路径\r\n */\r\n async getProductCategoryPath(categoryId: number) {\r\n return this.products.getCategoryPath(categoryId);\r\n }\r\n\r\n /**\r\n * 14. 便捷方法:获取指定分类ID下的子分类\r\n */\r\n async getProductSubCategories(categoryId: number, options?: {\r\n recursive?: boolean;\r\n includeCurrent?: boolean;\r\n maxDepth?: number;\r\n }) {\r\n return this.products.getSubCategories(categoryId, options);\r\n }\r\n\r\n /**\r\n * 15. 便捷方法:获取税费信息\r\n */\r\n async getTaxInfo() {\r\n return this.products.getTaxInfo();\r\n }\r\n\r\n /**\r\n * 16. 便捷方法:获取运费信息\r\n */\r\n async getShippingInfo() {\r\n return this.products.getShippingInfo();\r\n }\r\n\r\n /**\r\n * 17. 便捷方法:获取区域信息\r\n */\r\n async getRegions() {\r\n return this.products.getRegions();\r\n }\r\n\r\n /**\r\n * 18. 便捷方法:获取全局设置列表\r\n */\r\n async getSettings(settingAlias?: string) {\r\n return this.settings.getSettings(settingAlias);\r\n }\r\n\r\n /**\r\n * 19. 便捷方法:获取指定设置\r\n */\r\n async getSetting(key: string) {\r\n return this.settings.getSetting(key);\r\n }\r\n}\r\n\r\n// 导出所有类型和模块\r\nexport * from './core/types';\r\nexport * from './core/client';\r\nexport * from './modules/articles';\r\nexport * from './modules/products';\r\nexport * from './modules/settings';\r\n\r\n// 默认导出\r\nexport default GT6SDK; "],"names":[],"mappings":"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"}
|
package/dist/gt6-sdk.esm.js
CHANGED
@@ -654,15 +654,47 @@ class ProductsAPI {
|
|
654
654
|
}
|
655
655
|
}
|
656
656
|
|
657
|
+
class SettingsAPI {
|
658
|
+
constructor(client) {
|
659
|
+
this.client = client;
|
660
|
+
}
|
661
|
+
/**
|
662
|
+
* 获取全局设置列表
|
663
|
+
* 根据平台ID和别名获取所有全局设置
|
664
|
+
*/
|
665
|
+
async getSettings(settingAlias) {
|
666
|
+
const config = this.client.getConfig();
|
667
|
+
const alias = settingAlias || config.settingAlias || '01';
|
668
|
+
const response = await this.client.request(`/settings/platform-${config.platformId}-${alias}.json`);
|
669
|
+
return response.settings;
|
670
|
+
}
|
671
|
+
/**
|
672
|
+
* 获取指定设置
|
673
|
+
* 根据设置key直接获取单个设置
|
674
|
+
*/
|
675
|
+
async getSetting(key) {
|
676
|
+
const config = this.client.getConfig();
|
677
|
+
try {
|
678
|
+
const response = await this.client.request(`/settings/platform-${config.platformId}-${key}.json`);
|
679
|
+
return response.setting;
|
680
|
+
}
|
681
|
+
catch (error) {
|
682
|
+
console.warn(`Failed to fetch setting ${key}:`, error);
|
683
|
+
return null;
|
684
|
+
}
|
685
|
+
}
|
686
|
+
}
|
687
|
+
|
657
688
|
/**
|
658
689
|
* GT6 SDK 主类
|
659
|
-
*
|
690
|
+
* 提供文章、产品和设置管理相关的所有功能
|
660
691
|
*/
|
661
692
|
class GT6SDK {
|
662
693
|
constructor(config) {
|
663
694
|
const client = new GT6Client(config);
|
664
695
|
this.articles = new ArticlesAPI(client);
|
665
696
|
this.products = new ProductsAPI(client);
|
697
|
+
this.settings = new SettingsAPI(client);
|
666
698
|
}
|
667
699
|
/**
|
668
700
|
* 获取客户端实例(用于高级用法)
|
@@ -784,7 +816,19 @@ class GT6SDK {
|
|
784
816
|
async getRegions() {
|
785
817
|
return this.products.getRegions();
|
786
818
|
}
|
819
|
+
/**
|
820
|
+
* 18. 便捷方法:获取全局设置列表
|
821
|
+
*/
|
822
|
+
async getSettings(settingAlias) {
|
823
|
+
return this.settings.getSettings(settingAlias);
|
824
|
+
}
|
825
|
+
/**
|
826
|
+
* 19. 便捷方法:获取指定设置
|
827
|
+
*/
|
828
|
+
async getSetting(key) {
|
829
|
+
return this.settings.getSetting(key);
|
830
|
+
}
|
787
831
|
}
|
788
832
|
|
789
|
-
export { ArticlesAPI, GT6Client, GT6Error, GT6SDK, ProductsAPI, GT6SDK as default };
|
833
|
+
export { ArticlesAPI, GT6Client, GT6Error, GT6SDK, ProductsAPI, SettingsAPI, GT6SDK as default };
|
790
834
|
//# sourceMappingURL=gt6-sdk.esm.js.map
|
package/dist/gt6-sdk.esm.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"gt6-sdk.esm.js","sources":["../src/core/types.ts","../src/core/client.ts","../src/modules/articles.ts","../src/modules/products.ts","../src/index.ts"],"sourcesContent":["// 基础配置类型\nexport interface GT6Config {\n baseUrl: string;\n apiKey?: string;\n platformId: string | number;\n rootCategoryId?: string | number;\n tagAlias?: string;\n // 产品专用配置字段\n productRootCategoryId?: string | number;\n productTagAlias?: string;\n version?: string;\n timeout?: number;\n cache?: {\n enabled: boolean;\n ttl: number; // 缓存时间(毫秒)\n };\n}\n\n// 分类相关类型\nexport interface Category {\n categoryId: number;\n categoryName: string;\n categoryDescription: string;\n metaKeywords: string;\n status: number;\n parentId: number;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n articleIds: number[];\n children: Category[];\n}\n\nexport interface CategoryResponse {\n platformId: number;\n categories: Category[];\n generatedAt: string;\n}\n\n// 产品分类相关类型\nexport interface ProductCategory {\n categoryId: number;\n categoryName: string;\n categoryDescription: string;\n metaKeywords: string;\n status: number;\n parentId: number;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n productIds: number[];\n children: ProductCategory[];\n}\n\nexport interface ProductCategoryResponse {\n platformId: number;\n categories: ProductCategory[];\n generatedAt: string;\n}\n\n// 标签相关类型\nexport interface Tag {\n tagId: number;\n tagName: string;\n type: number;\n platformId: number;\n aliases: string;\n createdAt: any;\n articleIds: number[];\n}\n\nexport interface TagResponse {\n platformId: number;\n tags: Tag[];\n generatedAt: string;\n}\n\n// 产品标签相关类型\nexport interface ProductTag {\n tagId: number;\n tagName: string;\n type: number;\n platformId: number;\n aliases: string;\n createdAt: any;\n productIds: number[];\n}\n\nexport interface ProductTagResponse {\n platformId: number;\n tags: ProductTag[];\n generatedAt: string;\n}\n\n// 文章元数据类型\nexport interface ArticleMetaData {\n metaId: number;\n articleId: number;\n metaKey: string;\n metaValue: string;\n type: number;\n templateId: number;\n groupId: number;\n sortOrder: number;\n aiId: number;\n fieldId: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 文章图片类型\nexport interface ArticleImage {\n imageId: number;\n articleId: number;\n metaId: number | null;\n imageUrl: string;\n imageType: 'cover' | 'content';\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 文章类型\nexport interface Article {\n articleId: number;\n title: string;\n content: string;\n status: 'published' | 'draft' | 'archived';\n publishedAt: string;\n templateId: number;\n aiId: number;\n platformId: number;\n isVisible: boolean;\n displayTemplate: string;\n createdAt: any;\n updatedAt: any;\n categories: Category[];\n tags: Tag[];\n metaData: ArticleMetaData[];\n images: ArticleImage[];\n generatedAt: string;\n}\n\n// 产品详情类型\nexport interface ProductDetail {\n detailId: number;\n productId: number;\n detailKey: string;\n detailValue: string;\n extraInfo: string;\n}\n\n// 产品选项值类型\nexport interface ProductOptionValue {\n valueId: number;\n optionId: number;\n value: string;\n description: string;\n priceAdjustment: string;\n createdAt: any;\n updatedAt: any;\n}\n\n// 产品选项类型\nexport interface ProductOption {\n optionId: number;\n productId: number;\n optionName: string;\n createdAt: any;\n updatedAt: any;\n values: ProductOptionValue[];\n}\n\n// 产品变体类型\nexport interface ProductVariant {\n variantId: number;\n productId: number;\n sku: string;\n price: string;\n stock: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 产品图片类型\nexport interface ProductImage {\n imageId: number;\n productId: number;\n productDetailId: number | null;\n optionValueId: number | null;\n imageUrl: string;\n imageType: 'gallery' | 'thumbnail' | 'detail';\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 地区类型\nexport interface Region {\n regionId: number;\n platformId: number;\n regionCode: string;\n regionName: string;\n regionLevel: string;\n parentId: number;\n children?: Region[];\n}\n\n// 运费规则类型\nexport interface ShippingRule {\n ruleId: number;\n templateId: number;\n regionId: number;\n firstUnit: string;\n firstFee: string;\n additionalUnit: string;\n additionalFee: string;\n conditionType: string;\n conditionValue: string | null;\n createTime: any;\n updateTime: any;\n}\n\n// 运费模板类型\nexport interface ShippingTemplate {\n templateId: number;\n platformId: number;\n templateName: string;\n defaultFee: string;\n freeShippingLimit: string;\n createTime: any;\n updateTime: any;\n rules: ShippingRule[];\n}\n\n// 运费响应类型\nexport interface ShippingResponse {\n platformId: number;\n templates: ShippingTemplate[];\n generatedAt: string;\n}\n\n// 税费规则类型\nexport interface TaxRule {\n ruleId: number;\n templateId: number;\n regionId: number;\n taxRate: string;\n createTime: any;\n updateTime: any;\n}\n\n// 税费模板类型\nexport interface TaxTemplate {\n templateId: number;\n platformId: number;\n templateName: string;\n defaultTaxRate: string;\n createTime: any;\n updateTime: any;\n rules: TaxRule[];\n}\n\n// 税费响应类型\nexport interface TaxResponse {\n platformId: number;\n templates: TaxTemplate[];\n generatedAt: string;\n}\n\n// 订阅类型\nexport interface Subscription {\n subscriptionId: number;\n productId: number;\n billingCycle: number;\n billingCycleUnit: string;\n billingCycleCount: number;\n setupFee: string;\n trialDays: number;\n trialPrice: string;\n renewalDiscount: string;\n autoRenew: boolean;\n allowCancel: boolean;\n cancelPolicy: string;\n refundPolicy: string;\n maxCycles: number;\n gracePeriod: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 批发类型\nexport interface Wholesale {\n wholesaleId: number;\n productId: number;\n minOrderQuantity: number;\n maxOrderQuantity: number;\n allowMixedVariants: boolean;\n showRetailPrice: boolean;\n wholesaleDescription: string;\n paymentTerms: string;\n shippingTerms: string;\n}\n\n// 价格层级类型\nexport interface PriceTier {\n tierId: number;\n wholesaleId: number;\n userLevel: number | null;\n minQuantity: number;\n maxQuantity: number;\n priceType: number;\n priceValue: string;\n sortOrder: number;\n}\n\n// 变体价格类型\nexport interface VariantPrice {\n id: number;\n wholesaleId: number;\n tierId: number;\n variantId: number;\n priceType: number;\n priceValue: string;\n}\n\n// 众筹类型\nexport interface Crowdfunding {\n crowdfundingId: number;\n productId: number;\n targetAmount: string;\n currentAmount: string;\n supporterCount: number;\n startTime: any;\n endTime: any;\n status: number;\n minSupportAmount: string;\n allowOverFunding: boolean;\n overFundingLimit: string;\n createdAt: any;\n updatedAt: any;\n}\n\n// 众筹奖励类型\nexport interface Reward {\n rewardId: number;\n crowdfundingId: number;\n variantId: number;\n rewardName: string;\n rewardDescription: string;\n rewardAmount: string;\n rewardLimit: number;\n rewardClaimed: number;\n shippingRequired: boolean;\n estimatedDeliveryTime: any;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 众筹更新类型\nexport interface CrowdfundingUpdate {\n updateId: number;\n crowdfundingId: number;\n updateTitle: string;\n updateContent: string;\n isPublic: boolean;\n updateTime: any;\n}\n\n// 众筹FAQ类型\nexport interface CrowdfundingFAQ {\n faqId: number;\n crowdfundingId: number;\n question: string;\n answer: string;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 简单理财类型\nexport interface SimpleFinance {\n simpleFinanceId: number;\n productId: number;\n calculationPeriod: number;\n calculationPeriodUnit: string;\n interestRate: string;\n minInvestment: string;\n maxInvestment: string;\n minInvestmentUnit: string;\n maxInvestmentUnit: string;\n investmentPeriod: number;\n investmentPeriodUnit: string;\n}\n\n// 产品类型\nexport interface Product {\n productId: number;\n productName: string;\n description: string;\n metaKeywords: string;\n price: string;\n priceChangePercent: string;\n status: number;\n productType: number;\n native: number;\n shared: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n oldProductId: number | null;\n details: ProductDetail[];\n options: ProductOption[];\n variants: ProductVariant[];\n images: ProductImage[];\n categories: ProductCategory[];\n tags: ProductTag[];\n regions: Region[];\n shippingTemplates: ShippingTemplate[];\n taxTemplates: TaxTemplate[];\n subscription?: Subscription; // 当productType为2时存在\n wholesale?: Wholesale; // 当productType为3时存在\n priceTiers?: PriceTier[]; // 当productType为3时存在\n variantPrices?: VariantPrice[]; // 当productType为3时存在\n crowdfunding?: Crowdfunding; // 当productType为4时存在\n rewards?: Reward[]; // 当productType为4时存在\n updates?: CrowdfundingUpdate[]; // 当productType为4时存在\n faqs?: CrowdfundingFAQ[]; // 当productType为4时存在\n simpleFinance?: SimpleFinance; // 当productType为5时存在\n generatedAt: string;\n}\n\n// 文章列表项类型(简化版)\nexport interface ArticleListItem {\n articleId: number;\n title: string;\n status: string;\n publishedAt: string;\n categories: Category[];\n tags: Tag[];\n coverImage?: string;\n}\n\n// 产品列表项类型(简化版)\nexport interface ProductListItem {\n productId: number;\n productName: string;\n price: string;\n status: number;\n categories: ProductCategory[];\n tags: ProductTag[];\n coverImage?: string;\n}\n\n// 错误类型\nexport class GT6Error extends Error {\n constructor(\n message: string,\n public statusCode?: number\n ) {\n super(message);\n this.name = 'GT6Error';\n }\n}\n\n// 查询参数类型\nexport interface ArticleQueryParams {\n categoryId?: number;\n tagId?: number;\n status?: string;\n limit?: number;\n offset?: number;\n sortBy?: 'publishedAt' | 'title' | 'sortOrder';\n sortOrder?: 'asc' | 'desc';\n}\n\n// 产品查询参数类型\nexport interface ProductQueryParams {\n categoryId?: number;\n tagId?: number;\n status?: number;\n limit?: number;\n offset?: number;\n sortBy?: 'price' | 'productName' | 'sortOrder';\n sortOrder?: 'asc' | 'desc';\n}\n\n// 根据标签获取文章的选项类型\nexport interface ArticlesByTagOptions {\n page?: number;\n limit?: number;\n status?: 'published' | 'draft' | 'archived';\n tagAlias?: string;\n}\n\n// 根据分类获取文章的选项类型\nexport interface ArticlesByCategoryOptions {\n page?: number;\n limit?: number;\n status?: 'published' | 'draft' | 'archived';\n}\n\n// 根据标签获取产品的选项类型\nexport interface ProductsByTagOptions {\n page?: number;\n limit?: number;\n status?: number;\n productTagAlias?: string;\n}\n\n// 根据分类获取产品的选项类型\nexport interface ProductsByCategoryOptions {\n page?: number;\n limit?: number;\n status?: number;\n}\n\n// 文章统计类型\nexport interface ArticleStats {\n total: number;\n published: number;\n draft: number;\n archived: number;\n byCategory: Record<number, number>;\n byTag: Record<number, number>;\n}\n\n// 产品统计类型\nexport interface ProductStats {\n total: number;\n active: number;\n inactive: number;\n byCategory: Record<number, number>;\n byTag: Record<number, number>;\n}\n\nexport interface GT6Response<T> {\n success: boolean;\n data: T;\n error?: string;\n}\n\nexport interface ArticleResponse {\n article: Article;\n}\n\nexport interface ProductResponse {\n product: Product;\n}\n\nexport interface CategoryResponse {\n categories: Category[];\n}\n\nexport interface ProductCategoryResponse {\n categories: ProductCategory[];\n}\n\nexport interface TagResponse {\n tags: Tag[];\n}\n\nexport interface ProductTagResponse {\n tags: ProductTag[];\n}\n\n// 区域响应类型\nexport interface RegionResponse {\n platformId: number;\n regions: Region[];\n generatedAt: string;\n} ","import { GT6Config, GT6Error } from './types';\r\n\r\nexport class GT6Client {\r\n private config: GT6Config;\r\n private cache: Map<string, { data: any; timestamp: number }>;\r\n\r\n constructor(config: GT6Config) {\r\n this.config = {\r\n timeout: 10000,\r\n cache: {\r\n enabled: true,\r\n ttl: 300000 // 5分钟默认缓存\r\n },\r\n ...config\r\n };\r\n this.cache = new Map();\r\n }\r\n\r\n /**\r\n * 发起HTTP请求\r\n */\r\n async request<T>(endpoint: string, options: RequestInit = {}): Promise<T> {\r\n const url = `${this.config.baseUrl}${endpoint}`;\r\n const cacheKey = `${options.method || 'GET'}:${url}`;\r\n\r\n // 检查缓存(只对GET请求缓存)\r\n if (this.config.cache?.enabled && options.method !== 'POST' && options.method !== 'PUT' && options.method !== 'DELETE') {\r\n const cached = this.cache.get(cacheKey);\r\n if (cached && Date.now() - cached.timestamp < this.config.cache.ttl) {\r\n return cached.data;\r\n }\r\n }\r\n\r\n try {\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\r\n\r\n const response = await fetch(url, {\r\n ...options,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...options.headers,\r\n },\r\n signal: controller.signal\r\n });\r\n\r\n clearTimeout(timeoutId);\r\n\r\n if (!response.ok) {\r\n throw new GT6Error(\r\n `HTTP ${response.status}: ${response.statusText}`,\r\n response.status\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n // 更新缓存(只对GET请求缓存)\r\n if (this.config.cache?.enabled && options.method !== 'POST' && options.method !== 'PUT' && options.method !== 'DELETE') {\r\n this.cache.set(cacheKey, { data, timestamp: Date.now() });\r\n }\r\n\r\n return data;\r\n } catch (error: any) {\r\n if (error instanceof GT6Error) {\r\n throw error;\r\n }\r\n \r\n if (error.name === 'AbortError') {\r\n throw new GT6Error('Request timeout', 408);\r\n }\r\n \r\n throw new GT6Error(`Network error: ${error.message}`);\r\n }\r\n }\r\n\r\n /**\r\n * 获取配置\r\n */\r\n getConfig(): GT6Config {\r\n return { ...this.config };\r\n }\r\n\r\n /**\r\n * 清除缓存\r\n */\r\n clearCache(): void {\r\n this.cache.clear();\r\n }\r\n\r\n /**\r\n * 获取缓存统计\r\n */\r\n getCacheStats(): { size: number; entries: Array<{ key: string; age: number }> } {\r\n const entries = Array.from(this.cache.entries()).map(([key, value]) => ({\r\n key,\r\n age: Date.now() - value.timestamp\r\n }));\r\n\r\n return {\r\n size: this.cache.size,\r\n entries\r\n };\r\n }\r\n} ","import { GT6Client } from '../core/client';\r\nimport {\r\n Article,\r\n Category,\r\n Tag,\r\n CategoryResponse,\r\n TagResponse,\r\n ArticlesByTagOptions,\r\n ArticlesByCategoryOptions\r\n} from '../core/types';\r\n\r\nexport class ArticlesAPI {\r\n constructor(private client: GT6Client) {}\r\n\r\n /**\r\n * 1. 根据文章ID获取文章详情\r\n */\r\n async getArticle(articleId: number | string): Promise<Article> {\r\n return this.client.request<Article>(`/articles/${articleId}.json`);\r\n }\r\n\r\n /**\r\n * 2. 获取文章分类列表\r\n */\r\n async getCategories(rootCategoryId?: number | string): Promise<Category[]> {\r\n const config = this.client.getConfig();\r\n const categoryId = rootCategoryId || config.rootCategoryId || '671920';\r\n \r\n const response = await this.client.request<CategoryResponse>(\r\n `/article-categories/platform-${config.platformId}-root-${categoryId}.json`\r\n );\r\n \r\n return response.categories;\r\n }\r\n\r\n /**\r\n * 3. 获取文章标签列表\r\n */\r\n async getTags(tagAlias?: string): Promise<Tag[]> {\r\n const config = this.client.getConfig();\r\n const alias = tagAlias || config.tagAlias || '001';\r\n \r\n const response = await this.client.request<TagResponse>(\r\n `/article-tags/platform-${config.platformId}-${alias}.json`\r\n );\r\n \r\n return response.tags;\r\n }\r\n\r\n /**\r\n * 4. 根据分类ID获取文章列表\r\n * 支持单个分类ID或分类ID数组\r\n */\r\n async getArticlesByCategory(categoryId: number | number[], options?: ArticlesByCategoryOptions): Promise<{\r\n articles: Article[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 将单个分类ID转换为数组\r\n const categoryIds = Array.isArray(categoryId) ? categoryId : [categoryId];\r\n \r\n // 收集所有指定分类下的文章ID\r\n const allArticleIds: number[] = [];\r\n \r\n categoryIds.forEach(id => {\r\n const targetCategory = categories.find(cat => cat.categoryId === id);\r\n if (targetCategory) {\r\n allArticleIds.push(...targetCategory.articleIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueArticleIds = [...new Set(allArticleIds)];\r\n \r\n if (uniqueArticleIds.length === 0) {\r\n return {\r\n articles: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedArticleIds = uniqueArticleIds.slice(offset, offset + limit);\r\n \r\n // 获取文章详情\r\n const articles = await Promise.all(\r\n paginatedArticleIds.map(articleId => this.getArticle(articleId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredArticles = articles;\r\n if (options?.status) {\r\n filteredArticles = articles.filter(article => article.status === options.status);\r\n }\r\n \r\n return {\r\n articles: filteredArticles,\r\n total: uniqueArticleIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 5. 根据标签ID获取文章列表\r\n * 支持单个标签ID或标签ID数组\r\n */\r\n async getArticlesByTag(tagId: number | number[], options?: ArticlesByTagOptions): Promise<{\r\n articles: Article[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取标签数据,传递tagAlias参数\r\n const tags = await this.getTags(options?.tagAlias);\r\n \r\n // 将单个标签ID转换为数组\r\n const tagIds = Array.isArray(tagId) ? tagId : [tagId];\r\n \r\n // 收集所有指定标签下的文章ID\r\n const allArticleIds: number[] = [];\r\n \r\n tagIds.forEach(id => {\r\n const targetTag = tags.find(tag => tag.tagId === id);\r\n if (targetTag) {\r\n allArticleIds.push(...targetTag.articleIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueArticleIds = [...new Set(allArticleIds)];\r\n \r\n if (uniqueArticleIds.length === 0) {\r\n return {\r\n articles: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedArticleIds = uniqueArticleIds.slice(offset, offset + limit);\r\n \r\n // 获取文章详情\r\n const articles = await Promise.all(\r\n paginatedArticleIds.map(articleId => this.getArticle(articleId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredArticles = articles;\r\n if (options?.status) {\r\n filteredArticles = articles.filter(article => article.status === options.status);\r\n }\r\n \r\n return {\r\n articles: filteredArticles,\r\n total: uniqueArticleIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 6. 根据分类ID获取该分类的层级路径\r\n * 用于前端面包屑导航\r\n */\r\n async getCategoryPath(categoryId: number): Promise<{\r\n path: Category[];\r\n currentCategory: Category | null;\r\n breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }>;\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 查找目标分类\r\n const targetCategory = categories.find(cat => cat.categoryId === categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n path: [],\r\n currentCategory: null,\r\n breadcrumbs: []\r\n };\r\n }\r\n \r\n // 构建分类路径\r\n const path: Category[] = [];\r\n const breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }> = [];\r\n \r\n // 递归查找父分类\r\n const buildPath = (currentCategory: Category, level: number = 0): void => {\r\n // 将当前分类添加到路径开头(因为我们要从根到叶子构建)\r\n path.unshift(currentCategory);\r\n breadcrumbs.unshift({\r\n categoryId: currentCategory.categoryId,\r\n categoryName: currentCategory.categoryName,\r\n level\r\n });\r\n \r\n // 如果有父分类,继续递归\r\n if (currentCategory.parentId && currentCategory.parentId !== 0) {\r\n const parentCategory = categories.find(cat => cat.categoryId === currentCategory.parentId);\r\n if (parentCategory) {\r\n buildPath(parentCategory, level + 1);\r\n }\r\n }\r\n };\r\n \r\n // 从目标分类开始构建路径\r\n buildPath(targetCategory);\r\n \r\n return {\r\n path,\r\n currentCategory: targetCategory,\r\n breadcrumbs\r\n };\r\n }\r\n\r\n /**\r\n * 7. 获取指定分类ID下的子分类\r\n * 支持递归获取所有层级的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean; // 是否递归获取所有层级的子分类\r\n includeCurrent?: boolean; // 是否包含当前分类\r\n maxDepth?: number; // 最大递归深度,默认不限制\r\n }): Promise<{\r\n subCategories: Category[];\r\n currentCategory: Category | null;\r\n total: number;\r\n depth: number; // 实际递归深度\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 查找目标分类\r\n const targetCategory = categories.find(cat => cat.categoryId === categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n subCategories: [],\r\n currentCategory: null,\r\n total: 0,\r\n depth: 0\r\n };\r\n }\r\n \r\n const subCategories: Category[] = [];\r\n let maxDepth = options?.maxDepth || Infinity;\r\n let actualDepth = 0;\r\n \r\n // 递归获取子分类的函数\r\n const collectSubCategories = (parentId: number, currentDepth: number = 0): void => {\r\n if (currentDepth >= maxDepth) {\r\n return;\r\n }\r\n \r\n // 查找直接子分类\r\n const children = categories.filter(cat => cat.parentId === parentId);\r\n \r\n children.forEach(child => {\r\n subCategories.push(child);\r\n \r\n // 如果需要递归且未达到最大深度,继续查找子分类\r\n if (options?.recursive && currentDepth < maxDepth - 1) {\r\n collectSubCategories(child.categoryId, currentDepth + 1);\r\n }\r\n });\r\n \r\n // 更新实际深度\r\n actualDepth = Math.max(actualDepth, currentDepth);\r\n };\r\n \r\n // 开始收集子分类\r\n collectSubCategories(categoryId);\r\n \r\n // 如果需要包含当前分类,添加到结果中\r\n if (options?.includeCurrent) {\r\n subCategories.unshift(targetCategory);\r\n }\r\n \r\n return {\r\n subCategories,\r\n currentCategory: targetCategory,\r\n total: subCategories.length,\r\n depth: actualDepth\r\n };\r\n }\r\n} ","import { GT6Client } from '../core/client';\r\nimport {\r\n Product,\r\n ProductCategory,\r\n ProductTag,\r\n ProductCategoryResponse,\r\n ProductTagResponse,\r\n ProductsByTagOptions,\r\n ProductsByCategoryOptions,\r\n TaxResponse,\r\n ShippingResponse,\r\n RegionResponse\r\n} from '../core/types';\r\n\r\nexport class ProductsAPI {\r\n constructor(private client: GT6Client) {}\r\n\r\n /**\r\n * 1. 根据产品ID获取产品详情\r\n */\r\n async getProduct(productId: number | string): Promise<Product> {\r\n const product = await this.client.request<Product>(`/products/${productId}.json`);\r\n \r\n // 检查产品是否有销售区域和税费模板\r\n if (product.regions && product.regions.length > 0 && \r\n product.taxTemplates && product.taxTemplates.length > 0) {\r\n try {\r\n // 获取税费信息\r\n const taxInfo = await this.getTaxInfo();\r\n \r\n // 为每个税费模板添加规则\r\n product.taxTemplates = product.taxTemplates.map(template => {\r\n const matchingTemplate = taxInfo.templates.find(t => t.templateId === template.templateId);\r\n if (matchingTemplate) {\r\n // 过滤出产品可销售区域的规则\r\n const productRegionIds = product.regions.map(r => r.regionId);\r\n const applicableRules = matchingTemplate.rules.filter(rule => \r\n productRegionIds.includes(rule.regionId)\r\n );\r\n \r\n return {\r\n ...template,\r\n rules: applicableRules\r\n };\r\n }\r\n return template;\r\n });\r\n } catch (error) {\r\n // 如果获取税费信息失败,不影响产品详情返回\r\n console.warn('Failed to fetch tax info:', error);\r\n }\r\n }\r\n \r\n // 检查产品是否有销售区域和运费模板\r\n if (product.regions && product.regions.length > 0 && \r\n product.shippingTemplates && product.shippingTemplates.length > 0) {\r\n try {\r\n // 获取运费信息\r\n const shippingInfo = await this.getShippingInfo();\r\n \r\n // 为每个运费模板添加规则\r\n product.shippingTemplates = product.shippingTemplates.map(template => {\r\n const matchingTemplate = shippingInfo.templates.find(t => t.templateId === template.templateId);\r\n if (matchingTemplate) {\r\n // 过滤出产品可销售区域的规则\r\n const productRegionIds = product.regions.map(r => r.regionId);\r\n const applicableRules = matchingTemplate.rules.filter(rule => \r\n productRegionIds.includes(rule.regionId)\r\n );\r\n \r\n return {\r\n ...template,\r\n rules: applicableRules\r\n };\r\n }\r\n return template;\r\n });\r\n } catch (error) {\r\n // 如果获取运费信息失败,不影响产品详情返回\r\n console.warn('Failed to fetch shipping info:', error);\r\n }\r\n }\r\n \r\n return product;\r\n }\r\n\r\n /**\r\n * 2. 获取产品分类列表\r\n */\r\n async getCategories(productRootCategoryId?: number | string): Promise<ProductCategory[]> {\r\n const config = this.client.getConfig();\r\n const categoryId = productRootCategoryId || config.productRootCategoryId || '277233';\r\n \r\n const response = await this.client.request<ProductCategoryResponse>(\r\n `/product-categories/platform-${config.platformId}-root-${categoryId}.json`\r\n );\r\n \r\n return response.categories;\r\n }\r\n\r\n /**\r\n * 3. 获取产品标签列表\r\n */\r\n async getTags(productTagAlias?: string): Promise<ProductTag[]> {\r\n const config = this.client.getConfig();\r\n const alias = productTagAlias || config.productTagAlias || '01';\r\n \r\n const response = await this.client.request<ProductTagResponse>(\r\n `/product-tags/platform-${config.platformId}-${alias}.json`\r\n );\r\n \r\n return response.tags;\r\n }\r\n\r\n /**\r\n * 4. 根据分类ID获取产品列表\r\n * 支持单个分类ID或分类ID数组\r\n */\r\n async getProductsByCategory(categoryId: number | number[], options?: ProductsByCategoryOptions): Promise<{\r\n products: Product[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 将单个分类ID转换为数组\r\n const categoryIds = Array.isArray(categoryId) ? categoryId : [categoryId];\r\n \r\n // 收集所有指定分类下的产品ID\r\n const allProductIds: number[] = [];\r\n \r\n categoryIds.forEach(id => {\r\n const targetCategory = findCategoryById(categories, id);\r\n if (targetCategory) {\r\n allProductIds.push(...targetCategory.productIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueProductIds = [...new Set(allProductIds)];\r\n \r\n if (uniqueProductIds.length === 0) {\r\n return {\r\n products: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedProductIds = uniqueProductIds.slice(offset, offset + limit);\r\n \r\n // 获取产品详情\r\n const products = await Promise.all(\r\n paginatedProductIds.map(productId => this.getProduct(productId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredProducts = products;\r\n if (options?.status !== undefined) {\r\n filteredProducts = products.filter(product => product.status === options.status);\r\n }\r\n \r\n return {\r\n products: filteredProducts,\r\n total: uniqueProductIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 5. 根据标签ID获取产品列表\r\n * 支持单个标签ID或标签ID数组\r\n */\r\n async getProductsByTag(tagId: number | number[], options?: ProductsByTagOptions): Promise<{\r\n products: Product[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取标签数据,传递productTagAlias参数\r\n const tags = await this.getTags(options?.productTagAlias);\r\n \r\n // 将单个标签ID转换为数组\r\n const tagIds = Array.isArray(tagId) ? tagId : [tagId];\r\n \r\n // 收集所有指定标签下的产品ID\r\n const allProductIds: number[] = [];\r\n \r\n tagIds.forEach(id => {\r\n const targetTag = tags.find(tag => tag.tagId === id);\r\n if (targetTag) {\r\n allProductIds.push(...targetTag.productIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueProductIds = [...new Set(allProductIds)];\r\n \r\n if (uniqueProductIds.length === 0) {\r\n return {\r\n products: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedProductIds = uniqueProductIds.slice(offset, offset + limit);\r\n \r\n // 获取产品详情\r\n const products = await Promise.all(\r\n paginatedProductIds.map(productId => this.getProduct(productId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredProducts = products;\r\n if (options?.status !== undefined) {\r\n filteredProducts = products.filter(product => product.status === options.status);\r\n }\r\n \r\n return {\r\n products: filteredProducts,\r\n total: uniqueProductIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 6. 根据分类ID获取该分类的层级路径\r\n * 用于前端面包屑导航\r\n */\r\n async getCategoryPath(categoryId: number): Promise<{\r\n path: ProductCategory[];\r\n currentCategory: ProductCategory | null;\r\n breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }>;\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找目标分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 查找目标分类(包括子分类)\r\n const targetCategory = findCategoryById(categories, categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n path: [],\r\n currentCategory: null,\r\n breadcrumbs: []\r\n };\r\n }\r\n \r\n // 构建分类路径\r\n const path: ProductCategory[] = [];\r\n const breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }> = [];\r\n \r\n // 递归查找父分类的函数\r\n const buildPath = (currentCategory: ProductCategory, level: number = 0): void => {\r\n // 将当前分类添加到路径开头(因为我们要从根到叶子构建)\r\n path.unshift(currentCategory);\r\n breadcrumbs.unshift({\r\n categoryId: currentCategory.categoryId,\r\n categoryName: currentCategory.categoryName,\r\n level\r\n });\r\n \r\n // 如果有父分类,继续递归\r\n if (currentCategory.parentId && currentCategory.parentId !== 0) {\r\n const parentCategory = findCategoryById(categories, currentCategory.parentId);\r\n if (parentCategory) {\r\n buildPath(parentCategory, level + 1);\r\n }\r\n }\r\n };\r\n \r\n // 从目标分类开始构建路径\r\n buildPath(targetCategory);\r\n \r\n return {\r\n path,\r\n currentCategory: targetCategory,\r\n breadcrumbs\r\n };\r\n }\r\n\r\n /**\r\n * 7. 获取指定分类ID下的子分类\r\n * 支持递归获取所有层级的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean; // 是否递归获取所有层级的子分类\r\n includeCurrent?: boolean; // 是否包含当前分类\r\n maxDepth?: number; // 最大递归深度,默认不限制\r\n }): Promise<{\r\n subCategories: ProductCategory[];\r\n currentCategory: ProductCategory | null;\r\n total: number;\r\n depth: number; // 实际递归深度\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 查找目标分类(包括子分类)\r\n const targetCategory = findCategoryById(categories, categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n subCategories: [],\r\n currentCategory: null,\r\n total: 0,\r\n depth: 0\r\n };\r\n }\r\n \r\n const subCategories: ProductCategory[] = [];\r\n let maxDepth = options?.maxDepth || Infinity;\r\n let actualDepth = 0;\r\n \r\n // 递归获取子分类的函数\r\n const collectSubCategories = (parentId: number, currentDepth: number = 0): void => {\r\n if (currentDepth >= maxDepth) {\r\n return;\r\n }\r\n \r\n // 递归查找直接子分类\r\n const findChildren = (cats: ProductCategory[], parentId: number): ProductCategory[] => {\r\n const children: ProductCategory[] = [];\r\n for (const cat of cats) {\r\n if (cat.parentId === parentId) {\r\n children.push(cat);\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n children.push(...findChildren(cat.children, parentId));\r\n }\r\n }\r\n return children;\r\n };\r\n \r\n const children = findChildren(categories, parentId);\r\n \r\n children.forEach(child => {\r\n subCategories.push(child);\r\n \r\n // 如果需要递归且未达到最大深度,继续查找子分类\r\n if (options?.recursive && currentDepth < maxDepth - 1) {\r\n collectSubCategories(child.categoryId, currentDepth + 1);\r\n }\r\n });\r\n \r\n // 更新实际深度\r\n actualDepth = Math.max(actualDepth, currentDepth);\r\n };\r\n \r\n // 开始收集子分类\r\n collectSubCategories(categoryId);\r\n \r\n // 如果需要包含当前分类,添加到结果中\r\n if (options?.includeCurrent) {\r\n subCategories.unshift(targetCategory);\r\n }\r\n \r\n return {\r\n subCategories,\r\n currentCategory: targetCategory,\r\n total: subCategories.length,\r\n depth: actualDepth\r\n };\r\n }\r\n\r\n /**\r\n * 8. 获取税费信息\r\n * 获取平台的所有税费模板和规则\r\n */\r\n async getTaxInfo(): Promise<TaxResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<TaxResponse>(`/tax/platform-${config.platformId}.json`);\r\n }\r\n\r\n /**\r\n * 9. 获取运费信息\r\n * 获取平台的所有运费模板和规则\r\n */\r\n async getShippingInfo(): Promise<ShippingResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<ShippingResponse>(`/shipping/platform-${config.platformId}.json`);\r\n }\r\n\r\n /**\r\n * 10. 获取区域信息\r\n * 获取平台的所有区域信息,包括层级结构\r\n */\r\n async getRegions(): Promise<RegionResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<RegionResponse>(`/regions/platform-${config.platformId}.json`);\r\n }\r\n} ","import { GT6Client } from './core/client';\r\nimport { ArticlesAPI } from './modules/articles';\r\nimport { ProductsAPI } from './modules/products';\r\nimport { \r\n GT6Config, \r\n ArticlesByCategoryOptions, \r\n ArticlesByTagOptions,\r\n ProductsByCategoryOptions,\r\n ProductsByTagOptions\r\n} from './core/types';\r\n\r\n/**\r\n * GT6 SDK 主类\r\n * 提供文章和产品管理相关的所有功能\r\n */\r\nexport class GT6SDK {\r\n public articles: ArticlesAPI;\r\n public products: ProductsAPI;\r\n\r\n constructor(config: GT6Config) {\r\n const client = new GT6Client(config);\r\n this.articles = new ArticlesAPI(client);\r\n this.products = new ProductsAPI(client);\r\n }\r\n\r\n /**\r\n * 获取客户端实例(用于高级用法)\r\n */\r\n getClient(): GT6Client {\r\n return (this.articles as any).client;\r\n }\r\n\r\n /**\r\n * 清除所有缓存\r\n */\r\n clearCache(): void {\r\n this.getClient().clearCache();\r\n }\r\n\r\n /**\r\n * 获取缓存统计信息\r\n */\r\n getCacheStats() {\r\n return this.getClient().getCacheStats();\r\n }\r\n\r\n /**\r\n * 1. 便捷方法:根据文章ID获取文章详情\r\n */\r\n async getArticle(articleId: number | string) {\r\n return this.articles.getArticle(articleId);\r\n }\r\n\r\n /**\r\n * 2. 便捷方法:获取文章分类列表\r\n */\r\n async getCategories(rootCategoryId?: number | string) {\r\n return this.articles.getCategories(rootCategoryId);\r\n }\r\n\r\n /**\r\n * 3. 便捷方法:获取文章标签列表\r\n */\r\n async getTags(tagAlias?: string) {\r\n return this.articles.getTags(tagAlias);\r\n }\r\n\r\n /**\r\n * 4. 便捷方法:根据分类ID获取文章列表\r\n */\r\n async getArticlesByCategory(categoryId: number | number[], options?: ArticlesByCategoryOptions) {\r\n return this.articles.getArticlesByCategory(categoryId, options);\r\n }\r\n\r\n /**\r\n * 5. 便捷方法:根据标签ID获取文章列表\r\n */\r\n async getArticlesByTag(tagId: number | number[], options?: ArticlesByTagOptions) {\r\n return this.articles.getArticlesByTag(tagId, options);\r\n }\r\n\r\n /**\r\n * 6. 便捷方法:根据分类ID获取该分类的层级路径\r\n */\r\n async getCategoryPath(categoryId: number) {\r\n return this.articles.getCategoryPath(categoryId);\r\n }\r\n\r\n /**\r\n * 7. 便捷方法:获取指定分类ID下的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean;\r\n includeCurrent?: boolean;\r\n maxDepth?: number;\r\n }) {\r\n return this.articles.getSubCategories(categoryId, options);\r\n }\r\n\r\n /**\r\n * 8. 便捷方法:根据产品ID获取产品详情\r\n */\r\n async getProduct(productId: number | string) {\r\n return this.products.getProduct(productId);\r\n }\r\n\r\n /**\r\n * 9. 便捷方法:获取产品分类列表\r\n */\r\n async getProductCategories(productRootCategoryId?: number | string) {\r\n return this.products.getCategories(productRootCategoryId);\r\n }\r\n\r\n /**\r\n * 10. 便捷方法:获取产品标签列表\r\n */\r\n async getProductTags(productTagAlias?: string) {\r\n return this.products.getTags(productTagAlias);\r\n }\r\n\r\n /**\r\n * 11. 便捷方法:根据分类ID获取产品列表\r\n */\r\n async getProductsByCategory(categoryId: number | number[], options?: ProductsByCategoryOptions) {\r\n return this.products.getProductsByCategory(categoryId, options);\r\n }\r\n\r\n /**\r\n * 12. 便捷方法:根据标签ID获取产品列表\r\n */\r\n async getProductsByTag(tagId: number | number[], options?: ProductsByTagOptions) {\r\n return this.products.getProductsByTag(tagId, options);\r\n }\r\n\r\n /**\r\n * 13. 便捷方法:根据分类ID获取该分类的层级路径\r\n */\r\n async getProductCategoryPath(categoryId: number) {\r\n return this.products.getCategoryPath(categoryId);\r\n }\r\n\r\n /**\r\n * 14. 便捷方法:获取指定分类ID下的子分类\r\n */\r\n async getProductSubCategories(categoryId: number, options?: {\r\n recursive?: boolean;\r\n includeCurrent?: boolean;\r\n maxDepth?: number;\r\n }) {\r\n return this.products.getSubCategories(categoryId, options);\r\n }\r\n\r\n /**\r\n * 15. 便捷方法:获取税费信息\r\n */\r\n async getTaxInfo() {\r\n return this.products.getTaxInfo();\r\n }\r\n\r\n /**\r\n * 16. 便捷方法:获取运费信息\r\n */\r\n async getShippingInfo() {\r\n return this.products.getShippingInfo();\r\n }\r\n\r\n /**\r\n * 17. 便捷方法:获取区域信息\r\n */\r\n async getRegions() {\r\n return this.products.getRegions();\r\n }\r\n}\r\n\r\n// 导出所有类型和模块\r\nexport * from './core/types';\r\nexport * from './core/client';\r\nexport * from './modules/articles';\r\nexport * from './modules/products';\r\n\r\n// 默认导出\r\nexport default GT6SDK; "],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"gt6-sdk.esm.js","sources":["../src/core/types.ts","../src/core/client.ts","../src/modules/articles.ts","../src/modules/products.ts","../src/modules/settings.ts","../src/index.ts"],"sourcesContent":["// 基础配置类型\nexport interface GT6Config {\n baseUrl: string;\n apiKey?: string;\n platformId: string | number;\n rootCategoryId?: string | number;\n tagAlias?: string;\n // 产品专用配置字段\n productRootCategoryId?: string | number;\n productTagAlias?: string;\n // 设置专用配置字段\n settingAlias?: string;\n version?: string;\n timeout?: number;\n cache?: {\n enabled: boolean;\n ttl: number; // 缓存时间(毫秒)\n };\n}\n\n// 分类相关类型\nexport interface Category {\n categoryId: number;\n categoryName: string;\n categoryDescription: string;\n metaKeywords: string;\n status: number;\n parentId: number;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n articleIds: number[];\n children: Category[];\n}\n\nexport interface CategoryResponse {\n platformId: number;\n categories: Category[];\n generatedAt: string;\n}\n\n// 产品分类相关类型\nexport interface ProductCategory {\n categoryId: number;\n categoryName: string;\n categoryDescription: string;\n metaKeywords: string;\n status: number;\n parentId: number;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n productIds: number[];\n children: ProductCategory[];\n}\n\nexport interface ProductCategoryResponse {\n platformId: number;\n categories: ProductCategory[];\n generatedAt: string;\n}\n\n// 标签相关类型\nexport interface Tag {\n tagId: number;\n tagName: string;\n type: number;\n platformId: number;\n aliases: string;\n createdAt: any;\n articleIds: number[];\n}\n\nexport interface TagResponse {\n platformId: number;\n tags: Tag[];\n generatedAt: string;\n}\n\n// 产品标签相关类型\nexport interface ProductTag {\n tagId: number;\n tagName: string;\n type: number;\n platformId: number;\n aliases: string;\n createdAt: any;\n productIds: number[];\n}\n\nexport interface ProductTagResponse {\n platformId: number;\n tags: ProductTag[];\n generatedAt: string;\n}\n\n// 文章元数据类型\nexport interface ArticleMetaData {\n metaId: number;\n articleId: number;\n metaKey: string;\n metaValue: string;\n type: number;\n templateId: number;\n groupId: number;\n sortOrder: number;\n aiId: number;\n fieldId: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 文章图片类型\nexport interface ArticleImage {\n imageId: number;\n articleId: number;\n metaId: number | null;\n imageUrl: string;\n imageType: 'cover' | 'content';\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 文章类型\nexport interface Article {\n articleId: number;\n title: string;\n content: string;\n status: 'published' | 'draft' | 'archived';\n publishedAt: string;\n templateId: number;\n aiId: number;\n platformId: number;\n isVisible: boolean;\n displayTemplate: string;\n createdAt: any;\n updatedAt: any;\n categories: Category[];\n tags: Tag[];\n metaData: ArticleMetaData[];\n images: ArticleImage[];\n generatedAt: string;\n}\n\n// 产品详情类型\nexport interface ProductDetail {\n detailId: number;\n productId: number;\n detailKey: string;\n detailValue: string;\n extraInfo: string;\n}\n\n// 产品选项值类型\nexport interface ProductOptionValue {\n valueId: number;\n optionId: number;\n value: string;\n description: string;\n priceAdjustment: string;\n createdAt: any;\n updatedAt: any;\n}\n\n// 产品选项类型\nexport interface ProductOption {\n optionId: number;\n productId: number;\n optionName: string;\n createdAt: any;\n updatedAt: any;\n values: ProductOptionValue[];\n}\n\n// 产品变体类型\nexport interface ProductVariant {\n variantId: number;\n productId: number;\n sku: string;\n price: string;\n stock: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 产品图片类型\nexport interface ProductImage {\n imageId: number;\n productId: number;\n productDetailId: number | null;\n optionValueId: number | null;\n imageUrl: string;\n imageType: 'gallery' | 'thumbnail' | 'detail';\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 地区类型\nexport interface Region {\n regionId: number;\n platformId: number;\n regionCode: string;\n regionName: string;\n regionLevel: string;\n parentId: number;\n children?: Region[];\n}\n\n// 运费规则类型\nexport interface ShippingRule {\n ruleId: number;\n templateId: number;\n regionId: number;\n firstUnit: string;\n firstFee: string;\n additionalUnit: string;\n additionalFee: string;\n conditionType: string;\n conditionValue: string | null;\n createTime: any;\n updateTime: any;\n}\n\n// 运费模板类型\nexport interface ShippingTemplate {\n templateId: number;\n platformId: number;\n templateName: string;\n defaultFee: string;\n freeShippingLimit: string;\n createTime: any;\n updateTime: any;\n rules: ShippingRule[];\n}\n\n// 运费响应类型\nexport interface ShippingResponse {\n platformId: number;\n templates: ShippingTemplate[];\n generatedAt: string;\n}\n\n// 税费规则类型\nexport interface TaxRule {\n ruleId: number;\n templateId: number;\n regionId: number;\n taxRate: string;\n createTime: any;\n updateTime: any;\n}\n\n// 税费模板类型\nexport interface TaxTemplate {\n templateId: number;\n platformId: number;\n templateName: string;\n defaultTaxRate: string;\n createTime: any;\n updateTime: any;\n rules: TaxRule[];\n}\n\n// 税费响应类型\nexport interface TaxResponse {\n platformId: number;\n templates: TaxTemplate[];\n generatedAt: string;\n}\n\n// 订阅类型\nexport interface Subscription {\n subscriptionId: number;\n productId: number;\n billingCycle: number;\n billingCycleUnit: string;\n billingCycleCount: number;\n setupFee: string;\n trialDays: number;\n trialPrice: string;\n renewalDiscount: string;\n autoRenew: boolean;\n allowCancel: boolean;\n cancelPolicy: string;\n refundPolicy: string;\n maxCycles: number;\n gracePeriod: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 批发类型\nexport interface Wholesale {\n wholesaleId: number;\n productId: number;\n minOrderQuantity: number;\n maxOrderQuantity: number;\n allowMixedVariants: boolean;\n showRetailPrice: boolean;\n wholesaleDescription: string;\n paymentTerms: string;\n shippingTerms: string;\n}\n\n// 价格层级类型\nexport interface PriceTier {\n tierId: number;\n wholesaleId: number;\n userLevel: number | null;\n minQuantity: number;\n maxQuantity: number;\n priceType: number;\n priceValue: string;\n sortOrder: number;\n}\n\n// 变体价格类型\nexport interface VariantPrice {\n id: number;\n wholesaleId: number;\n tierId: number;\n variantId: number;\n priceType: number;\n priceValue: string;\n}\n\n// 众筹类型\nexport interface Crowdfunding {\n crowdfundingId: number;\n productId: number;\n targetAmount: string;\n currentAmount: string;\n supporterCount: number;\n startTime: any;\n endTime: any;\n status: number;\n minSupportAmount: string;\n allowOverFunding: boolean;\n overFundingLimit: string;\n createdAt: any;\n updatedAt: any;\n}\n\n// 众筹奖励类型\nexport interface Reward {\n rewardId: number;\n crowdfundingId: number;\n variantId: number;\n rewardName: string;\n rewardDescription: string;\n rewardAmount: string;\n rewardLimit: number;\n rewardClaimed: number;\n shippingRequired: boolean;\n estimatedDeliveryTime: any;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 众筹更新类型\nexport interface CrowdfundingUpdate {\n updateId: number;\n crowdfundingId: number;\n updateTitle: string;\n updateContent: string;\n isPublic: boolean;\n updateTime: any;\n}\n\n// 众筹FAQ类型\nexport interface CrowdfundingFAQ {\n faqId: number;\n crowdfundingId: number;\n question: string;\n answer: string;\n sortOrder: number;\n createdAt: any;\n updatedAt: any;\n}\n\n// 简单理财类型\nexport interface SimpleFinance {\n simpleFinanceId: number;\n productId: number;\n calculationPeriod: number;\n calculationPeriodUnit: string;\n interestRate: string;\n minInvestment: string;\n maxInvestment: string;\n minInvestmentUnit: string;\n maxInvestmentUnit: string;\n investmentPeriod: number;\n investmentPeriodUnit: string;\n}\n\n// 产品类型\nexport interface Product {\n productId: number;\n productName: string;\n description: string;\n metaKeywords: string;\n price: string;\n priceChangePercent: string;\n status: number;\n productType: number;\n native: number;\n shared: number;\n createdAt: any;\n updatedAt: any;\n platformId: number;\n oldProductId: number | null;\n details: ProductDetail[];\n options: ProductOption[];\n variants: ProductVariant[];\n images: ProductImage[];\n categories: ProductCategory[];\n tags: ProductTag[];\n regions: Region[];\n shippingTemplates: ShippingTemplate[];\n taxTemplates: TaxTemplate[];\n subscription?: Subscription; // 当productType为2时存在\n wholesale?: Wholesale; // 当productType为3时存在\n priceTiers?: PriceTier[]; // 当productType为3时存在\n variantPrices?: VariantPrice[]; // 当productType为3时存在\n crowdfunding?: Crowdfunding; // 当productType为4时存在\n rewards?: Reward[]; // 当productType为4时存在\n updates?: CrowdfundingUpdate[]; // 当productType为4时存在\n faqs?: CrowdfundingFAQ[]; // 当productType为4时存在\n simpleFinance?: SimpleFinance; // 当productType为5时存在\n generatedAt: string;\n}\n\n// 文章列表项类型(简化版)\nexport interface ArticleListItem {\n articleId: number;\n title: string;\n status: string;\n publishedAt: string;\n categories: Category[];\n tags: Tag[];\n coverImage?: string;\n}\n\n// 产品列表项类型(简化版)\nexport interface ProductListItem {\n productId: number;\n productName: string;\n price: string;\n status: number;\n categories: ProductCategory[];\n tags: ProductTag[];\n coverImage?: string;\n}\n\n// 错误类型\nexport class GT6Error extends Error {\n constructor(\n message: string,\n public statusCode?: number\n ) {\n super(message);\n this.name = 'GT6Error';\n }\n}\n\n// 查询参数类型\nexport interface ArticleQueryParams {\n categoryId?: number;\n tagId?: number;\n status?: string;\n limit?: number;\n offset?: number;\n sortBy?: 'publishedAt' | 'title' | 'sortOrder';\n sortOrder?: 'asc' | 'desc';\n}\n\n// 产品查询参数类型\nexport interface ProductQueryParams {\n categoryId?: number;\n tagId?: number;\n status?: number;\n limit?: number;\n offset?: number;\n sortBy?: 'price' | 'productName' | 'sortOrder';\n sortOrder?: 'asc' | 'desc';\n}\n\n// 根据标签获取文章的选项类型\nexport interface ArticlesByTagOptions {\n page?: number;\n limit?: number;\n status?: 'published' | 'draft' | 'archived';\n tagAlias?: string;\n}\n\n// 根据分类获取文章的选项类型\nexport interface ArticlesByCategoryOptions {\n page?: number;\n limit?: number;\n status?: 'published' | 'draft' | 'archived';\n}\n\n// 根据标签获取产品的选项类型\nexport interface ProductsByTagOptions {\n page?: number;\n limit?: number;\n status?: number;\n productTagAlias?: string;\n}\n\n// 根据分类获取产品的选项类型\nexport interface ProductsByCategoryOptions {\n page?: number;\n limit?: number;\n status?: number;\n}\n\n// 文章统计类型\nexport interface ArticleStats {\n total: number;\n published: number;\n draft: number;\n archived: number;\n byCategory: Record<number, number>;\n byTag: Record<number, number>;\n}\n\n// 产品统计类型\nexport interface ProductStats {\n total: number;\n active: number;\n inactive: number;\n byCategory: Record<number, number>;\n byTag: Record<number, number>;\n}\n\nexport interface GT6Response<T> {\n success: boolean;\n data: T;\n error?: string;\n}\n\nexport interface ArticleResponse {\n article: Article;\n}\n\nexport interface ProductResponse {\n product: Product;\n}\n\nexport interface CategoryResponse {\n categories: Category[];\n}\n\nexport interface ProductCategoryResponse {\n categories: ProductCategory[];\n}\n\nexport interface TagResponse {\n tags: Tag[];\n}\n\nexport interface ProductTagResponse {\n tags: ProductTag[];\n}\n\n// 区域响应类型\nexport interface RegionResponse {\n platformId: number;\n regions: Region[];\n generatedAt: string;\n}\n\n// 全局设置相关类型\nexport interface Setting {\n key: string;\n value: string | number | object;\n type: 'text' | 'number' | 'json' | 'html' | 'image';\n label: string;\n description: string;\n isSystem: boolean;\n sortOrder: number;\n aliases: string;\n}\n\nexport interface SettingsResponse {\n platformId: number;\n aliases: string;\n settings: Setting[];\n generatedAt: string;\n}\n\nexport interface SettingResponse {\n platformId: number;\n setting: Setting;\n generatedAt: string;\n}\n\nexport interface SettingsOptions {\n settingAlias?: string;\n} ","import { GT6Config, GT6Error } from './types';\r\n\r\nexport class GT6Client {\r\n private config: GT6Config;\r\n private cache: Map<string, { data: any; timestamp: number }>;\r\n\r\n constructor(config: GT6Config) {\r\n this.config = {\r\n timeout: 10000,\r\n cache: {\r\n enabled: true,\r\n ttl: 300000 // 5分钟默认缓存\r\n },\r\n ...config\r\n };\r\n this.cache = new Map();\r\n }\r\n\r\n /**\r\n * 发起HTTP请求\r\n */\r\n async request<T>(endpoint: string, options: RequestInit = {}): Promise<T> {\r\n const url = `${this.config.baseUrl}${endpoint}`;\r\n const cacheKey = `${options.method || 'GET'}:${url}`;\r\n\r\n // 检查缓存(只对GET请求缓存)\r\n if (this.config.cache?.enabled && options.method !== 'POST' && options.method !== 'PUT' && options.method !== 'DELETE') {\r\n const cached = this.cache.get(cacheKey);\r\n if (cached && Date.now() - cached.timestamp < this.config.cache.ttl) {\r\n return cached.data;\r\n }\r\n }\r\n\r\n try {\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\r\n\r\n const response = await fetch(url, {\r\n ...options,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...options.headers,\r\n },\r\n signal: controller.signal\r\n });\r\n\r\n clearTimeout(timeoutId);\r\n\r\n if (!response.ok) {\r\n throw new GT6Error(\r\n `HTTP ${response.status}: ${response.statusText}`,\r\n response.status\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n // 更新缓存(只对GET请求缓存)\r\n if (this.config.cache?.enabled && options.method !== 'POST' && options.method !== 'PUT' && options.method !== 'DELETE') {\r\n this.cache.set(cacheKey, { data, timestamp: Date.now() });\r\n }\r\n\r\n return data;\r\n } catch (error: any) {\r\n if (error instanceof GT6Error) {\r\n throw error;\r\n }\r\n \r\n if (error.name === 'AbortError') {\r\n throw new GT6Error('Request timeout', 408);\r\n }\r\n \r\n throw new GT6Error(`Network error: ${error.message}`);\r\n }\r\n }\r\n\r\n /**\r\n * 获取配置\r\n */\r\n getConfig(): GT6Config {\r\n return { ...this.config };\r\n }\r\n\r\n /**\r\n * 清除缓存\r\n */\r\n clearCache(): void {\r\n this.cache.clear();\r\n }\r\n\r\n /**\r\n * 获取缓存统计\r\n */\r\n getCacheStats(): { size: number; entries: Array<{ key: string; age: number }> } {\r\n const entries = Array.from(this.cache.entries()).map(([key, value]) => ({\r\n key,\r\n age: Date.now() - value.timestamp\r\n }));\r\n\r\n return {\r\n size: this.cache.size,\r\n entries\r\n };\r\n }\r\n} ","import { GT6Client } from '../core/client';\r\nimport {\r\n Article,\r\n Category,\r\n Tag,\r\n CategoryResponse,\r\n TagResponse,\r\n ArticlesByTagOptions,\r\n ArticlesByCategoryOptions\r\n} from '../core/types';\r\n\r\nexport class ArticlesAPI {\r\n constructor(private client: GT6Client) {}\r\n\r\n /**\r\n * 1. 根据文章ID获取文章详情\r\n */\r\n async getArticle(articleId: number | string): Promise<Article> {\r\n return this.client.request<Article>(`/articles/${articleId}.json`);\r\n }\r\n\r\n /**\r\n * 2. 获取文章分类列表\r\n */\r\n async getCategories(rootCategoryId?: number | string): Promise<Category[]> {\r\n const config = this.client.getConfig();\r\n const categoryId = rootCategoryId || config.rootCategoryId || '671920';\r\n \r\n const response = await this.client.request<CategoryResponse>(\r\n `/article-categories/platform-${config.platformId}-root-${categoryId}.json`\r\n );\r\n \r\n return response.categories;\r\n }\r\n\r\n /**\r\n * 3. 获取文章标签列表\r\n */\r\n async getTags(tagAlias?: string): Promise<Tag[]> {\r\n const config = this.client.getConfig();\r\n const alias = tagAlias || config.tagAlias || '001';\r\n \r\n const response = await this.client.request<TagResponse>(\r\n `/article-tags/platform-${config.platformId}-${alias}.json`\r\n );\r\n \r\n return response.tags;\r\n }\r\n\r\n /**\r\n * 4. 根据分类ID获取文章列表\r\n * 支持单个分类ID或分类ID数组\r\n */\r\n async getArticlesByCategory(categoryId: number | number[], options?: ArticlesByCategoryOptions): Promise<{\r\n articles: Article[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 将单个分类ID转换为数组\r\n const categoryIds = Array.isArray(categoryId) ? categoryId : [categoryId];\r\n \r\n // 收集所有指定分类下的文章ID\r\n const allArticleIds: number[] = [];\r\n \r\n categoryIds.forEach(id => {\r\n const targetCategory = categories.find(cat => cat.categoryId === id);\r\n if (targetCategory) {\r\n allArticleIds.push(...targetCategory.articleIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueArticleIds = [...new Set(allArticleIds)];\r\n \r\n if (uniqueArticleIds.length === 0) {\r\n return {\r\n articles: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedArticleIds = uniqueArticleIds.slice(offset, offset + limit);\r\n \r\n // 获取文章详情\r\n const articles = await Promise.all(\r\n paginatedArticleIds.map(articleId => this.getArticle(articleId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredArticles = articles;\r\n if (options?.status) {\r\n filteredArticles = articles.filter(article => article.status === options.status);\r\n }\r\n \r\n return {\r\n articles: filteredArticles,\r\n total: uniqueArticleIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 5. 根据标签ID获取文章列表\r\n * 支持单个标签ID或标签ID数组\r\n */\r\n async getArticlesByTag(tagId: number | number[], options?: ArticlesByTagOptions): Promise<{\r\n articles: Article[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取标签数据,传递tagAlias参数\r\n const tags = await this.getTags(options?.tagAlias);\r\n \r\n // 将单个标签ID转换为数组\r\n const tagIds = Array.isArray(tagId) ? tagId : [tagId];\r\n \r\n // 收集所有指定标签下的文章ID\r\n const allArticleIds: number[] = [];\r\n \r\n tagIds.forEach(id => {\r\n const targetTag = tags.find(tag => tag.tagId === id);\r\n if (targetTag) {\r\n allArticleIds.push(...targetTag.articleIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueArticleIds = [...new Set(allArticleIds)];\r\n \r\n if (uniqueArticleIds.length === 0) {\r\n return {\r\n articles: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedArticleIds = uniqueArticleIds.slice(offset, offset + limit);\r\n \r\n // 获取文章详情\r\n const articles = await Promise.all(\r\n paginatedArticleIds.map(articleId => this.getArticle(articleId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredArticles = articles;\r\n if (options?.status) {\r\n filteredArticles = articles.filter(article => article.status === options.status);\r\n }\r\n \r\n return {\r\n articles: filteredArticles,\r\n total: uniqueArticleIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 6. 根据分类ID获取该分类的层级路径\r\n * 用于前端面包屑导航\r\n */\r\n async getCategoryPath(categoryId: number): Promise<{\r\n path: Category[];\r\n currentCategory: Category | null;\r\n breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }>;\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 查找目标分类\r\n const targetCategory = categories.find(cat => cat.categoryId === categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n path: [],\r\n currentCategory: null,\r\n breadcrumbs: []\r\n };\r\n }\r\n \r\n // 构建分类路径\r\n const path: Category[] = [];\r\n const breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }> = [];\r\n \r\n // 递归查找父分类\r\n const buildPath = (currentCategory: Category, level: number = 0): void => {\r\n // 将当前分类添加到路径开头(因为我们要从根到叶子构建)\r\n path.unshift(currentCategory);\r\n breadcrumbs.unshift({\r\n categoryId: currentCategory.categoryId,\r\n categoryName: currentCategory.categoryName,\r\n level\r\n });\r\n \r\n // 如果有父分类,继续递归\r\n if (currentCategory.parentId && currentCategory.parentId !== 0) {\r\n const parentCategory = categories.find(cat => cat.categoryId === currentCategory.parentId);\r\n if (parentCategory) {\r\n buildPath(parentCategory, level + 1);\r\n }\r\n }\r\n };\r\n \r\n // 从目标分类开始构建路径\r\n buildPath(targetCategory);\r\n \r\n return {\r\n path,\r\n currentCategory: targetCategory,\r\n breadcrumbs\r\n };\r\n }\r\n\r\n /**\r\n * 7. 获取指定分类ID下的子分类\r\n * 支持递归获取所有层级的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean; // 是否递归获取所有层级的子分类\r\n includeCurrent?: boolean; // 是否包含当前分类\r\n maxDepth?: number; // 最大递归深度,默认不限制\r\n }): Promise<{\r\n subCategories: Category[];\r\n currentCategory: Category | null;\r\n total: number;\r\n depth: number; // 实际递归深度\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 查找目标分类\r\n const targetCategory = categories.find(cat => cat.categoryId === categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n subCategories: [],\r\n currentCategory: null,\r\n total: 0,\r\n depth: 0\r\n };\r\n }\r\n \r\n const subCategories: Category[] = [];\r\n let maxDepth = options?.maxDepth || Infinity;\r\n let actualDepth = 0;\r\n \r\n // 递归获取子分类的函数\r\n const collectSubCategories = (parentId: number, currentDepth: number = 0): void => {\r\n if (currentDepth >= maxDepth) {\r\n return;\r\n }\r\n \r\n // 查找直接子分类\r\n const children = categories.filter(cat => cat.parentId === parentId);\r\n \r\n children.forEach(child => {\r\n subCategories.push(child);\r\n \r\n // 如果需要递归且未达到最大深度,继续查找子分类\r\n if (options?.recursive && currentDepth < maxDepth - 1) {\r\n collectSubCategories(child.categoryId, currentDepth + 1);\r\n }\r\n });\r\n \r\n // 更新实际深度\r\n actualDepth = Math.max(actualDepth, currentDepth);\r\n };\r\n \r\n // 开始收集子分类\r\n collectSubCategories(categoryId);\r\n \r\n // 如果需要包含当前分类,添加到结果中\r\n if (options?.includeCurrent) {\r\n subCategories.unshift(targetCategory);\r\n }\r\n \r\n return {\r\n subCategories,\r\n currentCategory: targetCategory,\r\n total: subCategories.length,\r\n depth: actualDepth\r\n };\r\n }\r\n} ","import { GT6Client } from '../core/client';\r\nimport {\r\n Product,\r\n ProductCategory,\r\n ProductTag,\r\n ProductCategoryResponse,\r\n ProductTagResponse,\r\n ProductsByTagOptions,\r\n ProductsByCategoryOptions,\r\n TaxResponse,\r\n ShippingResponse,\r\n RegionResponse\r\n} from '../core/types';\r\n\r\nexport class ProductsAPI {\r\n constructor(private client: GT6Client) {}\r\n\r\n /**\r\n * 1. 根据产品ID获取产品详情\r\n */\r\n async getProduct(productId: number | string): Promise<Product> {\r\n const product = await this.client.request<Product>(`/products/${productId}.json`);\r\n \r\n // 检查产品是否有销售区域和税费模板\r\n if (product.regions && product.regions.length > 0 && \r\n product.taxTemplates && product.taxTemplates.length > 0) {\r\n try {\r\n // 获取税费信息\r\n const taxInfo = await this.getTaxInfo();\r\n \r\n // 为每个税费模板添加规则\r\n product.taxTemplates = product.taxTemplates.map(template => {\r\n const matchingTemplate = taxInfo.templates.find(t => t.templateId === template.templateId);\r\n if (matchingTemplate) {\r\n // 过滤出产品可销售区域的规则\r\n const productRegionIds = product.regions.map(r => r.regionId);\r\n const applicableRules = matchingTemplate.rules.filter(rule => \r\n productRegionIds.includes(rule.regionId)\r\n );\r\n \r\n return {\r\n ...template,\r\n rules: applicableRules\r\n };\r\n }\r\n return template;\r\n });\r\n } catch (error) {\r\n // 如果获取税费信息失败,不影响产品详情返回\r\n console.warn('Failed to fetch tax info:', error);\r\n }\r\n }\r\n \r\n // 检查产品是否有销售区域和运费模板\r\n if (product.regions && product.regions.length > 0 && \r\n product.shippingTemplates && product.shippingTemplates.length > 0) {\r\n try {\r\n // 获取运费信息\r\n const shippingInfo = await this.getShippingInfo();\r\n \r\n // 为每个运费模板添加规则\r\n product.shippingTemplates = product.shippingTemplates.map(template => {\r\n const matchingTemplate = shippingInfo.templates.find(t => t.templateId === template.templateId);\r\n if (matchingTemplate) {\r\n // 过滤出产品可销售区域的规则\r\n const productRegionIds = product.regions.map(r => r.regionId);\r\n const applicableRules = matchingTemplate.rules.filter(rule => \r\n productRegionIds.includes(rule.regionId)\r\n );\r\n \r\n return {\r\n ...template,\r\n rules: applicableRules\r\n };\r\n }\r\n return template;\r\n });\r\n } catch (error) {\r\n // 如果获取运费信息失败,不影响产品详情返回\r\n console.warn('Failed to fetch shipping info:', error);\r\n }\r\n }\r\n \r\n return product;\r\n }\r\n\r\n /**\r\n * 2. 获取产品分类列表\r\n */\r\n async getCategories(productRootCategoryId?: number | string): Promise<ProductCategory[]> {\r\n const config = this.client.getConfig();\r\n const categoryId = productRootCategoryId || config.productRootCategoryId || '277233';\r\n \r\n const response = await this.client.request<ProductCategoryResponse>(\r\n `/product-categories/platform-${config.platformId}-root-${categoryId}.json`\r\n );\r\n \r\n return response.categories;\r\n }\r\n\r\n /**\r\n * 3. 获取产品标签列表\r\n */\r\n async getTags(productTagAlias?: string): Promise<ProductTag[]> {\r\n const config = this.client.getConfig();\r\n const alias = productTagAlias || config.productTagAlias || '01';\r\n \r\n const response = await this.client.request<ProductTagResponse>(\r\n `/product-tags/platform-${config.platformId}-${alias}.json`\r\n );\r\n \r\n return response.tags;\r\n }\r\n\r\n /**\r\n * 4. 根据分类ID获取产品列表\r\n * 支持单个分类ID或分类ID数组\r\n */\r\n async getProductsByCategory(categoryId: number | number[], options?: ProductsByCategoryOptions): Promise<{\r\n products: Product[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 将单个分类ID转换为数组\r\n const categoryIds = Array.isArray(categoryId) ? categoryId : [categoryId];\r\n \r\n // 收集所有指定分类下的产品ID\r\n const allProductIds: number[] = [];\r\n \r\n categoryIds.forEach(id => {\r\n const targetCategory = findCategoryById(categories, id);\r\n if (targetCategory) {\r\n allProductIds.push(...targetCategory.productIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueProductIds = [...new Set(allProductIds)];\r\n \r\n if (uniqueProductIds.length === 0) {\r\n return {\r\n products: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedProductIds = uniqueProductIds.slice(offset, offset + limit);\r\n \r\n // 获取产品详情\r\n const products = await Promise.all(\r\n paginatedProductIds.map(productId => this.getProduct(productId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredProducts = products;\r\n if (options?.status !== undefined) {\r\n filteredProducts = products.filter(product => product.status === options.status);\r\n }\r\n \r\n return {\r\n products: filteredProducts,\r\n total: uniqueProductIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 5. 根据标签ID获取产品列表\r\n * 支持单个标签ID或标签ID数组\r\n */\r\n async getProductsByTag(tagId: number | number[], options?: ProductsByTagOptions): Promise<{\r\n products: Product[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n }> {\r\n // 获取标签数据,传递productTagAlias参数\r\n const tags = await this.getTags(options?.productTagAlias);\r\n \r\n // 将单个标签ID转换为数组\r\n const tagIds = Array.isArray(tagId) ? tagId : [tagId];\r\n \r\n // 收集所有指定标签下的产品ID\r\n const allProductIds: number[] = [];\r\n \r\n tagIds.forEach(id => {\r\n const targetTag = tags.find(tag => tag.tagId === id);\r\n if (targetTag) {\r\n allProductIds.push(...targetTag.productIds);\r\n }\r\n });\r\n \r\n // 去重\r\n const uniqueProductIds = [...new Set(allProductIds)];\r\n \r\n if (uniqueProductIds.length === 0) {\r\n return {\r\n products: [],\r\n total: 0,\r\n page: options?.page || 1,\r\n limit: options?.limit || 10\r\n };\r\n }\r\n \r\n // 应用分页\r\n const page = options?.page || 1;\r\n const limit = options?.limit || 10;\r\n const offset = (page - 1) * limit;\r\n const paginatedProductIds = uniqueProductIds.slice(offset, offset + limit);\r\n \r\n // 获取产品详情\r\n const products = await Promise.all(\r\n paginatedProductIds.map(productId => this.getProduct(productId))\r\n );\r\n \r\n // 应用状态过滤\r\n let filteredProducts = products;\r\n if (options?.status !== undefined) {\r\n filteredProducts = products.filter(product => product.status === options.status);\r\n }\r\n \r\n return {\r\n products: filteredProducts,\r\n total: uniqueProductIds.length,\r\n page,\r\n limit\r\n };\r\n }\r\n\r\n /**\r\n * 6. 根据分类ID获取该分类的层级路径\r\n * 用于前端面包屑导航\r\n */\r\n async getCategoryPath(categoryId: number): Promise<{\r\n path: ProductCategory[];\r\n currentCategory: ProductCategory | null;\r\n breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }>;\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找目标分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 查找目标分类(包括子分类)\r\n const targetCategory = findCategoryById(categories, categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n path: [],\r\n currentCategory: null,\r\n breadcrumbs: []\r\n };\r\n }\r\n \r\n // 构建分类路径\r\n const path: ProductCategory[] = [];\r\n const breadcrumbs: Array<{\r\n categoryId: number;\r\n categoryName: string;\r\n level: number;\r\n }> = [];\r\n \r\n // 递归查找父分类的函数\r\n const buildPath = (currentCategory: ProductCategory, level: number = 0): void => {\r\n // 将当前分类添加到路径开头(因为我们要从根到叶子构建)\r\n path.unshift(currentCategory);\r\n breadcrumbs.unshift({\r\n categoryId: currentCategory.categoryId,\r\n categoryName: currentCategory.categoryName,\r\n level\r\n });\r\n \r\n // 如果有父分类,继续递归\r\n if (currentCategory.parentId && currentCategory.parentId !== 0) {\r\n const parentCategory = findCategoryById(categories, currentCategory.parentId);\r\n if (parentCategory) {\r\n buildPath(parentCategory, level + 1);\r\n }\r\n }\r\n };\r\n \r\n // 从目标分类开始构建路径\r\n buildPath(targetCategory);\r\n \r\n return {\r\n path,\r\n currentCategory: targetCategory,\r\n breadcrumbs\r\n };\r\n }\r\n\r\n /**\r\n * 7. 获取指定分类ID下的子分类\r\n * 支持递归获取所有层级的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean; // 是否递归获取所有层级的子分类\r\n includeCurrent?: boolean; // 是否包含当前分类\r\n maxDepth?: number; // 最大递归深度,默认不限制\r\n }): Promise<{\r\n subCategories: ProductCategory[];\r\n currentCategory: ProductCategory | null;\r\n total: number;\r\n depth: number; // 实际递归深度\r\n }> {\r\n // 获取所有分类数据\r\n const categories = await this.getCategories();\r\n \r\n // 递归查找分类的函数\r\n const findCategoryById = (cats: ProductCategory[], targetId: number): ProductCategory | null => {\r\n for (const cat of cats) {\r\n if (cat.categoryId === targetId) {\r\n return cat;\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n const found = findCategoryById(cat.children, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n // 查找目标分类(包括子分类)\r\n const targetCategory = findCategoryById(categories, categoryId);\r\n \r\n if (!targetCategory) {\r\n return {\r\n subCategories: [],\r\n currentCategory: null,\r\n total: 0,\r\n depth: 0\r\n };\r\n }\r\n \r\n const subCategories: ProductCategory[] = [];\r\n let maxDepth = options?.maxDepth || Infinity;\r\n let actualDepth = 0;\r\n \r\n // 递归获取子分类的函数\r\n const collectSubCategories = (parentId: number, currentDepth: number = 0): void => {\r\n if (currentDepth >= maxDepth) {\r\n return;\r\n }\r\n \r\n // 递归查找直接子分类\r\n const findChildren = (cats: ProductCategory[], parentId: number): ProductCategory[] => {\r\n const children: ProductCategory[] = [];\r\n for (const cat of cats) {\r\n if (cat.parentId === parentId) {\r\n children.push(cat);\r\n }\r\n if (cat.children && cat.children.length > 0) {\r\n children.push(...findChildren(cat.children, parentId));\r\n }\r\n }\r\n return children;\r\n };\r\n \r\n const children = findChildren(categories, parentId);\r\n \r\n children.forEach(child => {\r\n subCategories.push(child);\r\n \r\n // 如果需要递归且未达到最大深度,继续查找子分类\r\n if (options?.recursive && currentDepth < maxDepth - 1) {\r\n collectSubCategories(child.categoryId, currentDepth + 1);\r\n }\r\n });\r\n \r\n // 更新实际深度\r\n actualDepth = Math.max(actualDepth, currentDepth);\r\n };\r\n \r\n // 开始收集子分类\r\n collectSubCategories(categoryId);\r\n \r\n // 如果需要包含当前分类,添加到结果中\r\n if (options?.includeCurrent) {\r\n subCategories.unshift(targetCategory);\r\n }\r\n \r\n return {\r\n subCategories,\r\n currentCategory: targetCategory,\r\n total: subCategories.length,\r\n depth: actualDepth\r\n };\r\n }\r\n\r\n /**\r\n * 8. 获取税费信息\r\n * 获取平台的所有税费模板和规则\r\n */\r\n async getTaxInfo(): Promise<TaxResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<TaxResponse>(`/tax/platform-${config.platformId}.json`);\r\n }\r\n\r\n /**\r\n * 9. 获取运费信息\r\n * 获取平台的所有运费模板和规则\r\n */\r\n async getShippingInfo(): Promise<ShippingResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<ShippingResponse>(`/shipping/platform-${config.platformId}.json`);\r\n }\r\n\r\n /**\r\n * 10. 获取区域信息\r\n * 获取平台的所有区域信息,包括层级结构\r\n */\r\n async getRegions(): Promise<RegionResponse> {\r\n const config = this.client.getConfig();\r\n return this.client.request<RegionResponse>(`/regions/platform-${config.platformId}.json`);\r\n }\r\n} ","import { GT6Client } from '../core/client';\r\nimport {\r\n Setting,\r\n SettingsResponse,\r\n SettingResponse\r\n} from '../core/types';\r\n\r\nexport class SettingsAPI {\r\n constructor(private client: GT6Client) {}\r\n\r\n /**\r\n * 获取全局设置列表\r\n * 根据平台ID和别名获取所有全局设置\r\n */\r\n async getSettings(settingAlias?: string): Promise<Setting[]> {\r\n const config = this.client.getConfig();\r\n const alias = settingAlias || config.settingAlias || '01';\r\n \r\n const response = await this.client.request<SettingsResponse>(\r\n `/settings/platform-${config.platformId}-${alias}.json`\r\n );\r\n \r\n return response.settings;\r\n }\r\n\r\n /**\r\n * 获取指定设置\r\n * 根据设置key直接获取单个设置\r\n */\r\n async getSetting(key: string): Promise<Setting | null> {\r\n const config = this.client.getConfig();\r\n \r\n try {\r\n const response = await this.client.request<SettingResponse>(\r\n `/settings/platform-${config.platformId}-${key}.json`\r\n );\r\n \r\n return response.setting;\r\n } catch (error) {\r\n console.warn(`Failed to fetch setting ${key}:`, error);\r\n return null;\r\n }\r\n }\r\n} ","import { GT6Client } from './core/client';\r\nimport { ArticlesAPI } from './modules/articles';\r\nimport { ProductsAPI } from './modules/products';\r\nimport { SettingsAPI } from './modules/settings';\r\nimport { \r\n GT6Config, \r\n ArticlesByCategoryOptions, \r\n ArticlesByTagOptions,\r\n ProductsByCategoryOptions,\r\n ProductsByTagOptions\r\n} from './core/types';\r\n\r\n/**\r\n * GT6 SDK 主类\r\n * 提供文章、产品和设置管理相关的所有功能\r\n */\r\nexport class GT6SDK {\r\n public articles: ArticlesAPI;\r\n public products: ProductsAPI;\r\n public settings: SettingsAPI;\r\n\r\n constructor(config: GT6Config) {\r\n const client = new GT6Client(config);\r\n this.articles = new ArticlesAPI(client);\r\n this.products = new ProductsAPI(client);\r\n this.settings = new SettingsAPI(client);\r\n }\r\n\r\n /**\r\n * 获取客户端实例(用于高级用法)\r\n */\r\n getClient(): GT6Client {\r\n return (this.articles as any).client;\r\n }\r\n\r\n /**\r\n * 清除所有缓存\r\n */\r\n clearCache(): void {\r\n this.getClient().clearCache();\r\n }\r\n\r\n /**\r\n * 获取缓存统计信息\r\n */\r\n getCacheStats() {\r\n return this.getClient().getCacheStats();\r\n }\r\n\r\n /**\r\n * 1. 便捷方法:根据文章ID获取文章详情\r\n */\r\n async getArticle(articleId: number | string) {\r\n return this.articles.getArticle(articleId);\r\n }\r\n\r\n /**\r\n * 2. 便捷方法:获取文章分类列表\r\n */\r\n async getCategories(rootCategoryId?: number | string) {\r\n return this.articles.getCategories(rootCategoryId);\r\n }\r\n\r\n /**\r\n * 3. 便捷方法:获取文章标签列表\r\n */\r\n async getTags(tagAlias?: string) {\r\n return this.articles.getTags(tagAlias);\r\n }\r\n\r\n /**\r\n * 4. 便捷方法:根据分类ID获取文章列表\r\n */\r\n async getArticlesByCategory(categoryId: number | number[], options?: ArticlesByCategoryOptions) {\r\n return this.articles.getArticlesByCategory(categoryId, options);\r\n }\r\n\r\n /**\r\n * 5. 便捷方法:根据标签ID获取文章列表\r\n */\r\n async getArticlesByTag(tagId: number | number[], options?: ArticlesByTagOptions) {\r\n return this.articles.getArticlesByTag(tagId, options);\r\n }\r\n\r\n /**\r\n * 6. 便捷方法:根据分类ID获取该分类的层级路径\r\n */\r\n async getCategoryPath(categoryId: number) {\r\n return this.articles.getCategoryPath(categoryId);\r\n }\r\n\r\n /**\r\n * 7. 便捷方法:获取指定分类ID下的子分类\r\n */\r\n async getSubCategories(categoryId: number, options?: {\r\n recursive?: boolean;\r\n includeCurrent?: boolean;\r\n maxDepth?: number;\r\n }) {\r\n return this.articles.getSubCategories(categoryId, options);\r\n }\r\n\r\n /**\r\n * 8. 便捷方法:根据产品ID获取产品详情\r\n */\r\n async getProduct(productId: number | string) {\r\n return this.products.getProduct(productId);\r\n }\r\n\r\n /**\r\n * 9. 便捷方法:获取产品分类列表\r\n */\r\n async getProductCategories(productRootCategoryId?: number | string) {\r\n return this.products.getCategories(productRootCategoryId);\r\n }\r\n\r\n /**\r\n * 10. 便捷方法:获取产品标签列表\r\n */\r\n async getProductTags(productTagAlias?: string) {\r\n return this.products.getTags(productTagAlias);\r\n }\r\n\r\n /**\r\n * 11. 便捷方法:根据分类ID获取产品列表\r\n */\r\n async getProductsByCategory(categoryId: number | number[], options?: ProductsByCategoryOptions) {\r\n return this.products.getProductsByCategory(categoryId, options);\r\n }\r\n\r\n /**\r\n * 12. 便捷方法:根据标签ID获取产品列表\r\n */\r\n async getProductsByTag(tagId: number | number[], options?: ProductsByTagOptions) {\r\n return this.products.getProductsByTag(tagId, options);\r\n }\r\n\r\n /**\r\n * 13. 便捷方法:根据分类ID获取该分类的层级路径\r\n */\r\n async getProductCategoryPath(categoryId: number) {\r\n return this.products.getCategoryPath(categoryId);\r\n }\r\n\r\n /**\r\n * 14. 便捷方法:获取指定分类ID下的子分类\r\n */\r\n async getProductSubCategories(categoryId: number, options?: {\r\n recursive?: boolean;\r\n includeCurrent?: boolean;\r\n maxDepth?: number;\r\n }) {\r\n return this.products.getSubCategories(categoryId, options);\r\n }\r\n\r\n /**\r\n * 15. 便捷方法:获取税费信息\r\n */\r\n async getTaxInfo() {\r\n return this.products.getTaxInfo();\r\n }\r\n\r\n /**\r\n * 16. 便捷方法:获取运费信息\r\n */\r\n async getShippingInfo() {\r\n return this.products.getShippingInfo();\r\n }\r\n\r\n /**\r\n * 17. 便捷方法:获取区域信息\r\n */\r\n async getRegions() {\r\n return this.products.getRegions();\r\n }\r\n\r\n /**\r\n * 18. 便捷方法:获取全局设置列表\r\n */\r\n async getSettings(settingAlias?: string) {\r\n return this.settings.getSettings(settingAlias);\r\n }\r\n\r\n /**\r\n * 19. 便捷方法:获取指定设置\r\n */\r\n async getSetting(key: string) {\r\n return this.settings.getSetting(key);\r\n }\r\n}\r\n\r\n// 导出所有类型和模块\r\nexport * from './core/types';\r\nexport * from './core/client';\r\nexport * from './modules/articles';\r\nexport * from './modules/products';\r\nexport * from './modules/settings';\r\n\r\n// 默认导出\r\nexport default GT6SDK; "],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
import { GT6Client } from './core/client';
|
2
2
|
import { ArticlesAPI } from './modules/articles';
|
3
3
|
import { ProductsAPI } from './modules/products';
|
4
|
+
import { SettingsAPI } from './modules/settings';
|
4
5
|
import { GT6Config, ArticlesByCategoryOptions, ArticlesByTagOptions, ProductsByCategoryOptions, ProductsByTagOptions } from './core/types';
|
5
6
|
/**
|
6
7
|
* GT6 SDK 主类
|
7
|
-
*
|
8
|
+
* 提供文章、产品和设置管理相关的所有功能
|
8
9
|
*/
|
9
10
|
export declare class GT6SDK {
|
10
11
|
articles: ArticlesAPI;
|
11
12
|
products: ProductsAPI;
|
13
|
+
settings: SettingsAPI;
|
12
14
|
constructor(config: GT6Config);
|
13
15
|
/**
|
14
16
|
* 获取客户端实例(用于高级用法)
|
@@ -150,10 +152,19 @@ export declare class GT6SDK {
|
|
150
152
|
* 17. 便捷方法:获取区域信息
|
151
153
|
*/
|
152
154
|
getRegions(): Promise<import("./core/types").RegionResponse>;
|
155
|
+
/**
|
156
|
+
* 18. 便捷方法:获取全局设置列表
|
157
|
+
*/
|
158
|
+
getSettings(settingAlias?: string): Promise<import("./core/types").Setting[]>;
|
159
|
+
/**
|
160
|
+
* 19. 便捷方法:获取指定设置
|
161
|
+
*/
|
162
|
+
getSetting(key: string): Promise<import("./core/types").Setting | null>;
|
153
163
|
}
|
154
164
|
export * from './core/types';
|
155
165
|
export * from './core/client';
|
156
166
|
export * from './modules/articles';
|
157
167
|
export * from './modules/products';
|
168
|
+
export * from './modules/settings';
|
158
169
|
export default GT6SDK;
|
159
170
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB;;;GAGG;AACH,qBAAa,MAAM;IACV,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,SAAS;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB;;;GAGG;AACH,qBAAa,MAAM;IACV,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,SAAS;IAO7B;;OAEG;IACH,SAAS,IAAI,SAAS;IAItB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa;;;;;;;IAIb;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACG,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IAIpD;;OAEG;IACG,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM;IAI/B;;OAEG;IACG,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,yBAAyB;;;;;;IAI9F;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB;;;;;;IAI/E;;OAEG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM;;;;;;;;;IAIxC;;OAEG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACnD,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;;;;;;IAID;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACG,oBAAoB,CAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,MAAM;IAIlE;;OAEG;IACG,cAAc,CAAC,eAAe,CAAC,EAAE,MAAM;IAI7C;;OAEG;IACG,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,yBAAyB;;;;;;IAI9F;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB;;;;;;IAI/E;;OAEG;IACG,sBAAsB,CAAC,UAAU,EAAE,MAAM;;;;;;;;;IAI/C;;OAEG;IACG,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;;;;;;IAID;;OAEG;IACG,UAAU;IAIhB;;OAEG;IACG,eAAe;IAIrB;;OAEG;IACG,UAAU;IAIhB;;OAEG;IACG,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM;IAIvC;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM;CAG7B;AAGD,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAGnC,eAAe,MAAM,CAAC"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { GT6Client } from '../core/client';
|
2
|
+
import { Setting } from '../core/types';
|
3
|
+
export declare class SettingsAPI {
|
4
|
+
private client;
|
5
|
+
constructor(client: GT6Client);
|
6
|
+
/**
|
7
|
+
* 获取全局设置列表
|
8
|
+
* 根据平台ID和别名获取所有全局设置
|
9
|
+
*/
|
10
|
+
getSettings(settingAlias?: string): Promise<Setting[]>;
|
11
|
+
/**
|
12
|
+
* 获取指定设置
|
13
|
+
* 根据设置key直接获取单个设置
|
14
|
+
*/
|
15
|
+
getSetting(key: string): Promise<Setting | null>;
|
16
|
+
}
|
17
|
+
//# sourceMappingURL=settings.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/modules/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,OAAO,EAGR,MAAM,eAAe,CAAC;AAEvB,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,SAAS;IAErC;;;OAGG;IACG,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAW5D;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAcvD"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@gt6/sdk",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.7",
|
4
4
|
"description": "GT6 SDK for articles management - A comprehensive JavaScript/TypeScript library for managing articles, categories, and tags in GT6 platform",
|
5
5
|
"type": "module",
|
6
6
|
"main": "dist/gt6-sdk.cjs.js",
|