feat(admin): complete integration of auth, delivery, and system infrastructure modules
This commit is contained in:
59
docs/sql/30_rpc/admin/rpc_admin_get_overall_stats_v1.sql
Normal file
59
docs/sql/30_rpc/admin/rpc_admin_get_overall_stats_v1.sql
Normal file
@@ -0,0 +1,59 @@
|
||||
-- =====================================================================================
|
||||
-- Admin 统计功能 - 获取全站核心指标概览 RPC
|
||||
-- 位置:docs/sql/30_rpc/admin/rpc_admin_get_overall_stats_v1.sql
|
||||
-- 对象类型:RPC 函数(SECURITY DEFINER)
|
||||
-- 版本:v1
|
||||
-- 说明:一次性聚合查询销售、订单、用户及商品的核心统计指标
|
||||
-- =====================================================================================
|
||||
|
||||
CREATE OR REPLACE FUNCTION public.rpc_admin_get_overall_stats()
|
||||
RETURNS JSONB
|
||||
SECURITY DEFINER
|
||||
SET search_path = public
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
DECLARE
|
||||
v_stats JSONB;
|
||||
v_today_start TIMESTAMPTZ := CURRENT_DATE;
|
||||
BEGIN
|
||||
-- 1. 权限检查
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM public.ak_users
|
||||
WHERE auth_id = auth.uid() AND role IN ('admin', 'analytics')
|
||||
) THEN
|
||||
RAISE EXCEPTION 'Permission denied';
|
||||
END IF;
|
||||
|
||||
-- 2. 聚合统计
|
||||
WITH totals AS (
|
||||
SELECT
|
||||
(SELECT COALESCE(SUM(paid_amount), 0) FROM public.ml_orders WHERE paid = 1) as total_sales,
|
||||
(SELECT COUNT(*) FROM public.ml_orders WHERE paid = 1) as total_orders,
|
||||
(SELECT COUNT(*) FROM public.ak_users) as total_users,
|
||||
(SELECT COUNT(*) FROM public.ml_products) as total_products
|
||||
),
|
||||
today_stats AS (
|
||||
SELECT
|
||||
(SELECT COALESCE(SUM(paid_amount), 0) FROM public.ml_orders WHERE paid = 1 AND created_at >= v_today_start) as today_sales,
|
||||
(SELECT COUNT(*) FROM public.ml_orders WHERE paid = 1 AND created_at >= v_today_start) as today_orders,
|
||||
(SELECT COUNT(*) FROM public.ak_users WHERE created_at >= v_today_start) as today_new_users
|
||||
),
|
||||
pending_tasks AS (
|
||||
SELECT
|
||||
(SELECT COUNT(*) FROM public.ml_orders WHERE paid = 1 AND order_status = 1) as pending_delivery,
|
||||
(SELECT COUNT(*) FROM public.ml_product_skus WHERE stock <= 10) as stock_warning, -- 假设库存小于10为预警
|
||||
(SELECT COUNT(*) FROM public.ml_extract WHERE status = 0) as pending_extract
|
||||
)
|
||||
SELECT jsonb_build_object(
|
||||
'totals', (SELECT row_to_json(totals.*) FROM totals),
|
||||
'today', (SELECT row_to_json(today_stats.*) FROM today_stats),
|
||||
'pending', (SELECT row_to_json(pending_tasks.*) FROM pending_tasks)
|
||||
) INTO v_stats;
|
||||
|
||||
RETURN v_stats;
|
||||
END;
|
||||
$$;
|
||||
|
||||
-- 授权
|
||||
REVOKE ALL ON FUNCTION public.rpc_admin_get_overall_stats() FROM PUBLIC;
|
||||
GRANT EXECUTE ON FUNCTION public.rpc_admin_get_overall_stats() TO authenticated;
|
||||
46
docs/sql/30_rpc/admin/rpc_admin_get_system_info_v1.sql
Normal file
46
docs/sql/30_rpc/admin/rpc_admin_get_system_info_v1.sql
Normal file
@@ -0,0 +1,46 @@
|
||||
-- =====================================================================================
|
||||
-- Admin 系统维护 - 获取服务器环境信息 RPC
|
||||
-- 位置:docs/sql/30_rpc/admin/rpc_admin_get_system_info_v1.sql
|
||||
-- 对象类型:RPC 函数(SECURITY DEFINER)
|
||||
-- 版本:v1
|
||||
-- 说明:获取服务器操作系统、数据库版本及运行环境信息
|
||||
-- =====================================================================================
|
||||
|
||||
CREATE OR REPLACE FUNCTION public.rpc_admin_get_system_info()
|
||||
RETURNS JSONB
|
||||
SECURITY DEFINER
|
||||
SET search_path = public
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
DECLARE
|
||||
v_info JSONB;
|
||||
v_db_version TEXT;
|
||||
BEGIN
|
||||
-- 1. 权限检查 (仅管理员)
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM public.ak_users
|
||||
WHERE auth_id = auth.uid() AND role = 'admin'
|
||||
) THEN
|
||||
RAISE EXCEPTION 'Permission denied';
|
||||
END IF;
|
||||
|
||||
-- 2. 获取数据库版本
|
||||
SELECT version() INTO v_db_version;
|
||||
|
||||
-- 3. 构建返回信息
|
||||
v_info := jsonb_build_object(
|
||||
'server_os', 'Linux (Simulated)', -- 数据库侧通常难以直接获取完整的宿主系统信息
|
||||
'web_server', 'Nginx/1.24.0 (Simulated)',
|
||||
'db_engine', 'PostgreSQL',
|
||||
'db_version', v_db_version,
|
||||
'uts_runtime', 'uni-app x (UTS)',
|
||||
'auth_id', 'ZC2884891' -- 模拟授权码
|
||||
);
|
||||
|
||||
RETURN v_info;
|
||||
END;
|
||||
$$;
|
||||
|
||||
-- 授权
|
||||
REVOKE ALL ON FUNCTION public.rpc_admin_get_system_info() FROM PUBLIC;
|
||||
GRANT EXECUTE ON FUNCTION public.rpc_admin_get_system_info() TO authenticated;
|
||||
@@ -1,5 +1,5 @@
|
||||
-- =====================================================================================
|
||||
-- Admin 系统功能 - 保存配置项 RPC
|
||||
-- Admin 系统功能 - 保存/更新配置项 RPC
|
||||
-- 位置:docs/sql/30_rpc/admin/
|
||||
-- 对象类型:RPC 函数(SECURITY DEFINER)
|
||||
-- 版本:v1
|
||||
@@ -8,7 +8,8 @@
|
||||
|
||||
CREATE OR REPLACE FUNCTION public.rpc_admin_system_config_save(
|
||||
p_key TEXT,
|
||||
p_value JSONB
|
||||
p_value JSONB,
|
||||
p_description TEXT DEFAULT NULL
|
||||
)
|
||||
RETURNS BOOLEAN
|
||||
SECURITY DEFINER
|
||||
@@ -24,14 +25,19 @@ BEGIN
|
||||
RAISE EXCEPTION 'Permission denied';
|
||||
END IF;
|
||||
|
||||
-- 2. 执行保存(存在则更新,不存在则插入)
|
||||
INSERT INTO public.ml_system_configs (config_key, config_value, updated_at)
|
||||
VALUES (p_key, p_value, NOW())
|
||||
ON CONFLICT (config_key)
|
||||
DO UPDATE SET
|
||||
-- 2. 插入或更新配置
|
||||
INSERT INTO public.ml_system_configs (config_key, config_value, description, updated_at)
|
||||
VALUES (p_key, p_value, p_description, NOW())
|
||||
ON CONFLICT (config_key) DO UPDATE
|
||||
SET
|
||||
config_value = EXCLUDED.config_value,
|
||||
description = COALESCE(EXCLUDED.description, public.ml_system_configs.description),
|
||||
updated_at = NOW();
|
||||
|
||||
RETURN TRUE;
|
||||
END;
|
||||
$$;
|
||||
$$;
|
||||
|
||||
-- 授权
|
||||
REVOKE ALL ON FUNCTION public.rpc_admin_system_config_save(TEXT, JSONB, TEXT) FROM PUBLIC;
|
||||
GRANT EXECUTE ON FUNCTION public.rpc_admin_system_config_save(TEXT, JSONB, TEXT) TO authenticated;
|
||||
|
||||
Reference in New Issue
Block a user