admin模块接入数据库

This commit is contained in:
comlibmb
2026-02-13 17:29:50 +08:00
parent 56209b7a75
commit ec636dc703
58 changed files with 5586 additions and 1394 deletions

View File

@@ -0,0 +1,180 @@
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<ArticleCategory> }> {
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<ArticleCategory> }
return {
total: (res as any).total as number,
items: (res as any).items as Array<ArticleCategory>
}
}
/**
* 保存文章分类
*/
export async function saveArticleCategory(
id : string | null,
name : string,
icon : string | null,
sort : number,
status : number
) : Promise<string | null> {
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<boolean> {
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<boolean> {
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<ArticleItem> }> {
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<ArticleItem> }
return {
total: (res as any).total as number,
items: (res as any).items as Array<ArticleItem>
}
}
/**
* 获取文章详情
*/
export async function fetchArticleDetail(id : string) : Promise<ArticleDetail | null> {
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<string | null> {
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<boolean> {
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<boolean> {
const ok = await rpcOrValue('rpc_admin_article_set_status', { p_id: id, p_status: status } as any)
return ok === true
}