@jctrans/dw-sdk 1.0.1 → 1.1.1
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 +513 -2
- package/dist/core/BaseQuery.js +1 -1
- package/dist/core/GraphQLClient.js +1 -1
- package/dist/generated/member/MemberManager.d.ts +48 -0
- package/dist/generated/member/MemberManager.js +1 -0
- package/dist/generated/member/MemberQuarterlyQuery.d.ts +64 -0
- package/dist/generated/member/MemberQuarterlyQuery.js +1 -0
- package/dist/generated/member/types.d.ts +94 -0
- package/dist/generated/member/types.js +1 -0
- package/dist/generated/opportunity/OpportunityEffectiveBoardQuery.js +1 -1
- package/dist/generated/opportunity/OpportunityManager.js +1 -1
- package/dist/generated/opportunity/types.js +1 -1
- package/dist/generated/platform/PlatformManager.d.ts +64 -0
- package/dist/generated/platform/PlatformManager.js +1 -0
- package/dist/generated/platform/PlatformPerformanceDeptUserQuery.d.ts +80 -0
- package/dist/generated/platform/PlatformPerformanceDeptUserQuery.js +1 -0
- package/dist/generated/platform/types.d.ts +146 -0
- package/dist/generated/platform/types.js +1 -0
- package/dist/generated/sales/CrmNewSigningQuery.d.ts +33 -0
- package/dist/generated/sales/CrmNewSigningQuery.js +1 -0
- package/dist/generated/sales/CrmRenewalDetailQuery.d.ts +33 -0
- package/dist/generated/sales/CrmRenewalDetailQuery.js +1 -0
- package/dist/generated/sales/CrmRenewalQuery.d.ts +33 -0
- package/dist/generated/sales/CrmRenewalQuery.js +1 -0
- package/dist/generated/sales/RenewalDetailQuery.d.ts +43 -0
- package/dist/generated/sales/RenewalDetailQuery.js +1 -0
- package/dist/generated/sales/SalesEventPerfQuery.d.ts +21 -0
- package/dist/generated/sales/SalesEventPerfQuery.js +1 -0
- package/dist/generated/sales/SalesManager.d.ts +94 -0
- package/dist/generated/sales/SalesManager.js +1 -0
- package/dist/generated/sales/SalesMemberPerfQuery.d.ts +21 -0
- package/dist/generated/sales/SalesMemberPerfQuery.js +1 -0
- package/dist/generated/sales/SalesTotalPerfQuery.d.ts +25 -0
- package/dist/generated/sales/SalesTotalPerfQuery.js +1 -0
- package/dist/generated/sales/types.d.ts +224 -0
- package/dist/generated/sales/types.js +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +1 -1
- package/dist/services/opportunity/BoardService.js +1 -1
- package/dist/services/opportunity/types.js +1 -1
- package/dist/services/opportunity/validator.js +1 -1
- package/dist/services/platform/PlatformService.d.ts +83 -0
- package/dist/services/platform/PlatformService.js +1 -0
- package/dist/services/sales/SalesService.d.ts +106 -0
- package/dist/services/sales/SalesService.js +1 -0
- package/package.json +12 -12
package/README.md
CHANGED
|
@@ -83,6 +83,117 @@ if (res.success) {
|
|
|
83
83
|
}
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
+
### SalesService — 销售域封装 API
|
|
87
|
+
|
|
88
|
+
销售域提供总业绩、会员业绩、会议业绩、续费明细和 CRM 数据分析看板查询,共用一个入参结构。
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
import { createDwSdk } from '@jctrans/dw-sdk'
|
|
92
|
+
|
|
93
|
+
const sdk = createDwSdk({ baseUrl: 'https://api.jctrans.net.cn' })
|
|
94
|
+
|
|
95
|
+
// 总业绩看板
|
|
96
|
+
const total = await sdk.sales.service.salesTotalPerf({
|
|
97
|
+
deptId: 100,
|
|
98
|
+
performanceMonth: '2026-06',
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
// 会员业绩看板
|
|
102
|
+
const member = await sdk.sales.service.salesMemberPerf({
|
|
103
|
+
deptId: 100,
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
// 会议业绩看板
|
|
107
|
+
const event = await sdk.sales.service.salesEventPerf({
|
|
108
|
+
deptId: 100,
|
|
109
|
+
monthFilterMode: 'QUARTER',
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
// 续费明细
|
|
113
|
+
const detail = await sdk.sales.service.renewalDetail({
|
|
114
|
+
userId: 100,
|
|
115
|
+
performanceMonth: '2026-06',
|
|
116
|
+
})
|
|
117
|
+
|
|
118
|
+
// CRM 新签观测
|
|
119
|
+
const newSigning = await sdk.sales.service.crmNewSigning({
|
|
120
|
+
deptId: 100,
|
|
121
|
+
statMonth: '2026-06',
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
// CRM 续费观测
|
|
125
|
+
const renewal = await sdk.sales.service.crmRenewal({
|
|
126
|
+
deptId: 100,
|
|
127
|
+
statMonth: '2026-06',
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
// CRM 续费观测详情
|
|
131
|
+
const renewalDetail = await sdk.sales.service.crmRenewalDetail({
|
|
132
|
+
deptId: 100,
|
|
133
|
+
statMonth: '2026-06',
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
if (total.success) {
|
|
137
|
+
// total.data.totalPerf, total.data.deptGroupList, total.data.userGroupList
|
|
138
|
+
console.log('总业绩:', total.data.totalPerf)
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (detail.success) {
|
|
142
|
+
console.log(`续费明细 ${detail.data.length} 条`)
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 客户域 — 季度综合报告
|
|
147
|
+
|
|
148
|
+
```ts
|
|
149
|
+
import { createDwSdk } from '@jctrans/dw-sdk'
|
|
150
|
+
|
|
151
|
+
const sdk = createDwSdk({ baseUrl: 'https://api.jctrans.net.cn' })
|
|
152
|
+
|
|
153
|
+
// 客户季度综合报告
|
|
154
|
+
const report = await sdk.member.memberQuarterly()
|
|
155
|
+
.select('companyId', 'year', 'quarter', 'companyNameCn', 'selfReleaseCount')
|
|
156
|
+
.arg('companyId', 12345)
|
|
157
|
+
.arg('year', 2026)
|
|
158
|
+
.arg('quarter', 2)
|
|
159
|
+
.arg('subTypes', ['interaction', 'account'])
|
|
160
|
+
.query()
|
|
161
|
+
|
|
162
|
+
// report: MemberQuarterlyVo
|
|
163
|
+
// report.interactionList — 互动排名子表
|
|
164
|
+
// report.accountList — 账号使用明细子表
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### CRM 数据分析看板
|
|
168
|
+
|
|
169
|
+
```ts
|
|
170
|
+
import { createDwSdk } from '@jctrans/dw-sdk'
|
|
171
|
+
|
|
172
|
+
const sdk = createDwSdk({ baseUrl: 'https://api.jctrans.net.cn' })
|
|
173
|
+
|
|
174
|
+
// CRM 新签观测
|
|
175
|
+
const newSigning = await sdk.sales.crmNewSigning()
|
|
176
|
+
.arg('deptId', 100)
|
|
177
|
+
.arg('statMonth', '2026-06')
|
|
178
|
+
.query()
|
|
179
|
+
|
|
180
|
+
// CRM 续费观测
|
|
181
|
+
const renewal = await sdk.sales.crmRenewal()
|
|
182
|
+
.arg('deptId', 100)
|
|
183
|
+
.arg('statMonth', '2026-06')
|
|
184
|
+
.query()
|
|
185
|
+
|
|
186
|
+
// CRM 续费观测详情
|
|
187
|
+
const renewalDetail = await sdk.sales.crmRenewalDetail()
|
|
188
|
+
.arg('deptId', 100)
|
|
189
|
+
.arg('statMonth', '2026-06')
|
|
190
|
+
.query()
|
|
191
|
+
|
|
192
|
+
// newSigning: CrmDashboardNewSigningVo[]
|
|
193
|
+
// renewal: CrmDashboardRenewalVo[]
|
|
194
|
+
// renewalDetail: CrmDashboardRenewalDetailVo[]
|
|
195
|
+
```
|
|
196
|
+
|
|
86
197
|
## 基础用例
|
|
87
198
|
|
|
88
199
|
### 1. 全字段分页查询
|
|
@@ -174,6 +285,126 @@ const graphQL = sdk.opportunity.opportunityEffectiveBoardPage()
|
|
|
174
285
|
// ) { total current size pages records { companyId periodType inquiryCount } } }
|
|
175
286
|
```
|
|
176
287
|
|
|
288
|
+
## 销售域用例
|
|
289
|
+
|
|
290
|
+
### 7. 总业绩看板查询(底层 Query Builder)
|
|
291
|
+
|
|
292
|
+
```ts
|
|
293
|
+
const total = await sdk.sales.salesTotalPerf()
|
|
294
|
+
.arg('deptId', 100)
|
|
295
|
+
.arg('performanceMonth', '2026-06')
|
|
296
|
+
.query()
|
|
297
|
+
|
|
298
|
+
// total: SalesTotalPerfBoardVo
|
|
299
|
+
// total.totalPerf — 单条总业绩
|
|
300
|
+
// total.deptGroupList — 部门分组列表
|
|
301
|
+
// total.userGroupList — 用户分组列表
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### 8. 会员业绩看板查询(底层 Query Builder)
|
|
305
|
+
|
|
306
|
+
```ts
|
|
307
|
+
const member = await sdk.sales.salesMemberPerf()
|
|
308
|
+
.arg('deptId', 100)
|
|
309
|
+
.query()
|
|
310
|
+
|
|
311
|
+
// member: SalesMemberPerfBoardVo
|
|
312
|
+
// member.totalMemberPerf — 总会员业绩
|
|
313
|
+
// member.newSigningPerf — 新签业绩
|
|
314
|
+
// member.reSigningPerf — 续签业绩
|
|
315
|
+
// member.jcvfPerf — 金诚运营基金业绩
|
|
316
|
+
// member.groupList — 分组列表
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### 9. 会议业绩看板查询(底层 Query Builder)
|
|
320
|
+
|
|
321
|
+
```ts
|
|
322
|
+
const event = await sdk.sales.salesEventPerf()
|
|
323
|
+
.arg('deptId', 100)
|
|
324
|
+
.arg('monthFilterMode', 'QUARTER')
|
|
325
|
+
.query()
|
|
326
|
+
|
|
327
|
+
// event: SalesEventPerfBoardVo
|
|
328
|
+
// event.sessionPerfList — 会议场次业绩列表
|
|
329
|
+
// event.productBarList — 产品条列表
|
|
330
|
+
// event.groupList — 分组列表
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### 10. 带市场区域和预测查询
|
|
334
|
+
|
|
335
|
+
```ts
|
|
336
|
+
const total = await sdk.sales.salesTotalPerf()
|
|
337
|
+
.arg('deptId', 100)
|
|
338
|
+
.arg('marketArea', '0') // 0=国内, 1=海外
|
|
339
|
+
.arg('forecastEnabled', true)
|
|
340
|
+
.arg('performanceMonth', '2026-06')
|
|
341
|
+
.query()
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### 11. 续费明细查询(底层 Query Builder)
|
|
345
|
+
|
|
346
|
+
```ts
|
|
347
|
+
const detail = await sdk.sales.renewalDetail()
|
|
348
|
+
.arg('userId', 100)
|
|
349
|
+
.arg('performanceMonth', '2026-06')
|
|
350
|
+
.query()
|
|
351
|
+
|
|
352
|
+
// detail: RenewalDetailVo[]
|
|
353
|
+
// detail[0].normalAmountRmb, detail[0].receiptTotalAmountRmb, detail[0].completionRate, ...
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### 12. CRM 新签观测(底层 Query Builder)
|
|
357
|
+
|
|
358
|
+
```ts
|
|
359
|
+
const list = await sdk.sales.crmNewSigning()
|
|
360
|
+
.arg('deptId', 100)
|
|
361
|
+
.arg('statMonth', '2026-06')
|
|
362
|
+
.query()
|
|
363
|
+
|
|
364
|
+
// list: CrmDashboardNewSigningVo[]
|
|
365
|
+
// list[0].newSigningCount, list[0].firstSigningCount, list[0].addOnSigningCount, ...
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### 13. CRM 续费观测(底层 Query Builder)
|
|
369
|
+
|
|
370
|
+
```ts
|
|
371
|
+
const list = await sdk.sales.crmRenewal()
|
|
372
|
+
.arg('deptId', 100)
|
|
373
|
+
.arg('statMonth', '2026-06')
|
|
374
|
+
.query()
|
|
375
|
+
|
|
376
|
+
// list: CrmDashboardRenewalVo[]
|
|
377
|
+
// list[0].renewalRate, list[0].renewedProductCount, list[0].unrenewedProductCount, ...
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### 14. CRM 续费观测详情(底层 Query Builder)
|
|
381
|
+
|
|
382
|
+
```ts
|
|
383
|
+
const list = await sdk.sales.crmRenewalDetail()
|
|
384
|
+
.arg('deptId', 100)
|
|
385
|
+
.arg('statMonth', '2026-06')
|
|
386
|
+
.query()
|
|
387
|
+
|
|
388
|
+
// list: CrmDashboardRenewalDetailVo[]
|
|
389
|
+
// list[0].customerName, list[0].expireProductName, list[0].renewalStatus, ...
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### 15. 调试:查看销售域 GraphQL payload
|
|
393
|
+
|
|
394
|
+
```ts
|
|
395
|
+
const graphQL = sdk.sales.salesTotalPerf()
|
|
396
|
+
.arg('deptId', 100)
|
|
397
|
+
.arg('performanceMonth', '2026-06')
|
|
398
|
+
.toGraphQL()
|
|
399
|
+
|
|
400
|
+
// 输出:
|
|
401
|
+
// query { salesTotalPerf(input: { deptId: 100, performanceMonth: "2026-06" }) {
|
|
402
|
+
// totalPerf { queryDim performanceMonth deptId deptName ... }
|
|
403
|
+
// deptGroupList { queryDim performanceMonth ... }
|
|
404
|
+
// userGroupList { queryDim userId userName ... }
|
|
405
|
+
// } }
|
|
406
|
+
```
|
|
407
|
+
|
|
177
408
|
## 封装 API 用例(sdk.opportunity.board)
|
|
178
409
|
|
|
179
410
|
封装 API 提供 `{ success, data, error }` 统一返回结构,参数校验失败不抛异常,前端可直接展示 `error` 字段。
|
|
@@ -343,6 +574,151 @@ interface BoardQueryResult {
|
|
|
343
574
|
| `YEAR` | `.eq('periodType', 'year')` + `.arg('statYear', YYYY)` |
|
|
344
575
|
| `MONTH` | `.eq('periodType', 'month')` + `.eq('statMonth', N)` + `.arg('statYear', YYYY)` |
|
|
345
576
|
|
|
577
|
+
### SalesService(封装层)
|
|
578
|
+
|
|
579
|
+
通过 `sdk.sales.service` 访问,提供四个查询。
|
|
580
|
+
|
|
581
|
+
#### 共用入参 `SalesServiceParams`
|
|
582
|
+
|
|
583
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
584
|
+
|------|------|------|------|
|
|
585
|
+
| `params.deptId` | `number \| null` | ❌ | 部门 ID |
|
|
586
|
+
| `params.userId` | `number \| null` | ❌ | 用户 ID |
|
|
587
|
+
| `params.performanceMonth` | `string \| null` | ❌ | 业绩月份,格式 `YYYY-MM`(如 `2026-06`) |
|
|
588
|
+
| `params.forecastEnabled` | `boolean \| null` | ❌ | 是否启用预测 |
|
|
589
|
+
| `params.marketArea` | `string \| null` | ❌ | 市场区域 |
|
|
590
|
+
| `params.monthFilterMode` | `string \| null` | ❌ | 月份筛选模式(仅 `salesEventPerf` 使用) |
|
|
591
|
+
|
|
592
|
+
#### service.salesTotalPerf(params)
|
|
593
|
+
|
|
594
|
+
**返回值:`Promise<SalesTotalPerfResult>`**
|
|
595
|
+
|
|
596
|
+
```ts
|
|
597
|
+
interface SalesTotalPerfResult {
|
|
598
|
+
success: boolean
|
|
599
|
+
data: SalesTotalPerfBoardVo | null
|
|
600
|
+
error: string | null
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
// SalesTotalPerfBoardVo:
|
|
604
|
+
// totalPerf: SalesDeptPerfVo
|
|
605
|
+
// deptGroupList: SalesDeptPerfVo[]
|
|
606
|
+
// userGroupList: SalesUserPerfVo[]
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
#### service.salesMemberPerf(params)
|
|
610
|
+
|
|
611
|
+
**返回值:`Promise<SalesMemberPerfResult>`**
|
|
612
|
+
|
|
613
|
+
```ts
|
|
614
|
+
interface SalesMemberPerfResult {
|
|
615
|
+
success: boolean
|
|
616
|
+
data: SalesMemberPerfBoardVo | null
|
|
617
|
+
error: string | null
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
// SalesMemberPerfBoardVo:
|
|
621
|
+
// totalMemberPerf: SalesPerfMemberDashboardVo
|
|
622
|
+
// newSigningPerf: SalesPerfMemberDashboardVo
|
|
623
|
+
// reSigningPerf: SalesPerfMemberDashboardVo
|
|
624
|
+
// jcvfPerf: SalesPerfMemberDashboardVo
|
|
625
|
+
// groupList: SalesPerfMemberDashboardVo[]
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
#### service.salesEventPerf(params)
|
|
629
|
+
|
|
630
|
+
**返回值:`Promise<SalesEventPerfResult>`**
|
|
631
|
+
|
|
632
|
+
```ts
|
|
633
|
+
interface SalesEventPerfResult {
|
|
634
|
+
success: boolean
|
|
635
|
+
data: SalesEventPerfBoardVo | null
|
|
636
|
+
error: string | null
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
// SalesEventPerfBoardVo:
|
|
640
|
+
// sessionPerfList: SalesPerfEventDashboardVo[]
|
|
641
|
+
// productBarList: SalesPerfEventDashboardVo[]
|
|
642
|
+
// groupList: SalesPerfEventDashboardVo[]
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
#### service.renewalDetail(params)
|
|
646
|
+
|
|
647
|
+
**返回值:`Promise<RenewalDetailResult>`**
|
|
648
|
+
|
|
649
|
+
```ts
|
|
650
|
+
interface RenewalDetailResult {
|
|
651
|
+
success: boolean
|
|
652
|
+
data: RenewalDetailVo[] | null
|
|
653
|
+
error: string | null
|
|
654
|
+
}
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
**RenewalDetailVo 关键字段:**
|
|
658
|
+
|
|
659
|
+
| 字段 | 类型 | 说明 |
|
|
660
|
+
|------|------|------|
|
|
661
|
+
| `normalAmountRmb` | `number` | 正常收款金额(人民币) |
|
|
662
|
+
| `overdraftAmountRmb` | `number` | 透支金额 |
|
|
663
|
+
| `recoveredAmountRmb` | `number` | 回收金额 |
|
|
664
|
+
| `receiptTotalAmountRmb` | `number` | 收款总金额 |
|
|
665
|
+
| `targetAmount` | `number` | 目标金额 |
|
|
666
|
+
| `completionRate` | `number` | 完成率 |
|
|
667
|
+
| `receiptAmountRmb` | `number` | 收款金额(人民币) |
|
|
668
|
+
| `targetAmount` | `number` | 目标金额 |
|
|
669
|
+
| `completionRate` | `number` | 完成率 |
|
|
670
|
+
| `receiptAmountRmb` | `number` | 收款金额(人民币) |
|
|
671
|
+
| `targetAmount` | `number` | 目标金额 |
|
|
672
|
+
| `completionRate` | `number` | 完成率 |
|
|
673
|
+
|
|
674
|
+
#### service.crmNewSigning(params)
|
|
675
|
+
|
|
676
|
+
**入参:`CrmDashboardParams`**
|
|
677
|
+
|
|
678
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
679
|
+
|------|------|------|------|
|
|
680
|
+
| `params.deptId` | `number \| null` | ❌ | 部门 ID |
|
|
681
|
+
| `params.userId` | `number \| null` | ❌ | 用户 ID |
|
|
682
|
+
| `params.statMonth` | `string \| null` | ❌ | 统计月份,格式 `YYYY-MM`(如 `2026-06`) |
|
|
683
|
+
|
|
684
|
+
**返回值:`Promise<CrmNewSigningResult>`**
|
|
685
|
+
|
|
686
|
+
```ts
|
|
687
|
+
interface CrmNewSigningResult {
|
|
688
|
+
success: boolean
|
|
689
|
+
data: CrmDashboardNewSigningVo[] | null
|
|
690
|
+
error: string | null
|
|
691
|
+
}
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
#### service.crmRenewal(params)
|
|
695
|
+
|
|
696
|
+
入参与 `crmNewSigning` 相同(`CrmDashboardParams`)。
|
|
697
|
+
|
|
698
|
+
**返回值:`Promise<CrmRenewalResult>`**
|
|
699
|
+
|
|
700
|
+
```ts
|
|
701
|
+
interface CrmRenewalResult {
|
|
702
|
+
success: boolean
|
|
703
|
+
data: CrmDashboardRenewalVo[] | null
|
|
704
|
+
error: string | null
|
|
705
|
+
}
|
|
706
|
+
```
|
|
707
|
+
|
|
708
|
+
#### service.crmRenewalDetail(params)
|
|
709
|
+
|
|
710
|
+
入参与 `crmNewSigning` 相同(`CrmDashboardParams`)。
|
|
711
|
+
|
|
712
|
+
**返回值:`Promise<CrmRenewalDetailResult>`**
|
|
713
|
+
|
|
714
|
+
```ts
|
|
715
|
+
interface CrmRenewalDetailResult {
|
|
716
|
+
success: boolean
|
|
717
|
+
data: CrmDashboardRenewalDetailVo[] | null
|
|
718
|
+
error: string | null
|
|
719
|
+
}
|
|
720
|
+
```
|
|
721
|
+
|
|
346
722
|
## 与 Java 后端对齐
|
|
347
723
|
|
|
348
724
|
SDK 与 `jctrans-data-service` 的 Java 代码完全对齐。
|
|
@@ -358,6 +734,15 @@ POST {baseUrl}/api/{domain}/{topic}/graphql
|
|
|
358
734
|
| domain | topic | 完整 URL |
|
|
359
735
|
|--------|-------|---------|
|
|
360
736
|
| `opportunity` | `opportunityEffectiveBoardPage` | `/api/opportunity/opportunityEffectiveBoardPage/graphql` |
|
|
737
|
+
| `platform` | `platformPerformanceDeptUserPage` | `/api/platform/platformPerformanceDeptUserPage/graphql` |
|
|
738
|
+
| `sales` | `salesTotalPerf` | `/api/sales/graphql` |
|
|
739
|
+
| `sales` | `salesMemberPerf` | `/api/sales/graphql` |
|
|
740
|
+
| `sales` | `salesEventPerf` | `/api/sales/graphql` |
|
|
741
|
+
| `sales` | `renewalDetail` | `/api/sales/graphql` |
|
|
742
|
+
| `sales` | `crmNewSigning` | `/api/sales/graphql` |
|
|
743
|
+
| `sales` | `crmRenewal` | `/api/sales/graphql` |
|
|
744
|
+
| `sales` | `crmRenewalDetail` | `/api/sales/graphql` |
|
|
745
|
+
| `member` | `memberQuarterly` | `/api/member/memberQuarterly/graphql` |
|
|
361
746
|
|
|
362
747
|
这种设计使得浏览器 DevTools → Network 面板可按路径分类筛选,便于调试。
|
|
363
748
|
|
|
@@ -390,7 +775,7 @@ Response: {"data": {"opportunityEffectiveBoardPage": {"total": ..., "records": [
|
|
|
390
775
|
|
|
391
776
|
### query 结构
|
|
392
777
|
|
|
393
|
-
|
|
778
|
+
opportunity 域产出的 GraphQL query 与后端 `opportunity.graphqls` schema 对齐(dto 入参模式):
|
|
394
779
|
|
|
395
780
|
```
|
|
396
781
|
query { topic(dto: { current: N, size: N, companyId: N, statYear: N, ... })
|
|
@@ -400,6 +785,33 @@ query { topic(dto: { current: N, size: N, companyId: N, statYear: N, ... })
|
|
|
400
785
|
> **注意**:`eq` 条件中匹配 DTO 字段(`companyId`/`statYear`/`statMonth`/`statQuarter`)的会提取到 `dto` 入参中,
|
|
401
786
|
> 非 DTO 字段或非 `eq` 操作符的条件仍以 `conditions` 数组方式传递。
|
|
402
787
|
|
|
788
|
+
sales 域产出的 GraphQL query 与后端 `sales.graphqls` schema 对齐(input 入参模式,v2 拆分版):
|
|
789
|
+
|
|
790
|
+
```
|
|
791
|
+
query { salesTotalPerf(input: { deptId: N, performanceMonth: "2026-06", ... })
|
|
792
|
+
{ totalPerf { fields } deptGroupList { fields } userGroupList { fields } } }
|
|
793
|
+
|
|
794
|
+
query { salesMemberPerf(input: { deptId: N, ... })
|
|
795
|
+
{ totalMemberPerf { fields } newSigningPerf { fields } reSigningPerf { fields } jcvfPerf { fields } groupList { fields } } }
|
|
796
|
+
|
|
797
|
+
query { salesEventPerf(input: { deptId: N, monthFilterMode: "QUARTER", ... })
|
|
798
|
+
{ sessionPerfList { fields } productBarList { fields } groupList { fields } } }
|
|
799
|
+
|
|
800
|
+
query { renewalDetail(input: { userId: N, ... })
|
|
801
|
+
{ queryDim userId userName deptId normalAmountRmb ... } }
|
|
802
|
+
|
|
803
|
+
query { crmNewSigning(input: { deptId: N, statMonth: "2026-06", ... })
|
|
804
|
+
{ queryDim userId userName deptId newSigningCount firstSigningCount ... } }
|
|
805
|
+
|
|
806
|
+
query { crmRenewal(input: { deptId: N, statMonth: "2026-06", ... })
|
|
807
|
+
{ queryDim userId userName deptId renewalRate renewedProductCount ... } }
|
|
808
|
+
|
|
809
|
+
query { crmRenewalDetail(input: { deptId: N, statMonth: "2026-06", ... })
|
|
810
|
+
{ statMonth deptId customerName expireProductName renewalStatus ... } }
|
|
811
|
+
```
|
|
812
|
+
|
|
813
|
+
> sales 域查询无分页、无 select,返回固定结构。`arg()` 参数直接映射到 `input` 对象,`null`/`undefined`/空字符串自动跳过。
|
|
814
|
+
|
|
403
815
|
## SSR 使用指南
|
|
404
816
|
|
|
405
817
|
### Nuxt 3 Server API
|
|
@@ -502,11 +914,28 @@ export function useOpportunity() {
|
|
|
502
914
|
│ ├── GraphQLClient (fetch 封装) │
|
|
503
915
|
│ │ POST {baseUrl}/api/{domain}/{topic}/graphql │
|
|
504
916
|
│ │ ├── /api/opportunity/opportunityEffectiveBoardPage/graphql │
|
|
917
|
+
│ │ ├── /api/platform/platformPerformanceDeptUserPage/graphql │
|
|
918
|
+
│ │ ├── /api/sales/graphql │
|
|
919
|
+
│ │ ├── /api/member/memberQuarterly/graphql │
|
|
505
920
|
│ │ ├── /api/order/adsOrderPage/graphql (待生成) │
|
|
506
921
|
│ │ └── /api/logistics/... (待生成) │
|
|
507
922
|
│ ├── OpportunityManager (商机域) │
|
|
508
923
|
│ │ ├── opportunityEffectiveBoardPage() → Query Builder │
|
|
509
924
|
│ │ └── board (getter) → BoardService (封装层) │
|
|
925
|
+
│ ├── SalesManager (销售域) │
|
|
926
|
+
│ │ ├── salesTotalPerf() → SalesTotalPerfQuery │
|
|
927
|
+
│ │ ├── salesMemberPerf() → SalesMemberPerfQuery │
|
|
928
|
+
│ │ ├── salesEventPerf() → SalesEventPerfQuery │
|
|
929
|
+
│ │ ├── renewalDetail() → RenewalDetailQuery │
|
|
930
|
+
│ │ ├── crmNewSigning() → CrmNewSigningQuery │
|
|
931
|
+
│ │ ├── crmRenewal() → CrmRenewalQuery │
|
|
932
|
+
│ │ ├── crmRenewalDetail() → CrmRenewalDetailQuery │
|
|
933
|
+
│ │ └── service (getter) → SalesService (封装层) │
|
|
934
|
+
│ ├── MemberManager (客户域) │
|
|
935
|
+
│ │ └── memberQuarterly() → MemberQuarterlyQuery │
|
|
936
|
+
│ ├── PlatformManager (公共支撑域) │
|
|
937
|
+
│ │ ├── platformPerformanceDeptUserPage() → Query Builder │
|
|
938
|
+
│ │ └── service (getter) → PlatformService (封装层) │
|
|
510
939
|
│ ├── OrderManager (订单域, 待生成) │
|
|
511
940
|
│ └── LogisticsManager (物流域, 待生成) │
|
|
512
941
|
└──────────────────────────────────────────────────────────────────┘
|
|
@@ -530,6 +959,26 @@ createDwSdk()
|
|
|
530
959
|
→ sdk.opportunity.opportunityEffectiveBoardPage() // OpportunityEffectiveBoardQuery
|
|
531
960
|
→ .query() // Promise<OpportunityEffectiveBoardPageResponse>
|
|
532
961
|
→ result.records // OpportunityEffectiveBoard[]
|
|
962
|
+
→ sdk.sales // SalesManager
|
|
963
|
+
→ sdk.sales.salesTotalPerf() // SalesTotalPerfQuery
|
|
964
|
+
→ .query() // Promise<SalesTotalPerfBoardVo>
|
|
965
|
+
→ result.totalPerf // SalesDeptPerfVo
|
|
966
|
+
→ sdk.sales.salesMemberPerf() // SalesMemberPerfQuery
|
|
967
|
+
→ .query() // Promise<SalesMemberPerfBoardVo>
|
|
968
|
+
→ sdk.sales.salesEventPerf() // SalesEventPerfQuery
|
|
969
|
+
→ .query() // Promise<SalesEventPerfBoardVo>
|
|
970
|
+
→ sdk.sales.renewalDetail() // RenewalDetailQuery
|
|
971
|
+
→ .query() // Promise<RenewalDetailVo[]>
|
|
972
|
+
→ sdk.sales.crmNewSigning() // CrmNewSigningQuery
|
|
973
|
+
→ .query() // Promise<CrmDashboardNewSigningVo[]>
|
|
974
|
+
→ sdk.sales.crmRenewal() // CrmRenewalQuery
|
|
975
|
+
→ .query() // Promise<CrmDashboardRenewalVo[]>
|
|
976
|
+
→ sdk.sales.crmRenewalDetail() // CrmRenewalDetailQuery
|
|
977
|
+
→ .query() // Promise<CrmDashboardRenewalDetailVo[]>
|
|
978
|
+
→ sdk.member // MemberManager
|
|
979
|
+
→ sdk.member.memberQuarterly() // MemberQuarterlyQuery
|
|
980
|
+
→ .query() // Promise<MemberQuarterlyVo>
|
|
981
|
+
→ result.interactionList // MemberQuarterlyInteractionRankingVo[]
|
|
533
982
|
```
|
|
534
983
|
|
|
535
984
|
字段名通过 `keyof` 联合类型约束,IDE 自动补全:
|
|
@@ -543,7 +992,7 @@ createDwSdk()
|
|
|
543
992
|
### 当前前端可补全能力
|
|
544
993
|
|
|
545
994
|
```ts
|
|
546
|
-
. // 可补全: opportunity
|
|
995
|
+
. // 可补全: opportunity, platform, sales, member
|
|
547
996
|
sdk.opportunity
|
|
548
997
|
.opportunityEffectiveBoardPage()
|
|
549
998
|
// 可链式补全: select / arg / eq / ne / gt / ge / lt / le
|
|
@@ -551,6 +1000,40 @@ sdk.opportunity
|
|
|
551
1000
|
.board
|
|
552
1001
|
// BoardService: .query({ compId, dateType, dateValue })
|
|
553
1002
|
// 返回 BoardQueryResult: { success, data, error }
|
|
1003
|
+
sdk.platform
|
|
1004
|
+
.platformPerformanceDeptUserPage()
|
|
1005
|
+
// 可链式补全: select / arg / eq / ne / gt / ge / lt / le
|
|
1006
|
+
// / like / in / isNull / isNotNull / page / query / toGraphQL
|
|
1007
|
+
.service
|
|
1008
|
+
// PlatformService: .query({ queryDim, deptId, ... })
|
|
1009
|
+
sdk.sales
|
|
1010
|
+
.salesTotalPerf()
|
|
1011
|
+
// 可链式补全: arg / query / toGraphQL
|
|
1012
|
+
// 返回 Promise<SalesTotalPerfBoardVo>
|
|
1013
|
+
.salesMemberPerf()
|
|
1014
|
+
// 可链式补全: arg / query / toGraphQL
|
|
1015
|
+
// 返回 Promise<SalesMemberPerfBoardVo>
|
|
1016
|
+
.salesEventPerf()
|
|
1017
|
+
// 可链式补全: arg / query / toGraphQL
|
|
1018
|
+
// 返回 Promise<SalesEventPerfBoardVo>
|
|
1019
|
+
.renewalDetail()
|
|
1020
|
+
// 可链式补全: arg / query / toGraphQL
|
|
1021
|
+
// 返回 Promise<RenewalDetailVo[]>
|
|
1022
|
+
.crmNewSigning()
|
|
1023
|
+
// 可链式补全: arg / query / toGraphQL
|
|
1024
|
+
// 返回 Promise<CrmDashboardNewSigningVo[]>
|
|
1025
|
+
.crmRenewal()
|
|
1026
|
+
// 可链式补全: arg / query / toGraphQL
|
|
1027
|
+
// 返回 Promise<CrmDashboardRenewalVo[]>
|
|
1028
|
+
.crmRenewalDetail()
|
|
1029
|
+
// 可链式补全: arg / query / toGraphQL
|
|
1030
|
+
// 返回 Promise<CrmDashboardRenewalDetailVo[]>
|
|
1031
|
+
.service
|
|
1032
|
+
// SalesService: .salesTotalPerf(params) / .salesMemberPerf(params) / .salesEventPerf(params) / .renewalDetail(params)
|
|
1033
|
+
sdk.member
|
|
1034
|
+
.memberQuarterly()
|
|
1035
|
+
// 可链式补全: select / arg / query / toGraphQL
|
|
1036
|
+
// 返回 Promise<MemberQuarterlyVo>
|
|
554
1037
|
```
|
|
555
1038
|
|
|
556
1039
|
### 封装层导出类型
|
|
@@ -562,6 +1045,34 @@ import type {
|
|
|
562
1045
|
BoardQueryResult, // { success: boolean; data: BoardPageData | null; error: string | null }
|
|
563
1046
|
BoardPageData, // { total; current; size; pages; records }
|
|
564
1047
|
} from '@jctrans/dw-sdk'
|
|
1048
|
+
|
|
1049
|
+
// 销售域
|
|
1050
|
+
import type {
|
|
1051
|
+
SalesInput, // { deptId?, userId?, performanceMonth?, forecastEnabled?, marketArea?, monthFilterMode? }
|
|
1052
|
+
SalesTotalPerfBoardVo, // { totalPerf, deptGroupList, userGroupList }
|
|
1053
|
+
SalesMemberPerfBoardVo,// { totalMemberPerf, newSigningPerf, reSigningPerf, jcvfPerf, groupList }
|
|
1054
|
+
SalesEventPerfBoardVo, // { sessionPerfList, productBarList, groupList }
|
|
1055
|
+
RenewalDetailVo, // { normalAmountRmb, overdraftAmountRmb, recoveredAmountRmb, receiptTotalAmountRmb, ... }
|
|
1056
|
+
SalesServiceParams, // 入参类型
|
|
1057
|
+
SalesTotalPerfResult, // { success, data, error }
|
|
1058
|
+
SalesMemberPerfResult, // { success, data, error }
|
|
1059
|
+
SalesEventPerfResult, // { success, data, error }
|
|
1060
|
+
RenewalDetailResult, // { success, data, error }
|
|
1061
|
+
} from '@jctrans/dw-sdk'
|
|
1062
|
+
|
|
1063
|
+
// CRM 数据分析看板
|
|
1064
|
+
import type {
|
|
1065
|
+
CrmDashboardNewSigningVo, // { newSigningCount, firstSigningCount, addOnSigningCount, ... }
|
|
1066
|
+
CrmDashboardRenewalVo, // { renewalRate, renewedProductCount, unrenewedProductCount, ... }
|
|
1067
|
+
CrmDashboardRenewalDetailVo, // { customerName, expireProductName, renewalStatus, ... }
|
|
1068
|
+
} from '@jctrans/dw-sdk'
|
|
1069
|
+
|
|
1070
|
+
// 客户域
|
|
1071
|
+
import type {
|
|
1072
|
+
MemberQuarterlyVo, // { companyNameCn, interactionList, accountList, ... }
|
|
1073
|
+
MemberQuarterlyInput, // { companyId, year, quarter, subTypes? }
|
|
1074
|
+
MemberQuarterlyField, // keyof MemberQuarterlyVo
|
|
1075
|
+
} from '@jctrans/dw-sdk'
|
|
565
1076
|
```
|
|
566
1077
|
|
|
567
1078
|
### 如何让前端都"点得出来"新能力
|
package/dist/core/BaseQuery.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a0_0x3bfaaf=a0_0x4f3f;function a0_0x4f3f(_0x4ec797,_0x29e356){_0x4ec797=_0x4ec797-0x1cf;const _0x11b81f=a0_0x3199();let _0x31aa1f=_0x11b81f[_0x4ec797];if(a0_0x4f3f['fPWvAo']===undefined){var _0x41b93c=function(_0x18fe74){const _0x3f7d4f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x92e03d='',_0x1349ff='',_0x23b6fc=_0x92e03d+_0x41b93c,_0x49711f=(''+function(){return 0x0;})['indexOf']('\x0a')!==-0x1;for(let _0x2ccf8f=0x0,_0x414386,_0x535215,_0x4ceda3=0x0;_0x535215=_0x18fe74['charAt'](_0x4ceda3++);~_0x535215&&(_0x414386=_0x2ccf8f%0x4?_0x414386*0x40+_0x535215:_0x535215,_0x2ccf8f++%0x4)?_0x92e03d+=_0x49711f||_0x23b6fc['charCodeAt'](_0x4ceda3+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x414386>>(-0x2*_0x2ccf8f&0x6)):_0x2ccf8f:0x0){_0x535215=_0x3f7d4f['indexOf'](_0x535215);}for(let _0x32502e=0x0,_0x1300ce=_0x92e03d['length'];_0x32502e<_0x1300ce;_0x32502e++){_0x1349ff+='%'+('00'+_0x92e03d['charCodeAt'](_0x32502e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1349ff);};a0_0x4f3f['poGiBI']=_0x41b93c,a0_0x4f3f['MiEHDy']={},a0_0x4f3f['fPWvAo']=!![];}const _0x3199db=_0x11b81f[0x0],_0x4f3fd6=_0x4ec797+_0x3199db,_0x162eda=a0_0x4f3f['MiEHDy'][_0x4f3fd6];if(!_0x162eda){const _0x2acdc1=function(_0x4e6346){this['qiRWjA']=_0x4e6346,this['usYIbi']=[0x1,0x0,0x0],this['SlVZWZ']=function(){return'newState';},this['rSGSRH']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['fCoCwv']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x2acdc1['prototype']['yntNMK']=function(){const _0x5a4196=new RegExp(this['rSGSRH']+this['fCoCwv']),_0x52c22c=_0x5a4196['test'](this['SlVZWZ']['toString']())?--this['usYIbi'][0x1]:--this['usYIbi'][0x0];return this['SyGQQP'](_0x52c22c);},_0x2acdc1['prototype']['SyGQQP']=function(_0x138d97){if(!Boolean(~_0x138d97))return _0x138d97;return this['WHAuvd'](this['qiRWjA']);},_0x2acdc1['prototype']['WHAuvd']=function(_0xaee21d){for(let _0x47dd4c=0x0,_0xe63b9b=this['usYIbi']['length'];_0x47dd4c<_0xe63b9b;_0x47dd4c++){this['usYIbi']['push'](Math['round'](Math['random']())),_0xe63b9b=this['usYIbi']['length'];}return _0xaee21d(this['usYIbi'][0x0]);},(''+function(){return 0x0;})['indexOf']('\x0a')===-0x1&&new _0x2acdc1(a0_0x4f3f)['yntNMK'](),_0x31aa1f=a0_0x4f3f['poGiBI'](_0x31aa1f),a0_0x4f3f['MiEHDy'][_0x4f3fd6]=_0x31aa1f;}else _0x31aa1f=_0x162eda;return _0x31aa1f;}function a0_0x3199(){const _0x155cbd=['m1vszgvKtq','CgfNzu51Bq','y2LxzKe','zxHLy3v0zq','E29WzxjHDg9YoIaI','nJu3mJyXyuXLvu5b','zxH0CMfbCMDZ','ywrKq29UzgL0Aw9U','odi0nta2A1vQt2rN','AxnbCNjHEq','ih0GFsb9','yxjN','CgfNzq','DMfSDwu','y29UzgL0Aw9UCZOG','AM9PBG','BNvSBa','CgfNzvnPEMu','CgfNzvnPEMu6ia','CwDVB0G','C2vSzwn0','zxPMDNi','BwfW','ndi2odeXmMX6vKvMsq','uMD6wMy','kcGOlISPkYKRksSK','iIWGzMLLBgq6ici','Dg9WAwm','mta5mZe0ExP6vK9X','C2vHCMnO','yNvPBgrhCMfWAffm','n2LVDM55tW','AxnfBxb0EvzHBhvL','iIWGDMfSDwu6ia','CMvZB2X2zuvUzhbVAw50','BgvUz3rO','y29UC3rYDwn0B3i','AxnoB3roDwXS','AxnoDwXS','mZi4nde3nxjWvvjuzG','Dg9tDhjPBMC','y29UzgL0Aw9UCW','CxvLCNKGEYa','ksb7ihrVDgfSihbHz2voDw0GCgfNzvnPEMuGCMvJB3jKCYb7ia','mZmXmtaZmKfJBKTUsq','BgLRzq','ChvZAa','uvnfrvu','yM9VBgvHBG','ywXSrMLLBgrZ','mJu0mJq4wwzyqKz4','BNvTyMvY','Dhj1zq','C2vYAwfSAxPLvMfSDwu','yxbWBhK','CgfNzu51BtOG','Dg9hCMfWAffm','yNvPBgrdB25KAxrPB25ZtgL0zxjHBa','y2XPzw50','C2vSzwn0rMLLBgrZ','zg9TywLU','uhbRwfe','CMvWBgfJzq','B3bLCMf0B3i','DMjqyuS','mtmWDwL4yxDP','CxvLCNK','Dg9fBMrWB2LUDa'];a0_0x3199=function(){return _0x155cbd;};return a0_0x3199();}(function(_0x469581,_0xd55cfb){const _0x8cd871=a0_0x4f3f,_0x4c4147=_0x469581();while(!![]){try{const _0x2c81e6=-parseInt(_0x8cd871(0x20f))/0x1+parseInt(_0x8cd871(0x212))/0x2+parseInt(_0x8cd871(0x20a))/0x3*(-parseInt(_0x8cd871(0x1f2))/0x4)+parseInt(_0x8cd871(0x1ed))/0x5+parseInt(_0x8cd871(0x1dd))/0x6+-parseInt(_0x8cd871(0x1e5))/0x7*(parseInt(_0x8cd871(0x1f8))/0x8)+parseInt(_0x8cd871(0x1e2))/0x9*(parseInt(_0x8cd871(0x207))/0xa);if(_0x2c81e6===_0xd55cfb)break;else _0x4c4147['push'](_0x4c4147['shift']());}catch(_0x402645){_0x4c4147['push'](_0x4c4147['shift']());}}}(a0_0x3199,0x66ea2));const a0_0x41b93c=(function(){let _0x56dcc5=!![];return function(_0x305043,_0x25d7d2){const _0x34fe92=_0x56dcc5?function(){const _0x58040d=a0_0x4f3f;if(_0x25d7d2){const _0x11adaa=_0x25d7d2[_0x58040d(0x1fc)](_0x305043,arguments);return _0x25d7d2=null,_0x11adaa;}}:function(){};return _0x56dcc5=![],_0x34fe92;};}()),a0_0x31aa1f=a0_0x41b93c(this,function(){const _0x184c9e=a0_0x4f3f,_0x28ff19={'zPSBl':_0x184c9e(0x1df)};return a0_0x31aa1f[_0x184c9e(0x1ee)]()[_0x184c9e(0x1e3)](_0x28ff19['zPSBl'])[_0x184c9e(0x1ee)]()[_0x184c9e(0x1ea)](a0_0x31aa1f)['search']('(((.+)+)+)+$');});a0_0x31aa1f();export class BaseQuery{constructor(_0x500988,_0x318210,_0x38748c){const _0x5bb5ac=a0_0x4f3f;this[_0x5bb5ac(0x200)]=_0x500988,this[_0x5bb5ac(0x202)]=_0x318210,this[_0x5bb5ac(0x1e1)]=_0x38748c,this[_0x5bb5ac(0x201)]=[],this['conditions']=[],this[_0x5bb5ac(0x210)]={},this[_0x5bb5ac(0x1f7)]=[],this[_0x5bb5ac(0x20b)]=0x1,this['pageSize']=0x14;}[a0_0x3bfaaf(0x1da)](..._0x4fec92){return this['selectFields']=_0x4fec92,this;}[a0_0x3bfaaf(0x1d1)](_0x18ba7f,_0x3f8a8f){const _0x820135=a0_0x3bfaaf;return this[_0x820135(0x210)][_0x18ba7f]=_0x3f8a8f,this;}['eq'](_0x338646,_0x229bad){return this['addCondition']('eq',_0x338646,_0x229bad);}['ne'](_0x332e46,_0x19a646){return this['addCondition']('ne',_0x332e46,_0x19a646);}['gt'](_0x572b08,_0x273147){const _0x13c6f6=a0_0x3bfaaf;return this[_0x13c6f6(0x211)]('gt',_0x572b08,_0x273147);}['ge'](_0x1d6220,_0x15b5ea){const _0x5216e9=a0_0x3bfaaf;return this[_0x5216e9(0x211)]('ge',_0x1d6220,_0x15b5ea);}['lt'](_0x381be2,_0x585aec){const _0xa4e3a8=a0_0x3bfaaf;return this[_0xa4e3a8(0x211)]('lt',_0x381be2,_0x585aec);}['le'](_0x4b3753,_0x193a42){const _0x2ef135=a0_0x3bfaaf;return this[_0x2ef135(0x211)]('le',_0x4b3753,_0x193a42);}['like'](_0x5a8f0c,_0x2c0de9){const _0x53a45e=a0_0x3bfaaf,_0xd0074d={'sUHZJ':_0x53a45e(0x1f3)};return this[_0x53a45e(0x211)](_0xd0074d['sUHZJ'],_0x5a8f0c,_0x2c0de9);}['in'](_0x1d5f9c,_0x48542b){const _0x3fe25c=a0_0x3bfaaf;return this[_0x3fe25c(0x211)]('in',_0x1d5f9c,_0x48542b);}[a0_0x3bfaaf(0x1ec)](_0x3a028e){const _0x294543=a0_0x3bfaaf;return this[_0x294543(0x211)]('isNull',_0x3a028e,!![]);}[a0_0x3bfaaf(0x1eb)](_0x53b14e){const _0x1d213e=a0_0x3bfaaf,_0x3b58b1={'PpkXQ':_0x1d213e(0x1eb)};return this['addCondition'](_0x3b58b1[_0x1d213e(0x203)],_0x53b14e,!![]);}[a0_0x3bfaaf(0x1d2)](_0x535211,_0x3d6891){const _0x53bfde=a0_0x3bfaaf;return this[_0x53bfde(0x20b)]=_0x535211,this[_0x53bfde(0x1d7)]=_0x3d6891,this;}async[a0_0x3bfaaf(0x208)](){const _0x201623=a0_0x3bfaaf,_0x1fd76b=this[_0x201623(0x1e4)](),_0xf7e657={'query':_0x1fd76b},_0x8e1921=await this[_0x201623(0x200)][_0x201623(0x20d)](this['domain'],this[_0x201623(0x1e1)],_0xf7e657);return _0x8e1921[this['topic']];}[a0_0x3bfaaf(0x1e4)](){const _0x3834ea=a0_0x3bfaaf,_0x529558={'vbPaK':function(_0x20886a,_0x3ffc97){return _0x20886a>_0x3ffc97;},'RgzZf':function(_0x581601,_0x562e7f){return _0x581601>_0x562e7f;}},_0x1ed2e9=_0x529558[_0x3834ea(0x206)](this['selectFields']['length'],0x0)?this['selectFields'][_0x3834ea(0x1d5)]('\x20'):_0x529558['vbPaK'](this[_0x3834ea(0x1f7)][_0x3834ea(0x1e9)],0x0)?this['allFields'][_0x3834ea(0x1d5)]('\x20'):'companyId',_0xb9acb4=[];_0xb9acb4[_0x3834ea(0x1f4)](_0x3834ea(0x1fd)+this['pageNum']),_0xb9acb4[_0x3834ea(0x1f4)](_0x3834ea(0x1d8)+this['pageSize']);for(const [_0x34efd9,_0x4b31e3]of Object['entries'](this[_0x3834ea(0x210)])){!this['isEmptyValue'](_0x4b31e3)&&_0xb9acb4[_0x3834ea(0x1f4)](_0x34efd9+':\x20'+this[_0x3834ea(0x1fb)](_0x4b31e3));}_0x529558[_0x3834ea(0x1de)](this[_0x3834ea(0x1ef)][_0x3834ea(0x1e9)],0x0)&&_0xb9acb4['push'](_0x3834ea(0x1d4)+this[_0x3834ea(0x1ff)]());const _0x1f08fe=_0xb9acb4[_0x3834ea(0x1d5)](',\x20');return _0x3834ea(0x1f0)+this[_0x3834ea(0x1e1)]+'('+_0x1f08fe+_0x3834ea(0x1f1)+_0x1ed2e9+_0x3834ea(0x1d0);}[a0_0x3bfaaf(0x1ff)](_0x102f8b){const _0xf00159=a0_0x3bfaaf,_0x28ea94=_0x102f8b??this[_0xf00159(0x1ef)],_0x7cda39=_0x28ea94[_0xf00159(0x1dc)](_0x1da58f=>{const _0x5bf9ad=_0xf00159,_0x2a7af3=this[_0x5bf9ad(0x1fb)](_0x1da58f[_0x5bf9ad(0x1d3)]);return _0x5bf9ad(0x20e)+_0x1da58f[_0x5bf9ad(0x205)]+_0x5bf9ad(0x1e0)+_0x1da58f['field']+_0x5bf9ad(0x1e7)+_0x2a7af3+'}';})[_0xf00159(0x1d5)](',\x20');return'['+_0x7cda39+']';}[a0_0x3bfaaf(0x1e6)](_0x4276af){const _0x38172e=a0_0x3bfaaf,_0x2cc40d={'ezfvr':function(_0x3f5071,_0x417cde){return _0x3f5071===_0x417cde;}};return _0x2cc40d['ezfvr'](_0x4276af,null)||_0x4276af===undefined||_0x2cc40d[_0x38172e(0x1db)](_0x4276af,'');}['serializeValue'](_0x3f874d){const _0x4e749e=a0_0x3bfaaf,_0x3f23e7={'QSEEU':function(_0x2b7cb1,_0x28660a){return _0x2b7cb1===_0x28660a;},'ciWfA':_0x4e749e(0x1fa),'UJaej':_0x4e749e(0x1f9),'qgooH':function(_0x7938d5,_0x3e7e1f){return _0x7938d5(_0x3e7e1f);}};if(_0x3f874d===null||_0x3f874d===undefined||_0x3f23e7[_0x4e749e(0x1f5)](_0x3f874d,''))return _0x4e749e(0x1d6);if(_0x3f23e7[_0x4e749e(0x1f5)](typeof _0x3f874d,_0x4e749e(0x1f6)))return _0x3f874d?_0x3f23e7[_0x4e749e(0x20c)]:'false';if(_0x3f23e7[_0x4e749e(0x1f5)](typeof _0x3f874d,_0x3f23e7['UJaej']))return _0x3f23e7[_0x4e749e(0x1d9)](String,_0x3f874d);if(Array[_0x4e749e(0x1cf)](_0x3f874d)){const _0x43a8c9=_0x3f874d[_0x4e749e(0x1dc)](_0x253283=>this[_0x4e749e(0x1fb)](_0x253283))['join'](',\x20');return'['+_0x43a8c9+']';}const _0x5e0e77=String(_0x3f874d)['replace'](/\\/g,'\x5c\x5c')[_0x4e749e(0x204)](/"/g,'\x5c\x22');return'\x22'+_0x5e0e77+'\x22';}[a0_0x3bfaaf(0x211)](_0xd3ef13,_0x374df7,_0x3ea422){const _0x1d4609=a0_0x3bfaaf;return this['conditions'][_0x1d4609(0x1f4)]({'operator':_0xd3ef13,'field':_0x374df7,'value':_0x3ea422}),this;}[a0_0x3bfaaf(0x1fe)](){const _0x151c75=a0_0x3bfaaf;return this[_0x151c75(0x1e4)]();}[a0_0x3bfaaf(0x209)](){const _0x2d5499=a0_0x3bfaaf;return this[_0x2d5499(0x200)][_0x2d5499(0x1e8)](this[_0x2d5499(0x202)]);}}
|