@certd/commercial-core 1.40.5 → 1.41.0

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/d/controller/sys/index.d.ts +4 -0
  3. package/dist/d/controller/sys/invite/invite-controller.d.ts +44 -0
  4. package/dist/d/controller/sys/invite/invite-level-controller.d.ts +31 -0
  5. package/dist/d/controller/sys/suite/product-activation-code-controller.d.ts +43 -0
  6. package/dist/d/controller/sys/suite/trade-controller.d.ts +8 -2
  7. package/dist/d/controller/sys/wallet/wallet-controller.d.ts +32 -0
  8. package/dist/d/controller/user/index.d.ts +3 -0
  9. package/dist/d/controller/user/invite/invite-controller.d.ts +57 -0
  10. package/dist/d/controller/user/suite/product-activation-code-controller.d.ts +13 -0
  11. package/dist/d/controller/user/suite/trade-controller.d.ts +6 -9
  12. package/dist/d/controller/user/wallet/wallet-controller.d.ts +47 -0
  13. package/dist/d/index.d.ts +2 -2
  14. package/dist/d/modules/index.d.ts +2 -0
  15. package/dist/d/modules/invite/entity/index.d.ts +5 -0
  16. package/dist/d/modules/invite/entity/invite-code.d.ts +8 -0
  17. package/dist/d/modules/invite/entity/invite-commission-log.d.ts +13 -0
  18. package/dist/d/modules/invite/entity/invite-level.d.ts +12 -0
  19. package/dist/d/modules/invite/entity/invite-relation.d.ts +8 -0
  20. package/dist/d/modules/invite/entity/invite-user-plan.d.ts +11 -0
  21. package/dist/d/modules/invite/index.d.ts +3 -0
  22. package/dist/d/modules/invite/service/index.d.ts +2 -0
  23. package/dist/d/modules/invite/service/invite-level-service.d.ts +12 -0
  24. package/dist/d/modules/invite/service/invite-service.d.ts +136 -0
  25. package/dist/d/modules/invite/settings.d.ts +10 -0
  26. package/dist/d/modules/suite/entity/index.d.ts +1 -0
  27. package/dist/d/modules/suite/entity/product-activation-code.d.ts +18 -0
  28. package/dist/d/modules/suite/entity/trade.d.ts +2 -0
  29. package/dist/d/modules/suite/entity/user-suite.d.ts +1 -0
  30. package/dist/d/modules/suite/service/index.d.ts +1 -0
  31. package/dist/d/modules/suite/service/product-activation-code-service.d.ts +78 -0
  32. package/dist/d/modules/suite/service/trade-service.d.ts +8 -0
  33. package/dist/d/modules/suite/service/user-suite-service.d.ts +4 -4
  34. package/dist/d/modules/wallet/entity/index.d.ts +3 -0
  35. package/dist/d/modules/wallet/entity/user-wallet-log.d.ts +13 -0
  36. package/dist/d/modules/wallet/entity/user-wallet-withdraw.d.ts +18 -0
  37. package/dist/d/modules/wallet/entity/user-wallet.d.ts +12 -0
  38. package/dist/d/modules/wallet/index.d.ts +3 -0
  39. package/dist/d/modules/wallet/service/index.d.ts +1 -0
  40. package/dist/d/modules/wallet/service/wallet-service.d.ts +114 -0
  41. package/dist/d/modules/wallet/settings.d.ts +19 -0
  42. package/dist/index.js +1 -1
  43. package/package.json +6 -6
  44. package/logs/app.log +0 -0
@@ -0,0 +1,78 @@
1
+ import { Repository } from "typeorm";
2
+ import { BaseService } from "@certd/lib-server";
3
+ import { ProductActivationCodeEntity, UserSuiteEntity } from "../entity/index.js";
4
+ import { UserSuiteService } from "./user-suite-service.js";
5
+ import { ProductService } from "./product-service.js";
6
+ export type GenerateActivationCodeReq = {
7
+ productId: number;
8
+ duration: number;
9
+ count: number;
10
+ expireTime?: number;
11
+ exported?: boolean;
12
+ remark?: string;
13
+ };
14
+ /**
15
+ * 产品激活码服务
16
+ */
17
+ export declare class ProductActivationCodeService extends BaseService<ProductActivationCodeEntity> {
18
+ repository: Repository<ProductActivationCodeEntity>;
19
+ userSuiteRepository: Repository<UserSuiteEntity>;
20
+ productService: ProductService;
21
+ userSuiteService: UserSuiteService;
22
+ getRepository(): Repository<ProductActivationCodeEntity>;
23
+ /**
24
+ * 批量生成激活码
25
+ */
26
+ generate(req: GenerateActivationCodeReq): Promise<{
27
+ batchNo: string;
28
+ count: number;
29
+ codes: {
30
+ code: string;
31
+ productId: number;
32
+ duration: number;
33
+ batchNo: string;
34
+ status: string;
35
+ expireTime: number;
36
+ remark: string;
37
+ }[];
38
+ }>;
39
+ /**
40
+ * 生成单个CDK激活码,格式:CDK + 4位产品ID + 日期(YYYYMMDD) + 10位nanoId
41
+ */
42
+ private generateCode;
43
+ /**
44
+ * 用户兑换激活码
45
+ */
46
+ use(userId: number, code: string): Promise<{
47
+ title: string;
48
+ duration: number;
49
+ }>;
50
+ /**
51
+ * 禁用激活码
52
+ */
53
+ disable(id: number): Promise<void>;
54
+ /**
55
+ * 启用激活码
56
+ */
57
+ enable(id: number): Promise<void>;
58
+ /**
59
+ * 导出未使用的激活码,并标记为已导出
60
+ */
61
+ exportCodes(req: {
62
+ ids?: number[];
63
+ }): Promise<{
64
+ id: number;
65
+ code: string;
66
+ productId: number;
67
+ duration: number;
68
+ batchNo: string;
69
+ status: import("../entity/product-activation-code.js").ActivationCodeStatus;
70
+ expireTime: number;
71
+ remark: string;
72
+ }[]>;
73
+ /**
74
+ * 删除激活码
75
+ */
76
+ deleteById(id: number): Promise<void>;
77
+ private checkId;
78
+ }
@@ -4,12 +4,15 @@ import { TradeEntity } from "../entity/index.js";
4
4
  import { ProductService } from "./product-service.js";
5
5
  import { UpdateTradeInfo } from "../payments/index.js";
6
6
  import { UserSuiteService } from "./user-suite-service.js";
7
+ import { InviteService } from "../../invite/index.js";
8
+ import { WalletService } from "../../wallet/index.js";
7
9
  export type TradeCreateProps = {
8
10
  productId: number;
9
11
  duration: number;
10
12
  num: number;
11
13
  payType: string;
12
14
  userId: number;
15
+ useRebateBalance?: boolean;
13
16
  };
14
17
  /**
15
18
  *
@@ -20,12 +23,15 @@ export declare class TradeService extends BaseService<TradeEntity> {
20
23
  sysSettingsService: SysSettingsService;
21
24
  accessService: AccessService;
22
25
  userSuiteService: UserSuiteService;
26
+ inviteService: InviteService;
27
+ walletService: WalletService;
23
28
  getRepository(): Repository<TradeEntity>;
24
29
  createFree(req: TradeCreateProps): Promise<void>;
25
30
  private findDurationPrice;
26
31
  create(req: TradeCreateProps): Promise<TradeEntity>;
27
32
  private getBuyableProduct;
28
33
  buildPaymentReq(trade: TradeEntity, clientIp: string): Promise<any>;
34
+ getThirdPartyPayAmount(trade: TradeEntity): number;
29
35
  getPaymentByType(paymentType: string): Promise<any>;
30
36
  getByTradeNo(out_trade_no: string): Promise<TradeEntity>;
31
37
  onPaid(tradeInfo: UpdateTradeInfo): Promise<void>;
@@ -34,5 +40,7 @@ export declare class TradeService extends BaseService<TradeEntity> {
34
40
  * @param id
35
41
  */
36
42
  syncStatus(id: number): Promise<void>;
43
+ cancel(id: number, operatorRemark?: string): Promise<unknown>;
44
+ private closeWaitPayTrade;
37
45
  updatePaid(id: number, userName: string): Promise<void>;
38
46
  }
@@ -1,5 +1,5 @@
1
- import { EntityManager, Repository } from "typeorm";
2
- import { BaseService, SysSettingsService, SysSuiteSetting } from "@certd/lib-server";
1
+ import { Repository } from "typeorm";
2
+ import { BaseService, ServiceContext, SysSettingsService, SysSuiteSetting } from "@certd/lib-server";
3
3
  import { ProductEntity, SuiteContent, UserSuiteEntity } from "../entity/index.js";
4
4
  import { ProductService } from "./product-service.js";
5
5
  export type ProductToUserSuiteProps = {
@@ -7,9 +7,9 @@ export type ProductToUserSuiteProps = {
7
7
  userId: number;
8
8
  product: ProductEntity;
9
9
  tradeId?: number;
10
- entityManager?: EntityManager;
11
10
  isPresent?: boolean;
12
11
  isBootstrap?: boolean;
12
+ activationCodeId?: number;
13
13
  };
14
14
  export type IUsedCountService = {
15
15
  getUsedCount(userId: number): Promise<any>;
@@ -33,7 +33,7 @@ export declare class UserSuiteService extends BaseService<UserSuiteEntity> {
33
33
  productService: ProductService;
34
34
  getRepository(): Repository<UserSuiteEntity>;
35
35
  presentGiftSuite(userId: number): Promise<any>;
36
- productToUserSuite(req: ProductToUserSuiteProps): Promise<void>;
36
+ productToUserSuite(ctx: ServiceContext, req: ProductToUserSuiteProps): Promise<void>;
37
37
  getMySuiteDetail(useId: number): Promise<{
38
38
  enabled: boolean;
39
39
  suites: UserSuiteSimple[];
@@ -0,0 +1,3 @@
1
+ export * from "./user-wallet.js";
2
+ export * from "./user-wallet-log.js";
3
+ export * from "./user-wallet-withdraw.js";
@@ -0,0 +1,13 @@
1
+ export type UserWalletLogType = "income" | "withdraw" | "consume";
2
+ export declare class UserWalletLogEntity {
3
+ id: number;
4
+ userId: number;
5
+ type: UserWalletLogType;
6
+ amount: number;
7
+ balanceAfter: number;
8
+ tradeId: number;
9
+ withdrawId: number;
10
+ remark: string;
11
+ createTime: Date;
12
+ updateTime: Date;
13
+ }
@@ -0,0 +1,18 @@
1
+ import type { UserWalletWithdrawChannel } from "../settings.js";
2
+ export type UserWalletWithdrawStatus = "pending" | "approved" | "rejected";
3
+ export declare class UserWalletWithdrawEntity {
4
+ id: number;
5
+ userId: number;
6
+ amount: number;
7
+ status: UserWalletWithdrawStatus;
8
+ channel: UserWalletWithdrawChannel;
9
+ realName: string;
10
+ account: string;
11
+ bankName: string;
12
+ qrCode: string;
13
+ auditUserId: number;
14
+ auditRemark: string;
15
+ auditTime: number;
16
+ createTime: Date;
17
+ updateTime: Date;
18
+ }
@@ -0,0 +1,12 @@
1
+ export declare class UserWalletEntity {
2
+ id: number;
3
+ userId: number;
4
+ totalAmount: number;
5
+ frozenAmount: number;
6
+ totalIncomeAmount: number;
7
+ totalConsumedAmount: number;
8
+ totalWithdrawAmount: number;
9
+ createTime: Date;
10
+ updateTime: Date;
11
+ getAvaliableAmount(): number;
12
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./entity/index.js";
2
+ export * from "./service/index.js";
3
+ export * from "./settings.js";
@@ -0,0 +1 @@
1
+ export * from "./wallet-service.js";
@@ -0,0 +1,114 @@
1
+ import { BaseService, FileService, SysSettingsService } from "@certd/lib-server";
2
+ import { EntityManager, Repository } from "typeorm";
3
+ import { UserWalletEntity, UserWalletLogEntity, UserWalletWithdrawEntity } from "../entity/index.js";
4
+ import { SysWalletSetting, UserWalletWithdrawChannel, UserWalletWithdrawSetting } from "../settings.js";
5
+ export type UserWalletSummary = {
6
+ totalAmount: number;
7
+ availableAmount: number;
8
+ frozenAmount: number;
9
+ totalIncomeAmount: number;
10
+ totalConsumedAmount: number;
11
+ totalWithdrawAmount: number;
12
+ };
13
+ type UserSettingsServiceLike = {
14
+ getSetting<T>(userId: number, projectId: number, type: any, cache?: boolean): Promise<T>;
15
+ saveSetting<T>(userId: number, projectId: number, bean: T): Promise<void>;
16
+ };
17
+ export declare class WalletService extends BaseService<UserWalletEntity> {
18
+ repository: Repository<UserWalletEntity>;
19
+ logRepository: Repository<UserWalletLogEntity>;
20
+ withdrawRepository: Repository<UserWalletWithdrawEntity>;
21
+ sysSettingsService: SysSettingsService;
22
+ userSettingsService: UserSettingsServiceLike;
23
+ fileService: FileService;
24
+ getRepository(): Repository<UserWalletEntity>;
25
+ getSummary(userId: number): Promise<UserWalletSummary>;
26
+ ensureWallet(userId: number, manager?: EntityManager): Promise<UserWalletEntity>;
27
+ addIncome(req: {
28
+ userId: number;
29
+ amount: number;
30
+ tradeId?: number;
31
+ remark?: string;
32
+ manager: EntityManager;
33
+ }): Promise<UserWalletEntity>;
34
+ income(req: {
35
+ userId: number;
36
+ amount: number;
37
+ tradeId?: number;
38
+ remark?: string;
39
+ manager: EntityManager;
40
+ }): Promise<UserWalletEntity>;
41
+ frozenByTrade(req: {
42
+ userId: number;
43
+ tradeId: number;
44
+ amount: number;
45
+ manager: EntityManager;
46
+ }): Promise<number>;
47
+ consumeByTrade(req: {
48
+ userId: number;
49
+ tradeId: number;
50
+ amount: number;
51
+ manager: EntityManager;
52
+ }): Promise<number>;
53
+ cancelByTrade(req: {
54
+ userId: number;
55
+ tradeId: number;
56
+ amount: number;
57
+ manager: EntityManager;
58
+ }): Promise<number>;
59
+ saveWithdrawSetting(userId: number, body: {
60
+ channel?: UserWalletWithdrawChannel;
61
+ realName?: string;
62
+ account?: string;
63
+ bankName?: string;
64
+ qrCode?: string;
65
+ }): Promise<UserWalletWithdrawSetting>;
66
+ getWithdrawSetting(userId: number): Promise<UserWalletWithdrawSetting>;
67
+ withdrawApply(userId: number, amount: number): Promise<unknown>;
68
+ applyWithdraw(userId: number, amount: number): Promise<unknown>;
69
+ approveWithdraw(id: number, auditUserId: number, auditRemark?: string): Promise<unknown>;
70
+ rejectWithdraw(id: number, auditUserId: number, auditRemark?: string): Promise<unknown>;
71
+ auditWithdraw(req: {
72
+ id: number;
73
+ auditUserId: number;
74
+ auditRemark?: string;
75
+ status: "approved" | "rejected";
76
+ }): Promise<unknown>;
77
+ withdrawPage(userId: number, body: any): Promise<{
78
+ records: UserWalletWithdrawEntity[];
79
+ total: number;
80
+ offset: any;
81
+ limit: any;
82
+ }>;
83
+ logPage(userId: number, body: any): Promise<{
84
+ records: UserWalletLogEntity[];
85
+ total: number;
86
+ offset: any;
87
+ limit: any;
88
+ }>;
89
+ sysWithdrawPage(body: any): Promise<{
90
+ records: UserWalletWithdrawEntity[];
91
+ total: number;
92
+ offset: any;
93
+ limit: any;
94
+ }>;
95
+ checkWithdrawChannelEnabled(channel: UserWalletWithdrawChannel): Promise<SysWalletSetting>;
96
+ private checkWithdrawBankEnabled;
97
+ private getEnabledWithdrawBanks;
98
+ private pageByRepository;
99
+ private addLog;
100
+ private doWalletTrade;
101
+ private doBalanceChange;
102
+ private frozen;
103
+ private unfrozen;
104
+ private getWallet;
105
+ private increaseTotal;
106
+ private getTradeRemark;
107
+ private withdrawApprove;
108
+ private withdrawReject;
109
+ private withdrawCancel;
110
+ private toAmount;
111
+ private toSignedAmount;
112
+ private toWalletSummary;
113
+ }
114
+ export {};
@@ -0,0 +1,19 @@
1
+ import { BaseSettings } from "@certd/lib-server";
2
+ export type UserWalletWithdrawChannel = "alipay" | "bank";
3
+ export declare class SysWalletSetting extends BaseSettings {
4
+ static __title__: string;
5
+ static __key__: string;
6
+ static __access__: string;
7
+ minWithdrawAmount: number;
8
+ withdrawChannels: UserWalletWithdrawChannel[];
9
+ withdrawBanks: string[];
10
+ }
11
+ export declare class UserWalletWithdrawSetting extends BaseSettings {
12
+ static __title__: string;
13
+ static __key__: string;
14
+ channel: UserWalletWithdrawChannel;
15
+ realName: string;
16
+ account: string;
17
+ bankName: string;
18
+ qrCode: string;
19
+ }