puzhibing
4 天以前 3650ce7f5d42d1bef58abea9693f20d1f209d3b0
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
27
28
29
30
31
32
33
34
35
36
37
-- 白名单账户(t_app_user_whitelist)新增锁定金额列
-- 目的:分配模式下白名单用户充电建单时锁定白名单账户余额(可用余额立即扣减并计入 locked_amount,
--       结算时按实际消费扣减锁定额并退回差额,未结算/关单时全额释放)
-- 目标库:charging_pile_account(非分片表,可直接经 Mycat 8066 执行)
-- 幂等说明:ALTER 重复执行会报 Duplicate column,忽略即可(以小节 B 回查为准)
-- 部署提示:必须先执行本脚本再发布 account 服务代码,否则 /inner/lock-balance 会报 Unknown column 'locked_amount'
-- 依赖:t_company_allocate_record 的 change_type / charging_order_code(消费流水幂等)与
--       t_group_company.locked_amount(共享模式企业额度锁定),VIN 充电改造脚本已包含(本任务复用)
 
USE `charging_pile_account`;
 
-- ============ 小节 A:白名单账户新增锁定金额 ============
ALTER TABLE `t_app_user_whitelist`
  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_app_user_whitelist'
  AND c.column_name = 'locked_amount';
 
-- 复用列依赖回查(VIN 充电改造已建,缺失则本任务分配模式消费流水/共享模式企业额度不可用)
SELECT t.table_schema, 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 = 'charging_pile_account' AND t.table_name = 't_company_allocate_record'
         AND c.column_name IN ('change_type', 'charging_order_code'))
     OR (t.table_schema = 'charging_pile_other' AND t.table_name = 't_group_company'
         AND c.column_name = 'locked_amount')
      );