// api/modules/course.ts
import { mainClient, skeletonClient } from '@/api/clients'
import type {
  ICourseCategoryResponse,
  IMarketCourseListResponse,
} from '@/types/course'

/**
 * 课程分类及分类下课程相关API
 */
export const courseSubjectClassificationApi = {
  /**
   * 医学
   * 获取课程分类树
   * @returns 分类数据
   */
  getCourseMedicalTree() {
    return skeletonClient.request<ICourseCategoryResponse>({
      url: uni.getStorageSync('token') ? 'medical/home/getCourseMedicalTree' : '/visitor/getCourseMedicalTree',
      method: 'POST',
      data: {}
    })
  },

  /**
   * 心理学
   * 获取课程分类树
   * @returns 分类数据
   */
  getCourseSoulTree() {
    return skeletonClient.request<ICourseCategoryResponse>({
      url: 'psyche/home/getPsycheLabels',
      method: 'POST',
      data: { id: 0 }
    })
  },

  /**
   * 国学
   * 获取课程分类树
   * @returns 分类数据
   */
  getCourseSociologyTree() {
    return skeletonClient.request<ICourseCategoryResponse>({
      url: 'sociology/home/getSociologyLabels',
      method: 'POST',
      data: { id: 0 }
    })
  },

  /**
   * 医学
   * 获取分类标签列表
   * @returns 分类数据
   */
  getCourseMedicalLabels(id: number) {
    return mainClient.request<ICourseCategoryResponse>({
      url: 'medical/home/getMedicalLabels',
      method: 'POST',
      data: { id }
    })
  },

  /**
   * 医学
   * 获取分类下的列表页子级标签
   * @returns 分类数据
   */
  getCourseMedicalChildLabels(id: number) {
    return mainClient.request<ICourseCategoryResponse>({
      url: 'medical/home/getChildCourseMedicalTree',
      method: 'POST',
      data: { id }
    })
  },

  /**
   * 医学
   * 获取分类下的课程列表
   * @param data 分类ID、页码、每页数量
   * @returns 课程列表
   */
  getMedicalCourseList(data: {
    id: number, // 分类ID
    page: number, // 页码
    limit: number // 每页数量
  }) {
    return mainClient.request<IMarketCourseListResponse>({
      url: 'medical/home/getMedicalCourseList',
      method: 'POST',
      data
    })
  },

  /**
   * 心理学
   * 获取分类下的列表页子级标签
   * @returns 分类数据
   */
  getCourseSoulChildLabels(id: number) {
    return mainClient.request<ICourseCategoryResponse>({
      url: 'psyche/home/getChildCoursePsycheTree',
      method: 'POST',
      data: { id }
    })
  },

  /**
   * 心理学
   * 获取分类下的课程列表
   * @param data 分类ID、页码、每页数量
   * @returns 课程列表
   */
  getSoulCourseList(data: {
    id: number, // 分类ID
    page: number, // 页码
    limit: number // 每页数量
  }) {
    return mainClient.request<IMarketCourseListResponse>({
      url: 'psyche/home/getPsycheCourseList',
      method: 'POST',
      data
    })
  },

  /**
   * 国学
   * 获取分类下的课程列表
   * @param data 分类ID、页码、每页数量
   * @returns 课程列表
   */
  getSociologyCourseList(data: {
    id: number, // 分类ID
    page: number, // 页码
    limit: number // 每页数量
  }) {
    return mainClient.request<IMarketCourseListResponse>({
      url: 'sociology/course/getSociologyCourseList',
      method: 'POST',
      data
    })
  },
}
