feat(open): 重构C端认证并支持密码重置
This commit is contained in:
72
sql/app_user_fix.sql
Normal file
72
sql/app_user_fix.sql
Normal file
@@ -0,0 +1,72 @@
|
||||
-- ============================================================
|
||||
-- app_user 表结构修复与字段扩展
|
||||
-- 用途:支持手机号 + 微信小程序登录,补充常用用户字段
|
||||
-- ============================================================
|
||||
|
||||
-- 通用 helper:列不存在时才添加
|
||||
DROP PROCEDURE IF EXISTS add_app_user_column;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE add_app_user_column(
|
||||
IN col_name VARCHAR(64),
|
||||
IN col_def VARCHAR(256)
|
||||
)
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'app_user'
|
||||
AND COLUMN_NAME = col_name
|
||||
) THEN
|
||||
SET @sql = CONCAT('ALTER TABLE app_user ADD COLUMN ', col_name, ' ', col_def);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
-- 1. 补充原缺失的 username 列(注册/认证需要)
|
||||
CALL add_app_user_column('username', 'VARCHAR(64) COMMENT ''用户名'' AFTER id');
|
||||
|
||||
-- 2. 补充 BaseEntity 审计/逻辑删除列(MyBatis-Plus 自动填充与逻辑删除依赖)
|
||||
CALL add_app_user_column('is_deleted', 'TINYINT NOT NULL DEFAULT 0 COMMENT ''逻辑删除(0-否 1-是)'' AFTER status');
|
||||
CALL add_app_user_column('create_time', 'DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ''创建时间'' AFTER is_deleted');
|
||||
CALL add_app_user_column('update_time', 'DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ''更新时间'' AFTER create_time');
|
||||
CALL add_app_user_column('create_by', 'BIGINT DEFAULT NULL COMMENT ''创建人'' AFTER update_time');
|
||||
CALL add_app_user_column('update_by', 'BIGINT DEFAULT NULL COMMENT ''更新人'' AFTER create_by');
|
||||
|
||||
-- 3. 微信小程序登录相关字段
|
||||
CALL add_app_user_column('unionid', 'VARCHAR(64) DEFAULT NULL COMMENT ''微信unionid'' AFTER wechat_openid');
|
||||
CALL add_app_user_column('session_key', 'VARCHAR(128) DEFAULT NULL COMMENT ''微信小程序session_key'' AFTER unionid');
|
||||
CALL add_app_user_column('register_source', 'TINYINT DEFAULT 1 COMMENT ''注册来源(1-手机号 2-微信小程序)'' AFTER session_key');
|
||||
|
||||
-- 4. 常用用户字段
|
||||
CALL add_app_user_column('birthday', 'DATE DEFAULT NULL COMMENT ''生日'' AFTER register_source');
|
||||
CALL add_app_user_column('last_login_time', 'DATETIME DEFAULT NULL COMMENT ''最后登录时间'' AFTER birthday');
|
||||
|
||||
DROP PROCEDURE IF EXISTS add_app_user_column;
|
||||
|
||||
-- 5. 删除多余的 user_id 列
|
||||
-- 实体 ClientUser 主键为 BaseEntity.id(列名 id),代码中 userId 均由 "id AS userId" 映射而来,
|
||||
-- 表内遗留的 user_id 列(NOT NULL 无默认值)导致 INSERT 未写该列时报 "Field 'user_id' doesn't have a default value"。
|
||||
-- 该列未被任何代码引用,直接删除以消除冗余。
|
||||
SET @col_exists = (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'app_user'
|
||||
AND COLUMN_NAME = 'user_id'
|
||||
);
|
||||
SET @sql = IF(
|
||||
@col_exists > 0,
|
||||
'ALTER TABLE app_user DROP COLUMN user_id',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 6. 扩大 password 列,BCrypt 加密后固定 60 字符,原 VARCHAR(32) 会触发 Data too long
|
||||
ALTER TABLE app_user MODIFY COLUMN password VARCHAR(100) NOT NULL COMMENT '密码(加密)';
|
||||
|
||||
-- 7. 扩大 sys_log.error_msg,避免长异常信息被截断
|
||||
ALTER TABLE sys_log MODIFY COLUMN error_msg VARCHAR(2000) COMMENT '错误信息';
|
||||
@@ -423,7 +423,7 @@ CREATE TABLE `sys_log` (
|
||||
`os` VARCHAR(100) COMMENT '操作系统',
|
||||
`browser` VARCHAR(100) COMMENT '浏览器',
|
||||
`status` TINYINT DEFAULT 1 COMMENT '0失败 1成功',
|
||||
`error_msg` VARCHAR(1000) COMMENT '错误信息',
|
||||
`error_msg` VARCHAR(2000) COMMENT '错误信息',
|
||||
`execution_time` INT COMMENT '执行时间(ms)',
|
||||
`create_time` DATETIME COMMENT '操作时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
|
||||
Reference in New Issue
Block a user