@@ -0,0 +1,518 @@
-- Olons Admin 业务演示数据
-- 适用 : MySQL 8.0 + , 本地开发环境 。
-- 特征 : 所有业务编号使用 DEMO 前缀 ; 脚本可重复执行 , 不覆盖用户已有数据 。
SET NAMES utf8mb4 ;
SET @ tenant_id = 0 ;
SET @ admin_id = COALESCE ( ( SELECT id FROM hg_admin_member ORDER BY id LIMIT 1 ) , 1 ) ;
SET @ reviewer_id = COALESCE ( ( SELECT id FROM hg_admin_member WHERE id < > @ admin_id ORDER BY id LIMIT 1 ) , @ admin_id ) ;
SET @ now = NOW ( 3 ) ;
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- 1. 基础治理 : 审批 、 审批动作 、 敏感查看 、 审计 、 幂等 、 Outbox 、 看板汇总
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
INSERT INTO hg_approval_request
( ` tenant_id ` , ` approval_no ` , ` approval_type ` , ` target_type ` , ` target_id ` , ` action ` , ` title ` , ` payload_json ` , ` diff_json ` , ` risk_level ` , ` required_approvals ` , ` approval_status ` , ` applicant_id ` , ` submitted_at ` , ` decided_at ` , ` executed_at ` , ` expire_at ` , ` version ` , ` remark ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - AP - ' , LPAD ( x . status , 2 , '0' ) ) , ' demo_flow ' , ' demo_target ' , x . status ,
' demo_action ' , CONCAT ( ' 演示审批状态 - ' , x . status ) , JSON_OBJECT ( ' demo ' , TRUE , ' status ' , x . status ) ,
JSON_OBJECT ( ' status ' , JSON_OBJECT ( ' before ' , 1 , ' after ' , x . status ) ) , x . risk_level , 2 , x . status ,
@ admin_id ,
IF ( x . status = 1 , NULL , DATE_SUB ( @ now , INTERVAL x . status HOUR ) ) ,
IF ( x . status IN ( 4 , 5 , 6 , 7 , 8 ) , DATE_SUB ( @ now , INTERVAL 20 MINUTE ) , NULL ) ,
IF ( x . status IN ( 7 , 8 ) , DATE_SUB ( @ now , INTERVAL 10 MINUTE ) , NULL ) ,
DATE_ADD ( @ now , INTERVAL 7 DAY ) , x . status - 1 , CONCAT ( ' 本地演示 : 审批状态 ' , x . status ) ,
@ admin_id , @ admin_id , DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM (
SELECT 1 status , 1 risk_level UNION ALL SELECT 2 , 2 UNION ALL SELECT 3 , 3 UNION ALL SELECT 4 , 4
UNION ALL SELECT 5 , 1 UNION ALL SELECT 6 , 2 UNION ALL SELECT 7 , 3 UNION ALL SELECT 8 , 4
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_approval_request a WHERE a . approval_no = CONCAT ( ' DEMO - AP - ' , LPAD ( x . status , 2 , '0' ) ) ) ;
INSERT INTO hg_approval_action
( ` tenant_id ` , ` approval_request_id ` , ` step_no ` , ` actor_id ` , ` action ` , ` reason_code ` , ` comment ` , ` snapshot_json ` , ` actor_ip_cipher ` , ` mfa_verified ` , ` created_at ` )
SELECT @ tenant_id , a . id , x . action , @ reviewer_id , x . action , CONCAT ( ' demo_action_ ' , x . action ) ,
CONCAT ( ' 本地演示审批动作 ' , x . action ) , JSON_OBJECT ( ' approvalNo ' , a . approval_no , ' action ' , x . action ) ,
' DEMO_IP_CIPHER ' , MOD ( x . action , 2 ) , DATE_SUB ( @ now , INTERVAL ( 7 - x . action ) HOUR )
FROM (
SELECT 1 action UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6
) x
JOIN hg_approval_request a ON a . approval_no = CONCAT ( ' DEMO - AP - ' , LPAD ( x . action + 1 , 2 , '0' ) )
WHERE NOT EXISTS (
SELECT 1 FROM hg_approval_action aa
WHERE aa . approval_request_id = a . id AND aa . step_no = x . action AND aa . actor_id = @ reviewer_id
) ;
INSERT INTO hg_sensitive_access_log
( ` tenant_id ` , ` access_no ` , ` actor_id ` , ` target_type ` , ` target_id ` , ` field_set ` , ` purpose_code ` , ` purpose_text ` , ` authorization_no ` , ` mfa_verified ` , ` result ` , ` trace_id ` , ` created_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - SA - ' , x . result ) , @ admin_id , ' app_member ' , x . result ,
JSON_ARRAY ( ' mobile ',' realName ',' idNo ' ) , CONCAT ( ' demo_purpose_ ' , x . result ) ,
IF ( x . result = 1 , ' 客服核验会员身份 ',' 无授权查看被拒绝 ' ) , CONCAT ( ' DEMO - AUTH - ' , x . result ) , x . result - 1 , x . result ,
CONCAT ( ' demo - trace - sensitive - ' , x . result ) , DATE_SUB ( @ now , INTERVAL x . result HOUR )
FROM ( SELECT 1 result UNION ALL SELECT 2 ) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_sensitive_access_log l WHERE l . access_no = CONCAT ( ' DEMO - SA - ' , x . result ) ) ;
INSERT INTO hg_biz_audit_log
( ` tenant_id ` , ` audit_no ` , ` actor_type ` , ` actor_id ` , ` module ` , ` action ` , ` target_type ` , ` target_id ` , ` before_digest ` , ` after_digest ` , ` change_json ` , ` reason ` , ` approval_no ` , ` trace_id ` , ` prev_hash ` , ` row_hash ` , ` created_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - AU - ' , x . seq ) , 1 , @ admin_id , x . module , x . action_name , x . target_type , x . seq ,
SHA2 ( CONCAT ( ' before - ' , x . seq ) , 256 ) , SHA2 ( CONCAT ( ' after - ' , x . seq ) , 256 ) ,
JSON_OBJECT ( ' demo ' , TRUE , ' sequence ' , x . seq ) , ' 本地演示审计数据 ' , CONCAT ( ' DEMO - AP - ' , LPAD ( x . seq + 1 , 2 , '0' ) ) ,
CONCAT ( ' demo - trace - audit - ' , x . seq ) , IF ( x . seq = 1 , ' ' , SHA2 ( CONCAT ( ' audit - ' , x . seq - 1 ) , 256 ) ) ,
SHA2 ( CONCAT ( ' audit - ' , x . seq ) , 256 ) , DATE_SUB ( @ now , INTERVAL x . seq HOUR )
FROM (
SELECT 1 seq , ' member ' module , ' member . edit ' action_name , ' app_member ' target_type
UNION ALL SELECT 2 , ' wallet ',' wallet . adjust ',' wallet_account '
UNION ALL SELECT 3 , ' content ',' content . publish ',' content '
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_biz_audit_log l WHERE l . audit_no = CONCAT ( ' DEMO - AU - ' , x . seq ) ) ;
INSERT INTO hg_idempotency_record
( ` tenant_id ` , ` scope ` , ` idempotency_key ` , ` request_digest ` , ` resource_type ` , ` resource_id ` , ` process_status ` , ` response_code ` , ` response_digest ` , ` expire_at ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' demo_scope_ ' , x . status ) , CONCAT ( ' DEMO - IDEMPOTENCY - ' , x . status ) ,
SHA2 ( CONCAT ( ' request - ' , x . status ) , 256 ) , ' demo_resource ' , x . status , x . status ,
IF ( x . status = 1 , NULL , IF ( x . status = 2 , 0 , 500 ) ) , IF ( x . status = 1 , NULL , SHA2 ( CONCAT ( ' response - ' , x . status ) , 256 ) ) ,
DATE_ADD ( @ now , INTERVAL 1 DAY ) , DATE_SUB ( @ now , INTERVAL x . status HOUR ) , @ now
FROM ( SELECT 1 status UNION ALL SELECT 2 UNION ALL SELECT 3 ) x
WHERE NOT EXISTS (
SELECT 1 FROM hg_idempotency_record i
WHERE i . tenant_id = @ tenant_id AND i . scope = CONCAT ( ' demo_scope_ ' , x . status ) AND i . idempotency_key = CONCAT ( ' DEMO - IDEMPOTENCY - ' , x . status )
) ;
INSERT INTO hg_outbox_event
( ` tenant_id ` , ` event_no ` , ` aggregate_type ` , ` aggregate_id ` , ` event_type ` , ` payload_json ` , ` publish_status ` , ` retry_count ` , ` next_retry_at ` , ` last_error ` , ` created_at ` , ` published_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - EV - ' , x . status ) , ' demo_aggregate ' , x . status , CONCAT ( ' demo . event . ' , x . status ) ,
JSON_OBJECT ( ' demo ' , TRUE , ' status ' , x . status ) , x . status , IF ( x . status = 3 , 3 , 0 ) ,
IF ( x . status = 3 , DATE_ADD ( @ now , INTERVAL 10 MINUTE ) , NULL ) , IF ( x . status = 3 , ' 演示 : 等待重试 ' , NULL ) ,
DATE_SUB ( @ now , INTERVAL x . status HOUR ) , IF ( x . status = 2 , DATE_SUB ( @ now , INTERVAL 1 HOUR ) , NULL )
FROM ( SELECT 1 status UNION ALL SELECT 2 UNION ALL SELECT 3 ) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_outbox_event e WHERE e . event_no = CONCAT ( ' DEMO - EV - ' , x . status ) ) ;
INSERT INTO hg_dashboard_daily_stat
( ` tenant_id ` , ` stat_date ` , ` dimension_type ` , ` dimension_value ` , ` metric_code ` , ` metric_count ` , ` metric_amount ` , ` calculated_at ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CURDATE ( ) , x . dimension_type , x . dimension_value , x . metric_code , x . metric_count , x . metric_amount , @ now , @ now , @ now
FROM (
SELECT ' all ' dimension_type , ' all ' dimension_value , ' member_new ' metric_code , 28 metric_count , 0 metric_amount
UNION ALL SELECT ' all ',' all ',' trade_order ' , 156 , 1286500
UNION ALL SELECT ' channel ',' wechat ',' recharge_success ' , 43 , 586000
UNION ALL SELECT ' channel ',' bank ',' withdrawal_success ' , 18 , 236000
UNION ALL SELECT ' task ',' all ',' task_settled ' , 67 , 33500
) x
WHERE NOT EXISTS (
SELECT 1 FROM hg_dashboard_daily_stat s
WHERE s . tenant_id = @ tenant_id AND s . stat_date = CURDATE ( ) AND s . dimension_type = x . dimension_type
AND s . dimension_value = x . dimension_value AND s . metric_code = x . metric_code
) ;
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- 2. 门户 : 站点配置 、 文本及版本 、 Banner 、 商品与分类
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
INSERT INTO hg_site_config_version
( ` tenant_id ` , ` config_no ` , ` config_group ` , ` schema_version ` , ` config_json ` , ` config_digest ` , ` publish_status ` , ` effective_at ` , ` published_at ` , ` approval_request_id ` , ` base_version_id ` , ` version ` , ` remark ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - CFG - ' , LPAD ( x . status , 2 , '0' ) ) , ' demo_site ',' 1.0 ' ,
JSON_OBJECT ( ' siteName ' , CONCAT ( ' 演示站点 - ' , x . status ) , ' customerService ',' 400 - 800 - 0000 ',' status ' , x . status ) ,
SHA2 ( CONCAT ( ' demo - config - ' , x . status ) , 256 ) , x . status , DATE_ADD ( @ now , INTERVAL x . status DAY ) ,
IF ( x . status = 3 , DATE_SUB ( @ now , INTERVAL 1 DAY ) , NULL ) ,
COALESCE ( ( SELECT id FROM hg_approval_request WHERE approval_no = CONCAT ( ' DEMO - AP - ' , LPAD ( LEAST ( x . status + 1 , 8 ) , 2 , '0' ) ) ) , 0 ) ,
0 , x . status - 1 , CONCAT ( ' 本地演示配置状态 ' , x . status ) , @ admin_id , @ admin_id ,
DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM ( SELECT 1 status UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 ) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_site_config_version v WHERE v . config_no = CONCAT ( ' DEMO - CFG - ' , LPAD ( x . status , 2 , '0' ) ) ) ;
-- 门户文本不使用演示占位数据 , 正式初始化见 20261008_ portal_content_initial . sql 。
INSERT INTO hg_banner
( ` tenant_id ` , ` name ` , ` position ` , ` image_attachment_id ` , ` image_url ` , ` alt_text ` , ` target_type ` , ` target_value ` , ` start_at ` , ` end_at ` , ` publish_status ` , ` sort ` , ` version ` , ` remark ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO Banner - ' , x . status ) , IF ( MOD ( x . status , 2 ) = 1 , ' home_top ',' home_popup ' ) , 0 ,
CONCAT ( ' https : //picsum.photos/seed/banner-',x.status,'/1200/360'),CONCAT('演示 Banner 状态 ',x.status),
1 + MOD ( x . status - 1 , 3 ) , IF ( MOD ( x . status , 3 ) = 0 , ' https : //example.com',CONCAT('/demo/banner/',x.status)),
DATE_SUB ( @ now , INTERVAL 2 DAY ) , DATE_ADD ( @ now , INTERVAL 30 DAY ) , x . status , x . status * 10 , x . status - 1 ,
' 本地演示数据 ' , @ admin_id , @ admin_id , DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM ( SELECT 1 status UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 ) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_banner b WHERE b . name = CONCAT ( ' DEMO Banner - ' , x . status ) ) ;
INSERT INTO hg_product_category
( ` tenant_id ` , ` pid ` , ` level ` , ` tree ` , ` category_code ` , ` name ` , ` status ` , ` sort ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , 0 , 1 , ' ' , x . code , x . name , x . status , x . sort , @ admin_id , @ admin_id , @ now , @ now
FROM (
SELECT ' DEMO_DAILY ' code , ' 演示日用百货 ' name , 1 status , 20 sort
UNION ALL SELECT ' DEMO_DIGITAL ',' 演示数码家电 ' , 1 , 30
UNION ALL SELECT ' DEMO_DISABLED ',' 演示停用分类 ' , 2 , 99
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_product_category c WHERE c . tenant_id = @ tenant_id AND c . category_code = x . code ) ;
SET @ demo_category_id = ( SELECT id FROM hg_product_category WHERE tenant_id = @ tenant_id AND category_code = ' DEMO_DAILY ' LIMIT 1 ) ;
INSERT INTO hg_product
( ` tenant_id ` , ` product_no ` , ` category_id ` , ` product_type ` , ` payment_type ` , ` name ` , ` shop_name ` , ` price_amount ` , ` currency ` , ` cover_attachment_id ` , ` cover_url ` , ` detail_html ` , ` is_recommended ` , ` publish_status ` , ` start_at ` , ` end_at ` , ` sort ` , ` version ` , ` remark ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - P - ' , LPAD ( x . status , 2 , '0' ) ) , @ demo_category_id , IF ( MOD ( x . status , 2 ) = 0 , 1 , 2 ) , ' balance ' ,
CONCAT ( x . label , ' 演示商品 ' ) , ' Olons 演示店 ' , 9900 + x . status * 1000 , ' CNY ' , 0 ,
CONCAT ( ' https : //picsum.photos/seed/product-',x.status,'/640/480'),
CONCAT ( ' < h3 > ' , x . label , ' 演示商品 < / h3 > < p > 用于后台状态展示 。 < / p > ' ) , IF ( MOD ( x . status , 2 ) = 1 , 1 , 2 ) , x . status ,
DATE_SUB ( @ now , INTERVAL 3 DAY ) , DATE_ADD ( @ now , INTERVAL 30 DAY ) , x . status * 10 , x . status - 1 , ' 本地演示数据 ' ,
@ admin_id , @ admin_id , DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM (
SELECT 1 status , ' 草稿 ' label UNION ALL SELECT 2 , ' 待审 ' UNION ALL SELECT 3 , ' 已发布 '
UNION ALL SELECT 4 , ' 已下线 ' UNION ALL SELECT 5 , ' 已归档 '
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_product p WHERE p . tenant_id = @ tenant_id AND p . product_no = CONCAT ( ' DEMO - P - ' , LPAD ( x . status , 2 , '0' ) ) ) ;
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- 3. 会员 、 等级 、 隐私资料 、 钱包 、 通知和任务大厅
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
INSERT INTO hg_app_member_level
( ` tenant_id ` , ` level_code ` , ` name ` , ` icon_attachment_id ` , ` icon_url ` , ` current_version_id ` , ` member_count ` , ` status ` , ` sort ` , ` remark ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , x . code , x . name , 0 , CONCAT ( ' https : //picsum.photos/seed/level-',x.sort,'/128/128'),0,x.member_count,x.status,x.sort,
' 本地演示等级 ' , @ admin_id , @ admin_id , @ now , @ now
FROM (
SELECT ' DEMO_VIP2 ' code , ' 白银VIP ' name , 26 member_count , 1 status , 20 sort
UNION ALL SELECT ' DEMO_VIP3 ',' 黄金VIP ' , 12 , 1 , 30
UNION ALL SELECT ' DEMO_VIP_DISABLED ',' 停用等级 ' , 0 , 2 , 99
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_app_member_level l WHERE l . tenant_id = @ tenant_id AND l . level_code = x . code ) ;
SET @ level_normal_id = COALESCE ( ( SELECT id FROM hg_app_member_level WHERE tenant_id = @ tenant_id AND level_code = ' VIP1 ' LIMIT 1 ) , ( SELECT id FROM hg_app_member_level WHERE tenant_id = @ tenant_id ORDER BY id LIMIT 1 ) ) ;
SET @ level_silver_id = ( SELECT id FROM hg_app_member_level WHERE tenant_id = @ tenant_id AND level_code = ' DEMO_VIP2 ' LIMIT 1 ) ;
SET @ level_gold_id = ( SELECT id FROM hg_app_member_level WHERE tenant_id = @ tenant_id AND level_code = ' DEMO_VIP3 ' LIMIT 1 ) ;
INSERT INTO hg_app_member_level_version
( ` tenant_id ` , ` level_id ` , ` version_no ` , ` upgrade_amount ` , ` gift_amount ` , ` daily_order_limit ` , ` commission_rate ` , ` daily_withdraw_limit ` , ` rule_json ` , ` publish_status ` , ` effective_at ` , ` published_at ` , ` approval_request_id ` , ` base_version_id ` , ` version ` , ` remark ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , @ level_silver_id , 100 + x . status , x . status * 100000 , x . status * 1000 , 5 + x . status , 100 + x . status * 25 , 1 + x . status ,
JSON_OBJECT ( ' demo ' , TRUE , ' status ' , x . status , ' dailyOrderLimit ' , 5 + x . status ) , x . status ,
DATE_ADD ( @ now , INTERVAL x . status DAY ) , IF ( x . status = 3 , DATE_SUB ( @ now , INTERVAL 1 DAY ) , NULL ) ,
COALESCE ( ( SELECT id FROM hg_approval_request WHERE approval_no = CONCAT ( ' DEMO - AP - ' , LPAD ( LEAST ( x . status + 1 , 8 ) , 2 , '0' ) ) ) , 0 ) ,
0 , x . status - 1 , CONCAT ( ' 演示等级版本状态 ' , x . status ) , @ admin_id , @ admin_id ,
DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM ( SELECT 1 status UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 ) x
WHERE NOT EXISTS (
SELECT 1 FROM hg_app_member_level_version v WHERE v . level_id = @ level_silver_id AND v . version_no = 100 + x . status
) ;
UPDATE hg_app_member_level l
JOIN hg_app_member_level_version v ON v . level_id = l . id AND v . publish_status = 3 AND v . version_no = 103
SET l . current_version_id = v . id
WHERE l . id = @ level_silver_id AND l . current_version_id = 0 ;
SET @ demo_password_hash = COALESCE ( ( SELECT password_hash FROM hg_app_member ORDER BY id LIMIT 1 ) , ' $ 2 a $ 10 $ 92 IXUNpkjO0rOQ5byMi . Ye4oKoEa3Ro9llC / . og / at2uheWG / igi . ' ) ;
INSERT INTO hg_app_member
( ` tenant_id ` , ` member_no ` , ` username ` , ` mobile_cipher ` , ` mobile_hash ` , ` mobile_mask ` , ` password_hash ` , ` trade_password_hash ` , ` level_id ` , ` parent_id ` , ` level ` , ` tree ` , ` invite_code ` , ` member_status ` , ` risk_status ` , ` auto_dispatch ` , ` credit_score ` , ` is_test_account ` , ` last_login_at ` , ` last_login_ip_cipher ` , ` last_login_ip_mask ` , ` last_login_region ` , ` created_by ` , ` updated_by ` , ` deleted_by ` , ` created_at ` , ` updated_at ` , ` deleted_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - MB - ' , LPAD ( x . seq , 2 , '0' ) ) , CONCAT ( ' demo_user_ ' , LPAD ( x . seq , 2 , '0' ) ) ,
CONCAT ( ' DEMO_MOBILE_CIPHER_ ' , x . seq ) , SHA2 ( CONCAT ( ' 1380000100 ' , x . seq ) , 256 ) , CONCAT ( ' 138 * * * * 10 ' , LPAD ( x . seq , 2 , '0' ) ) ,
@ demo_password_hash , ' ' , x . level_id , 0 , 1 , ' ' , CONCAT ( ' DM ' , LPAD ( x . seq , 6 , '0' ) ) , x . member_status , x . risk_status ,
IF ( MOD ( x . seq , 2 ) = 1 , 1 , 2 ) , 100 - x . seq * 5 , 1 , DATE_SUB ( @ now , INTERVAL x . seq HOUR ) , ' DEMO_IP_CIPHER ',' 127.0 . * . * ',' 中国 上海 ' ,
@ admin_id , @ admin_id , IF ( x . member_status = 3 , @ admin_id , 0 ) , DATE_SUB ( @ now , INTERVAL x . seq * 3 DAY ) , @ now ,
IF ( x . member_status = 3 , DATE_SUB ( @ now , INTERVAL 1 DAY ) , NULL )
FROM (
SELECT 1 seq , @ level_normal_id level_id , 1 member_status , 1 risk_status
UNION ALL SELECT 2 , @ level_silver_id , 1 , 2
UNION ALL SELECT 3 , @ level_gold_id , 2 , 3
UNION ALL SELECT 4 , @ level_normal_id , 3 , 1
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_app_member m WHERE m . tenant_id = @ tenant_id AND m . member_no = CONCAT ( ' DEMO - MB - ' , LPAD ( x . seq , 2 , '0' ) ) ) ;
SET @ member_1 = ( SELECT id FROM hg_app_member WHERE tenant_id = @ tenant_id AND member_no = ' DEMO - MB - 01 ' LIMIT 1 ) ;
SET @ member_2 = ( SELECT id FROM hg_app_member WHERE tenant_id = @ tenant_id AND member_no = ' DEMO - MB - 02 ' LIMIT 1 ) ;
SET @ member_3 = ( SELECT id FROM hg_app_member WHERE tenant_id = @ tenant_id AND member_no = ' DEMO - MB - 03 ' LIMIT 1 ) ;
SET @ member_4 = ( SELECT id FROM hg_app_member WHERE tenant_id = @ tenant_id AND member_no = ' DEMO - MB - 04 ' LIMIT 1 ) ;
INSERT INTO hg_app_member_profile
( ` tenant_id ` , ` member_id ` , ` real_name_cipher ` , ` real_name_mask ` , ` id_no_cipher ` , ` id_no_hash ` , ` id_no_mask ` , ` avatar_attachment_id ` , ` kyc_status ` , ` kyc_verified_at ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , x . member_id , CONCAT ( ' DEMO_NAME_CIPHER_ ' , x . seq ) , CONCAT ( ' 演示 ' , x . seq , '*' ) ,
CONCAT ( ' DEMO_ID_CIPHER_ ' , x . seq ) , SHA2 ( CONCAT ( ' 3101011990010100 ' , x . seq ) , 256 ) , CONCAT ( ' 310101 * * * * * * * * 00 ' , x . seq ) , 0 ,
x . kyc_status , IF ( x . kyc_status = 2 , DATE_SUB ( @ now , INTERVAL x . seq DAY ) , NULL ) , @ admin_id , @ admin_id , @ now , @ now
FROM (
SELECT 1 seq , @ member_1 member_id , 1 kyc_status UNION ALL SELECT 2 , @ member_2 , 2 UNION ALL SELECT 3 , @ member_3 , 3 UNION ALL SELECT 4 , @ member_4 , 2
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_app_member_profile p WHERE p . member_id = x . member_id ) ;
INSERT INTO hg_app_member_address
( ` tenant_id ` , ` member_id ` , ` receiver_cipher ` , ` receiver_mask ` , ` mobile_cipher ` , ` mobile_mask ` , ` province ` , ` city ` , ` district ` , ` address_cipher ` , ` address_mask ` , ` is_default ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , x . member_id , CONCAT ( ' DEMO_RECEIVER_CIPHER_ ' , x . seq ) , CONCAT ( ' 演示 ' , x . seq , '*' ) ,
CONCAT ( ' DEMO_ADDRESS_MOBILE_ ' , x . seq ) , CONCAT ( ' 138 * * * * 20 ' , LPAD ( x . seq , 2 , '0' ) ) , ' 上海市 ',' 上海市 ' , IF ( x . seq = 1 , ' 浦东新区 ',' 徐汇区 ' ) ,
CONCAT ( ' DEMO_ADDRESS_CIPHER_ ' , x . seq ) , CONCAT ( ' 演示路 ' , x . seq , ' * * 号 ' ) , x . is_default , @ admin_id , @ admin_id , @ now , @ now
FROM ( SELECT 1 seq , @ member_1 member_id , 1 is_default UNION ALL SELECT 2 , @ member_2 , 2 UNION ALL SELECT 3 , @ member_3 , 1 ) x
WHERE NOT EXISTS (
SELECT 1 FROM hg_app_member_address a WHERE a . member_id = x . member_id AND a . address_mask = CONCAT ( ' 演示路 ' , x . seq , ' * * 号 ' )
) ;
INSERT INTO hg_app_member_payment_account
( ` tenant_id ` , ` member_id ` , ` account_type ` , ` bank_code ` , ` bank_name ` , ` holder_cipher ` , ` holder_mask ` , ` mobile_cipher ` , ` mobile_mask ` , ` account_no_cipher ` , ` account_no_hash ` , ` account_no_mask ` , ` qr_attachment_id ` , ` verify_status ` , ` is_default ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , x . member_id , x . account_type , CONCAT ( ' BANK ' , x . account_type ) , x . bank_name ,
CONCAT ( ' DEMO_HOLDER_CIPHER_ ' , x . account_type ) , CONCAT ( ' 演示 ' , x . account_type , '*' ) , CONCAT ( ' DEMO_PAY_MOBILE_ ' , x . account_type ) ,
CONCAT ( ' 138 * * * * 30 ' , LPAD ( x . account_type , 2 , '0' ) ) , CONCAT ( ' DEMO_ACCOUNT_CIPHER_ ' , x . account_type ) ,
SHA2 ( CONCAT ( ' demo - account - ' , x . account_type ) , 256 ) , CONCAT ( ' * * * * * * * * * * * * ' , LPAD ( 1000 + x . account_type , 4 , '0' ) ) , 0 ,
IF ( x . account_type IN ( 1 , 3 , 5 ) , 2 , 1 ) , IF ( x . account_type = 1 , 1 , 2 ) , @ admin_id , @ admin_id , @ now , @ now
FROM (
SELECT 1 account_type , @ member_1 member_id , ' 演示银行 ' bank_name UNION ALL
SELECT 2 , @ member_2 , ' 数字钱包 ' UNION ALL SELECT 3 , @ member_3 , ' 云闪付 ' UNION ALL
SELECT 4 , @ member_1 , ' 支付宝 ' UNION ALL SELECT 5 , @ member_2 , ' 微信 '
) x
WHERE NOT EXISTS (
SELECT 1 FROM hg_app_member_payment_account a WHERE a . tenant_id = @ tenant_id AND a . account_no_hash = SHA2 ( CONCAT ( ' demo - account - ' , x . account_type ) , 256 )
) ;
SET @ payment_account_id = ( SELECT id FROM hg_app_member_payment_account WHERE tenant_id = @ tenant_id AND account_no_hash = SHA2 ( ' demo - account - 1 ' , 256 ) LIMIT 1 ) ;
INSERT INTO hg_app_member_status_log
( ` tenant_id ` , ` member_id ` , ` from_status ` , ` to_status ` , ` reason_code ` , ` reason_text ` , ` effective_at ` , ` expire_at ` , ` approval_request_id ` , ` operator_id ` , ` created_at ` )
SELECT @ tenant_id , x . member_id , x . from_status , x . to_status , CONCAT ( ' demo_status_ ' , x . seq ) , x . reason_text ,
DATE_SUB ( @ now , INTERVAL x . seq DAY ) , IF ( x . to_status = 2 , DATE_ADD ( @ now , INTERVAL 30 DAY ) , NULL ) ,
( SELECT id FROM hg_approval_request WHERE approval_no = CONCAT ( ' DEMO - AP - ' , LPAD ( x . seq + 3 , 2 , '0' ) ) LIMIT 1 ) , @ reviewer_id , @ now
FROM (
SELECT 1 seq , @ member_3 member_id , 1 from_status , 2 to_status , ' 风控审核后禁用 ' reason_text
UNION ALL SELECT 2 , @ member_2 , 2 , 1 , ' 复核后恢复正常 '
UNION ALL SELECT 3 , @ member_4 , 1 , 3 , ' 用户申请注销 '
) x
WHERE NOT EXISTS (
SELECT 1 FROM hg_app_member_status_log l WHERE l . member_id = x . member_id AND l . reason_code = CONCAT ( ' demo_status_ ' , x . seq )
) ;
INSERT INTO hg_wallet_account
( ` tenant_id ` , ` member_id ` , ` currency ` , ` available_amount ` , ` frozen_amount ` , ` total_income ` , ` total_expense ` , ` account_status ` , ` version ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , x . member_id , ' CNY ' , x . available_amount , x . frozen_amount , x . total_income , x . total_expense , x . account_status , x . seq , @ now , @ now
FROM (
SELECT 1 seq , @ member_1 member_id , 880000 available_amount , 20000 frozen_amount , 1200000 total_income , 300000 total_expense , 1 account_status
UNION ALL SELECT 2 , @ member_2 , 356000 , 44000 , 700000 , 300000 , 1
UNION ALL SELECT 3 , @ member_3 , 0 , 0 , 120000 , 120000 , 2
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_wallet_account a WHERE a . tenant_id = @ tenant_id AND a . member_id = x . member_id AND a . currency = ' CNY ' ) ;
SET @ wallet_1 = ( SELECT id FROM hg_wallet_account WHERE tenant_id = @ tenant_id AND member_id = @ member_1 AND currency = ' CNY ' LIMIT 1 ) ;
SET @ wallet_2 = ( SELECT id FROM hg_wallet_account WHERE tenant_id = @ tenant_id AND member_id = @ member_2 AND currency = ' CNY ' LIMIT 1 ) ;
INSERT INTO hg_wallet_ledger
( ` tenant_id ` , ` ledger_no ` , ` account_id ` , ` member_id ` , ` biz_type ` , ` biz_no ` , ` entry_type ` , ` direction ` , ` amount ` , ` before_amount ` , ` after_amount ` , ` currency ` , ` reversal_of ` , ` idempotency_key ` , ` remark ` , ` operator_id ` , ` occurred_at ` , ` created_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - LG - ' , LPAD ( x . seq , 2 , '0' ) ) , x . account_id , x . member_id , x . biz_type , CONCAT ( ' DEMO - BIZ - ' , LPAD ( x . seq , 2 , '0' ) ) ,
x . entry_type , x . direction , x . amount , x . before_amount , x . after_amount , ' CNY ' , 0 , CONCAT ( ' DEMO - LEDGER - IDEMP - ' , x . seq ) , x . remark , @ admin_id ,
DATE_SUB ( @ now , INTERVAL x . seq HOUR ) , DATE_SUB ( @ now , INTERVAL x . seq HOUR )
FROM (
SELECT 1 seq , @ wallet_1 account_id , @ member_1 member_id , ' recharge ' biz_type , ' recharge_credit ' entry_type , 1 direction , 100000 amount , 500000 before_amount , 600000 after_amount , ' 充值入账 ' remark
UNION ALL SELECT 2 , @ wallet_1 , @ member_1 , ' withdrawal ',' withdrawal_debit ' , 2 , 50000 , 600000 , 550000 , ' 提现扣款 '
UNION ALL SELECT 3 , @ wallet_2 , @ member_2 , ' task ',' task_commission ' , 1 , 3000 , 300000 , 303000 , ' 任务佣金 '
UNION ALL SELECT 4 , @ wallet_2 , @ member_2 , ' adjustment ',' manual_deduct ' , 2 , 2000 , 303000 , 301000 , ' 人工扣回 '
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_wallet_ledger l WHERE l . tenant_id = @ tenant_id AND l . ledger_no = CONCAT ( ' DEMO - LG - ' , LPAD ( x . seq , 2 , '0' ) ) ) ;
SET @ ledger_recharge = ( SELECT id FROM hg_wallet_ledger WHERE ledger_no = ' DEMO - LG - 01 ' LIMIT 1 ) ;
SET @ ledger_withdraw = ( SELECT id FROM hg_wallet_ledger WHERE ledger_no = ' DEMO - LG - 02 ' LIMIT 1 ) ;
SET @ ledger_task = ( SELECT id FROM hg_wallet_ledger WHERE ledger_no = ' DEMO - LG - 03 ' LIMIT 1 ) ;
INSERT INTO hg_wallet_ledger
( ` tenant_id ` , ` ledger_no ` , ` account_id ` , ` member_id ` , ` biz_type ` , ` biz_no ` , ` entry_type ` , ` direction ` , ` amount ` , ` before_amount ` , ` after_amount ` , ` currency ` , ` reversal_of ` , ` idempotency_key ` , ` remark ` , ` operator_id ` , ` occurred_at ` , ` created_at ` )
SELECT @ tenant_id , ' DEMO - LG - 05 ' , @ wallet_2 , @ member_2 , ' task ',' DEMO - BIZ - 03 ',' task_commission_reversal ' , 2 , 3000 , 301000 , 298000 , ' CNY ' , @ ledger_task ,
' DEMO - LEDGER - IDEMP - 5 ',' 任务佣金冲正演示 ' , @ admin_id , @ now , @ now
WHERE NOT EXISTS ( SELECT 1 FROM hg_wallet_ledger WHERE ledger_no = ' DEMO - LG - 05 ' ) ;
INSERT INTO hg_wallet_adjustment_request
( ` tenant_id ` , ` request_no ` , ` member_id ` , ` account_id ` , ` adjust_type ` , ` direction ` , ` amount ` , ` reason_code ` , ` reason_text ` , ` evidence_json ` , ` idempotency_key ` , ` request_status ` , ` approval_request_id ` , ` ledger_id ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - WA - ' , LPAD ( x . status , 2 , '0' ) ) , x . member_id , x . account_id , x . adjust_type , x . direction , 1000 * x . status ,
CONCAT ( ' demo_adjust_ ' , x . status ) , CONCAT ( ' 演示资金调账状态 ' , x . status ) , JSON_ARRAY ( ) , CONCAT ( ' DEMO - WA - IDEMP - ' , x . status ) , x . status ,
COALESCE ( ( SELECT id FROM hg_approval_request WHERE approval_no = CONCAT ( ' DEMO - AP - ' , LPAD ( x . status + 1 , 2 , '0' ) ) ) , 0 ) ,
IF ( x . status = 4 , COALESCE ( ( SELECT id FROM hg_wallet_ledger WHERE ledger_no = ' DEMO - LG - 04 ' ) , 0 ) , 0 ) , @ admin_id , @ admin_id ,
DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM (
SELECT 1 status , @ member_1 member_id , @ wallet_1 account_id , 1 adjust_type , 1 direction
UNION ALL SELECT 2 , @ member_2 , @ wallet_2 , 2 , 1
UNION ALL SELECT 3 , @ member_1 , @ wallet_1 , 3 , 2
UNION ALL SELECT 4 , @ member_2 , @ wallet_2 , 4 , 2
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_wallet_adjustment_request r WHERE r . request_no = CONCAT ( ' DEMO - WA - ' , LPAD ( x . status , 2 , '0' ) ) ) ;
INSERT INTO hg_app_member_notice
( ` tenant_id ` , ` member_id ` , ` title ` , ` content ` , ` source_type ` , ` start_at ` , ` end_at ` , ` notice_status ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , x . member_id , CONCAT ( ' DEMO 通知 - ' , x . seq ) , x . content , x . source_type , DATE_SUB ( @ now , INTERVAL 1 DAY ) ,
DATE_ADD ( @ now , INTERVAL 30 DAY ) , x . notice_status , @ admin_id , @ admin_id , @ now , @ now
FROM (
SELECT 1 seq , 0 member_id , ' 系统维护通知 ( 真实 ) ' content , 1 source_type , 1 notice_status
UNION ALL SELECT 2 , @ member_1 , ' 运营活动效果模拟 ' , 2 , 1
UNION ALL SELECT 3 , @ member_2 , ' 已撤回的真实通知 ' , 1 , 2
UNION ALL SELECT 4 , 0 , ' 已撤回的运营模拟 ' , 2 , 2
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_app_member_notice n WHERE n . title = CONCAT ( ' DEMO 通知 - ' , x . seq ) ) ;
INSERT INTO hg_task_hall
( ` tenant_id ` , ` hall_code ` , ` name ` , ` icon_attachment_id ` , ` icon_url ` , ` summary ` , ` commission_rate ` , ` rate_unit ` , ` client_route ` , ` publish_status ` , ` sort ` , ` version ` , ` remark ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO_HALL_ ' , x . status ) , CONCAT ( x . label , ' 任务大厅 ' ) , 0 ,
CONCAT ( ' https : //picsum.photos/seed/hall-',x.status,'/256/256'),CONCAT('用于展示',x.label,'状态'),100+x.status*20,
' basis_point ' , CONCAT ( ' / task - hall / demo - ' , x . status ) , x . status , x . status * 10 , x . status - 1 , ' 本地演示数据 ' , @ admin_id , @ admin_id ,
DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM (
SELECT 1 status , ' 草稿 ' label UNION ALL SELECT 2 , ' 待审 ' UNION ALL SELECT 3 , ' 已发布 '
UNION ALL SELECT 4 , ' 已下线 ' UNION ALL SELECT 5 , ' 已归档 '
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_task_hall h WHERE h . tenant_id = @ tenant_id AND h . hall_code = CONCAT ( ' DEMO_HALL_ ' , x . status ) ) ;
INSERT INTO hg_task_hall_level ( ` tenant_id ` , ` hall_id ` , ` level_id ` , ` created_at ` )
SELECT @ tenant_id , h . id , l . id , @ now
FROM hg_task_hall h
JOIN hg_app_member_level l ON l . level_code IN ( ' VIP1 ',' DEMO_VIP2 ',' DEMO_VIP3 ' ) AND l . tenant_id = @ tenant_id
WHERE h . hall_code LIKE ' DEMO_HALL_ % ' AND h . tenant_id = @ tenant_id
AND NOT EXISTS ( SELECT 1 FROM hg_task_hall_level hl WHERE hl . tenant_id = @ tenant_id AND hl . hall_id = h . id AND hl . level_id = l . id ) ;
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- 4. 商品任务 、 交易订单 、 充值 、 提现 、 财务复核和客服
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
SET @ demo_hall_id = ( SELECT id FROM hg_task_hall WHERE tenant_id = @ tenant_id AND hall_code = ' DEMO_HALL_3 ' LIMIT 1 ) ;
INSERT INTO hg_task
( ` tenant_id ` , ` task_no ` , ` hall_id ` , ` title ` , ` description ` , ` detail_html ` , ` cover_attachment_id ` , ` cover_url ` , ` commission_amount ` , ` commission_rate ` , ` daily_limit ` , ` per_member_limit ` , ` start_at ` , ` end_at ` , ` publish_status ` , ` sort ` , ` version ` , ` remark ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - TK - ' , LPAD ( x . status , 2 , '0' ) ) , @ demo_hall_id , CONCAT ( x . label , ' 演示任务 ' ) ,
CONCAT ( ' 这是 ' , x . label , ' 状态的任务数据 ' ) , CONCAT ( ' < h3 > ' , x . label , ' 任务 < / h3 > < p > 请按要求提交演示凭证 。 < / p > ' ) , 0 ,
CONCAT ( ' https : //picsum.photos/seed/task-',x.status,'/640/360'),500+x.status*100,50*x.status,100,1,
DATE_SUB ( @ now , INTERVAL 3 DAY ) , DATE_ADD ( @ now , INTERVAL 30 DAY ) , x . status , x . status * 10 , x . status - 1 ,
' 本地演示数据 ' , @ admin_id , @ admin_id , DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM (
SELECT 1 status , ' 草稿 ' label UNION ALL SELECT 2 , ' 待审 ' UNION ALL SELECT 3 , ' 已发布 '
UNION ALL SELECT 4 , ' 已下线 ' UNION ALL SELECT 5 , ' 已归档 '
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_task t WHERE t . tenant_id = @ tenant_id AND t . task_no = CONCAT ( ' DEMO - TK - ' , LPAD ( x . status , 2 , '0' ) ) ) ;
INSERT INTO hg_task_level ( ` tenant_id ` , ` task_id ` , ` level_id ` , ` created_at ` )
SELECT @ tenant_id , t . id , l . id , @ now
FROM hg_task t
JOIN hg_app_member_level l ON l . level_code IN ( ' VIP1 ',' DEMO_VIP2 ',' DEMO_VIP3 ' ) AND l . tenant_id = @ tenant_id
WHERE t . task_no LIKE ' DEMO - TK - % ' AND t . tenant_id = @ tenant_id
AND NOT EXISTS ( SELECT 1 FROM hg_task_level tl WHERE tl . tenant_id = @ tenant_id AND tl . task_id = t . id AND tl . level_id = l . id ) ;
SET @ task_published_id = ( SELECT id FROM hg_task WHERE tenant_id = @ tenant_id AND task_no = ' DEMO - TK - 03 ' LIMIT 1 ) ;
SET @ product_published_id = ( SELECT id FROM hg_product WHERE tenant_id = @ tenant_id AND product_no = ' DEMO - P - 03 ' LIMIT 1 ) ;
INSERT INTO hg_trade_order
( ` tenant_id ` , ` order_no ` , ` member_id ` , ` task_id ` , ` product_id ` , ` product_name ` , ` order_type ` , ` quantity ` , ` unit_price_amount ` , ` total_amount ` , ` commission_amount ` , ` currency ` , ` member_level_id ` , ` rule_snapshot ` , ` message ` , ` order_status ` , ` freeze_status ` , ` approval_request_id ` , ` matched_at ` , ` completed_at ` , ` unfrozen_at ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - ORD - ' , LPAD ( x . status , 2 , '0' ) ) , x . member_id ,
IF ( x . order_type = 2 , @ task_published_id , 0 ) , IF ( x . order_type < > 2 , @ product_published_id , 0 ) , CONCAT ( x . label , ' 演示订单 ' ) , x . order_type ,
1 , 10000 + x . status * 100 , 10000 + x . status * 100 , 500 + x . status * 10 , ' CNY ' , x . level_id ,
JSON_OBJECT ( ' demo ' , TRUE , ' orderStatus ' , x . status , ' commissionRate ' , 200 ) , CONCAT ( ' 演示订单状态 : ' , x . label ) , x . status ,
1 + MOD ( x . status - 1 , 3 ) , IF ( x . status IN ( 6 , 7 , 8 ) , ( SELECT id FROM hg_approval_request WHERE approval_no = ' DEMO - AP - 04 ' LIMIT 1 ) , 0 ) ,
IF ( x . status >= 2 , DATE_SUB ( @ now , INTERVAL x . status HOUR ) , NULL ) , IF ( x . status = 4 , DATE_SUB ( @ now , INTERVAL 1 HOUR ) , NULL ) ,
IF ( x . status = 2 , DATE_SUB ( @ now , INTERVAL 30 MINUTE ) , NULL ) , @ admin_id , @ admin_id , DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM (
SELECT 1 status , @ member_1 member_id , @ level_normal_id level_id , 1 order_type , ' 匹配中 ' label
UNION ALL SELECT 2 , @ member_2 , @ level_silver_id , 2 , ' 待处理 '
UNION ALL SELECT 3 , @ member_1 , @ level_normal_id , 3 , ' 处理中 '
UNION ALL SELECT 4 , @ member_2 , @ level_silver_id , 1 , ' 已完成 '
UNION ALL SELECT 5 , @ member_1 , @ level_normal_id , 2 , ' 已超时 '
UNION ALL SELECT 6 , @ member_2 , @ level_silver_id , 1 , ' 已冻结 '
UNION ALL SELECT 7 , @ member_1 , @ level_normal_id , 3 , ' 已取消 '
UNION ALL SELECT 8 , @ member_2 , @ level_silver_id , 2 , ' 失败 '
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_trade_order o WHERE o . tenant_id = @ tenant_id AND o . order_no = CONCAT ( ' DEMO - ORD - ' , LPAD ( x . status , 2 , '0' ) ) ) ;
-- 任务审核需要独立订单 , 避免 trade_order_id 唯一索引冲突 。
INSERT INTO hg_trade_order
( ` tenant_id ` , ` order_no ` , ` member_id ` , ` task_id ` , ` product_id ` , ` product_name ` , ` order_type ` , ` quantity ` , ` unit_price_amount ` , ` total_amount ` , ` commission_amount ` , ` currency ` , ` member_level_id ` , ` rule_snapshot ` , ` message ` , ` order_status ` , ` freeze_status ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - TS - ORD - ' , x . status ) , x . member_id , @ task_published_id , 0 , ' 任务审核关联订单 ' , 2 , 1 , 0 , 0 , 500 + x . status * 100 ,
' CNY ' , x . level_id , JSON_OBJECT ( ' demo ' , TRUE , ' submissionStatus ' , x . status ) , ' 任务审核关联订单 ' , 4 , 1 , @ admin_id , @ admin_id ,
DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM (
SELECT 1 status , @ member_1 member_id , @ level_normal_id level_id UNION ALL SELECT 2 , @ member_2 , @ level_silver_id
UNION ALL SELECT 3 , @ member_1 , @ level_normal_id UNION ALL SELECT 4 , @ member_2 , @ level_silver_id
UNION ALL SELECT 5 , @ member_1 , @ level_normal_id
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_trade_order o WHERE o . tenant_id = @ tenant_id AND o . order_no = CONCAT ( ' DEMO - TS - ORD - ' , x . status ) ) ;
INSERT INTO hg_task_submission
( ` tenant_id ` , ` submission_no ` , ` trade_order_id ` , ` task_id ` , ` member_id ` , ` member_level_id ` , ` evidence_text ` , ` evidence_attachment_ids ` , ` submission_status ` , ` commission_amount ` , ` success_rate ` , ` reviewed_by ` , ` reviewed_at ` , ` review_reason_code ` , ` review_reason ` , ` allow_resubmit ` , ` ledger_id ` , ` settled_at ` , ` reversal_approval_id ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - TS - ' , LPAD ( x . status , 2 , '0' ) ) , o . id , @ task_published_id , x . member_id , x . level_id ,
CONCAT ( ' 演示任务凭证 , 审核状态 : ' , x . label ) , JSON_ARRAY ( CONCAT ( ' https : //picsum.photos/seed/evidence-',x.status,'/800/600')),
x . status , 500 + x . status * 100 , 7000 + x . status * 300 , IF ( x . status = 1 , 0 , @ reviewer_id ) , IF ( x . status = 1 , NULL , DATE_SUB ( @ now , INTERVAL 1 HOUR ) ) ,
IF ( x . status = 3 , ' evidence_invalid ',' ' ) , IF ( x . status = 3 , ' 凭证不符合要求 ' , IF ( x . status > 1 , ' 演示审核意见 ',' ' ) ) ,
IF ( x . status = 3 , 1 , 2 ) , IF ( x . status IN ( 4 , 5 ) , @ ledger_task , 0 ) , IF ( x . status IN ( 4 , 5 ) , DATE_SUB ( @ now , INTERVAL 2 HOUR ) , NULL ) ,
IF ( x . status = 5 , ( SELECT id FROM hg_approval_request WHERE approval_no = ' DEMO - AP - 07 ' LIMIT 1 ) , 0 ) , @ admin_id , @ admin_id ,
DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM (
SELECT 1 status , @ member_1 member_id , @ level_normal_id level_id , ' 待审核 ' label UNION ALL
SELECT 2 , @ member_2 , @ level_silver_id , ' 已通过 ' UNION ALL SELECT 3 , @ member_1 , @ level_normal_id , ' 已驳回 ' UNION ALL
SELECT 4 , @ member_2 , @ level_silver_id , ' 已结算 ' UNION ALL SELECT 5 , @ member_1 , @ level_normal_id , ' 已冲正 '
) x
JOIN hg_trade_order o ON o . order_no = CONCAT ( ' DEMO - TS - ORD - ' , x . status ) AND o . tenant_id = @ tenant_id
WHERE NOT EXISTS ( SELECT 1 FROM hg_task_submission s WHERE s . submission_no = CONCAT ( ' DEMO - TS - ' , LPAD ( x . status , 2 , '0' ) ) ) ;
INSERT INTO hg_payment_channel
( ` tenant_id ` , ` channel_code ` , ` name ` , ` channel_type ` , ` direction ` , ` config_cipher ` , ` min_amount ` , ` max_amount ` , ` fee_type ` , ` fee_fixed_amount ` , ` fee_rate ` , ` status ` , ` sort ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , ' demo_disabled ',' 演示停用通道 ' , 1 , 3 , ' DEMO_CONFIG_CIPHER ' , 100 , 1000000 , 1 , 0 , 30 , 2 , 99 , @ admin_id , @ admin_id , @ now , @ now
WHERE NOT EXISTS ( SELECT 1 FROM hg_payment_channel c WHERE c . tenant_id = @ tenant_id AND c . channel_code = ' demo_disabled ' ) ;
SET @ payment_channel_id = COALESCE ( ( SELECT id FROM hg_payment_channel WHERE tenant_id = @ tenant_id AND channel_code = ' wechat ' LIMIT 1 ) , ( SELECT id FROM hg_payment_channel WHERE tenant_id = @ tenant_id ORDER BY id LIMIT 1 ) ) ;
INSERT INTO hg_recharge_order
( ` tenant_id ` , ` recharge_no ` , ` member_id ` , ` channel_id ` , ` request_amount ` , ` paid_amount ` , ` currency ` , ` external_no ` , ` voucher_attachment_ids ` , ` recharge_type ` , ` recharge_status ` , ` remark ` , ` review_reason_code ` , ` review_reason ` , ` approval_request_id ` , ` ledger_id ` , ` paid_at ` , ` reviewed_at ` , ` credited_at ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - RC - ' , LPAD ( x . status , 2 , '0' ) ) , x . member_id , @ payment_channel_id , 10000 * x . status ,
IF ( x . status = 3 , 10000 * x . status , 0 ) , ' CNY ' , IF ( x . status = 3 , CONCAT ( ' EXT - DEMO - RC - ' , x . status ) , ' ' ) , JSON_ARRAY ( ) ,
IF ( MOD ( x . status , 2 ) = 1 , 1 , 2 ) , x . status , CONCAT ( ' 演示充值状态 : ' , x . label ) , IF ( x . status = 4 , ' risk_rejected ',' ' ) ,
IF ( x . status = 4 , ' 演示风控驳回 ',' ' ) , IF ( x . status IN ( 2 , 3 , 4 ) , ( SELECT id FROM hg_approval_request WHERE approval_no = CONCAT ( ' DEMO - AP - ' , LPAD ( x . status + 2 , 2 , '0' ) ) LIMIT 1 ) , 0 ) ,
IF ( x . status = 3 , @ ledger_recharge , 0 ) , IF ( x . status IN ( 2 , 3 ) , DATE_SUB ( @ now , INTERVAL 3 HOUR ) , NULL ) ,
IF ( x . status IN ( 3 , 4 ) , DATE_SUB ( @ now , INTERVAL 2 HOUR ) , NULL ) , IF ( x . status = 3 , DATE_SUB ( @ now , INTERVAL 1 HOUR ) , NULL ) ,
@ admin_id , @ admin_id , DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM (
SELECT 1 status , @ member_1 member_id , ' 用户未支付 ' label UNION ALL SELECT 2 , @ member_2 , ' 手动审核 '
UNION ALL SELECT 3 , @ member_1 , ' 已入账 ' UNION ALL SELECT 4 , @ member_2 , ' 手动驳回 '
UNION ALL SELECT 5 , @ member_1 , ' 已过期 ' UNION ALL SELECT 6 , @ member_2 , ' 已取消 '
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_recharge_order r WHERE r . tenant_id = @ tenant_id AND r . recharge_no = CONCAT ( ' DEMO - RC - ' , LPAD ( x . status , 2 , '0' ) ) ) ;
INSERT INTO hg_withdrawal_order
( ` tenant_id ` , ` withdrawal_no ` , ` member_id ` , ` payment_account_id ` , ` channel_id ` , ` request_amount ` , ` fee_amount ` , ` actual_amount ` , ` currency ` , ` account_snapshot_cipher ` , ` account_mask ` , ` bank_name ` , ` holder_mask ` , ` risk_result ` , ` withdrawal_status ` , ` review_reason_code ` , ` review_reason ` , ` approval_request_id ` , ` external_no ` , ` freeze_ledger_id ` , ` final_ledger_id ` , ` reviewed_at ` , ` processed_at ` , ` completed_at ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO - WD - ' , LPAD ( x . status , 2 , '0' ) ) , x . member_id , @ payment_account_id , @ payment_channel_id ,
20000 + x . status * 1000 , 100 , 19900 + x . status * 1000 , ' CNY ',' DEMO_ACCOUNT_SNAPSHOT ',' * * * * * * * * * * * * 1001 ',' 演示银行 ',' 演示 * ' ,
JSON_OBJECT ( ' riskLevel ' , IF ( x . status = 6 , ' high ',' low ' ) , ' demo ' , TRUE ) , x . status ,
IF ( x . status = 6 , ' risk_rejected ',' ' ) , IF ( x . status = 6 , ' 演示风控驳回 ',' ' ) ,
IF ( x . status IN ( 2 , 3 , 4 , 5 , 6 ) , ( SELECT id FROM hg_approval_request WHERE approval_no = CONCAT ( ' DEMO - AP - ' , LPAD ( LEAST ( x . status + 1 , 8 ) , 2 , '0' ) ) LIMIT 1 ) , 0 ) ,
IF ( x . status IN ( 4 , 5 ) , CONCAT ( ' EXT - DEMO - WD - ' , x . status ) , ' ' ) , IF ( x . status >= 2 , @ ledger_withdraw , 0 ) , IF ( x . status IN ( 4 , 5 , 6 ) , @ ledger_withdraw , 0 ) ,
IF ( x . status >= 2 , DATE_SUB ( @ now , INTERVAL 3 HOUR ) , NULL ) , IF ( x . status >= 3 , DATE_SUB ( @ now , INTERVAL 2 HOUR ) , NULL ) ,
IF ( x . status IN ( 4 , 5 , 6 , 7 ) , DATE_SUB ( @ now , INTERVAL 1 HOUR ) , NULL ) , @ admin_id , @ admin_id , DATE_SUB ( @ now , INTERVAL x . status DAY ) , @ now
FROM (
SELECT 1 status , @ member_1 member_id , ' 待初审 ' label UNION ALL SELECT 2 , @ member_2 , ' 复核中 '
UNION ALL SELECT 3 , @ member_1 , ' 付款中 ' UNION ALL SELECT 4 , @ member_2 , ' 已到账 '
UNION ALL SELECT 5 , @ member_1 , ' 付款失败 ' UNION ALL SELECT 6 , @ member_2 , ' 已驳回 '
UNION ALL SELECT 7 , @ member_1 , ' 已取消 '
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_withdrawal_order w WHERE w . tenant_id = @ tenant_id AND w . withdrawal_no = CONCAT ( ' DEMO - WD - ' , LPAD ( x . status , 2 , '0' ) ) ) ;
INSERT INTO hg_finance_review
( ` tenant_id ` , ` approval_request_id ` , ` biz_type ` , ` biz_id ` , ` review_stage ` , ` reviewer_id ` , ` decision ` , ` reason_code ` , ` reason_text ` , ` snapshot_json ` , ` created_at ` )
SELECT @ tenant_id , a . id , x . biz_type , x . biz_id , x . stage , @ reviewer_id , x . decision , CONCAT ( ' demo_finance_ ' , x . seq ) ,
IF ( x . decision = 1 , ' 演示审核通过 ',' 演示审核驳回 ' ) , JSON_OBJECT ( ' demo ' , TRUE , ' decision ' , x . decision ) , DATE_SUB ( @ now , INTERVAL x . seq HOUR )
FROM (
SELECT 1 seq , ' recharge ' biz_type , ( SELECT id FROM hg_recharge_order WHERE recharge_no = ' DEMO - RC - 03 ' LIMIT 1 ) biz_id , 1 stage , 1 decision , ' DEMO - AP - 04 ' approval_no
UNION ALL SELECT 2 , ' recharge ' , ( SELECT id FROM hg_recharge_order WHERE recharge_no = ' DEMO - RC - 04 ' LIMIT 1 ) , 2 , 2 , ' DEMO - AP - 05 '
UNION ALL SELECT 3 , ' withdrawal ' , ( SELECT id FROM hg_withdrawal_order WHERE withdrawal_no = ' DEMO - WD - 04 ' LIMIT 1 ) , 1 , 1 , ' DEMO - AP - 07 '
UNION ALL SELECT 4 , ' withdrawal ' , ( SELECT id FROM hg_withdrawal_order WHERE withdrawal_no = ' DEMO - WD - 06 ' LIMIT 1 ) , 2 , 2 , ' DEMO - AP - 06 '
) x
JOIN hg_approval_request a ON a . approval_no = x . approval_no
WHERE NOT EXISTS (
SELECT 1 FROM hg_finance_review f WHERE f . approval_request_id = a . id AND f . review_stage = x . stage AND f . reviewer_id = @ reviewer_id
) ;
INSERT INTO hg_customer_service
( ` tenant_id ` , ` service_code ` , ` name ` , ` avatar_url ` , ` work_time ` , ` online_status ` , ` service_url ` , ` backup_contact ` , ` session_mapping ` , ` status ` , ` sort ` , ` remark ` , ` created_by ` , ` updated_by ` , ` created_at ` , ` updated_at ` )
SELECT @ tenant_id , CONCAT ( ' DEMO_CS_ ' , x . seq ) , CONCAT ( ' 演示客服 - ' , x . seq ) , CONCAT ( ' https : //picsum.photos/seed/cs-',x.seq,'/128/128'),
IF ( x . seq = 1 , ' 周一至周日 0 9 : 00 - 22 : 00 ',' 工作日 0 9 : 00 - 18 : 00 ' ) , x . online_status , CONCAT ( ' https : //example.com/customer-service/',x.seq),
CONCAT ( ' 400 - 800 - 000 ' , x . seq ) , JSON_OBJECT ( ' channel ',' demo ',' seat ' , x . seq ) , x . status , x . seq * 10 , ' 本地演示客服 ' ,
@ admin_id , @ admin_id , @ now , @ now
FROM (
SELECT 1 seq , 1 online_status , 1 status UNION ALL SELECT 2 , 2 , 1 UNION ALL SELECT 3 , 1 , 2 UNION ALL SELECT 4 , 2 , 2
) x
WHERE NOT EXISTS ( SELECT 1 FROM hg_customer_service c WHERE c . tenant_id = @ tenant_id AND c . service_code = CONCAT ( ' DEMO_CS_ ' , x . seq ) ) ;
-- 修正统计字段 , 保持演示列表与关联数据一致 。
UPDATE hg_app_member_level l
SET l . member_count = ( SELECT COUNT ( * ) FROM hg_app_member m WHERE m . level_id = l . id AND m . deleted_at IS NULL )
WHERE l . tenant_id = @ tenant_id AND l . level_code IN ( ' VIP1 ',' DEMO_VIP2 ',' DEMO_VIP3 ',' DEMO_VIP_DISABLED ' ) ;
-- 输出导入后的表行数 , 便于核对 。
SELECT table_name , table_rows
FROM information_schema . tables
WHERE table_schema = DATABASE ( )
AND table_name IN (
' hg_approval_request ',' hg_approval_action ',' hg_sensitive_access_log ',' hg_biz_audit_log ',' hg_idempotency_record ',' hg_outbox_event ',' hg_dashboard_daily_stat ' ,
' hg_site_config_version ',' hg_content ',' hg_content_version ',' hg_banner ',' hg_product ',' hg_product_category ' ,
' hg_app_member ',' hg_app_member_profile ',' hg_app_member_address ',' hg_app_member_payment_account ',' hg_app_member_status_log ' ,
' hg_wallet_account ',' hg_wallet_ledger ',' hg_wallet_adjustment_request ',' hg_app_member_notice ',' hg_app_member_level ',' hg_app_member_level_version ' ,
' hg_task_hall ',' hg_task_hall_level ',' hg_task ',' hg_task_level ',' hg_task_submission ',' hg_trade_order ',' hg_payment_channel ' ,
' hg_recharge_order ',' hg_withdrawal_order ',' hg_finance_review ',' hg_customer_service '
)
ORDER BY table_name ;