Skip to content

Commit c8ec9dc

Browse files
SmallTeddywh131462
authored andcommitted
feat: 获取全部学习计划题目
1 parent 2c3d3c9 commit c8ec9dc

File tree

3 files changed

+29
-13
lines changed

3 files changed

+29
-13
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { graphql } from '#common/utils/http/graphql.js'
22
import { getStudyPlanListJson } from '#resources/headers/studyPlanListJson.js'
33

4-
export async function getStudyPlanList() {
5-
const res = await graphql(getStudyPlanListJson())
4+
export async function getStudyPlanList(type) {
5+
const res = await graphql(getStudyPlanListJson(type))
66
const {
7-
data: { studyPlansV2AdQuestionPage }
7+
data: { studyPlansV2ByCatalog: { studyPlans } }
88
} = res
9-
return studyPlansV2AdQuestionPage
9+
return studyPlans
1010
}

common/view/finder.view.js

+19-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import select from '@inquirer/select'
1+
import select, { Separator } from '@inquirer/select'
22
import input from '@inquirer/input'
33

44
// import { getHot100QuestionListCode } from '#common/utils/question-handler/getHot100QuestionListCode.js'
@@ -11,14 +11,27 @@ import { getStudyPlanList } from '#common/utils/question-getter/getStudyPlanList
1111
import { getPlanQuestionList } from '#common/utils/question-getter/getPlanQuestionList.js'
1212
import { logger } from '#common/utils/logger/logger.js'
1313

14+
function handleQuestionList(list) {
15+
return list.map((item) => ({
16+
name: `${item.name}${item.premiumOnly ? '(VIP)' : ''}`,
17+
value: item.slug
18+
}))
19+
}
20+
1421
async function studyMode(baseDir = process.cwd()) {
15-
const questionList = await getStudyPlanList()
22+
const sprintInterviewCompanylist = await getStudyPlanList('sprint-interview-company')
23+
const crackingCodingInterviewList = await getStudyPlanList('cracking-coding-interview')
24+
const deepDiveTopicsList = await getStudyPlanList('deep-dive-topics')
25+
const questionList = [
26+
...handleQuestionList(sprintInterviewCompanylist),
27+
new Separator(),
28+
...handleQuestionList(crackingCodingInterviewList),
29+
new Separator(),
30+
...handleQuestionList(deepDiveTopicsList)
31+
]
1632
const planListMode = {
1733
message: '请选择学习计划',
18-
choices: questionList.map((item) => ({
19-
name: `${item.name}${item.premiumOnly ? '(VIP)' : ''}`,
20-
value: item.slug
21-
}))
34+
choices: questionList
2235
}
2336
const planSlug = await select(planListMode)
2437
const createMode = await select({
+6-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
export function getStudyPlanListJson() {
1+
// 'sprint-interview-company' // 名企面试 · 突击备战
2+
// 'cracking-coding-interview' // 面试准备 · 全面通关
3+
// 'deep-dive-topics' // 专项计划 · 深入学习
4+
export function getStudyPlanListJson(type) {
25
return {
36
headers: { 'content-type': 'application/json' },
4-
body: '{"query":"\\n query GetProblemSetStudyPlanAds {\\n studyPlansV2AdQuestionPage {\\n cover\\n highlight\\n name\\n onGoing\\n premiumOnly\\n questionNum\\n slug\\n }\\n}\\n ","variables":{},"operationName":"GetProblemSetStudyPlanAds"}',
5-
method: 'POST'
7+
body: `{\"query\":\"\\n query GetStudyPlanByCatalog($catalogSlug: String!, $offset: Int!, $limit: Int!) {\\n studyPlansV2ByCatalog(catalogSlug: $catalogSlug, offset: $offset, limit: $limit) {\\n hasMore\\n total\\n studyPlans {\\n slug\\n questionNum\\n premiumOnly\\n onGoing\\n name\\n highlight\\n cover\\n }\\n }\\n}\\n \",\"variables\":{\"offset\":0,\"catalogSlug\":\"${type}\",\"limit\":12},\"operationName\":\"GetStudyPlanByCatalog\"}`,
8+
method: "POST"
69
}
710
}

0 commit comments

Comments
 (0)