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,147 @@
import supa from '@/components/supadb/aksupainstance.uts'
/**
* 商品标签分组模型
*/
export type ProductLabelGroup = {
id?: string
merchant_id?: string
name: string
sort_order: number
created_at?: string
updated_at?: string
}
/**
* 商品标签模型
*/
export type ProductLabel = {
id?: string
group_id: string | null
merchant_id?: string
name: string
is_active: boolean
show_in_mobile: boolean
sort_order: number
created_at?: string
updated_at?: string
}
/**
* 获取所有标签分组
*/
export async function fetchLabelGroups(): Promise<ProductLabelGroup[]> {
const { data, error } = await supa
.from('ak_product_label_groups')
.select('*')
.order('sort_order', { ascending: true })
.execute()
if (error != null) {
console.error('获取标签分组失败:', error)
return [] as ProductLabelGroup[]
}
return (data ?? []) as ProductLabelGroup[]
}
/**
* 保存标签分组(新增/更新)
*/
export async function saveLabelGroup(group: ProductLabelGroup): Promise<boolean> {
const session = supa.getSession()
const uid = session?.user?.getString('id')
if (uid == null) return false
const { error } = await supa
.from('ak_product_label_groups')
.upsert({
...group,
merchant_id: uid,
updated_at: new Date().toISOString()
})
.execute()
if (error != null) {
console.error('保存标签分组失败:', error)
return false
}
return true
}
/**
* 删除标签分组
*/
export async function deleteLabelGroup(id: string): Promise<boolean> {
const { error } = await supa
.from('ak_product_label_groups')
.delete()
.eq('id', id)
.execute()
if (error != null) {
console.error('删除标签分组失败:', error)
return false
}
return true
}
/**
* 获取标签列表
*/
export async function fetchLabels(groupId: string | null = null): Promise<ProductLabel[]> {
let query = supa.from('ak_product_labels').select('*')
if (groupId != null) {
query = query.eq('group_id', groupId)
}
const { data, error } = await query
.order('sort_order', { ascending: true })
.execute()
if (error != null) {
console.error('获取标签失败:', error)
return [] as ProductLabel[]
}
return (data ?? []) as ProductLabel[]
}
/**
* 保存标签(新增/更新)
*/
export async function saveLabel(label: ProductLabel): Promise<boolean> {
const session = supa.getSession()
const uid = session?.user?.getString('id')
if (uid == null) return false
const { error } = await supa
.from('ak_product_labels')
.upsert({
...label,
merchant_id: uid,
updated_at: new Date().toISOString()
})
.execute()
if (error != null) {
console.error('保存标签失败:', error)
return false
}
return true
}
/**
* 删除标签
*/
export async function deleteLabel(id: string): Promise<boolean> {
const { error } = await supa
.from('ak_product_labels')
.delete()
.eq('id', id)
.execute()
if (error != null) {
console.error('删除标签失败:', error)
return false
}
return true
}