Update service URLs and the Vite proxy rewrite so requests match /content/, /cms/, and /common/ mounts after /api is stripped. Co-authored-by: Cursor <cursoragent@cursor.com>
211 lines
12 KiB
JavaScript
211 lines
12 KiB
JavaScript
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);
|