puzhibing
2026-09-29 a70433b2ee5bb37823ab73422a01251343cb5f58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
-- 刷卡充电改造(account库):充电卡账户新增锁定金额
-- 目的:
--   t_charging_card 新增 locked_amount:刷卡充电申请时按账户模式锁定金额(分配模式锁卡余额;共享模式锁企业账户,不落卡)
--   锁定口径与 VIN 一致:申请时 balance -= amount、locked_amount += amount;结算时 balance += locked - actual、locked_amount -= locked;
--   释放(未消费回滚/订单取消)时 balance += amount、locked_amount -= amount。
-- 创建日期: 2026-09-29
-- 目标库:charging_pile_account(可直接经 MyCat 8066 执行,非分片表)
-- 幂等说明:ALTER 重复执行会报 Duplicate column,忽略即可(以小节 B 回查为准)
-- 兼容说明:历史卡 locked_amount 默认 0.00,不改变既有余额与扣款逻辑;历史在充订单无锁定额度,
--           结算走兼容分支(按订单金额直接从卡余额扣减)。
 
USE `charging_pile_account`;
 
-- ============ 小节 A:充电卡表新增锁定金额 ============
ALTER TABLE `t_charging_card`
  ADD COLUMN `locked_amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '锁定金额(刷卡充电申请时冻结,结算后释放)';
 
-- ============ 小节 B:回查校验 ============
SELECT t.table_name, c.column_name, c.column_type, c.column_comment
FROM information_schema.tables t
JOIN information_schema.columns c
  ON c.table_schema = t.table_schema
 AND c.table_name = t.table_name
WHERE t.table_schema = DATABASE()
  AND t.table_name = 't_charging_card'
  AND c.column_name IN ('balance', 'locked_amount');