@r2wa-org/eden 0.0.104 → 0.0.110

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.
@@ -1,8 +1,40 @@
1
+ import type { TransactionTx } from '../../../db/transaction';
2
+ type TeamMilestoneRewardGrantItem = {
3
+ grantId: string;
4
+ userId: string;
5
+ ruleId: string;
6
+ thresholdMemberCount: number;
7
+ memberCountSnapshot: number;
8
+ platformAmount: string;
9
+ valueAddedAmount: string;
10
+ rewardDescription: string | null;
11
+ platformLedgerEntryId: string | null;
12
+ valueAddedLedgerEntryId: string | null;
13
+ isIdempotent: boolean;
14
+ };
15
+ export type TeamMilestoneRewardPayoutResult = {
16
+ grants: TeamMilestoneRewardGrantItem[];
17
+ };
1
18
  export declare abstract class InternalTeamMilestoneRewardService {
2
19
  static sortRules<T extends {
3
20
  sortOrder: number;
4
21
  thresholdMemberCount: number;
5
22
  }>(rules: T[]): T[];
23
+ private static buildGrantIdempotencyKey;
24
+ private static buildPlatformPayoutIdempotencyKey;
25
+ private static buildValueAddedPayoutIdempotencyKey;
26
+ private static resolveActivePlanInTx;
27
+ static countTeamMembers(tx: TransactionTx, userId: string, maxDepth: number): Promise<number>;
28
+ private static payoutAmount;
29
+ private static processGrantForLeader;
30
+ private static processRewardsForLeader;
31
+ /**
32
+ * 新人绑定邀请码成功后,为受影响的团队长检查并发放里程碑奖励
33
+ */
34
+ static onReferralMemberJoined(tx: TransactionTx, params: {
35
+ newUserId: string;
36
+ referralBindLogId: string;
37
+ }): Promise<TeamMilestoneRewardPayoutResult>;
6
38
  /** 查询已启用的团队里程碑奖励方案(含已启用规则),未配置或未启用时返回 null */
7
39
  static getActivePlan(): Promise<{
8
40
  id: string;
@@ -36,3 +68,4 @@ export declare abstract class InternalTeamMilestoneRewardService {
36
68
  }[];
37
69
  } | null>;
38
70
  }
71
+ export {};
@@ -452,6 +452,294 @@ export declare const teamMilestoneRewardPlanRelations: import("drizzle-orm").Rel
452
452
  creator: import("drizzle-orm").One<"user", true>;
453
453
  updater: import("drizzle-orm").One<"user", false>;
454
454
  }>;
455
+ /**
456
+ * 团队里程碑奖励发放记录(每人每档一次性)
457
+ */
458
+ export declare const teamMilestoneRewardGrant: import("drizzle-orm/pg-core").PgTableWithColumns<{
459
+ name: "team_milestone_reward_grant";
460
+ schema: undefined;
461
+ columns: {
462
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
463
+ name: "created_at";
464
+ tableName: "team_milestone_reward_grant";
465
+ dataType: "date";
466
+ columnType: "PgTimestamp";
467
+ data: Date;
468
+ driverParam: string;
469
+ notNull: true;
470
+ hasDefault: true;
471
+ isPrimaryKey: false;
472
+ isAutoincrement: false;
473
+ hasRuntimeDefault: false;
474
+ enumValues: undefined;
475
+ baseColumn: never;
476
+ identity: undefined;
477
+ generated: undefined;
478
+ }, {}, {}>;
479
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
480
+ name: "updated_at";
481
+ tableName: "team_milestone_reward_grant";
482
+ dataType: "date";
483
+ columnType: "PgTimestamp";
484
+ data: Date;
485
+ driverParam: string;
486
+ notNull: true;
487
+ hasDefault: true;
488
+ isPrimaryKey: false;
489
+ isAutoincrement: false;
490
+ hasRuntimeDefault: false;
491
+ enumValues: undefined;
492
+ baseColumn: never;
493
+ identity: undefined;
494
+ generated: undefined;
495
+ }, {}, {}>;
496
+ id: import("drizzle-orm/pg-core").PgColumn<{
497
+ name: "id";
498
+ tableName: "team_milestone_reward_grant";
499
+ dataType: "string";
500
+ columnType: "PgUUID";
501
+ data: string;
502
+ driverParam: string;
503
+ notNull: true;
504
+ hasDefault: true;
505
+ isPrimaryKey: true;
506
+ isAutoincrement: false;
507
+ hasRuntimeDefault: false;
508
+ enumValues: undefined;
509
+ baseColumn: never;
510
+ identity: undefined;
511
+ generated: undefined;
512
+ }, {}, {}>;
513
+ userId: import("drizzle-orm/pg-core").PgColumn<{
514
+ name: "user_id";
515
+ tableName: "team_milestone_reward_grant";
516
+ dataType: "string";
517
+ columnType: "PgText";
518
+ data: string;
519
+ driverParam: string;
520
+ notNull: true;
521
+ hasDefault: false;
522
+ isPrimaryKey: false;
523
+ isAutoincrement: false;
524
+ hasRuntimeDefault: false;
525
+ enumValues: [string, ...string[]];
526
+ baseColumn: never;
527
+ identity: undefined;
528
+ generated: undefined;
529
+ }, {}, {}>;
530
+ planId: import("drizzle-orm/pg-core").PgColumn<{
531
+ name: "plan_id";
532
+ tableName: "team_milestone_reward_grant";
533
+ dataType: "string";
534
+ columnType: "PgUUID";
535
+ data: string;
536
+ driverParam: string;
537
+ notNull: true;
538
+ hasDefault: false;
539
+ isPrimaryKey: false;
540
+ isAutoincrement: false;
541
+ hasRuntimeDefault: false;
542
+ enumValues: undefined;
543
+ baseColumn: never;
544
+ identity: undefined;
545
+ generated: undefined;
546
+ }, {}, {}>;
547
+ ruleId: import("drizzle-orm/pg-core").PgColumn<{
548
+ name: "rule_id";
549
+ tableName: "team_milestone_reward_grant";
550
+ dataType: "string";
551
+ columnType: "PgUUID";
552
+ data: string;
553
+ driverParam: string;
554
+ notNull: true;
555
+ hasDefault: false;
556
+ isPrimaryKey: false;
557
+ isAutoincrement: false;
558
+ hasRuntimeDefault: false;
559
+ enumValues: undefined;
560
+ baseColumn: never;
561
+ identity: undefined;
562
+ generated: undefined;
563
+ }, {}, {}>;
564
+ referralBindLogId: import("drizzle-orm/pg-core").PgColumn<{
565
+ name: "referral_bind_log_id";
566
+ tableName: "team_milestone_reward_grant";
567
+ dataType: "string";
568
+ columnType: "PgUUID";
569
+ data: string;
570
+ driverParam: string;
571
+ notNull: false;
572
+ hasDefault: false;
573
+ isPrimaryKey: false;
574
+ isAutoincrement: false;
575
+ hasRuntimeDefault: false;
576
+ enumValues: undefined;
577
+ baseColumn: never;
578
+ identity: undefined;
579
+ generated: undefined;
580
+ }, {}, {}>;
581
+ thresholdMemberCount: import("drizzle-orm/pg-core").PgColumn<{
582
+ name: "threshold_member_count";
583
+ tableName: "team_milestone_reward_grant";
584
+ dataType: "number";
585
+ columnType: "PgInteger";
586
+ data: number;
587
+ driverParam: string | number;
588
+ notNull: true;
589
+ hasDefault: false;
590
+ isPrimaryKey: false;
591
+ isAutoincrement: false;
592
+ hasRuntimeDefault: false;
593
+ enumValues: undefined;
594
+ baseColumn: never;
595
+ identity: undefined;
596
+ generated: undefined;
597
+ }, {}, {}>;
598
+ memberCountSnapshot: import("drizzle-orm/pg-core").PgColumn<{
599
+ name: "member_count_snapshot";
600
+ tableName: "team_milestone_reward_grant";
601
+ dataType: "number";
602
+ columnType: "PgInteger";
603
+ data: number;
604
+ driverParam: string | number;
605
+ notNull: true;
606
+ hasDefault: false;
607
+ isPrimaryKey: false;
608
+ isAutoincrement: false;
609
+ hasRuntimeDefault: false;
610
+ enumValues: undefined;
611
+ baseColumn: never;
612
+ identity: undefined;
613
+ generated: undefined;
614
+ }, {}, {}>;
615
+ platformAmount: import("drizzle-orm/pg-core").PgColumn<{
616
+ name: "platform_amount";
617
+ tableName: "team_milestone_reward_grant";
618
+ dataType: "string";
619
+ columnType: "PgNumeric";
620
+ data: string;
621
+ driverParam: string;
622
+ notNull: true;
623
+ hasDefault: false;
624
+ isPrimaryKey: false;
625
+ isAutoincrement: false;
626
+ hasRuntimeDefault: false;
627
+ enumValues: undefined;
628
+ baseColumn: never;
629
+ identity: undefined;
630
+ generated: undefined;
631
+ }, {}, {}>;
632
+ valueAddedAmount: import("drizzle-orm/pg-core").PgColumn<{
633
+ name: "value_added_amount";
634
+ tableName: "team_milestone_reward_grant";
635
+ dataType: "string";
636
+ columnType: "PgNumeric";
637
+ data: string;
638
+ driverParam: string;
639
+ notNull: true;
640
+ hasDefault: false;
641
+ isPrimaryKey: false;
642
+ isAutoincrement: false;
643
+ hasRuntimeDefault: false;
644
+ enumValues: undefined;
645
+ baseColumn: never;
646
+ identity: undefined;
647
+ generated: undefined;
648
+ }, {}, {}>;
649
+ rewardDescription: import("drizzle-orm/pg-core").PgColumn<{
650
+ name: "reward_description";
651
+ tableName: "team_milestone_reward_grant";
652
+ dataType: "string";
653
+ columnType: "PgText";
654
+ data: string;
655
+ driverParam: string;
656
+ notNull: false;
657
+ hasDefault: false;
658
+ isPrimaryKey: false;
659
+ isAutoincrement: false;
660
+ hasRuntimeDefault: false;
661
+ enumValues: [string, ...string[]];
662
+ baseColumn: never;
663
+ identity: undefined;
664
+ generated: undefined;
665
+ }, {}, {}>;
666
+ platformLedgerEntryId: import("drizzle-orm/pg-core").PgColumn<{
667
+ name: "platform_ledger_entry_id";
668
+ tableName: "team_milestone_reward_grant";
669
+ dataType: "string";
670
+ columnType: "PgUUID";
671
+ data: string;
672
+ driverParam: string;
673
+ notNull: false;
674
+ hasDefault: false;
675
+ isPrimaryKey: false;
676
+ isAutoincrement: false;
677
+ hasRuntimeDefault: false;
678
+ enumValues: undefined;
679
+ baseColumn: never;
680
+ identity: undefined;
681
+ generated: undefined;
682
+ }, {}, {}>;
683
+ valueAddedLedgerEntryId: import("drizzle-orm/pg-core").PgColumn<{
684
+ name: "value_added_ledger_entry_id";
685
+ tableName: "team_milestone_reward_grant";
686
+ dataType: "string";
687
+ columnType: "PgUUID";
688
+ data: string;
689
+ driverParam: string;
690
+ notNull: false;
691
+ hasDefault: false;
692
+ isPrimaryKey: false;
693
+ isAutoincrement: false;
694
+ hasRuntimeDefault: false;
695
+ enumValues: undefined;
696
+ baseColumn: never;
697
+ identity: undefined;
698
+ generated: undefined;
699
+ }, {}, {}>;
700
+ idempotencyKey: import("drizzle-orm/pg-core").PgColumn<{
701
+ name: "idempotency_key";
702
+ tableName: "team_milestone_reward_grant";
703
+ dataType: "string";
704
+ columnType: "PgText";
705
+ data: string;
706
+ driverParam: string;
707
+ notNull: true;
708
+ hasDefault: false;
709
+ isPrimaryKey: false;
710
+ isAutoincrement: false;
711
+ hasRuntimeDefault: false;
712
+ enumValues: [string, ...string[]];
713
+ baseColumn: never;
714
+ identity: undefined;
715
+ generated: undefined;
716
+ }, {}, {}>;
717
+ grantedAt: import("drizzle-orm/pg-core").PgColumn<{
718
+ name: "granted_at";
719
+ tableName: "team_milestone_reward_grant";
720
+ dataType: "date";
721
+ columnType: "PgTimestamp";
722
+ data: Date;
723
+ driverParam: string;
724
+ notNull: true;
725
+ hasDefault: true;
726
+ isPrimaryKey: false;
727
+ isAutoincrement: false;
728
+ hasRuntimeDefault: false;
729
+ enumValues: undefined;
730
+ baseColumn: never;
731
+ identity: undefined;
732
+ generated: undefined;
733
+ }, {}, {}>;
734
+ };
735
+ dialect: 'pg';
736
+ }>;
737
+ export declare const teamMilestoneRewardGrantRelations: import("drizzle-orm").Relations<"team_milestone_reward_grant", {
738
+ user: import("drizzle-orm").One<"user", true>;
739
+ plan: import("drizzle-orm").One<"team_milestone_reward_plan", true>;
740
+ rule: import("drizzle-orm").One<"team_milestone_reward_rule", true>;
741
+ referralBindLog: import("drizzle-orm").One<"referral_bind_log", false>;
742
+ }>;
455
743
  export declare const teamMilestoneRewardRuleRelations: import("drizzle-orm").Relations<"team_milestone_reward_rule", {
456
744
  plan: import("drizzle-orm").One<"team_milestone_reward_plan", true>;
457
745
  creator: import("drizzle-orm").One<"user", true>;
@@ -35,7 +35,19 @@ export declare const transferRouter: Elysia<"/transfer", {
35
35
  headers: import("elysia").HTTPHeaders;
36
36
  status?: number | keyof import("elysia").StatusMap;
37
37
  redirect?: string;
38
- cookie?: Record<string, import("elysia/cookies").ElysiaCookie>;
38
+ cookie?: Record<string, {
39
+ domain?: string | undefined;
40
+ expires?: Date | undefined;
41
+ httpOnly?: boolean | undefined;
42
+ maxAge?: number | undefined;
43
+ path?: string | undefined;
44
+ priority?: 'low' | 'medium' | 'high' | undefined;
45
+ partitioned?: boolean | undefined;
46
+ sameSite?: true | false | 'lax' | 'strict' | 'none' | undefined;
47
+ secure?: boolean | undefined;
48
+ secrets?: string | null | (string | null)[];
49
+ value?: unknown;
50
+ }>;
39
51
  };
40
52
  path: string;
41
53
  route: string;
@@ -35,19 +35,7 @@ export declare const welfareCycleAdminRouter: Elysia<"/welfare_cycle", {
35
35
  headers: import("elysia").HTTPHeaders;
36
36
  status?: number | keyof import("elysia").StatusMap;
37
37
  redirect?: string;
38
- cookie?: Record<string, {
39
- domain?: string | undefined;
40
- expires?: Date | undefined;
41
- httpOnly?: boolean | undefined;
42
- maxAge?: number | undefined;
43
- path?: string | undefined;
44
- priority?: 'low' | 'medium' | 'high' | undefined;
45
- partitioned?: boolean | undefined;
46
- sameSite?: true | false | 'lax' | 'strict' | 'none' | undefined;
47
- secure?: boolean | undefined;
48
- secrets?: string | null | (string | null)[];
49
- value?: unknown;
50
- }>;
38
+ cookie?: Record<string, import("elysia/cookies").ElysiaCookie>;
51
39
  };
52
40
  path: string;
53
41
  route: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@r2wa-org/eden",
3
- "version": "0.0.104",
3
+ "version": "0.0.110",
4
4
  "description": "Elysia API type definitions for Eden Treaty",
5
5
  "files": [
6
6
  "dist"