2.8 KiB
2.8 KiB
手机号 → 账号ID → 角色ID 检索方法
⚠️ 本文为脱敏参考版。凭证已移至
~/.hermes/.env,数据库字典见data_dict/vala_user.md。
数据关系
手机号 (明文)
│ XXTEA 加密
▼
tel_encrypt (密文) account_id
│ │
▼ ▼
vala_app_account ──────────► vala_app_character
(账号表) 1:N 关联 (角色表)
- 一个账号 (
vala_app_account) 可以有 多个角色 (vala_app_character) - 关联字段:
vala_app_character.account_id = vala_app_account.id
数据库
| 项目 | 值 |
|---|---|
| 数据库 | MySQL 线上环境 |
| 库名 | vala_user |
| 用户 | read_only |
具体连接信息从
~/.hermes/.env读取。
表结构
vala_app_account(账号表)
| 字段 | 类型 | 说明 |
|---|---|---|
id |
bigint | 账号ID(主键) |
tel |
varchar(20) | 手机号(脱敏显示,如 158****7007) |
tel_encrypt |
varchar(100) | 手机号密文(用于精确匹配) |
vala_app_character(角色表)
| 字段 | 类型 | 说明 |
|---|---|---|
id |
bigint | 角色ID(主键) |
account_id |
bigint | 所属账号ID |
nickname |
varchar(20) | 角色昵称 |
gender |
tinyint(1) | 性别 |
birthday |
varchar(50) | 生日 |
purchase_season_package |
text | 已购赛季包 |
手机号加密方式
手机号在数据库中以密文存储,加密算法为 XXTEA + Base64 URL-safe。
密钥从 ~/.hermes/.env → VALA_PHONE_XXTEA_KEY 读取。
查询步骤
步骤 1:加密手机号
python3 business_knowledge/scripts/phone_encrypt.py encrypt 15849377007
步骤 2:用密文查询账号和角色
SELECT
a.id AS account_id,
a.tel,
c.id AS character_id,
c.nickname,
c.gender,
c.birthday,
c.purchase_season_package,
c.created_at
FROM vala_app_account a
LEFT JOIN vala_app_character c ON c.account_id = a.id
WHERE a.tel_encrypt = '<密文>';
步骤 3:解读结果
account_id tel character_id nickname gender birthday purchase_season_package
18279 158****7007 23600 Morris 1 2021-09-09 [16,17,18,19,20]
18279 158****7007 23686 Nathan 1 2018-03-13 [16]
- 账号ID: 18279
- 角色: 23600 (Morris)、23686 (Nathan)
- 一个账号下可能有多个角色(一个孩子一个角色)
注意事项
- tel 字段是脱敏的(如
158****7007),不能直接用于精确匹配 - 必须用 tel_encrypt 密文匹配,密文由 XXTEA 加密生成
- 一个账号可以有多个角色,查询结果可能返回多行
- 测试环境和线上环境的
tel_encrypt值相同(加密算法一致)