feat:增加伪装方便ios上架
This commit is contained in:
1 parent
fc36d1b17a
commit
f3acddd021
70 files changed
+3282
-191
No files matched your search
@@ -0,0 +1,121 @@
|
||||
-- 单店茶室预约、分端 App 类型及人工注销申请。MySQL 5.7 / 8.0。
|
||||
-- 仅新增表和设置页菜单权限,不更改既有聊天数据,不填入虚构门店、包间或预约。
|
||||
-- 部署顺序:确认目标库并执行本脚本 -> Java -> 授予设置页权限 -> PC -> 重新打包 App。
|
||||
-- 读取未配置设置时默认三端均为聊天。所有配置与记录通过既有租户组件访问。
|
||||
|
||||
CREATE TABLE IF NOT EXISTS member_app_setting (
|
||||
id bigint NOT NULL AUTO_INCREMENT,
|
||||
config_key varchar(32) NOT NULL DEFAULT 'main',
|
||||
config_json mediumtext NOT NULL COMMENT '经服务端校验的模式与公开门店资料',
|
||||
creator varchar(64) DEFAULT '',
|
||||
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updater varchar(64) DEFAULT '',
|
||||
update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted bit(1) NOT NULL DEFAULT b'0',
|
||||
tenant_id bigint NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_app_setting (tenant_id, config_key, deleted)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='App模式和单店设置';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS member_tea_room (
|
||||
id bigint NOT NULL AUTO_INCREMENT,
|
||||
name varchar(80) NOT NULL,
|
||||
cover varchar(2048) NOT NULL,
|
||||
capacity int NOT NULL,
|
||||
facilities text NOT NULL COMMENT 'JSON字符串数组',
|
||||
description varchar(2000) NOT NULL DEFAULT '',
|
||||
price int NOT NULL COMMENT '每个预约时段价格,单位分,到店付款',
|
||||
sort int NOT NULL DEFAULT 0,
|
||||
enabled bit(1) NOT NULL DEFAULT b'1',
|
||||
creator varchar(64) DEFAULT '',
|
||||
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updater varchar(64) DEFAULT '',
|
||||
update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted bit(1) NOT NULL DEFAULT b'0',
|
||||
tenant_id bigint NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_tea_room_list (tenant_id, enabled, sort)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='茶室包间';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS member_tea_booking (
|
||||
id bigint NOT NULL AUTO_INCREMENT,
|
||||
booking_no varchar(40) NOT NULL,
|
||||
member_id bigint NOT NULL,
|
||||
room_id bigint NOT NULL,
|
||||
room_name varchar(80) NOT NULL,
|
||||
room_cover varchar(2048) NOT NULL,
|
||||
store_name varchar(80) NOT NULL,
|
||||
store_address varchar(300) NOT NULL,
|
||||
store_phone varchar(30) NOT NULL,
|
||||
date date NOT NULL COMMENT '中国标准时间预约日期',
|
||||
start_time varchar(5) NOT NULL,
|
||||
end_time varchar(5) NOT NULL,
|
||||
start_at datetime NOT NULL,
|
||||
end_at datetime NOT NULL,
|
||||
persons int NOT NULL,
|
||||
contact_name varchar(40) NOT NULL,
|
||||
contact_phone varchar(30) NOT NULL,
|
||||
remark varchar(500) NOT NULL DEFAULT '',
|
||||
price int NOT NULL COMMENT '提交时价格快照,单位分',
|
||||
status varchar(16) NOT NULL DEFAULT 'pending' COMMENT 'pending/confirmed/completed/cancelled/rejected;过时pending对外计算expired',
|
||||
reason varchar(500) NOT NULL DEFAULT '',
|
||||
request_id varchar(64) DEFAULT NULL,
|
||||
request_hash char(64) NOT NULL,
|
||||
creator varchar(64) DEFAULT '',
|
||||
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updater varchar(64) DEFAULT '',
|
||||
update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted bit(1) NOT NULL DEFAULT b'0',
|
||||
tenant_id bigint NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_tea_booking_no (tenant_id, booking_no),
|
||||
UNIQUE KEY uk_tea_booking_request (tenant_id, member_id, request_id),
|
||||
KEY idx_tea_booking_room_time (tenant_id, room_id, status, start_at, end_at),
|
||||
KEY idx_tea_booking_member (tenant_id, member_id, id),
|
||||
KEY idx_tea_booking_admin (tenant_id, date, status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='茶室预约申请与确认';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS member_account_closure_request (
|
||||
id bigint NOT NULL AUTO_INCREMENT,
|
||||
member_id bigint NOT NULL,
|
||||
nickname varchar(80) DEFAULT '',
|
||||
contact_phone varchar(30) DEFAULT '',
|
||||
reason varchar(500) NOT NULL DEFAULT '',
|
||||
status varchar(16) NOT NULL DEFAULT 'pending' COMMENT 'pending/processing/resolved/rejected;resolved仅表示申请已人工处理',
|
||||
process_remark varchar(1000) NOT NULL DEFAULT '',
|
||||
creator varchar(64) DEFAULT '',
|
||||
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updater varchar(64) DEFAULT '',
|
||||
update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted bit(1) NOT NULL DEFAULT b'0',
|
||||
tenant_id bigint NOT NULL DEFAULT 0,
|
||||
active_flag tinyint GENERATED ALWAYS AS (CASE WHEN deleted = 0 AND status IN ('pending','processing') THEN 1 ELSE NULL END) STORED,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_account_closure_active (tenant_id, member_id, active_flag),
|
||||
KEY idx_account_closure_page (tenant_id, status, id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='人工注销账号申请,不自动删除账号';
|
||||
|
||||
-- 优先复用已配置的设置页面,保持既有角色关联。
|
||||
SET @tea_setting_menu_id = (SELECT MIN(id) FROM system_menu WHERE component='app/setting/index' AND deleted=0);
|
||||
SET @tea_app_parent_id = (SELECT parent_id FROM system_menu WHERE id=@tea_setting_menu_id);
|
||||
SET @tea_app_parent_id = COALESCE(@tea_app_parent_id,
|
||||
(SELECT MIN(id) FROM system_menu WHERE type=1 AND path IN ('app','/app') AND deleted=0));
|
||||
INSERT INTO system_menu (name,permission,type,sort,parent_id,path,icon,component,status,visible,keep_alive,always_show,creator,updater,deleted)
|
||||
SELECT '应用管理','',1,30,0,'app','ep:iphone',NULL,0,b'1',b'1',b'1','1','1',b'0'
|
||||
WHERE @tea_app_parent_id IS NULL;
|
||||
SET @tea_app_parent_id = COALESCE(@tea_app_parent_id,
|
||||
(SELECT MIN(id) FROM system_menu WHERE type=1 AND path IN ('app','/app') AND deleted=0));
|
||||
INSERT INTO system_menu (name,permission,type,sort,parent_id,path,icon,component,component_name,status,visible,keep_alive,always_show,creator,updater,deleted)
|
||||
SELECT '应用设置','app:setting:query',2,20,@tea_app_parent_id,'setting','ep:setting','app/setting/index','AppSetting',0,b'1',b'1',b'1','1','1',b'0'
|
||||
WHERE @tea_setting_menu_id IS NULL;
|
||||
SET @tea_setting_menu_id = (SELECT MIN(id) FROM system_menu WHERE component='app/setting/index' AND deleted=0);
|
||||
UPDATE system_menu SET permission='app:setting:query',component_name='AppSetting',update_time=CURRENT_TIMESTAMP WHERE id=@tea_setting_menu_id;
|
||||
INSERT INTO system_menu (name,permission,type,sort,parent_id,path,status,visible,keep_alive,always_show,creator,updater,deleted)
|
||||
SELECT buttons.name,buttons.permission,3,buttons.sort,@tea_setting_menu_id,'',0,b'1',b'1',b'1','1','1',b'0'
|
||||
FROM (
|
||||
SELECT '设置查询' name,'app:setting:query' permission,1 sort
|
||||
UNION ALL SELECT '设置与包间维护','app:setting:update',2
|
||||
UNION ALL SELECT '预约与注销申请处理','app:setting:booking',3
|
||||
) buttons
|
||||
WHERE NOT EXISTS (SELECT 1 FROM system_menu m WHERE m.permission=buttons.permission AND m.type=3 AND m.deleted=0);
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
-- 在停止旧版本绑定写入及支付回调后执行。先执行本文件,再核对并回填充值首奖。
|
||||
-- MySQL 5.7 / 8.0,数据库结构升级仅执行一次。新旧分佣实例不能同时运行。
|
||||
ALTER TABLE trade_brokerage_user ADD COLUMN bind_version BIGINT NOT NULL DEFAULT 0 COMMENT '分销关系版本';
|
||||
ALTER TABLE trade_brokerage_record ADD COLUMN biz_scene VARCHAR(32) NULL COMMENT '资金来源 ORDER/RECHARGE/MEMBERSHIP';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS trade_brokerage_relation_guard (
|
||||
id BIGINT NOT NULL PRIMARY KEY
|
||||
) ENGINE=InnoDB COMMENT='分销关系修改互斥锁';
|
||||
INSERT INTO trade_brokerage_relation_guard (id) VALUES (1) ON DUPLICATE KEY UPDATE id=id;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS trade_brokerage_bind_log (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id BIGINT NOT NULL,
|
||||
old_bind_user_id BIGINT NULL,
|
||||
new_bind_user_id BIGINT NULL,
|
||||
old_bind_user_time DATETIME NULL,
|
||||
new_bind_user_time DATETIME NULL,
|
||||
old_version BIGINT NOT NULL,
|
||||
new_version BIGINT NOT NULL,
|
||||
operator_id BIGINT NULL,
|
||||
source VARCHAR(32) NOT NULL,
|
||||
reason VARCHAR(500) NOT NULL,
|
||||
request_id VARCHAR(64) NOT NULL,
|
||||
creator VARCHAR(64) DEFAULT '',
|
||||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updater VARCHAR(64) DEFAULT '',
|
||||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted BIT(1) NOT NULL DEFAULT b'0',
|
||||
tenant_id BIGINT NOT NULL DEFAULT 0,
|
||||
UNIQUE KEY uk_tenant_request (tenant_id, request_id),
|
||||
KEY idx_user_id (user_id, id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分销上级变更记录';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS trade_brokerage_recharge_reward (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
source_user_id BIGINT NOT NULL,
|
||||
recharge_id VARCHAR(64) NOT NULL,
|
||||
evidence_record_id BIGINT NULL,
|
||||
creator VARCHAR(64) DEFAULT '',
|
||||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updater VARCHAR(64) DEFAULT '',
|
||||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted BIT(1) NOT NULL DEFAULT b'0',
|
||||
tenant_id BIGINT NOT NULL DEFAULT 0,
|
||||
UNIQUE KEY uk_tenant_source (tenant_id, source_user_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='永久充值首奖发放凭据,退款或删流水不恢复资格';
|
||||
@@ -0,0 +1,79 @@
|
||||
-- 执行前暂停绑定写入和支付回调,并先运行 20261112_brokerage_bind_management.sql。
|
||||
-- 必须在同一连接明确设置运行中的租户开关(0=关闭,1=开启)。
|
||||
-- SET @brokerage_tenant_enabled = 0;
|
||||
-- 默认只生成核对清单。确认清单后,在同一连接设置下面变量再执行本文件以回填。
|
||||
-- SET @apply_brokerage_reward_backfill = 1;
|
||||
-- 存在未确认记录时回填会报错。需结合备份及原始凭据核对后形成专门的资格回填语句。
|
||||
-- 不修改金额、余额和历史收益人。已取消/已软删除的首奖同样占用资格。
|
||||
|
||||
DROP PROCEDURE IF EXISTS backfill_brokerage_recharge_reward;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE backfill_brokerage_recharge_reward()
|
||||
SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
ROLLBACK;
|
||||
RESIGNAL;
|
||||
END;
|
||||
IF @brokerage_tenant_enabled IS NULL OR @brokerage_tenant_enabled NOT IN (0, 1) THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Set @brokerage_tenant_enabled to the actual runtime value (0 or 1)';
|
||||
END IF;
|
||||
DROP TEMPORARY TABLE IF EXISTS brokerage_reward_review;
|
||||
CREATE TEMPORARY TABLE brokerage_reward_review AS
|
||||
SELECT b.id AS record_id, b.source_user_id,
|
||||
CASE WHEN @brokerage_tenant_enabled = 1 THEN b.tenant_id ELSE 0 END AS target_tenant_id,
|
||||
b.biz_id AS recharge_id, b.create_time,
|
||||
CASE
|
||||
WHEN b.biz_scene = 'MEMBERSHIP' THEN 'OTHER'
|
||||
WHEN b.biz_scene = 'ORDER' THEN 'OTHER'
|
||||
WHEN b.title REGEXP '^用户\\[.*\\]充值\\[[0-9]+(\\.[0-9]{1,2})?\\]元$'
|
||||
AND b.source_user_id IS NOT NULL AND b.source_user_id > 0
|
||||
AND r.id IS NOT NULL AND w.user_id = b.source_user_id
|
||||
AND CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(b.title, '充值[', -1), ']', 1) AS DECIMAL(18,2)) * 100 = r.pay_price
|
||||
AND (@brokerage_tenant_enabled = 0 OR (b.tenant_id = r.tenant_id AND r.tenant_id = w.tenant_id))
|
||||
AND NOT (b.title LIKE '%成功购买%' AND oi.id IS NOT NULL AND oi.user_id = b.source_user_id)
|
||||
THEN 'RECHARGE'
|
||||
WHEN (b.title LIKE '%提现%' OR b.description LIKE '%提现%') AND COALESCE(b.biz_scene, '') <> 'RECHARGE' THEN 'OTHER'
|
||||
WHEN b.title LIKE '%成功购买%' AND oi.id IS NOT NULL AND oi.user_id = b.source_user_id
|
||||
AND b.title NOT LIKE '%充值[%'
|
||||
AND (@brokerage_tenant_enabled = 0 OR b.tenant_id = oi.tenant_id) THEN 'OTHER'
|
||||
ELSE 'REVIEW_REQUIRED'
|
||||
END AS classification
|
||||
FROM trade_brokerage_record b
|
||||
LEFT JOIN pay_wallet_recharge r ON CAST(r.id AS CHAR) = b.biz_id
|
||||
LEFT JOIN pay_wallet w ON w.id = r.wallet_id
|
||||
LEFT JOIN trade_order_item oi ON CAST(oi.id AS CHAR) = b.biz_id
|
||||
WHERE b.biz_type = 1 AND b.price > 0;
|
||||
|
||||
SELECT classification, COUNT(*) AS record_count FROM brokerage_reward_review GROUP BY classification;
|
||||
SELECT record_id, source_user_id, recharge_id, target_tenant_id
|
||||
FROM brokerage_reward_review WHERE classification = 'REVIEW_REQUIRED' ORDER BY record_id;
|
||||
|
||||
IF COALESCE(@apply_brokerage_reward_backfill, 0) = 1 THEN
|
||||
IF EXISTS (SELECT 1 FROM brokerage_reward_review WHERE classification = 'REVIEW_REQUIRED') THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Unresolved historical brokerage records. Backfill was not applied';
|
||||
END IF;
|
||||
DROP TEMPORARY TABLE IF EXISTS brokerage_reward_first;
|
||||
CREATE TEMPORARY TABLE brokerage_reward_first AS
|
||||
SELECT target_tenant_id, source_user_id, MIN(record_id) AS first_record_id
|
||||
FROM brokerage_reward_review WHERE classification = 'RECHARGE'
|
||||
GROUP BY target_tenant_id, source_user_id;
|
||||
START TRANSACTION;
|
||||
INSERT INTO trade_brokerage_recharge_reward
|
||||
(source_user_id, recharge_id, evidence_record_id, create_time, creator, tenant_id)
|
||||
SELECT evidence.source_user_id, evidence.recharge_id, evidence.record_id,
|
||||
COALESCE(evidence.create_time, CURRENT_TIMESTAMP), 'history-backfill', evidence.target_tenant_id
|
||||
FROM brokerage_reward_review evidence
|
||||
INNER JOIN brokerage_reward_first first_reward ON first_reward.first_record_id = evidence.record_id
|
||||
ON DUPLICATE KEY UPDATE source_user_id = trade_brokerage_recharge_reward.source_user_id;
|
||||
UPDATE trade_brokerage_record b
|
||||
INNER JOIN brokerage_reward_review evidence ON evidence.record_id = b.id AND evidence.classification = 'RECHARGE'
|
||||
SET b.biz_scene = 'RECHARGE' WHERE b.biz_scene IS NULL;
|
||||
COMMIT;
|
||||
SELECT COUNT(*) AS permanent_reward_count FROM trade_brokerage_recharge_reward;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL backfill_brokerage_recharge_reward();
|
||||
DROP PROCEDURE backfill_brokerage_recharge_reward;
|
||||
Reference in new issue
Block a user