@gt6/sdk 1.0.14 → 1.0.16

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 CHANGED
@@ -334,6 +334,120 @@ new GT6SDK(config: GT6Config)
334
334
 
335
335
  - `getArticleStats(): Promise<ArticleStats>`
336
336
 
337
+ ### TransactionsAPI 类
338
+
339
+ #### 交易相关方法
340
+
341
+ - `uploadFile(file: File): Promise<UploadResponse>` - 上传文件
342
+ - `deductFunds(deductData: DeductFundsRequest): Promise<DeductFundsResponse>` - 资金扣款
343
+ - `createRetailOrder(orderData: CreateRetailOrderRequest): Promise<CreateRetailOrderResponse>` - 创建零售订单
344
+
345
+ #### 资金扣款
346
+
347
+ ```typescript
348
+ // 资金扣款
349
+ const deductResult = await sdk.transactions.deductFunds({
350
+ userId: 12345,
351
+ userType: 2,
352
+ amount: '100.00',
353
+ description: '购买商品扣款',
354
+ orderId: 'ORDER123456'
355
+ });
356
+
357
+ if (deductResult.success) {
358
+ console.log('扣款成功');
359
+ console.log('资金日志ID:', deductResult.fundLogId);
360
+ console.log('新余额:', deductResult.newBalance);
361
+ } else {
362
+ console.log('扣款失败:', deductResult.message);
363
+ }
364
+ ```
365
+
366
+ #### 创建零售订单
367
+
368
+ ```typescript
369
+ // 创建零售订单
370
+ const orderData = {
371
+ user_id: 12345,
372
+ user_type: 2,
373
+ total_amount: 150.00,
374
+ pay_way: 1, // 钱包支付
375
+ product_type: 1,
376
+ platform_id: 1747558688,
377
+ d1: 0,
378
+ d2: 0,
379
+ d3: 0,
380
+ products: [
381
+ {
382
+ product_id: 1001,
383
+ quantity: 2,
384
+ sku: 'PROD001',
385
+ price: 50.00,
386
+ region_id: 1,
387
+ address_id: 101,
388
+ shipping_fee: 10.00,
389
+ tax_fee: 5.00
390
+ }
391
+ ]
392
+ };
393
+
394
+ const orderResult = await sdk.transactions.createRetailOrder(orderData);
395
+
396
+ if (orderResult.success) {
397
+ console.log('订单创建成功');
398
+ console.log('订单ID:', orderResult.orderId);
399
+ console.log('订单状态:', orderResult.order?.status);
400
+ } else {
401
+ console.log('订单创建失败:', orderResult.message);
402
+ }
403
+ ```
404
+
405
+ #### 完整交易流程
406
+
407
+ ```typescript
408
+ // 完整的购买流程示例
409
+ async function completePurchase(userId: number, amount: number, products: any[]) {
410
+ // 第一步:扣款
411
+ const deductResult = await sdk.transactions.deductFunds({
412
+ userId,
413
+ userType: 2,
414
+ amount: amount.toString(),
415
+ description: '购买商品扣款'
416
+ });
417
+
418
+ if (!deductResult.success) {
419
+ throw new Error(`扣款失败: ${deductResult.message}`);
420
+ }
421
+
422
+ // 第二步:创建订单
423
+ const orderData = {
424
+ user_id: userId,
425
+ user_type: 2,
426
+ total_amount: amount,
427
+ pay_way: 1,
428
+ product_type: 1,
429
+ platform_id: 1747558688,
430
+ d1: 0,
431
+ d2: 0,
432
+ d3: 0,
433
+ products
434
+ };
435
+
436
+ const orderResult = await sdk.transactions.createRetailOrder(orderData);
437
+
438
+ if (!orderResult.success) {
439
+ // 注意:如果订单创建失败,需要考虑退款处理
440
+ throw new Error(`订单创建失败: ${orderResult.message}`);
441
+ }
442
+
443
+ return {
444
+ fundLogId: deductResult.fundLogId,
445
+ orderId: orderResult.orderId,
446
+ newBalance: deductResult.newBalance
447
+ };
448
+ }
449
+ ```
450
+
337
451
  ## 使用示例
338
452
 
339
453
  ### 根据分类获取文章
@@ -1406,6 +1406,490 @@ class UsersAPI {
1406
1406
  }
1407
1407
  return null;
1408
1408
  }
1409
+ /**
1410
+ * 获取用户资料
1411
+ * @returns 用户资料响应
1412
+ */
1413
+ async getUserProfile() {
1414
+ try {
1415
+ // 获取用户token
1416
+ const token = this.getToken();
1417
+ if (!token) {
1418
+ return {
1419
+ success: false,
1420
+ message: '用户未登录'
1421
+ };
1422
+ }
1423
+ const response = await this.client.request('/web/user/profile', {
1424
+ method: 'GET',
1425
+ headers: {
1426
+ 'Authorization': `Bearer ${token}`,
1427
+ 'Content-Type': 'application/json'
1428
+ }
1429
+ });
1430
+ return response;
1431
+ }
1432
+ catch (error) {
1433
+ // 如果是HTTP错误,尝试解析响应体
1434
+ if (error.statusCode && error.message) {
1435
+ // 对于401错误,返回认证失败信息
1436
+ if (error.statusCode === 401) {
1437
+ return {
1438
+ success: false,
1439
+ message: '认证失败,请重新登录'
1440
+ };
1441
+ }
1442
+ // 对于其他HTTP错误,返回状态码信息
1443
+ return {
1444
+ success: false,
1445
+ message: error.message || `HTTP ${error.statusCode} 错误`
1446
+ };
1447
+ }
1448
+ // 对于网络错误或其他错误
1449
+ return {
1450
+ success: false,
1451
+ message: error instanceof Error ? error.message : '获取用户资料失败'
1452
+ };
1453
+ }
1454
+ }
1455
+ /**
1456
+ * 获取用户资料(简化版本)
1457
+ * @returns 用户资料或null
1458
+ */
1459
+ async getProfile() {
1460
+ const result = await this.getUserProfile();
1461
+ return result.success && result.user ? result.user : null;
1462
+ }
1463
+ /**
1464
+ * 更新用户资料
1465
+ * @param profileData 用户资料数据
1466
+ * @returns 更新响应
1467
+ */
1468
+ async updateProfile(profileData) {
1469
+ try {
1470
+ // 获取用户token
1471
+ const token = this.getToken();
1472
+ if (!token) {
1473
+ return {
1474
+ success: false,
1475
+ message: '用户未登录'
1476
+ };
1477
+ }
1478
+ const response = await this.client.request('/web/user/profile', {
1479
+ method: 'PUT',
1480
+ headers: {
1481
+ 'Authorization': `Bearer ${token}`,
1482
+ 'Content-Type': 'application/json'
1483
+ },
1484
+ body: JSON.stringify(profileData)
1485
+ });
1486
+ return response;
1487
+ }
1488
+ catch (error) {
1489
+ // 如果是HTTP错误,尝试解析响应体
1490
+ if (error.statusCode && error.message) {
1491
+ // 对于401错误,返回认证失败信息
1492
+ if (error.statusCode === 401) {
1493
+ return {
1494
+ success: false,
1495
+ message: '认证失败,请重新登录'
1496
+ };
1497
+ }
1498
+ // 对于其他HTTP错误,返回状态码信息
1499
+ return {
1500
+ success: false,
1501
+ message: error.message || `HTTP ${error.statusCode} 错误`
1502
+ };
1503
+ }
1504
+ // 对于网络错误或其他错误
1505
+ return {
1506
+ success: false,
1507
+ message: error instanceof Error ? error.message : '更新用户资料失败'
1508
+ };
1509
+ }
1510
+ }
1511
+ /**
1512
+ * 修改密码
1513
+ * @param passwordData 密码数据
1514
+ * @returns 修改密码响应
1515
+ */
1516
+ async changePassword(passwordData) {
1517
+ try {
1518
+ // 获取用户token
1519
+ const token = this.getToken();
1520
+ if (!token) {
1521
+ return {
1522
+ success: false,
1523
+ message: '用户未登录'
1524
+ };
1525
+ }
1526
+ const response = await this.client.request('/web/user/password', {
1527
+ method: 'PUT',
1528
+ headers: {
1529
+ 'Authorization': `Bearer ${token}`,
1530
+ 'Content-Type': 'application/json'
1531
+ },
1532
+ body: JSON.stringify(passwordData)
1533
+ });
1534
+ return response;
1535
+ }
1536
+ catch (error) {
1537
+ // 如果是HTTP错误,尝试解析响应体
1538
+ if (error.statusCode && error.message) {
1539
+ // 对于401错误,返回认证失败信息
1540
+ if (error.statusCode === 401) {
1541
+ return {
1542
+ success: false,
1543
+ message: '认证失败,请重新登录'
1544
+ };
1545
+ }
1546
+ // 对于其他HTTP错误,返回状态码信息
1547
+ return {
1548
+ success: false,
1549
+ message: error.message || `HTTP ${error.statusCode} 错误`
1550
+ };
1551
+ }
1552
+ // 对于网络错误或其他错误
1553
+ return {
1554
+ success: false,
1555
+ message: error instanceof Error ? error.message : '修改密码失败'
1556
+ };
1557
+ }
1558
+ }
1559
+ /**
1560
+ * 创建地址
1561
+ * @param addressData 地址数据
1562
+ * @returns 创建地址响应
1563
+ */
1564
+ async createAddress(addressData) {
1565
+ try {
1566
+ // 获取用户token
1567
+ const token = this.getToken();
1568
+ if (!token) {
1569
+ return {
1570
+ success: false,
1571
+ message: '用户未登录'
1572
+ };
1573
+ }
1574
+ const response = await this.client.request('/web/user/addresses', {
1575
+ method: 'POST',
1576
+ headers: {
1577
+ 'Authorization': `Bearer ${token}`,
1578
+ 'Content-Type': 'application/json'
1579
+ },
1580
+ body: JSON.stringify(addressData)
1581
+ });
1582
+ return response;
1583
+ }
1584
+ catch (error) {
1585
+ // 如果是HTTP错误,尝试解析响应体
1586
+ if (error.statusCode && error.message) {
1587
+ // 对于401错误,返回认证失败信息
1588
+ if (error.statusCode === 401) {
1589
+ return {
1590
+ success: false,
1591
+ message: '认证失败,请重新登录'
1592
+ };
1593
+ }
1594
+ // 对于其他HTTP错误,返回状态码信息
1595
+ return {
1596
+ success: false,
1597
+ message: error.message || `HTTP ${error.statusCode} 错误`
1598
+ };
1599
+ }
1600
+ // 对于网络错误或其他错误
1601
+ return {
1602
+ success: false,
1603
+ message: error instanceof Error ? error.message : '创建地址失败'
1604
+ };
1605
+ }
1606
+ }
1607
+ /**
1608
+ * 更新地址
1609
+ * @param addressId 地址ID
1610
+ * @param addressData 地址数据
1611
+ * @returns 更新地址响应
1612
+ */
1613
+ async updateAddress(addressId, addressData) {
1614
+ try {
1615
+ // 获取用户token
1616
+ const token = this.getToken();
1617
+ if (!token) {
1618
+ return {
1619
+ success: false,
1620
+ message: '用户未登录'
1621
+ };
1622
+ }
1623
+ const response = await this.client.request(`/web/user/addresses/${addressId}`, {
1624
+ method: 'PUT',
1625
+ headers: {
1626
+ 'Authorization': `Bearer ${token}`,
1627
+ 'Content-Type': 'application/json'
1628
+ },
1629
+ body: JSON.stringify(addressData)
1630
+ });
1631
+ return response;
1632
+ }
1633
+ catch (error) {
1634
+ // 如果是HTTP错误,尝试解析响应体
1635
+ if (error.statusCode && error.message) {
1636
+ // 对于401错误,返回认证失败信息
1637
+ if (error.statusCode === 401) {
1638
+ return {
1639
+ success: false,
1640
+ message: '认证失败,请重新登录'
1641
+ };
1642
+ }
1643
+ // 对于其他HTTP错误,返回状态码信息
1644
+ return {
1645
+ success: false,
1646
+ message: error.message || `HTTP ${error.statusCode} 错误`
1647
+ };
1648
+ }
1649
+ // 对于网络错误或其他错误
1650
+ return {
1651
+ success: false,
1652
+ message: error instanceof Error ? error.message : '更新地址失败'
1653
+ };
1654
+ }
1655
+ }
1656
+ /**
1657
+ * 删除地址
1658
+ * @param addressId 地址ID
1659
+ * @returns 删除地址响应
1660
+ */
1661
+ async deleteAddress(addressId) {
1662
+ try {
1663
+ // 获取用户token
1664
+ const token = this.getToken();
1665
+ if (!token) {
1666
+ return {
1667
+ success: false,
1668
+ message: '用户未登录'
1669
+ };
1670
+ }
1671
+ const response = await this.client.request(`/web/user/addresses/${addressId}`, {
1672
+ method: 'DELETE',
1673
+ headers: {
1674
+ 'Authorization': `Bearer ${token}`,
1675
+ 'Content-Type': 'application/json'
1676
+ }
1677
+ });
1678
+ return response;
1679
+ }
1680
+ catch (error) {
1681
+ // 如果是HTTP错误,尝试解析响应体
1682
+ if (error.statusCode && error.message) {
1683
+ // 对于401错误,返回认证失败信息
1684
+ if (error.statusCode === 401) {
1685
+ return {
1686
+ success: false,
1687
+ message: '认证失败,请重新登录'
1688
+ };
1689
+ }
1690
+ // 对于其他HTTP错误,返回状态码信息
1691
+ return {
1692
+ success: false,
1693
+ message: error.message || `HTTP ${error.statusCode} 错误`
1694
+ };
1695
+ }
1696
+ // 对于网络错误或其他错误
1697
+ return {
1698
+ success: false,
1699
+ message: error instanceof Error ? error.message : '删除地址失败'
1700
+ };
1701
+ }
1702
+ }
1703
+ /**
1704
+ * 上传文件
1705
+ * @param file 文件对象
1706
+ * @returns 上传响应
1707
+ */
1708
+ async uploadFile(file) {
1709
+ try {
1710
+ // 获取用户token
1711
+ const token = this.getToken();
1712
+ if (!token) {
1713
+ return {
1714
+ success: false,
1715
+ message: '用户未登录'
1716
+ };
1717
+ }
1718
+ // 创建FormData
1719
+ const formData = new FormData();
1720
+ formData.append('file', file);
1721
+ const response = await this.client.request('/web/upload', {
1722
+ method: 'POST',
1723
+ headers: {
1724
+ 'Authorization': `Bearer ${token}`
1725
+ },
1726
+ body: formData
1727
+ });
1728
+ return response;
1729
+ }
1730
+ catch (error) {
1731
+ // 如果是HTTP错误,尝试解析响应体
1732
+ if (error.statusCode && error.message) {
1733
+ // 对于401错误,返回认证失败信息
1734
+ if (error.statusCode === 401) {
1735
+ return {
1736
+ success: false,
1737
+ message: '认证失败,请重新登录'
1738
+ };
1739
+ }
1740
+ // 对于其他HTTP错误,返回状态码信息
1741
+ return {
1742
+ success: false,
1743
+ message: error.message || `HTTP ${error.statusCode} 错误`
1744
+ };
1745
+ }
1746
+ // 对于网络错误或其他错误
1747
+ return {
1748
+ success: false,
1749
+ message: error instanceof Error ? error.message : '文件上传失败'
1750
+ };
1751
+ }
1752
+ }
1753
+ }
1754
+
1755
+ /**
1756
+ * 交易管理API模块
1757
+ * 提供资金扣款、订单创建等功能
1758
+ */
1759
+ class TransactionsAPI {
1760
+ constructor(client) {
1761
+ this.client = client;
1762
+ }
1763
+ /**
1764
+ * 资金扣款
1765
+ * @param deductData 扣款数据
1766
+ * @returns 扣款响应
1767
+ */
1768
+ async deductFunds(deductData) {
1769
+ try {
1770
+ // 获取用户token
1771
+ const token = this.getToken();
1772
+ if (!token) {
1773
+ return {
1774
+ success: false,
1775
+ message: '用户未登录'
1776
+ };
1777
+ }
1778
+ const response = await this.client.request('/web/user/fund/deduct', {
1779
+ method: 'POST',
1780
+ headers: {
1781
+ 'Authorization': `Bearer ${token}`,
1782
+ 'Content-Type': 'application/json'
1783
+ },
1784
+ body: JSON.stringify(deductData)
1785
+ });
1786
+ return response;
1787
+ }
1788
+ catch (error) {
1789
+ // 如果是HTTP错误,尝试解析响应体
1790
+ if (error.statusCode && error.message) {
1791
+ // 对于401错误,返回认证失败信息
1792
+ if (error.statusCode === 401) {
1793
+ return {
1794
+ success: false,
1795
+ message: '认证失败,请重新登录'
1796
+ };
1797
+ }
1798
+ // 对于400错误,可能是余额不足等业务错误
1799
+ if (error.statusCode === 400) {
1800
+ return {
1801
+ success: false,
1802
+ message: error.message || '扣款失败,请检查余额'
1803
+ };
1804
+ }
1805
+ // 对于其他HTTP错误,返回状态码信息
1806
+ return {
1807
+ success: false,
1808
+ message: error.message || `HTTP ${error.statusCode} 错误`
1809
+ };
1810
+ }
1811
+ // 对于网络错误或其他错误
1812
+ return {
1813
+ success: false,
1814
+ message: error instanceof Error ? error.message : '资金扣款失败'
1815
+ };
1816
+ }
1817
+ }
1818
+ /**
1819
+ * 创建零售订单
1820
+ * @param orderData 订单数据
1821
+ * @returns 创建订单响应
1822
+ */
1823
+ async createRetailOrder(orderData) {
1824
+ try {
1825
+ // 获取用户token
1826
+ const token = this.getToken();
1827
+ if (!token) {
1828
+ return {
1829
+ success: false,
1830
+ message: '用户未登录'
1831
+ };
1832
+ }
1833
+ const response = await this.client.request('/web/orders', {
1834
+ method: 'POST',
1835
+ headers: {
1836
+ 'Authorization': `Bearer ${token}`,
1837
+ 'Content-Type': 'application/json'
1838
+ },
1839
+ body: JSON.stringify(orderData)
1840
+ });
1841
+ return response;
1842
+ }
1843
+ catch (error) {
1844
+ // 如果是HTTP错误,尝试解析响应体
1845
+ if (error.statusCode && error.message) {
1846
+ // 对于401错误,返回认证失败信息
1847
+ if (error.statusCode === 401) {
1848
+ return {
1849
+ success: false,
1850
+ message: '认证失败,请重新登录'
1851
+ };
1852
+ }
1853
+ // 对于400错误,可能是订单数据有误
1854
+ if (error.statusCode === 400) {
1855
+ return {
1856
+ success: false,
1857
+ message: error.message || '订单数据有误,请检查输入'
1858
+ };
1859
+ }
1860
+ // 对于其他HTTP错误,返回状态码信息
1861
+ return {
1862
+ success: false,
1863
+ message: error.message || `HTTP ${error.statusCode} 错误`
1864
+ };
1865
+ }
1866
+ // 对于网络错误或其他错误
1867
+ return {
1868
+ success: false,
1869
+ message: error instanceof Error ? error.message : '创建订单失败'
1870
+ };
1871
+ }
1872
+ }
1873
+ /**
1874
+ * 获取用户token(从本地存储)
1875
+ * @returns token或null
1876
+ */
1877
+ getToken() {
1878
+ if (typeof window !== 'undefined' && window.localStorage) {
1879
+ const userDataStr = localStorage.getItem('userData');
1880
+ if (userDataStr) {
1881
+ try {
1882
+ const userData = JSON.parse(userDataStr);
1883
+ return userData.token || null;
1884
+ }
1885
+ catch (error) {
1886
+ console.warn('解析用户数据失败:', error);
1887
+ return null;
1888
+ }
1889
+ }
1890
+ }
1891
+ return null;
1892
+ }
1409
1893
  }
1410
1894
 
1411
1895
  /**
@@ -1420,6 +1904,7 @@ class GT6SDK {
1420
1904
  this.settings = new SettingsAPI(client);
1421
1905
  this.forms = new FormsAPI(client);
1422
1906
  this.users = new UsersAPI(client);
1907
+ this.transactions = new TransactionsAPI(client);
1423
1908
  }
1424
1909
  /**
1425
1910
  * 获取客户端实例(用于高级用法)
@@ -1733,6 +2218,66 @@ class GT6SDK {
1733
2218
  async getAddressById(addressId) {
1734
2219
  return this.users.getAddressById(addressId);
1735
2220
  }
2221
+ /**
2222
+ * 便捷方法:获取用户资料
2223
+ */
2224
+ async getUserProfile() {
2225
+ return this.users.getUserProfile();
2226
+ }
2227
+ /**
2228
+ * 便捷方法:获取用户资料(简化版本)
2229
+ */
2230
+ async getProfile() {
2231
+ return this.users.getProfile();
2232
+ }
2233
+ /**
2234
+ * 便捷方法:更新用户资料
2235
+ */
2236
+ async updateProfile(profileData) {
2237
+ return this.users.updateProfile(profileData);
2238
+ }
2239
+ /**
2240
+ * 便捷方法:修改密码
2241
+ */
2242
+ async changePassword(passwordData) {
2243
+ return this.users.changePassword(passwordData);
2244
+ }
2245
+ /**
2246
+ * 便捷方法:创建地址
2247
+ */
2248
+ async createAddress(addressData) {
2249
+ return this.users.createAddress(addressData);
2250
+ }
2251
+ /**
2252
+ * 便捷方法:更新地址
2253
+ */
2254
+ async updateAddress(addressId, addressData) {
2255
+ return this.users.updateAddress(addressId, addressData);
2256
+ }
2257
+ /**
2258
+ * 便捷方法:删除地址
2259
+ */
2260
+ async deleteAddress(addressId) {
2261
+ return this.users.deleteAddress(addressId);
2262
+ }
2263
+ /**
2264
+ * 便捷方法:上传文件
2265
+ */
2266
+ async uploadFile(file) {
2267
+ return this.users.uploadFile(file);
2268
+ }
2269
+ /**
2270
+ * 便捷方法:资金扣款
2271
+ */
2272
+ async deductFunds(deductData) {
2273
+ return this.transactions.deductFunds(deductData);
2274
+ }
2275
+ /**
2276
+ * 便捷方法:创建零售订单
2277
+ */
2278
+ async createRetailOrder(orderData) {
2279
+ return this.transactions.createRetailOrder(orderData);
2280
+ }
1736
2281
  }
1737
2282
 
1738
2283
  exports.ArticlesAPI = ArticlesAPI;
@@ -1742,6 +2287,7 @@ exports.GT6Error = GT6Error;
1742
2287
  exports.GT6SDK = GT6SDK;
1743
2288
  exports.ProductsAPI = ProductsAPI;
1744
2289
  exports.SettingsAPI = SettingsAPI;
2290
+ exports.TransactionsAPI = TransactionsAPI;
1745
2291
  exports.UsersAPI = UsersAPI;
1746
2292
  exports.default = GT6SDK;
1747
2293
  //# sourceMappingURL=gt6-sdk.cjs.js.map