sql数据流,amdin业务逻辑接入

This commit is contained in:
comlibmb
2026-02-15 16:37:37 +08:00
parent ec636dc703
commit e648ff0c22
43 changed files with 5412 additions and 1024 deletions

View File

@@ -1,6 +1,9 @@
import supa from '@/components/supadb/aksupainstance.uts'
import { rpcOrNull, rpcOrValue } from '@/services/analytics/rpc.uts'
/**
* 商品主模型 (SPU)
*/
export type AdminProduct = {
id: string
name: string
@@ -20,22 +23,95 @@ export type AdminProduct = {
video_urls: string[] | null
tags: string[] | null
attributes: any | null
// 扩展字段 (Step 3-6)
shipping_template_id: string | null
give_integral: number
stock_warning: number
virtual_sales: number
sort_order: number
}
/**
* 商品 SKU 模型
*/
export type AdminProductSku = {
id?: string
product_id?: string
sku_code: string
specifications: any
price: number
stock: number
status: number
image_url: string | null
id ?: string
product_id ?: string
sku_code : string
specifications : any
price : number
stock : number
status : number
image_url : string | null
}
/**
* 运费模板模型
*/
export type ShippingTemplate = {
id : string
merchant_id ?: string
name : string
calc_method : string // piece, weight, volume
is_free_shipping : boolean
sort_order : number
created_at ?: string
updated_at ?: string
}
export type ProductPageResult = {
total: number
items: Array<AdminProduct>
total : number
items : Array<AdminProduct>
}
/**
* 获取运费模板列表
*/
export async function fetchShippingTemplates() : Promise<ShippingTemplate[]> {
const { data, error } = await supa
.from('ak_shipping_templates')
.select('*')
.order('sort_order', { ascending: true })
.execute()
if (error != null) {
console.error('获取运费模板失败:', error)
return [] as ShippingTemplate[]
}
return (data ?? []) as ShippingTemplate[]
}
/**
* 保存运费模板(新增/更新)
*/
export async function saveShippingTemplate(tpl : Partial<ShippingTemplate>) : Promise<boolean> {
const session = supa.getSession()
const uid = session?.user?.getString('id')
if (uid == null) return false
const { error } = await supa
.from('ak_shipping_templates')
.upsert({
...tpl,
merchant_id: uid,
updated_at: new Date().toISOString()
})
.execute()
return error == null
}
/**
* 删除运费模板
*/
export async function deleteShippingTemplate(id : string) : Promise<boolean> {
const { error } = await supa
.from('ak_shipping_templates')
.delete()
.eq('id', id)
.execute()
return error == null
}
/**
@@ -131,8 +207,7 @@ export async function saveAdminProduct(product: Partial<AdminProduct>, skus: Adm
const savedProductId = (savedProduct as any).id as string
// 2. 保存 SKU(简单策略:先删除旧的再插入新的,或使用 upsert
// 注意:如果涉及订单关联,不能简单的物理删除旧 SKU
// 2. 保存 SKU
const skuPayload = skus.map(s => ({
...s,
product_id: savedProductId,