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,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