import { rpcOrNull, rpcOrValue, rpcOrEmptyArray } from '@/services/analytics/rpc.uts' /** * 文章分类类型 */ export type ArticleCategory = { id: string name: string icon: string | null sort: number status: number created_at: string updated_at: string } /** * 文章简要信息类型 (列表使用) */ export type ArticleItem = { id: string category_id: string category_name: string title: string author: string | null image: string | null description: string | null status: number views: number is_banner: boolean is_hot: boolean created_at: string updated_at: string } /** * 文章详情类型 */ export type ArticleDetail = { id: string category_id: string category_name: string title: string author: string | null image: string | null description: string | null content: string status: number views: number is_banner: boolean is_hot: boolean linked_product_id: string | null created_at: string updated_at: string } /** * 获取文章分类列表 */ export async function fetchArticleCategoryPage( page : number, pageSize : number, search : string | null = null ) : Promise<{ total : number, items : Array }> { const res = await rpcOrNull('rpc_admin_article_category_list', { p_page: page, p_page_size: pageSize, p_search: search } as UTSJSONObject) if (res == null) return { total: 0, items: [] as Array } return { total: (res as any).total as number, items: (res as any).items as Array } } /** * 保存文章分类 */ export async function saveArticleCategory( id : string | null, name : string, icon : string | null, sort : number, status : number ) : Promise { const res = await rpcOrValue('rpc_admin_article_category_save', { p_id: id, p_name: name, p_icon: icon, p_sort: sort, p_status: status } as any) return res != null ? String(res) : null } /** * 删除文章分类 */ export async function deleteArticleCategory(id : string) : Promise { const ok = await rpcOrValue('rpc_admin_article_category_delete', { p_id: id } as any) return ok === true } /** * 设置文章分类状态 */ export async function setArticleCategoryStatus(id : string, status : number) : Promise { const ok = await rpcOrValue('rpc_admin_article_category_set_status', { p_id: id, p_status: status } as any) return ok === true } /** * 获取文章列表 */ export async function fetchArticlePage( page : number, pageSize : number, categoryId : string | null = null, status : number | null = null, search : string | null = null ) : Promise<{ total : number, items : Array }> { const res = await rpcOrNull('rpc_admin_article_list', { p_page: page, p_page_size: pageSize, p_category_id: categoryId, p_status: status, p_search: search } as UTSJSONObject) if (res == null) return { total: 0, items: [] as Array } return { total: (res as any).total as number, items: (res as any).items as Array } } /** * 获取文章详情 */ export async function fetchArticleDetail(id : string) : Promise { const res = await rpcOrNull('rpc_admin_article_get_detail', { p_id: id } as any) return res as ArticleDetail | null } /** * 保存文章内容 */ export async function saveArticle(payload : any) : Promise { const res = await rpcOrValue('rpc_admin_article_save', { p_id: payload.id ?? null, p_category_id: payload.category_id, p_title: payload.title, p_author: payload.author ?? null, p_image: payload.image ?? null, p_description: payload.description ?? null, p_content: payload.content, p_status: payload.status ?? 0, p_is_banner: payload.is_banner ?? false, p_is_hot: payload.is_hot ?? false, p_linked_product_id: payload.linked_product_id ?? null } as any) return res != null ? String(res) : null } /** * 删除文章记录 */ export async function deleteArticle(id : string) : Promise { const ok = await rpcOrValue('rpc_admin_article_delete', { p_id: id } as any) return ok === true } /** * 设置文章发布状态 */ export async function setArticleStatus(id : string, status : number) : Promise { const ok = await rpcOrValue('rpc_admin_article_set_status', { p_id: id, p_status: status } as any) return ok === true }