✨ 小程序用户独立为 blade_mp_user,并兼容司机/车辆 OCR 宽松日期
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
-- ----------------------------
|
||||
-- 小程序用户表(与 blade_user 分离,仅用于小程序登录)
|
||||
-- 身份 identities:逗号分隔,当前支持 driver(司机)、admin(管理员),可同时拥有,后续可扩展
|
||||
-- ----------------------------
|
||||
CREATE TABLE IF NOT EXISTS `blade_mp_user` (
|
||||
`id` bigint NOT NULL COMMENT '主键',
|
||||
`tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
|
||||
`code` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户编号',
|
||||
`account` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '账号(通常为手机号)',
|
||||
`password` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码(小程序登录可不使用)',
|
||||
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
|
||||
`real_name` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '真名',
|
||||
`avatar` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像',
|
||||
`email` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
|
||||
`phone` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机',
|
||||
`birthday` datetime NULL DEFAULT NULL COMMENT '生日',
|
||||
`sex` int NULL DEFAULT NULL COMMENT '性别',
|
||||
`openid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信小程序 openid',
|
||||
`identities` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '小程序身份,逗号分隔:driver,admin',
|
||||
`dept_id` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门id',
|
||||
`post_id` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '岗位id',
|
||||
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||
`create_user` bigint NULL DEFAULT NULL COMMENT '创建人',
|
||||
`create_dept` bigint NULL DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`update_user` bigint NULL DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
|
||||
`status` int NULL DEFAULT 1 COMMENT '状态',
|
||||
`is_deleted` int NULL DEFAULT 0 COMMENT '是否已删除',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_mp_user_tenant_phone` (`tenant_id`, `phone`) USING BTREE,
|
||||
UNIQUE KEY `uk_mp_user_tenant_openid` (`tenant_id`, `openid`) USING BTREE,
|
||||
KEY `idx_mp_user_account` (`tenant_id`, `account`) USING BTREE,
|
||||
KEY `idx_mp_user_identities` (`identities`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '小程序用户表';
|
||||
|
||||
-- 司机表 user_id 语义变更为关联小程序用户
|
||||
ALTER TABLE `blade_transport_driver`
|
||||
MODIFY COLUMN `user_id` bigint(20) DEFAULT NULL COMMENT '关联小程序用户ID(blade_mp_user.id)';
|
||||
|
||||
-- 示例:创建小程序管理员(调度端),identities 可同时包含 driver,admin
|
||||
-- INSERT INTO `blade_mp_user`
|
||||
-- (`id`, `tenant_id`, `account`, `name`, `real_name`, `phone`, `identities`, `create_time`, `status`, `is_deleted`)
|
||||
-- VALUES
|
||||
-- (2091900000000000001, '000000', '13800000000', '调度管理员', '调度管理员', '13800000000', 'admin', NOW(), 1, 0);
|
||||
@@ -0,0 +1,61 @@
|
||||
-- ----------------------------
|
||||
-- 将已关联 blade_user 的司机迁移到 blade_mp_user(可选,按环境执行)
|
||||
-- 注意:执行前请先执行 blade_mp_user_20261012.sql 建表
|
||||
-- 策略:小程序用户主键使用司机表 id(避免与 blade_user.id 冲突导致令牌刷新串用户)
|
||||
-- 迁移后回写 driver.user_id;原 blade_user 账号不会自动删除,请人工确认后再清理
|
||||
-- 调度端管理员需另行在 blade_mp_user 中维护 identities 含 admin 的账号
|
||||
-- ----------------------------
|
||||
|
||||
-- 1) 按司机写入小程序用户
|
||||
INSERT INTO `blade_mp_user` (
|
||||
`id`, `tenant_id`, `account`, `name`, `real_name`, `phone`, `sex`,
|
||||
`openid`, `identities`, `dept_id`,
|
||||
`create_user`, `create_dept`, `create_time`, `update_user`, `update_time`,
|
||||
`status`, `is_deleted`
|
||||
)
|
||||
SELECT
|
||||
d.`id` AS `id`,
|
||||
IFNULL(d.`tenant_id`, '000000') AS `tenant_id`,
|
||||
d.`mobile` AS `account`,
|
||||
d.`driver_name` AS `name`,
|
||||
d.`driver_name` AS `real_name`,
|
||||
d.`mobile` AS `phone`,
|
||||
CASE
|
||||
WHEN d.`gender` IN ('男', '1') THEN 1
|
||||
WHEN d.`gender` IN ('女', '2') THEN 2
|
||||
ELSE NULL
|
||||
END AS `sex`,
|
||||
oauth.`uuid` AS `openid`,
|
||||
'driver' AS `identities`,
|
||||
u.`dept_id` AS `dept_id`,
|
||||
d.`create_user`,
|
||||
d.`create_dept`,
|
||||
IFNULL(d.`create_time`, NOW()) AS `create_time`,
|
||||
d.`update_user`,
|
||||
IFNULL(d.`update_time`, NOW()) AS `update_time`,
|
||||
IFNULL(d.`status`, 1) AS `status`,
|
||||
0 AS `is_deleted`
|
||||
FROM `blade_transport_driver` d
|
||||
LEFT JOIN `blade_user` u ON u.`id` = d.`user_id` AND u.`is_deleted` = 0
|
||||
LEFT JOIN `blade_user_oauth` oauth
|
||||
ON oauth.`user_id` = d.`user_id`
|
||||
AND oauth.`source` = 'WECHAT_MINI'
|
||||
AND oauth.`is_deleted` = 0
|
||||
WHERE d.`is_deleted` = 0
|
||||
AND d.`mobile` IS NOT NULL
|
||||
AND d.`mobile` <> ''
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `blade_mp_user` m
|
||||
WHERE m.`id` = d.`id`
|
||||
OR (m.`tenant_id` = IFNULL(d.`tenant_id`, '000000') AND m.`phone` = d.`mobile` AND m.`is_deleted` = 0)
|
||||
);
|
||||
|
||||
-- 2) 回写司机关联的小程序用户ID
|
||||
UPDATE `blade_transport_driver` d
|
||||
INNER JOIN `blade_mp_user` m
|
||||
ON m.`id` = d.`id`
|
||||
OR (m.`tenant_id` = IFNULL(d.`tenant_id`, '000000') AND m.`phone` = d.`mobile` AND m.`is_deleted` = 0)
|
||||
SET d.`user_id` = m.`id`
|
||||
WHERE d.`is_deleted` = 0
|
||||
AND d.`mobile` IS NOT NULL
|
||||
AND d.`mobile` <> '';
|
||||
Reference in New Issue
Block a user