import { get, post, patch, remove, upload } from "./utils"; const unwrap = (data) => { if (data && Array.isArray(data.results)) return data; if (Array.isArray(data)) return { count: data.length, results: data }; return data; }; export const listArticles = (params) => get("/api/content/articles/", params).then(unwrap); export const getArticle = (id) => get(`/api/content/articles/${id}/`); /** 前台详情阅读上报(与 GET 详情分离,避免重复计数) */ export const recordArticleRead = (id) => post(`/api/content/articles/${id}/record-read/`); /** 会员点赞/取消点赞(需登录) */ export const toggleArticleLike = (id) => post(`/api/content/articles/${id}/toggle-like/`); /** 会员收藏/取消收藏(需登录) */ export const toggleArticleCollect = (id) => post(`/api/content/articles/${id}/toggle-collect/`); /** 分享计数(同人同文献只计一次;传 visitorKey 便于未登录去重) */ export const recordArticleShare = (id, visitorKey) => post(`/api/content/articles/${id}/record-share/`, { visitor_key: visitorKey || undefined, }); /** 当前会员收藏列表 */ export const myArticleCollections = (params) => get("/api/content/articles/my-collections/", params).then(unwrap); /** 批量查询点赞/收藏状态,ids 为文献 id 数组 */ export const myArticleEngagement = (ids) => get("/api/content/articles/my-engagement/", { ids: Array.isArray(ids) ? ids.join(",") : ids, }); export const homeArticles = () => get("/api/content/articles/home/"); export const articleFacets = (params) => get("/api/content/articles/facets/", params); export const articleRanking = (params) => get("/api/content/articles/ranking/", params).then(unwrap); export const createArticle = (data) => post("/api/content/articles/", data); export const updateArticle = (id, data) => patch(`/api/content/articles/${id}/`, data); export const deleteArticle = (id) => remove(`/api/content/articles/${id}/`); export const listOrganizes = (params) => get("/api/content/organizes/", params).then(unwrap); export const getOrganize = (id) => get(`/api/content/organizes/${id}/`); export const organizeRanking = (params) => get("/api/content/organizes/ranking/", params).then(unwrap); export const createOrganize = (data) => post("/api/content/organizes/", data); export const updateOrganize = (id, data) => patch(`/api/content/organizes/${id}/`, data); export const deleteOrganize = (id) => remove(`/api/content/organizes/${id}/`); export const listMagazines = (params) => get("/api/content/magazines/", params).then(unwrap); export const magazineRanking = (params) => get("/api/content/magazines/ranking/", params).then(unwrap); export const createMagazine = (data) => post("/api/content/magazines/", data); export const updateMagazine = (id, data) => patch(`/api/content/magazines/${id}/`, data); export const deleteMagazine = (id) => remove(`/api/content/magazines/${id}/`); export const listWorkGroups = (params) => get("/api/content/work-groups/", params).then(unwrap); export const createWorkGroup = (data) => post("/api/content/work-groups/", data); export const updateWorkGroup = (id, data) => patch(`/api/content/work-groups/${id}/`, data); export const deleteWorkGroup = (id) => remove(`/api/content/work-groups/${id}/`); export const listWorkGroupTerms = (params) => get("/api/content/work-group-terms/", params).then(unwrap); export const createWorkGroupTerm = (data) => post("/api/content/work-group-terms/", data); export const updateWorkGroupTerm = (id, data) => patch(`/api/content/work-group-terms/${id}/`, data); export const deleteWorkGroupTerm = (id) => remove(`/api/content/work-group-terms/${id}/`); export const listWorkGroupMemberships = (params) => get("/api/content/work-group-memberships/", params).then(unwrap); export const createWorkGroupMembership = (data) => post("/api/content/work-group-memberships/", data); export const updateWorkGroupMembership = (id, data) => patch(`/api/content/work-group-memberships/${id}/`, data); export const deleteWorkGroupMembership = (id) => remove(`/api/content/work-group-memberships/${id}/`); export const listProfessors = (params) => get("/api/content/professors/", params).then(unwrap); export const getProfessor = (id) => get(`/api/content/professors/${id}/`); export const createProfessor = (data) => post("/api/content/professors/", data); export const updateProfessor = (id, data) => patch(`/api/content/professors/${id}/`, data); export const deleteProfessor = (id) => remove(`/api/content/professors/${id}/`); export const listColumns = (params) => get("/api/content/columns/", params).then(unwrap); export const navColumns = (params) => get("/api/content/columns/nav/", params); export const createColumn = (data) => post("/api/content/columns/", data); export const updateColumn = (id, data) => patch(`/api/content/columns/${id}/`, data); export const deleteColumn = (id) => remove(`/api/content/columns/${id}/`); export const listSubjects = (params) => get("/api/content/subjects/", params).then(unwrap); export const createSubject = (data) => post("/api/content/subjects/", data); export const updateSubject = (id, data) => patch(`/api/content/subjects/${id}/`, data); export const deleteSubject = (id) => remove(`/api/content/subjects/${id}/`); export const listArticleTypes = (params) => get("/api/content/article-types/", params).then(unwrap); export const createArticleType = (data) => post("/api/content/article-types/", data); export const updateArticleType = (id, data) => patch(`/api/content/article-types/${id}/`, data); export const deleteArticleType = (id) => remove(`/api/content/article-types/${id}/`); export const listOrganizeCategories = (params) => get("/api/content/organize-categories/", params).then(unwrap); export const createOrganizeCategory = (data) => post("/api/content/organize-categories/", data); export const updateOrganizeCategory = (id, data) => patch(`/api/content/organize-categories/${id}/`, data); export const deleteOrganizeCategory = (id) => remove(`/api/content/organize-categories/${id}/`); export const listMagazineCategories = (params) => get("/api/content/magazine-categories/", params).then(unwrap); export const createMagazineCategory = (data) => post("/api/content/magazine-categories/", data); export const updateMagazineCategory = (id, data) => patch(`/api/content/magazine-categories/${id}/`, data); export const deleteMagazineCategory = (id) => remove(`/api/content/magazine-categories/${id}/`); /** @deprecated 使用 listSubjects / listOrganizeCategories */ export const listCategories = (params) => { const type = params?.type; if (type === 1) return listOrganizeCategories({ ...params, type: undefined }); if (type === 2) return listSubjects({ ...params, type: undefined }); if (type === 3) return listMagazineCategories({ ...params, type: undefined }); return listSubjects(params); }; export const listNews = (params) => get("/api/cms/news/", params).then(unwrap); export const getNews = (id) => get(`/api/cms/news/${id}/`); export const createNews = (data) => post("/api/cms/news/", data); export const updateNews = (id, data) => patch(`/api/cms/news/${id}/`, data); export const deleteNews = (id) => remove(`/api/cms/news/${id}/`); export const listPublications = (params) => get("/api/cms/publications/", params).then(unwrap); export const getPublication = (id) => get(`/api/cms/publications/${id}/`); export const createPublication = (data) => post("/api/cms/publications/", data); export const updatePublication = (id, data) => patch(`/api/cms/publications/${id}/`, data); export const deletePublication = (id) => remove(`/api/cms/publications/${id}/`); export const listReports = (params) => get("/api/cms/reports/", params).then(unwrap); export const getReport = (id) => get(`/api/cms/reports/${id}/`); export const createReport = (data) => post("/api/cms/reports/", data); export const updateReport = (id, data) => patch(`/api/cms/reports/${id}/`, data); export const deleteReport = (id) => remove(`/api/cms/reports/${id}/`); export const getAbout = () => get("/api/cms/about/current/"); export const listAbout = (params) => get("/api/cms/about/", params).then(unwrap); export const createAbout = (data) => post("/api/cms/about/", data); export const updateAbout = (id, data) => patch(`/api/cms/about/${id}/`, data); export const getCopyright = () => get("/api/cms/copyright/current/"); export const listCopyright = (params) => get("/api/cms/copyright/", params).then(unwrap); export const createCopyright = (data) => post("/api/cms/copyright/", data); export const updateCopyright = (id, data) => patch(`/api/cms/copyright/${id}/`, data); export const getContact = () => get("/api/cms/contact/current/"); export const listContact = (params) => get("/api/cms/contact/", params).then(unwrap); export const createContact = (data) => post("/api/cms/contact/", data); export const updateContact = (id, data) => patch(`/api/cms/contact/${id}/`, data); export const listLinks = (params) => get("/api/cms/links/", params).then(unwrap); export const createLink = (data) => post("/api/cms/links/", data); export const updateLink = (id, data) => patch(`/api/cms/links/${id}/`, data); export const deleteLink = (id) => remove(`/api/cms/links/${id}/`); export const listBanners = () => get("/api/cms/banners/"); export const createBanner = (data) => post("/api/cms/banners/", data); export const updateBanner = (id, data) => patch(`/api/cms/banners/${id}/`, data); export const deleteBanner = (id) => remove(`/api/cms/banners/${id}/`); export const uploadBannerImage = (formData) => upload("/api/cms/banners/upload/", formData); /** 通用媒体上传;formData 可含 file / category / kind */ export const uploadMedia = (formData) => upload("/api/common/uploads/", formData); export const listKeywords = (params) => get("/api/cms/keywords/", params).then(unwrap); export const createKeyword = (data) => post("/api/cms/keywords/", data); export const updateKeyword = (id, data) => patch(`/api/cms/keywords/${id}/`, data); export const deleteKeyword = (id) => remove(`/api/cms/keywords/${id}/`); export const listSpecialties = (params) => get("/api/content/specialties/", params).then(unwrap); export const createSpecialty = (data) => post("/api/content/specialties/", data); export const updateSpecialty = (id, data) => patch(`/api/content/specialties/${id}/`, data); export const deleteSpecialty = (id) => remove(`/api/content/specialties/${id}/`); export const listStarRules = (params) => get("/api/content/star-rules/", params).then(unwrap); export const getStarRule = (id) => get(`/api/content/star-rules/${id}/`); export const createStarRule = (data) => post("/api/content/star-rules/", data); export const updateStarRule = (id, data) => patch(`/api/content/star-rules/${id}/`, data); export const deleteStarRule = (id) => remove(`/api/content/star-rules/${id}/`); export const listRuleBands = (params) => get("/api/content/rule-bands/", params).then(unwrap); export const createRuleBand = (data) => post("/api/content/rule-bands/", data); export const updateRuleBand = (id, data) => patch(`/api/content/rule-bands/${id}/`, data); export const deleteRuleBand = (id) => remove(`/api/content/rule-bands/${id}/`); export const listArticleComments = (params) => get("/api/content/article-comments/", params).then(unwrap); export const createArticleComment = (data) => post("/api/content/article-comments/", data); export const updateArticleComment = (id, data) => patch(`/api/content/article-comments/${id}/`, data); export const deleteArticleComment = (id) => remove(`/api/content/article-comments/${id}/`); export const searchAll = (params) => get("/api/cms/search/", params);