Files
integral-shop/docs/company-czc231-integral-imgration-supplement.sql
danaisuiyuan eb349ffa74 chore(czcf82): Spring profiles, migration docs, and shop URLs
Add per-shop application YAML, company data migration notes and SQL
supplements, and point admin, API, and uni-app at czcf82 endpoints.

Made-with: Cursor
2026-04-26 15:55:22 +08:00

176 lines
6.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- czc231 integral supplement for task two
-- 目标库czc231 环境的 yangtangyoupin
-- 执行方式mysql -h 8.136.120.231 -u yangtangyoupin -p yangtangyoupin < docs/company-czc231-integral-imgration-supplement.sql
-- 数据来源docs/dump-xsj33_2026-04-10_10-15-02_mysql_data.sql
--
-- 口径:
-- 1) 目标个人奖金记录:
-- 327003,326997,326991,326978,326932,326931,326929,326922,326883,326882,326875,326869
-- 2) 判重字段eb_user_integral_record.wa_selfbonus_logid
-- 3) 积分换算integral_value = FLOOR_TO_3(wa_selfbonus_log.money * 0.5)
-- 对应 Java 逻辑bonusAmount.multiply(0.5).setScale(3, RoundingMode.DOWN)
-- 4) 静态对账结果(基于 dump 快照):
-- 候选记录数 = 12
-- 理论补齐积分总和 = 1481.299
-- 5) 候选记录涉及用户:
-- 92996,93169,93209,92457,93056,92760,92974,92896,93098,92582
-- 6) 候选明细wa_selfbonus_log.id -> uid -> money -> theoretical integral
-- 326869 -> 92996 -> 238.625 -> 119.312
-- 326875 -> 93169 -> 205.642 -> 102.821
-- 326882 -> 93209 -> 238.625 -> 119.312
-- 326883 -> 92457 -> 406.402 -> 203.201
-- 326922 -> 93056 -> 216.146 -> 108.073
-- 326929 -> 92760 -> 245.784 -> 122.892
-- 326931 -> 92974 -> 215.233 -> 107.616
-- 326932 -> 92896 -> 246.997 -> 123.498
-- 326978 -> 93169 -> 209.297 -> 104.648
-- 326991 -> 93098 -> 246.181 -> 123.090
-- 326997 -> 92896 -> 240.516 -> 120.258
-- 327003 -> 92582 -> 253.157 -> 126.578
-- 7) 按用户汇总:
-- 92457 -> 1 条 -> 203.201
-- 92582 -> 1 条 -> 126.578
-- 92760 -> 1 条 -> 122.892
-- 92896 -> 2 条 -> 243.756
-- 92974 -> 1 条 -> 107.616
-- 92996 -> 1 条 -> 119.312
-- 93056 -> 1 条 -> 108.073
-- 93098 -> 1 条 -> 123.090
-- 93169 -> 2 条 -> 207.469
-- 93209 -> 1 条 -> 119.312
-- 8) 实际数据库执行结果2026-04-19
-- existing_candidate_count = 12
-- task2_missing_count = 0
-- inserted_count = 0
-- inserted_integral_sum = 0.000
-- 说明:当前数据库中这 12 个 wa_selfbonus_logid 已全部存在于 eb_user_integral_record
-- 且当前库中的这 12 条记录均归属 uid=92034因此本次执行为 no-op。
SET NAMES utf8mb4;
START TRANSACTION;
-- 执行前核查
SELECT uid, integral AS integral_before
FROM eb_user
WHERE uid IN (92457,92582,92760,92896,92974,92996,93056,93098,93169,93209)
ORDER BY uid;
SELECT COUNT(1) AS existing_candidate_count
FROM eb_user_integral_record
WHERE wa_selfbonus_logid IN (327003,326997,326991,326978,326932,326931,326929,326922,326883,326882,326875,326869);
-- 任务二:按指定 wa_selfbonus_log.id 补齐缺失积分记录
DROP TEMPORARY TABLE IF EXISTS tmp_czc231_task2_missing;
CREATE TEMPORARY TABLE tmp_czc231_task2_missing AS
SELECT
w.user_id AS uid,
w.id AS wa_selfbonus_logid,
CAST(w.id AS CHAR) AS link_id,
TRUNCATE(w.money * 0.5, 3) AS integral_value,
w.money AS bonus_money,
w.created_at AS created_at,
w.updated_at AS updated_at
FROM wa_selfbonus_log w
LEFT JOIN eb_user_integral_record r
ON r.uid = w.user_id
AND r.wa_selfbonus_logid = w.id
WHERE w.id IN (327003,326997,326991,326978,326932,326931,326929,326922,326883,326882,326875,326869)
AND w.type = 1
AND w.money > 0
AND r.id IS NULL;
SELECT COUNT(1) AS task2_missing_count
FROM tmp_czc231_task2_missing;
DROP TEMPORARY TABLE IF EXISTS tmp_czc231_task2_to_insert;
CREATE TEMPORARY TABLE tmp_czc231_task2_to_insert AS
SELECT
seq.uid,
seq.link_id,
'selfbonus' AS link_type,
1 AS type,
'个人奖金奖励' AS title,
seq.integral_value AS integral,
CAST(seq.balance_calc AS SIGNED) AS balance,
CONCAT('个人奖金变动奖励,奖金金额:', seq.bonus_money, ',积分:', CAST(seq.integral_value AS SIGNED)) AS mark,
3 AS status,
0 AS frozen_time,
0 AS thaw_time,
seq.created_at AS create_time,
seq.updated_at AS update_time,
seq.wa_selfbonus_logid
FROM (
SELECT
ordered.uid,
ordered.link_id,
ordered.integral_value,
ordered.bonus_money,
ordered.created_at,
ordered.updated_at,
ordered.wa_selfbonus_logid,
@running_balance := IF(
@current_uid = ordered.uid,
@running_balance + ordered.integral_value,
ordered.base_integral + ordered.integral_value
) AS balance_calc,
@current_uid := ordered.uid AS current_uid_marker
FROM (
SELECT
m.uid,
m.link_id,
m.integral_value,
m.bonus_money,
m.created_at,
m.updated_at,
m.wa_selfbonus_logid,
u.integral AS base_integral
FROM tmp_czc231_task2_missing m
INNER JOIN eb_user u ON u.uid = m.uid
ORDER BY m.uid, m.created_at, m.wa_selfbonus_logid
) ordered
JOIN (SELECT @current_uid := NULL, @running_balance := 0) vars
) seq;
INSERT INTO eb_user_integral_record
(
uid, link_id, link_type, type, title, integral, balance, mark, status,
frozen_time, thaw_time, create_time, update_time, wa_selfbonus_logid
)
SELECT
uid, link_id, link_type, type, title, integral, balance, mark, status,
frozen_time, thaw_time, create_time, update_time, wa_selfbonus_logid
FROM tmp_czc231_task2_to_insert
ORDER BY uid, create_time, wa_selfbonus_logid;
-- 同步增加 eb_user.integral仅加本次新增积分
UPDATE eb_user e
INNER JOIN (
SELECT uid, IFNULL(SUM(integral), 0) AS add_integral
FROM tmp_czc231_task2_to_insert
GROUP BY uid
) t ON t.uid = e.uid
SET e.integral = e.integral + t.add_integral;
-- 执行后核查
SELECT COUNT(1) AS inserted_count
FROM tmp_czc231_task2_to_insert;
SELECT IFNULL(SUM(integral_value), 0) AS inserted_integral_sum
FROM tmp_czc231_task2_missing;
SELECT uid, COUNT(1) AS inserted_count_per_user, IFNULL(SUM(integral), 0) AS inserted_integral_per_user
FROM tmp_czc231_task2_to_insert
GROUP BY uid
ORDER BY uid;
SELECT COUNT(1) AS candidate_count_after
FROM eb_user_integral_record
WHERE wa_selfbonus_logid IN (327003,326997,326991,326978,326932,326931,326929,326922,326883,326882,326875,326869);
SELECT uid, integral AS integral_after
FROM eb_user
WHERE uid IN (92457,92582,92760,92896,92974,92996,93056,93098,93169,93209)
ORDER BY uid;
COMMIT;