diff --git a/backend/services/admin-service/src/pricing/tree-pricing.service.ts b/backend/services/admin-service/src/pricing/tree-pricing.service.ts
index 2dfb0f02..1680533f 100644
--- a/backend/services/admin-service/src/pricing/tree-pricing.service.ts
+++ b/backend/services/admin-service/src/pricing/tree-pricing.service.ts
@@ -3,7 +3,7 @@ import { PrismaService } from '../infrastructure/persistence/prisma/prisma.servi
/** 基础价常量 */
const BASE_PRICE = 15831;
-const BASE_PORTION_PRICE = 3171; // 预种基础价 = BASE_PRICE 的 1/5 取整
+const BASE_PORTION_PRICE = 3566; // 预种基础价:9项 floor(整棵树/5) 取整 + 余额归总部
export interface TreePricingConfigResponse {
basePrice: number;
diff --git a/backend/services/contribution-service/src/pre-planting/application/handlers/pre-planting-order-synced.handler.ts b/backend/services/contribution-service/src/pre-planting/application/handlers/pre-planting-order-synced.handler.ts
index 226ff990..85882737 100644
--- a/backend/services/contribution-service/src/pre-planting/application/handlers/pre-planting-order-synced.handler.ts
+++ b/backend/services/contribution-service/src/pre-planting/application/handlers/pre-planting-order-synced.handler.ts
@@ -205,8 +205,8 @@ export class PrePlantingOrderSyncedHandler {
userId: BigInt(data.user_id || data.userId || 0),
accountSequence: data.account_sequence || data.accountSequence,
portionCount: data.portion_count || data.portionCount || 1,
- pricePerPortion: data.price_per_portion || data.pricePerPortion || 3171,
- totalAmount: data.total_amount || data.totalAmount || 3171,
+ pricePerPortion: data.price_per_portion || data.pricePerPortion || 3566,
+ totalAmount: data.total_amount || data.totalAmount || 3566,
provinceCode: data.province_code || data.provinceCode || '',
cityCode: data.city_code || data.cityCode || '',
status: data.status || 'CREATED',
diff --git a/backend/services/planting-service/prisma/schema.prisma b/backend/services/planting-service/prisma/schema.prisma
index 64d5057c..4d701959 100644
--- a/backend/services/planting-service/prisma/schema.prisma
+++ b/backend/services/planting-service/prisma/schema.prisma
@@ -396,7 +396,7 @@ model DebeziumHeartbeat {
}
// ============================================
-// 预种订单表 (3171 预种计划)
+// 预种订单表 (3566 预种计划)
// 每次购买一份预种创建一条记录
// ============================================
model PrePlantingOrder {
@@ -407,7 +407,7 @@ model PrePlantingOrder {
// 购买信息
portionCount Int @default(1) @map("portion_count")
- pricePerPortion Decimal @default(3171) @map("price_per_portion") @db.Decimal(20, 8)
+ pricePerPortion Decimal @default(3566) @map("price_per_portion") @db.Decimal(20, 8)
totalAmount Decimal @map("total_amount") @db.Decimal(20, 8)
priceSupplement Int @default(0) @map("price_supplement") // 总部运营成本压力涨价(每份加价金额),归总部 (S0000000001)
diff --git a/backend/services/planting-service/src/app.module.ts b/backend/services/planting-service/src/app.module.ts
index c457639d..4b8c76a5 100644
--- a/backend/services/planting-service/src/app.module.ts
+++ b/backend/services/planting-service/src/app.module.ts
@@ -5,7 +5,7 @@ import { InfrastructureModule } from './infrastructure/infrastructure.module';
import { DomainModule } from './domain/domain.module';
import { ApplicationModule } from './application/application.module';
import { ApiModule } from './api/api.module';
-// [2026-02-17] 新增:3171 预种计划模块(纯新增,与现有 PlantingOrder 零耦合)
+// [2026-02-17] 新增:3566 预种计划模块(纯新增,与现有 PlantingOrder 零耦合)
import { PrePlantingModule } from './pre-planting/pre-planting.module';
import { GlobalExceptionFilter } from './shared/filters/global-exception.filter';
import configs from './config';
diff --git a/backend/services/planting-service/src/infrastructure/external/tree-pricing-admin.client.ts b/backend/services/planting-service/src/infrastructure/external/tree-pricing-admin.client.ts
index 2a47d09b..0bb76c15 100644
--- a/backend/services/planting-service/src/infrastructure/external/tree-pricing-admin.client.ts
+++ b/backend/services/planting-service/src/infrastructure/external/tree-pricing-admin.client.ts
@@ -45,13 +45,13 @@ export class TreePricingAdminClient {
return response.data;
} catch (error) {
this.logger.error('Failed to get tree pricing config, using default (supplement=0)', error);
- // 安全降级:加价为 0,等同于原始价格 15831,不影响现有业务
+ // 安全降级:加价为 0,不影响现有业务
return {
basePrice: 15831,
- basePortionPrice: 3171,
+ basePortionPrice: 3566,
currentSupplement: 0,
totalPrice: 15831,
- totalPortionPrice: 3171,
+ totalPortionPrice: 3566,
autoIncreaseEnabled: false,
autoIncreaseAmount: 0,
autoIncreaseIntervalDays: 0,
diff --git a/backend/services/planting-service/src/pre-planting/domain/value-objects/pre-planting-right-amounts.ts b/backend/services/planting-service/src/pre-planting/domain/value-objects/pre-planting-right-amounts.ts
index 47aaf7ed..079c8e80 100644
--- a/backend/services/planting-service/src/pre-planting/domain/value-objects/pre-planting-right-amounts.ts
+++ b/backend/services/planting-service/src/pre-planting/domain/value-objects/pre-planting-right-amounts.ts
@@ -1,25 +1,25 @@
/**
* 预种 1/5 分配金额常量
*
- * 基准:reward-service 的 RIGHT_AMOUNTS(实际生效的分配金额)
- * 预种每份 = 整棵树金额 / 5,差额 4.8 归入总部社区(HQ_BASE_FEE)
+ * 基准:reward-service 的 RIGHT_AMOUNTS(15831 整棵树)
+ * 9 项 = floor(整棵树金额 / 5) 取整,余额全归总部社区(HQ_BASE_FEE)
*/
export const PRE_PLANTING_RIGHT_AMOUNTS = {
- COST_FEE: 576, // 2880/5
- OPERATION_FEE: 420, // 2100/5
- HEADQUARTERS_BASE_FEE: 29.4, // 123/5 + 4.8 差额(3171 - 3166.2 = 4.8)
- RWAD_POOL_INJECTION: 1152, // 5760/5
- SHARE_RIGHT: 720, // 3600/5 = 720(推荐奖励金额)
- PROVINCE_AREA_RIGHT: 21.6, // 108/5
- PROVINCE_TEAM_RIGHT: 28.8, // 144/5
- CITY_AREA_RIGHT: 50.4, // 252/5
- CITY_TEAM_RIGHT: 57.6, // 288/5
- COMMUNITY_RIGHT: 115.2, // 576/5
+ COST_FEE: 576, // floor(2880/5)
+ OPERATION_FEE: 420, // floor(2100/5)
+ HEADQUARTERS_BASE_FEE: 427, // 3566 - 3139 = 427(吸收全部余额)
+ RWAD_POOL_INJECTION: 1152, // floor(5760/5)
+ SHARE_RIGHT: 720, // floor(3600/5)
+ PROVINCE_AREA_RIGHT: 21, // floor(108/5)
+ PROVINCE_TEAM_RIGHT: 28, // floor(144/5)
+ CITY_AREA_RIGHT: 50, // floor(252/5)
+ CITY_TEAM_RIGHT: 57, // floor(288/5)
+ COMMUNITY_RIGHT: 115, // floor(576/5)
} as const;
-// 合计 = 576 + 420 + 29.4 + 1152 + 720 + 21.6 + 28.8 + 50.4 + 57.6 + 115.2 = 3171.0
+// 合计 = 576 + 420 + 427 + 1152 + 720 + 21 + 28 + 50 + 57 + 115 = 3566
-export const PRE_PLANTING_PRICE_PER_PORTION = 3171;
+export const PRE_PLANTING_PRICE_PER_PORTION = 3566;
export const PRE_PLANTING_PORTIONS_PER_TREE = 5;
/**
diff --git a/backend/services/planting-service/src/pre-planting/pre-planting.module.ts b/backend/services/planting-service/src/pre-planting/pre-planting.module.ts
index 586e14df..00cdc9b5 100644
--- a/backend/services/planting-service/src/pre-planting/pre-planting.module.ts
+++ b/backend/services/planting-service/src/pre-planting/pre-planting.module.ts
@@ -21,10 +21,10 @@ import { PrePlantingReferralClient } from './infrastructure/external/pre-plantin
import { PrePlantingAuthorizationClient } from './infrastructure/external/pre-planting-authorization.client';
/**
- * 预种计划模块 (3171 预种计划 / 拼种团购计划)
+ * 预种计划模块 (3566 预种计划 / 拼种团购计划)
*
* === 功能概述 ===
- * 用户以 3171 USDT/份 参与认种(1棵树的1/5价格),累计5份自动合成1棵树,
+ * 用户以 3566 USDT/份 参与认种(1棵树的1/5价格),累计5份自动合成1棵树,
* 触发合同签署和挖矿开启,同时解除交易和提现限制。
*
* === 架构设计 ===
diff --git a/frontend/admin-web/src/app/(dashboard)/pre-planting/page.tsx b/frontend/admin-web/src/app/(dashboard)/pre-planting/page.tsx
index d1b6d1f4..361d4a3b 100644
--- a/frontend/admin-web/src/app/(dashboard)/pre-planting/page.tsx
+++ b/frontend/admin-web/src/app/(dashboard)/pre-planting/page.tsx
@@ -140,7 +140,7 @@ export default function PrePlantingPage() {
{config?.isActive
- ? '用户可正常购买预种份额(3171 USDT/份)'
+ ? '用户可正常购买预种份额(3566 USDT/份)'
: '新用户不可购买;已有未凑满份额的用户可继续购买至 5 的倍数'}
diff --git a/frontend/admin-web/src/components/layout/Sidebar/Sidebar.tsx b/frontend/admin-web/src/components/layout/Sidebar/Sidebar.tsx
index 8d2ac766..a35a040a 100644
--- a/frontend/admin-web/src/components/layout/Sidebar/Sidebar.tsx
+++ b/frontend/admin-web/src/components/layout/Sidebar/Sidebar.tsx
@@ -35,7 +35,7 @@ const topMenuItems: MenuItem[] = [
{ key: 'withdrawals', icon: '/images/Container5.svg', label: '提现审核', path: '/withdrawals' },
{ key: 'system-transfer', icon: '/images/Container5.svg', label: '系统划转', path: '/system-transfer' },
{ key: 'statistics', icon: '/images/Container5.svg', label: '数据统计', path: '/statistics' },
- // [2026-02-17] 新增:预种计划管理(3171 USDT/份预种开关 + 订单/持仓/合并查询)
+ // [2026-02-17] 新增:预种计划管理(3566 USDT/份预种开关 + 订单/持仓/合并查询)
{ key: 'pre-planting', icon: '/images/Container3.svg', label: '预种管理', path: '/pre-planting' },
// [2026-02-19] 纯新增:树转让管理
{ key: 'transfers', icon: '/images/Container5.svg', label: '转让管理', path: '/transfers' },
diff --git a/frontend/admin-web/src/infrastructure/api/endpoints.ts b/frontend/admin-web/src/infrastructure/api/endpoints.ts
index 94d5d852..ffc41d2e 100644
--- a/frontend/admin-web/src/infrastructure/api/endpoints.ts
+++ b/frontend/admin-web/src/infrastructure/api/endpoints.ts
@@ -289,7 +289,7 @@ export const API_ENDPOINTS = {
BATCH_DOWNLOAD_STATUS: (taskNo: string) => `/v1/admin/contracts/batch-download/${taskNo}`,
},
// [2026-02-17] 新增:预种计划管理 (admin-service / PrePlantingAdminModule)
- // 3171 USDT/份预种,累计 5 份合成 1 棵树
+ // 3566 USDT/份预种,累计 5 份合成 1 棵树
// 开关管理 + 预种订单/持仓/合并记录查询
PRE_PLANTING: {
// 预种开关配置
diff --git a/frontend/mobile-app/lib/core/constants/api_endpoints.dart b/frontend/mobile-app/lib/core/constants/api_endpoints.dart
index a108d214..2c3b566d 100644
--- a/frontend/mobile-app/lib/core/constants/api_endpoints.dart
+++ b/frontend/mobile-app/lib/core/constants/api_endpoints.dart
@@ -98,7 +98,7 @@ class ApiEndpoints {
static const String pendingActionsComplete = '/user/pending-actions'; // POST /:id/complete
// [2026-02-17] 预种计划 (-> Planting Service / PrePlantingModule)
- // 3171 USDT/份预种,累计 5 份自动合成 1 棵树
+ // 3566 USDT/份预种,累计 5 份自动合成 1 棵树
// 所有端点与现有 /planting/* 完全独立
static const String prePlanting = '/pre-planting';
static const String prePlantingConfig = '$prePlanting/config'; // 开关配置
diff --git a/frontend/mobile-app/lib/core/di/injection_container.dart b/frontend/mobile-app/lib/core/di/injection_container.dart
index d3c53e10..4dd3fb78 100644
--- a/frontend/mobile-app/lib/core/di/injection_container.dart
+++ b/frontend/mobile-app/lib/core/di/injection_container.dart
@@ -9,7 +9,7 @@ import '../services/authorization_service.dart';
import '../services/deposit_service.dart';
import '../services/wallet_service.dart';
import '../services/planting_service.dart';
-// [2026-02-17] 新增:预种计划服务(3171 USDT/份,独立于现有认种)
+// [2026-02-17] 新增:预种计划服务(3566 USDT/份,独立于现有认种)
import '../services/pre_planting_service.dart';
// [2026-02-19] 纯新增:树转让服务(已认种树所有权转让)
import '../services/transfer_service.dart';
@@ -102,7 +102,7 @@ final plantingServiceProvider = Provider((ref) {
});
// [2026-02-17] Pre-Planting Service Provider (调用 planting-service / PrePlantingModule)
-// 预种计划:3171 USDT/份,累计 5 份合成 1 棵树。与上方 PlantingService 完全独立。
+// 预种计划:3566 USDT/份,累计 5 份合成 1 棵树。与上方 PlantingService 完全独立。
final prePlantingServiceProvider = Provider((ref) {
final apiClient = ref.watch(apiClientProvider);
return PrePlantingService(apiClient: apiClient);
diff --git a/frontend/mobile-app/lib/core/services/pre_planting_service.dart b/frontend/mobile-app/lib/core/services/pre_planting_service.dart
index 41e756d1..3bcca0eb 100644
--- a/frontend/mobile-app/lib/core/services/pre_planting_service.dart
+++ b/frontend/mobile-app/lib/core/services/pre_planting_service.dart
@@ -5,8 +5,8 @@ import '../network/api_client.dart';
// [2026-02-17] 预种计划 API 服务
// ============================================
//
-// 3171 预种计划(拼种/团购计划)的 Flutter 端 API 调用服务。
-// 用户以 3171 USDT/份参与认种,累计 5 份自动合成 1 棵树。
+// 3566 预种计划(拼种/团购计划)的 Flutter 端 API 调用服务。
+// 用户以 3566 USDT/份参与认种,累计 5 份自动合成 1 棵树。
//
// === API 端点 ===
// 所有端点走 planting-service 的 PrePlantingModule:
@@ -21,7 +21,7 @@ import '../network/api_client.dart';
//
// === 与现有 PlantingService 的关系 ===
// 完全独立。PlantingService 处理整棵树认种(15831 USDT/棵),
-// PrePlantingService 处理预种份额(3171 USDT/份)。
+// PrePlantingService 处理预种份额(3566 USDT/份)。
// 两者调用不同的 API 端点,互不影响。
/// 预种订单状态
@@ -112,7 +112,7 @@ class PrePlantingPosition {
class PrePlantingOrder {
final String orderNo;
final int portionCount; // 购买份数(通常为 1)
- final double pricePerPortion; // 每份价格(3171 USDT)
+ final double pricePerPortion; // 每份价格(3566 USDT)
final double totalAmount; // 总金额
final PrePlantingOrderStatus status;
final String? mergedToMergeId; // 合并后指向的 MergeId
@@ -136,8 +136,8 @@ class PrePlantingOrder {
return PrePlantingOrder(
orderNo: json['orderNo'] ?? '',
portionCount: json['portionCount'] ?? 1,
- pricePerPortion: (json['pricePerPortion'] ?? 3171).toDouble(),
- totalAmount: (json['totalAmount'] ?? 3171).toDouble(),
+ pricePerPortion: (json['pricePerPortion'] ?? 3566).toDouble(),
+ totalAmount: (json['totalAmount'] ?? 3566).toDouble(),
status: _parseStatus(json['status']),
mergedToMergeId: json['mergedToMergeId']?.toString(),
paidAt: json['paidAt'] != null ? DateTime.parse(json['paidAt']) : null,
@@ -239,8 +239,8 @@ class CreatePrePlantingOrderResponse {
return CreatePrePlantingOrderResponse(
orderNo: json['orderNo'] ?? '',
portionCount: json['portionCount'] ?? 1,
- totalAmount: (json['totalAmount'] ?? 3171).toDouble(),
- pricePerPortion: (json['pricePerPortion'] ?? 3171).toDouble(),
+ totalAmount: (json['totalAmount'] ?? 3566).toDouble(),
+ pricePerPortion: (json['pricePerPortion'] ?? 3566).toDouble(),
);
}
}
diff --git a/frontend/mobile-app/lib/core/services/tree_pricing_service.dart b/frontend/mobile-app/lib/core/services/tree_pricing_service.dart
index bab7dc7a..c9cedc70 100644
--- a/frontend/mobile-app/lib/core/services/tree_pricing_service.dart
+++ b/frontend/mobile-app/lib/core/services/tree_pricing_service.dart
@@ -10,7 +10,7 @@ class TreePricingConfig {
/// 正式认种基础价(固定 15831)
final int basePrice;
- /// 预种基础价(固定 3171)
+ /// 预种基础价(固定 3566)
final int basePortionPrice;
/// 当前加价金额
@@ -49,10 +49,10 @@ class TreePricingConfig {
factory TreePricingConfig.fromJson(Map json) {
return TreePricingConfig(
basePrice: json['basePrice'] ?? 15831,
- basePortionPrice: json['basePortionPrice'] ?? 3171,
+ basePortionPrice: json['basePortionPrice'] ?? 3566,
currentSupplement: json['currentSupplement'] ?? 0,
totalPrice: json['totalPrice'] ?? 15831,
- totalPortionPrice: json['totalPortionPrice'] ?? 3171,
+ totalPortionPrice: json['totalPortionPrice'] ?? 3566,
autoIncreaseEnabled: json['autoIncreaseEnabled'] ?? false,
autoIncreaseAmount: json['autoIncreaseAmount'] ?? 0,
autoIncreaseIntervalDays: json['autoIncreaseIntervalDays'] ?? 0,
@@ -66,10 +66,10 @@ class TreePricingConfig {
factory TreePricingConfig.defaultConfig() {
return TreePricingConfig(
basePrice: 15831,
- basePortionPrice: 3171,
+ basePortionPrice: 3566,
currentSupplement: 0,
totalPrice: 15831,
- totalPortionPrice: 3171,
+ totalPortionPrice: 3566,
autoIncreaseEnabled: false,
autoIncreaseAmount: 0,
autoIncreaseIntervalDays: 0,
diff --git a/frontend/mobile-app/lib/features/pre_planting/presentation/pages/pre_planting_merge_detail_page.dart b/frontend/mobile-app/lib/features/pre_planting/presentation/pages/pre_planting_merge_detail_page.dart
index ffeda36e..7b504699 100644
--- a/frontend/mobile-app/lib/features/pre_planting/presentation/pages/pre_planting_merge_detail_page.dart
+++ b/frontend/mobile-app/lib/features/pre_planting/presentation/pages/pre_planting_merge_detail_page.dart
@@ -421,7 +421,7 @@ class _PrePlantingMergeDetailPageState
const SizedBox(height: 8),
_buildDetailRow(
'总价值',
- '${(merge.sourceOrderNos.length * 3171).toString()} USDT',
+ '${(merge.sourceOrderNos.length * 3566).toString()} USDT',
),
if (merge.selectedProvince != null) ...[
const SizedBox(height: 8),
diff --git a/frontend/mobile-app/lib/features/pre_planting/presentation/pages/pre_planting_purchase_page.dart b/frontend/mobile-app/lib/features/pre_planting/presentation/pages/pre_planting_purchase_page.dart
index a6c43595..f21e05d0 100644
--- a/frontend/mobile-app/lib/features/pre_planting/presentation/pages/pre_planting_purchase_page.dart
+++ b/frontend/mobile-app/lib/features/pre_planting/presentation/pages/pre_planting_purchase_page.dart
@@ -11,7 +11,7 @@ import '../../../../core/services/tree_pricing_service.dart';
// ============================================
//
// 预种计划(拼种/团购计划)的购买页面:
-// - 用户以 3171 USDT/份 购买预种份额
+// - 用户以 3566 USDT/份 购买预种份额
// - 累计 5 份自动合成 1 棵树
// - 首次购买需选择省市(后续复用,不可更改)
// - 显示余额、份数选择、合并进度、价格明细
@@ -24,11 +24,11 @@ import '../../../../core/services/tree_pricing_service.dart';
//
// === 与现有认种页面的关系 ===
// planting_quantity_page.dart → 整棵树认种(15831 USDT/棵)
-// 本页面 → 预种份额购买(3171 USDT/份),完全独立的流程
+// 本页面 → 预种份额购买(3566 USDT/份),完全独立的流程
/// 预种计划购买页面
///
-/// 用户可以购买预种份额(3171 USDT/份),累计 5 份自动合成 1 棵树。
+/// 用户可以购买预种份额(3566 USDT/份),累计 5 份自动合成 1 棵树。
/// 首次购买需选择省市(后续购买自动复用)。
class PrePlantingPurchasePage extends ConsumerStatefulWidget {
const PrePlantingPurchasePage({super.key});
@@ -43,7 +43,7 @@ class _PrePlantingPurchasePageState
// === 常量 ===
/// 每份预种价格(USDT)- 从 admin-service 动态获取
- double _pricePerPortion = 3171.0;
+ double _pricePerPortion = 3566.0;
/// 合并所需份数
static const int _portionsPerTree = 5;
diff --git a/frontend/mobile-app/lib/features/profile/presentation/pages/profile_page.dart b/frontend/mobile-app/lib/features/profile/presentation/pages/profile_page.dart
index e30ad7f9..bf9db0e9 100644
--- a/frontend/mobile-app/lib/features/profile/presentation/pages/profile_page.dart
+++ b/frontend/mobile-app/lib/features/profile/presentation/pages/profile_page.dart
@@ -1931,7 +1931,7 @@ class _ProfilePageState extends ConsumerState {
/// [2026-02-17] 构建预种计划按钮行(购买 + 查看持仓)
///
/// 两个按钮并排显示:
- /// - 左侧「预种购买」:跳转到预种购买页(选择份数 → 支付 3171 USDT/份)
+ /// - 左侧「预种购买」:跳转到预种购买页(选择份数 → 支付 3566 USDT/份)
/// - 右侧「预种持仓」:跳转到预种持仓页(查看订单、合并记录、签约)
Widget _buildPrePlantingButtons() {
return Row(
diff --git a/frontend/mobile-app/lib/routes/app_router.dart b/frontend/mobile-app/lib/routes/app_router.dart
index 6d6c432f..d435d1d2 100644
--- a/frontend/mobile-app/lib/routes/app_router.dart
+++ b/frontend/mobile-app/lib/routes/app_router.dart
@@ -44,7 +44,7 @@ import '../features/kyc/presentation/pages/change_phone_page.dart';
import '../features/contract_signing/presentation/pages/contract_signing_page.dart';
import '../features/contract_signing/presentation/pages/pending_contracts_page.dart';
import '../features/pending_actions/presentation/pages/pending_actions_page.dart';
-// [2026-02-17] 新增:预种计划页面(3171 USDT/份,累计 5 份合成 1 棵树)
+// [2026-02-17] 新增:预种计划页面(3566 USDT/份,累计 5 份合成 1 棵树)
import '../features/pre_planting/presentation/pages/pre_planting_purchase_page.dart';
import '../features/pre_planting/presentation/pages/pre_planting_position_page.dart';
import '../features/pre_planting/presentation/pages/pre_planting_merge_detail_page.dart';