Files
junhong_cmp_fiber/migrations/000004_create_personal_customer_relations.up.sql
huang 9c6d4a3bd4 实现个人客户微信认证和短信验证功能
- 添加个人客户微信登录和手机验证码登录接口
- 实现个人客户设备、ICCID、手机号关联管理
- 添加短信发送服务(HTTP 客户端)
- 添加微信认证服务(含 mock 实现)
- 添加 JWT Token 生成和验证工具
- 创建数据库迁移脚本(personal_customer 关联表)
- 修复测试文件中的路由注册参数错误
- 重构 scripts 目录结构(分离独立脚本到子目录)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-10 11:42:38 +08:00

87 lines
4.4 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.
-- 创建个人客户手机号绑定表
CREATE TABLE IF NOT EXISTS personal_customer_phone (
id SERIAL PRIMARY KEY,
customer_id INTEGER NOT NULL,
phone VARCHAR(20) NOT NULL,
is_primary BOOLEAN DEFAULT false,
verified_at TIMESTAMP,
status INTEGER DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
COMMENT ON TABLE personal_customer_phone IS '个人客户手机号绑定表';
COMMENT ON COLUMN personal_customer_phone.id IS '主键ID';
COMMENT ON COLUMN personal_customer_phone.customer_id IS '个人客户ID';
COMMENT ON COLUMN personal_customer_phone.phone IS '手机号';
COMMENT ON COLUMN personal_customer_phone.is_primary IS '是否主手机号';
COMMENT ON COLUMN personal_customer_phone.verified_at IS '验证通过时间';
COMMENT ON COLUMN personal_customer_phone.status IS '状态 0=禁用 1=启用';
COMMENT ON COLUMN personal_customer_phone.created_at IS '创建时间';
COMMENT ON COLUMN personal_customer_phone.updated_at IS '更新时间';
COMMENT ON COLUMN personal_customer_phone.deleted_at IS '删除时间(软删除)';
-- 创建索引
CREATE UNIQUE INDEX idx_personal_customer_phone_customer_phone ON personal_customer_phone(customer_id, phone) WHERE deleted_at IS NULL;
CREATE INDEX idx_personal_customer_phone_phone ON personal_customer_phone(phone);
CREATE INDEX idx_personal_customer_phone_deleted_at ON personal_customer_phone(deleted_at);
-- 创建个人客户 ICCID 绑定表
CREATE TABLE IF NOT EXISTS personal_customer_iccid (
id SERIAL PRIMARY KEY,
customer_id INTEGER NOT NULL,
iccid VARCHAR(20) NOT NULL,
bind_at TIMESTAMP,
last_used_at TIMESTAMP,
status INTEGER DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
COMMENT ON TABLE personal_customer_iccid IS '个人客户ICCID绑定表';
COMMENT ON COLUMN personal_customer_iccid.id IS '主键ID';
COMMENT ON COLUMN personal_customer_iccid.customer_id IS '个人客户ID';
COMMENT ON COLUMN personal_customer_iccid.iccid IS 'ICCID20位数字';
COMMENT ON COLUMN personal_customer_iccid.bind_at IS '绑定时间';
COMMENT ON COLUMN personal_customer_iccid.last_used_at IS '最后使用时间';
COMMENT ON COLUMN personal_customer_iccid.status IS '状态 0=禁用 1=启用';
COMMENT ON COLUMN personal_customer_iccid.created_at IS '创建时间';
COMMENT ON COLUMN personal_customer_iccid.updated_at IS '更新时间';
COMMENT ON COLUMN personal_customer_iccid.deleted_at IS '删除时间(软删除)';
-- 创建索引
CREATE UNIQUE INDEX idx_personal_customer_iccid_customer_iccid ON personal_customer_iccid(customer_id, iccid) WHERE deleted_at IS NULL;
CREATE INDEX idx_personal_customer_iccid_iccid ON personal_customer_iccid(iccid);
CREATE INDEX idx_personal_customer_iccid_deleted_at ON personal_customer_iccid(deleted_at);
-- 创建个人客户设备号绑定表
CREATE TABLE IF NOT EXISTS personal_customer_device (
id SERIAL PRIMARY KEY,
customer_id INTEGER NOT NULL,
device_no VARCHAR(50) NOT NULL,
bind_at TIMESTAMP,
last_used_at TIMESTAMP,
status INTEGER DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
COMMENT ON TABLE personal_customer_device IS '个人客户设备号绑定表';
COMMENT ON COLUMN personal_customer_device.id IS '主键ID';
COMMENT ON COLUMN personal_customer_device.customer_id IS '个人客户ID';
COMMENT ON COLUMN personal_customer_device.device_no IS '设备号/IMEI';
COMMENT ON COLUMN personal_customer_device.bind_at IS '绑定时间';
COMMENT ON COLUMN personal_customer_device.last_used_at IS '最后使用时间';
COMMENT ON COLUMN personal_customer_device.status IS '状态 0=禁用 1=启用';
COMMENT ON COLUMN personal_customer_device.created_at IS '创建时间';
COMMENT ON COLUMN personal_customer_device.updated_at IS '更新时间';
COMMENT ON COLUMN personal_customer_device.deleted_at IS '删除时间(软删除)';
-- 创建索引
CREATE UNIQUE INDEX idx_personal_customer_device_customer_device ON personal_customer_device(customer_id, device_no) WHERE deleted_at IS NULL;
CREATE INDEX idx_personal_customer_device_device_no ON personal_customer_device(device_no);
CREATE INDEX idx_personal_customer_device_deleted_at ON personal_customer_device(deleted_at);